如何在Jupyter Notebook中使用GDAL/OGR对EPSG:4326坐标系的矢量文件进行栅格化并调整像素大小
解决GDAL栅格化时坐标系丢失与分辨率调整问题
你遇到的两个核心问题——坐标系丢失、栅格分辨率过大,都可以通过给gdal.Grid添加关键参数来解决,下面一步步给你说明:
1. 恢复坐标系与地理范围
你的矢量数据是EPSG:4326,栅格化后坐标变成0-250,本质是因为GDAL默认没有继承矢量的空间参考和地理范围,转而使用像素的行列索引作为坐标了。要修复这个,需要显式指定两个参数:
outputSRS:设置输出栅格的坐标系,直接沿用你的矢量坐标系"EPSG:4326"即可outputBounds:定义输出栅格的地理范围,对应你矢量的X(74-78)和Y(35-38)区间,格式为[minX, minY, maxX, maxY],也就是(74, 35, 78, 38)
2. 调整像素分辨率
你觉得当前分辨率(0.015625°、0.01171875°)过大,想要更精细的栅格,有两种灵活的控制方式:
方式一:直接指定像素分辨率(推荐)
用tr参数设置目标分辨率,格式为(x_resolution, y_resolution)。比如想要0.001°的精细分辨率,就设tr=(0.001, 0.001);如果需要和原矢量匹配的特定分辨率,直接替换数值即可。
方式二:指定输出栅格的宽高
通过width和height参数设定像素总数量,GDAL会自动计算对应分辨率。比如基于你的范围(X跨度4°,Y跨度3°),如果想要0.001°分辨率,宽度就是4 / 0.001 = 4000,高度是3 / 0.001 = 3000,即width=4000, height=3000。
调整后的完整代码
把这些参数整合后,代码会变成这样:
gdal.Grid( "trial2.tif", "merged2018-19.gpkg", zfield="h_li", algorithm="nearest", outputSRS="EPSG:4326", outputBounds=(74, 35, 78, 38), tr=(0.001, 0.001) # 这里替换成你实际需要的分辨率数值 )
运行这段代码后,生成的栅格就会保留EPSG:4326坐标系,坐标显示也会回到74-78(经度)和35-38(纬度)区间,同时分辨率也会符合你的预期。
内容的提问来源于stack exchange,提问作者Adyasha Mohapatra
相关产品推荐
相关产品推荐

