GeoPandas 在点上设置 CRS

新手上路,请多包涵

给定以下 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")

…但没有运气。

一些重要说明:

  1. 上述 .to_crs 方法适用的另一个 GeoDataFrame 来自形状文件,几何列用于多边形,而不是点。在应用 .to_crs 方法后,其“几何”值如下所示:

    POLYGON ((-5973.005380655156 3399.646267693398… 当我使用 hg GeoDataFrame 尝试上述操作时,它们看起来仍然像常规的纬度/经度坐标。

  2. 如果/当这可行时,我会将这些点与多边形 GeoDataFrame 连接起来,以便绘制两者(多边形顶部的点)。

  3. 当我尝试在使用 .to_crs 方法之前首先连接 GeoDataFrames,然后同时在点和多边形行上使用该方法时,出现以下错误:

    ValueError:无法转换原始几何图形。请先在对象上设置 crs。

提前致谢!

原文由 Dance Party2 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 959
2 个回答

Geopandas API 得到了清理,现在可以正常工作了。确保使用最新的稳定版本并阅读 文档

使用其 EPSG 代码在 GeoDataFrame 上设置 CRS 非常简单

gdf.set_crs(epsg=4326, inplace=True)

其中 gdfgeopandas.geodataframe.GeoDataFrame 。当心显式 inplace

所以在上面的例子中它将是:

 import pandas as pd
from shapely.geometry import Point
from geopandas import GeoDataFrame

df = pd.DataFrame({'zip':[19152,19047],
               'Lat':[40.058841,40.202162],
               'Lon':[-75.042164,-74.924594]})

geometry = [Point(xy) for xy in zip(df.Lon, df.Lat)]
gdf = GeoDataFrame(df, geometry=geometry)

gdf.set_crs(epsg=4326, inplace=True)
# ^ comment out to get a "Cannot transform naive geometries" error below

# project to merkator
gdf.to_crs(epsg=3395)

     zip        Lat        Lon                          geometry
0  19152  40.058841 -75.042164  POINT (-8353655.485 4846992.030)
1  19047  40.202162 -74.924594  POINT (-8340567.652 4867777.107)

原文由 Ufos 发布,翻译遵循 CC BY-SA 4.0 许可协议

GeoPandas 中设置 CRS 的格式现在是

gdf.crs = "EPSG:4326"

较早的格式已弃用

参考: https ://geopandas.org/projections.html

原文由 shyam 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进