GeoPandas转换CRS提示需先设坐标系但已设置仍报错如何解决
问题原因
你遇到的报错是两个常见使用误区共同导致的:
set_crs方法默认不修改原GeoDataFrame,只会返回一个设置了CRS的新对象。你直接执行gdf.set_crs(epsg = "4326")没有做赋值操作,原gdf的属性没有发生任何变更。- 你向空GeoDataFrame填充geometry列时,如果赋值的是不带CRS元数据的原生Shapely几何对象,哪怕GeoDataFrame层级标注了CRS,单个几何对象仍然属于无CRS的naive geometries,CRS转换时的逐对象校验就会触发报错。
正确操作流程
首先确认CRS被正确写入GeoDataFrame:
# 写法1:赋值给新变量(推荐) gdf = gdf.set_crs(epsg=4326, allow_override=True) # 写法2:原地修改 # gdf.set_crs(epsg=4326, allow_override=True, inplace=True)
再执行CRS转换即可正常运行:
gdf_25833 = gdf.to_crs(epsg=25833)
补充说明:如果后续填充数据时,直接从其他带CRS的GeoDataFrame中提取几何对象赋值,可避免出现单个几何无CRS的问题。
内容的提问来源于stack exchange,提问作者four-eyes
相关产品推荐
相关产品推荐

