如何将Geopandas中Geometry列转换为WGS84坐标系的经纬度?
最优实现:将GeoJSON点转换为WGS84经纬度
核心思路
利用Geopandas的内置坐标系转换方法to_crs()完成批量坐标转换,再直接提取几何对象的x(经度)和y(纬度)属性,全程采用向量化操作,避免低效的循环或apply,保证处理效率。
完整代码
import geopandas as gpd # 1. 读取GeoJSON文件 df = gpd.read_file('/content/buildings.geojson') # 2. 确认并设置原始坐标系(若未自动识别) # 从你提供的坐标格式(如POINT (-12635143.897 7083229.283))推测,原始坐标系为Web墨卡托(EPSG:3857) if df.crs is None: df = df.set_crs(epsg=3857) # 3. 转换到WGS84坐标系(EPSG:4326) df_wgs84 = df.to_crs(epsg=4326) # 4. 提取经度和纬度,添加为新列 df_wgs84['longitude'] = df_wgs84.geometry.x df_wgs84['latitude'] = df_wgs84.geometry.y # 可选:查看转换结果 print(df_wgs84[['longitude', 'latitude', 'geometry']].head())
关键说明
- 坐标系确认:GeoJSON文件通常自带CRS信息,若未识别,根据坐标数值范围(大负数/大正数)可判断为Web墨卡托(EPSG:3857),这是在线地图常用的投影坐标系。
- 高效性:
to_crs()和直接提取x/y属性都是Geopandas底层优化的向量操作,处理大规模数据时比手动循环或apply快数倍。 - 结果验证:转换后的经度范围应为
[-180, 180],纬度范围应为[-90, 90],符合WGS84的标准范围。
内容的提问来源于stack exchange,提问作者Uttaran Gangopadhyay
相关产品推荐
相关产品推荐

