如何避免gdal.ReprojectImage忽略零?

时间:2019-01-22 23:19:18

标签: python raster gdal map-projections

我正在使用gdal.ReprojectImage从Lambert保形到经度/纬度坐标的GRIB栅格,并且lon / lat域的某些部分(或多或少)落在输入网格之外。我希望结果在那些越界区域中没有数据值。结果应该是这样,白色表示没有数据区域,浅粉红色表示值为零:

HRRR APCP 2019-01-22 12Z f03 (contourf)

那是正确的结果,但是它是在Silhouettef函数内部发生的,对我不起作用。我不只是想画画。我需要数据。请注意,在这种情况下,输入数据集没有任何无数据值。

如果我定义了一个无数据值,但在调用ReprojectImage之前未明确填充栅格带,则结果中的零值和越界区域都将设置为零:

代码: dest_ds.GetRasterBand(1).SetNoDataValue(ndv) gdal.ReprojectImage(source_ds, dest_ds, source_ds.GetProjection(), dest_ds.GetProjection(), gdalconst.GRA_Bilinear)

HRRR APCP 2019-01-22 12Z f03 (no ndv pre-fill)

如果我通过添加明确填充无数据值

代码:dest_ds.GetRasterBand(1).Fill(ndv)

在调用gdal.ReprojectImage之前,原始网格中的所有零都将投影为无数据值。

HRRR APCP 2019-01-22 12Z f03 (ndv pre-fill)

当ReprojectImage遇到全零的插值邻域时,看起来好像将输出网格的那些区域保留为其默认值。就像源代码中存在某种continue语句,这在这里造成了问题。

我想我可以创建一个遮罩,对其进行重新投影,然后将结果应用于重新投影的数据,但是我缺少更好的解决方案吗?

在Ubuntu Linux 18.04上使用python3-gdal 2.2.3。

0 个答案:

没有答案