GeoPandas读取Shapefile时指定crs参数报错的原因及文件读取状态咨询
GeoPandas读取Shapefile时指定crs参数报错的原因及文件读取状态咨询
嗨,我来帮你拆解这个问题:
报错的原因
你遇到的这个警告,核心问题是对gpd.read_file()里的crs参数理解有误!这个参数的作用是当读取的空间文件本身没有携带CRS信息时,手动为它赋予一个坐标系。但你用的ESRI Shapefile本身是自带CRS元数据的——你第一次读取后已经通过print(shp_file.crs)确认了它是EPSG:3857,这时候你强行在read_file()里指定crs参数,GeoPandas底层依赖的OGR库就会抛出警告,因为Shapefile格式不支持在打开时覆盖自带的CRS信息,你指定的参数会被直接忽略。
文件读取状态
放心,这个警告只是告诉你指定的crs参数没起作用,文件本身已经被正确读取了。你可以打印shp_file1.crs看看,它依然会是EPSG:3857,和第一次读取的shp_file完全一致,空间数据也没有损坏。
正确的操作方式
如果你的需求是转换坐标系(比如要转到常用的WGS84,也就是EPSG:4326),正确的做法是先正常读取文件,再用to_crs()方法转换:
# 正常读取文件(自动识别自带的CRS) shp_file = gpd.read_file('World_Countries/World_Countries_Generalized.shp') # 转换到目标坐标系 shp_file_converted = shp_file.to_crs('EPSG:4326')
备注:内容来源于stack exchange,提问作者Kernel
相关产品推荐
相关产品推荐

