You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GeoPandas转换CRS(EPSG:4326转EPSG:31370)获错误坐标值求助

问题原因及解决方案

核心问题是你创建Shapely Point时颠倒了经纬度顺序:

  • Shapely的Point()构造参数遵循(x, y)顺序,对应地理坐标系中的经度(x)、纬度(y)。你写的Point(51.2, 3.2)把纬度放在了x位置、经度放在了y位置,相当于将点定位到了大西洋区域(经度51.2,纬度3.2),转换到Lambert 72自然得到错误坐标。
  • 你的PyProj代码能得到正确结果,是因为Transformer.transform()默认遵循源CRS(EPSG:4326)的官方轴顺序(纬度在前、经度在后),你传入的(51.2, 3.2)正好匹配这个顺序,因此转换正确。

修正后的GeoPandas代码

import shapely
import geopandas as gpd

# 正确顺序:经度3.2,纬度51.2
point1 = shapely.geometry.Point(3.2, 51.2)
row = {"z": [2.1], "geometry": [point1]}

point_wgs = gpd.GeoDataFrame(row, crs=4326)
point_bel = point_wgs.to_crs(31370)

# 查看转换结果
print(point_bel.iloc[0].geometry)

运行后会得到符合预期的坐标(约68000, 210000)。

如果想彻底避免轴顺序混淆,也可以在GeoPandas中显式使用带always_xy=True参数的转换器,但最稳妥的方式还是严格遵循经度在前、纬度在后的顺序创建Shapely几何对象,这是GIS领域的通用约定。

内容的提问来源于stack exchange,提问作者stray_dog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:58:16