我有一个简单的shapefile我想用一般情节绘图()(我注意到ggplot在绘制地图时非常慢).
我可以用代码正确地绘制形状
library(maptools)
map_shp <- readShapePoly(map_filepath)
map <- fortify(map_shp)
plot(map)
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能定义线条的颜色和宽度?
!pip install sentinelsat
!pip install geopandas
!pip install folium
from sentinelsat import SentinelAPI
user = '****'
password = '****'
api = SentinelAPI(user, password, 'https://scihub.copernicus.eu/dhus')
import geopandas as gpd
import folium
nReserve = gpd.read_file(r"G:\New folder (2)\cardinialres.shp")
m = folium.Map([-37.971389, 145.418889], zoom_start=12)
folium.GeoJson(nReserve).add_to(m)
m
Run Code Online (Sandbox Code Playgroud)
''我用谷歌搜索,发现我需要使用SHAPE_RESTORE_SHX=YES fio info myshapefile.shp,但不知道在 Jupiter 实验室的哪里使用。
我正在尝试在R中创建一个shapefile,稍后我将导入Fusion Table或其他一些GIS应用程序.
首先,我导入了一个包含加拿大所有人口普查区的空白shapefile.我已经根据CT的唯一ID将其他数据(以表格格式)附加到shapefile,并且我已经映射了我的结果.目前,我只需要在温哥华的那些,我想导出一个只包含Vancouver CTs的shapefile以及我新添加的属性数据.
这是我的代码(由于隐私原因,某些部分被省略):
shape <- readShapePoly('C:/TEST/blank_ct.shp') #Load blank shapefile
shape@data = data.frame(shape@data, data2[match(shape@data$CTUID, data2$CTUID),]) #data2 is my created attributes that I'm attaching to blank file
shape1 <-shape[shape$CMAUID == 933,] #selecting the Vancouver CTs
Run Code Online (Sandbox Code Playgroud)
我见过其他使用它的例子:writePolyShape来创建shapefile.我试过了,它在一定程度上起作用了.它创建了.shp,.dbf和.shx文件.我错过了.prj文件,我不知道如何创建它.是否有更好的方法来创建shapefile?
任何有关此事的帮助将不胜感激.
是否有任何库能够读取解析.shp文件,最好是在我不需要使用NDK的地方.我试图使用GeoTools,但我无法接触它以使其在Android上运行.
我想在操作后保存一个 shapefile。
首先,我阅读了我的对象
map<-readOGR("C:/MAPS","33SEE250GC_SIR")
Run Code Online (Sandbox Code Playgroud)
在此之后,我将我的 shapefile 子集:
test <- fortify(map, region="CD_GEOCODI")
test<- subset(test, -43.41<long & long < -43.1 & - 23.05<lat & lat< -22.79)
Run Code Online (Sandbox Code Playgroud)
我得到了这个子集的相应 id
ids<- unique(test$id)
map2<- map[map$CD_GEOCODI %in% ids ,]
Run Code Online (Sandbox Code Playgroud)
当我绘制map2时,一切正常。但是,当我尝试保存此 shapefile 时,出现了错误
writeOGR(map2, dsn = "C:/MAPS" , layer = "nameofmynewmap")
Run Code Online (Sandbox Code Playgroud)
匹配错误(驱动程序,drvs$name):缺少参数“驱动程序”,没有默认值
我不知道如何获得驱动器。一些解决方案?
我想读取一个以UTF8. 当我阅读它时它工作正常,rgdal::readOGR但sf::st_read无法获得正确的编码。有关如何解决此问题的任何建议?
对于可重现的示例,可以在此处下载我正在尝试读取的形状文件。
rgdal::readOGRshp <- rgdal::readOGR(shp_file, encoding = "UTF-8")
head(shp@data)
> ID CD_GEOCODM NM_MUNICIP
> 0 53 1200013 ACRELÂNDIA
> 1 54 1200054 ASSIS BRASIL
> 2 55 1200104 BRASILÉIA
> 3 56 1200138 BUJARI
> 4 57 1200179 CAPIXABA
> 5 58 1200203 CRUZEIRO DO SUL
Run Code Online (Sandbox Code Playgroud)
sf::st_read sf <- sf::st_read(shp_file, stringsAsFactors=F, options = "ENCODING=UTF8")
head(sf)
> ID CD_GEOCODM NM_MUNICIP geometry
> 1 53 1200013 ACREL<c2>NDIA POLYGON ((-67.14117 -9.6833... …Run Code Online (Sandbox Code Playgroud) 我有一张智利地图(http://labgeo.ufro.cl/fichas/chile_geo/ficha_cl_geo.html第一个链接上面写着“智利大陆”),想绘制它并添加一些我有纬度的中心点经度数据。
\n\n我是 geopandas 和 matplotlib 的新手,但我设法使用这篇文章中 matplotlib 的建议答案以不同颜色的点的形式绘制地图:Color by Column Values in Matplotlib
\n\n这是我的代码:
\n\n#Loading data, since I am making the coordinates up they won\xc2\xb4t fit the map nicely but you will get the idea\n\nmap_= gpd.read_file("cl_continental_geo.shp")\ngeo_df_ = pd.DataFrame({"id":np.random.randint(20, size=133) ,"Latitude": np.random.normal(-34.406922,7.819504, 133), "Longitud": np.random.normal(-71.243350,1.254126, 133)})\n\ngeometry =[Point(xy) for xy in zip( geo_df_["Longitud"],geo_df_["Latitude"])]\ngeo_df_ =gpd.GeoDataFrame(geo_df_, crs={"init":"epsg:4326"},geometry= geometry)\n\n# creating color map for categories\ncategories = np.unique(geo_df_["id"])\ncolors = np.linspace(0, 1, len(categories))\ncolordict = dict(zip(categories, colors))\n\n#matching it to the geopandas df\ngeo_df_["Color"] = …Run Code Online (Sandbox Code Playgroud) 我有一个从worldwildlife.org下载的shapefile,用于世界地球生态区.该文件可以在这里加载:http://worldwildlife.org/publications/terrestrial-ecoregions-of-the-world.
它是一个标准的形状文件,我想用它做两件事.首先:从我的本地目录中获取shapefile并将其剪辑到北美东部(ext = extent(-95,-50,24,63))
# Read shapefile using package "maptools"
eco_shp <- readShapeLines("F:/01_2013/Ecoregions/Global/wwf_terr_ecos.shp",
proj4string=CRS("+proj=utm +zone=33 +datum=WGS84"))
# Set the desired extent for the final raster using package "raster"
ext <- extent(-95, -50, 24, 63)
Run Code Online (Sandbox Code Playgroud)
我确信我必须在"raster"包中使用rasterize功能,但我仍然无法使其正常工作.我很感激有关如何做到这一点的任何建议.
我正在尝试使用python中的matplotlib在世界地图上绘制填充的多边形国家.
我有一个shapefile,每个国家都有国家边界坐标.现在,我想将这些坐标(对于每个国家/地区)转换为带有matplotlib的多边形.不使用Basemap.不幸的是,零件交叉或重叠.是否有工作,可能使用点到点的距离..或重新排序?

我试图更改或指定一个德国-shape文件的投影NA来+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0,但不知何故,它不能很好地工作.
可重复的示例:Shapefile和其他文件可以在这里下载:
我尝试的是以下内容:
library(maptools)
library(sp)
library(rgeos)
library(rgdal)
projection.x <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0")
mapG <- readShapePoly("vg2500_lan.shp", verbose=TRUE, proj4string=projection.x)
summary(mapG)
mapG <- spTransform(mapG, CRS("+proj=longlat +ellps=WGS84 +datum=WGS84"))
Run Code Online (Sandbox Code Playgroud)
所以,问题是我无法在地图上绘制我的观察结果.见下文
使用包装中的geocode功能检测到ponits ggmap.
任何想法如何改变shapefile的投影或谷歌坐标的投影将非常感激!
shapefile ×10
r ×6
matplotlib ×2
python ×2
android ×1
encoding ×1
gdal ×1
geopandas ×1
geospatial ×1
gis ×1
jupyter-lab ×1
legend ×1
maps ×1
plot ×1
polygon ×1
projection ×1
python-3.x ×1
r-sf ×1
r-sp ×1
raster ×1
rasterizing ×1
spatial ×1