使用rasterio重投影坐标时规则网格变为不规则网格的问题
问题原因
这个现象是空间投影本身的固有特性,和rasterio.warp.transform函数的实现无关:
- EPSG:31467属于平面投影坐标系(高斯-克吕格3带投影),坐标系下的x/y是平面直角坐标,天然支持等间距的规则网格结构
- EPSG:4326属于球面地理坐标系,平面坐标到球面经纬度的映射是非线性的:原平面网格中同一y值的点,投影到球面后纬度会随x值的变化出现微小偏移,同一x值的点投影后经度也会随y值变化,因此不会再保持原来的规则网格特性,才会出现转换后所有经纬度值都不重复的情况。
补充说明:两个坐标系存在本质区别,EPSG:31467的单位是米,适合小范围的平面距离测量;EPSG:4326单位是度,是全球通用的地理坐标系统。
实现规则网格重投影的正确方案
你之前的操作只是转换了原有网格点的坐标,没有做栅格重采样,自然得不到规则网格的结果。推荐直接使用适配xarray的空间处理库rioxarray实现需求,代码示例如下:
import rioxarray import xarray as xr # 加载你的GeoTIFF到xarray,自动识别CRS ds = xr.open_dataset("your_file.tif", engine="rasterio") # 直接重投影到EPSG:4326,输出自动为规则经纬度网格 ds_reproj = ds.rio.reproject("EPSG:4326")
如果需要手动控制重采样过程,也可以自行生成目标坐标系下的规则网格,再调用rasterio.warp.reproject函数将原始栅格值重采样到新网格上,不要只做坐标点的转换。
内容的提问来源于stack exchange,提问作者till Kadabra
相关产品推荐
相关产品推荐

