【问题标题】:Geopandas .to_crs only converts one coordinate of Point objectGeopandas .to_crs 只转换 Point 对象的一个​​坐标
【发布时间】:2022-01-04 05:25:24
【问题描述】:

我需要将 GeoDataFrame 的 CRS 从 EPSG:2145 转换为 EPSG:3857。当我使用 .to_crs 方法时,它只会转换 x 坐标,而将 y 保留为旧格式。

我原来的 gdf 与 EPSG:2145

gdf
    ipere       geometry
    670     POINT (-73.629 45.572)
    671     POINT (-73.569 45.506)
    672     POINT (-73.629 45.572)
    673     POINT (-73.607 45.565)
    771     POINT (-73.636 45.580)

gdf.crs

<Projected CRS: EPSG:2145>
Name: NAD83(CSRS98) / MTM zone 8
Axis Info [cartesian]:
- E(X)[east]: Easting (metre)
- N(Y)[north]: Northing (metre)
Area of Use:
- name: Canada - Quebec - between 75°W and 72°W.
- bounds: (-75.0, 44.99, -72.0, 62.53)
...

然后我尝试转换

gdf2 = gdf.to_crs(3857)

我检查一下:

gdf2
        ipere       geometry
        670     POINT (-8486769.994 45.572)
        671     POINT (-8486769.933 45.506)
        672     POINT (-8486769.994 45.572)
        673     POINT (-8486769.971 45.565)
        771     POINT (-8486770.001 45.580)

如您所见,几何 .知道为什么会这样吗?

【问题讨论】:

    标签: python gis geopandas


    【解决方案1】:
    • 此调查显示起始 CRS 不是 EPSG:2145 而是 EPSG:4326
    • 您可以使用 set_crs() 将您的地理数据框更改为 EPSG:4326 以开始
    import io
    import shapely.wkt
    import pandas as pd
    import geopandas as gpd
    
    df = pd.read_csv(io.StringIO("""    ipere       geometry
        670     POINT (-73.629 45.572)
        671     POINT (-73.569 45.506)
        672     POINT (-73.629 45.572)
        673     POINT (-73.607 45.565)
        771     POINT (-73.636 45.580)"""), sep="\s\s+", engine="python")
    
    for crs in ["EPSG:4326","EPSG:2145"]:
        gdf = gpd.GeoDataFrame(df, geometry=df["geometry"].apply(shapely.wkt.loads), crs=crs)
        print(crs)
        print(gdf.to_crs("EPSG:3857").to_markdown(index=False))
    
    

    EPSG:4326

    ipere geometry
    670 POINT (-8196342.78761794 5712025.204171824)
    671 POINT (-8189663.618170344 5701535.712440695)
    672 POINT (-8196342.78761794 5712025.204171824)
    673 POINT (-8193893.758820487 5710912.098368462)
    771 POINT (-8197122.024053493 5713297.494982241)

    EPSG:2145

    ipere geometry
    670 POINT (-8486769.993448919 45.49609174562639)
    671 POINT (-8486769.933511838 45.42971666048591)
    672 POINT (-8486769.993448919 45.49609174562639)
    673 POINT (-8486769.971471995 45.48905196902809)
    771 POINT (-8486770.000441579 45.50413721057778)

    【讨论】:

    • 谢谢!这行得通。我不明白您是如何发现 EPSG 是 4326 而不是 2145。甚至我的数据源中的用户指南也说它是 2145(这似乎已被弃用)
    • 我可以看到值对应于 EPSG:4326(介于 -180 和 180 之间,即度数)....它们当然不是 2145,因为测量值会大得多以米为单位
    猜你喜欢
    • 2021-04-10
    • 2018-04-22
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    相关资源
    最近更新 更多