python-3.x - GeoPandas 在点上设置 CRS

标签 python-3.x geopandas

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

  • 提前致谢!

    最佳答案

    Geopandas API 得到了清理,现在可以正常工作了。确保使用最新的稳定版本并阅读 docs .
    使用 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)
    

    关于python-3.x - GeoPandas 在点上设置 CRS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38961816/

    相关文章:

    python - 在形状文件中查找所有相交的多边形

    python - 如何解决django中的循环导入错误?

    python - 如何获得Python中范围函数中所有数字的总和?

    python - 无法定义名称 "userInput"

    python - GeoPandas .to_crs 遇到错误

    python - 如何转换 Pandas 中的纬度/经度点并查看它们是否落在某些边界多边形中?

    python - 访问 geoseries 中几何图形中的行

    python - AttributeError : 'str' object has no attribute 'id' using BioPython, 解析fasta

    python - Python 中 Eratosthenes 的惰性筛选

    python - 无法使用 PyInstaller 可执行文件导入 Geopandas - 尽管在虚拟环境中运行良好