我检查crs一致性作为质量控制手段之前,涉及地理数据(gdf)和光栅(rstr)的空间分析。
print(gdf.crs)返回“epsg:2193”
和
print(rstr.crs)返回“EPSG:2193”
这在理论上是可以的,因为QGIS中的交叉检查确认它们是相同的。然而,一个逻辑测试:
gdf.crs == rstr.crs返回“假”
虽然这看起来可能是一个简单的区分大小写的问题,但我注意到它们分别是两种不同的数据类型(分别是和 ),那么这可能就是不平等吗?
解决这两个不同包如何返回crs的最佳选择是什么?
发布于 2021-06-28 11:14:16
CRS可以以多种方式存储。例如PROJ、EPSG-Code或WKT-格式(众所周知的文本),它们更倾向于作为存储CRS信息的无损方式。作为参考,请查看描述坐标参考系统这里的最佳格式的PROJ解释。
在您的例子中,geopandas返回PROJ (这里是),这是比较突出的部分之一。有趣的是,Rasterio有自己的方式来存储CRS信息,类'rasterio.crs.CRS‘。比较存储CRS的两种不同实现应该是“False”。要解决这个问题,还需要定义存储格式。
将EPSG代码作为字符串(而不是底层的CRS存储类)进行比较,对您的任务来说应该足够了。
Rasterio有一个返回EPSG码的函数
rstr.to_epsg()地质公园提供类似的功能 (向下滚动一点):
gdf.crs.to_epsg()https://stackoverflow.com/questions/68155678
复制相似问题