给定以下 GeoDataFrame:
h=pd.DataFrame({'zip':[19152,19047],
'Lat':[40.058841,40.202162],
'Lon':[-75.042164,-74.924594]})
crs='none'
geometry = [Point(xy) for xy in zip(h.Lon, h.Lat)]
hg = GeoDataFrame(h, crs=crs, geometry=geometry)
hg
Lat Lon zip geometry
0 40.058841 -75.042164 19152 POINT (-75.042164 40.058841)
1 40.202162 -74.924594 19047 POINT (-74.924594 40.202162)
我需要像设置另一个 GeoDataFrame 一样设置 CRS(如下所示):
c=c.to_crs("+init=epsg:3857 +ellps=GRS80 +datum=GGRS87 +units=mi +no_defs")
我试过这个:
crs={'init': 'epsg:3857'}
和这个:
hg=hg.to_crs("+init=epsg:3857 +ellps=GRS80 +datum=GGRS87 +units=mi +no_defs")
…但没有运气。
一些重要说明:
上述 .to_crs 方法适用的另一个 GeoDataFrame 来自形状文件,几何列用于多边形,而不是点。在应用 .to_crs 方法后,其“几何”值如下所示:
POLYGON ((-5973.005380655156 3399.646267693398… 当我使用 hg GeoDataFrame 尝试上述操作时,它们看起来仍然像常规的纬度/经度坐标。
如果/当这可行时,我会将这些点与多边形 GeoDataFrame 连接起来,以便绘制两者(多边形顶部的点)。
当我尝试在使用 .to_crs 方法之前首先连接 GeoDataFrames,然后同时在点和多边形行上使用该方法时,出现以下错误:
ValueError:无法转换原始几何图形。请先在对象上设置 crs。
提前致谢!
原文由 Dance Party2 发布,翻译遵循 CC BY-SA 4.0 许可协议
Geopandas API 得到了清理,现在可以正常工作了。确保使用最新的稳定版本并阅读 文档。
使用其 EPSG 代码在 GeoDataFrame 上设置 CRS 非常简单
其中
gdf
是geopandas.geodataframe.GeoDataFrame
。当心显式inplace
!所以在上面的例子中它将是: