如何解决测试地理数据框和光栅对象之间的crs
在涉及地理数据框 (gdf) 和栅格 (rstr) 的空间分析之前,我检查 crs 一致性作为质量控制的手段。
print(gdf.crs)
返回 'epsg:2193'
和
print(rstr.crs)
返回“EPSG:2193”
理论上没问题,因为 QGIS 中的交叉检查确认它们是相同的。然而,一个合乎逻辑的测试:
gdf.crs == rstr.crs
返回“假”
虽然这看起来可能是区分大小写的简单问题,但我注意到它们是两种不同的数据类型(
解决两个不同的包如何返回 crs 的最佳选择是什么?
解决方法
CRS 可以通过多种方式存储。例如 PROJ、EPSG-Code 或 WKT 格式(众所周知的文本),它们首选作为存储 CRS 信息的无损方式。作为参考,请查看用于描述坐标参考系统 here 的最佳格式的 PROJ 说明。
在您的情况下,geopandas 返回 PROJ(这里是 Python 实现 PyProj),这是比较突出的之一。有趣的是,Rasterio 有自己的存储 CRS 信息的方式,即“rasterio.crs.CRS”类。比较存储 CRS 的两种不同实现应该是“假”。要解决此问题,您还需要定义存储格式。
将 EPSG 代码作为字符串进行比较(而不是底层的 CRS 存储类)应该足以满足您的任务。
Rasterio 有一个返回 EPSG-code 的函数:
rstr.to_epsg()
geopandas 提供了类似的 functionalities(向下滚动一点):
gdf.crs.to_epsg()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。