Я использую gdal.ReprojectImage для перерисовки растра GRIB из конформного Ламберта в координаты долготы / широты, и некоторые части домена lon / lat (углы, более или менее) выходят за пределы входной сетки.Я хочу, чтобы у результата были значения без данных в этих областях.Вот как должен выглядеть результат: белый означает отсутствие областей данных, а светло-розовый - нулевое значение:
HRRR APCP 2019-01-22 12Z f03 (контур)
Это правильный результат, но он происходит внутри функции contourf, которая не работает для меня.Я не просто пытаюсь нарисовать картину.Мне нужны данные.Обратите внимание, что в этом случае у входного набора данных нет никаких значений без данных.
Если я определяю значение без данных, но не заполняю его растровым диапазоном явно перед вызовом 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 (без предварительного заполнения ndv)
Если я явно заполнил диапазон значениями без данных, добавив
Код: dest_ds.GetRasterBand(1).Fill(ndv)
перед вызовом gdal.ReprojectImage, allнули в исходной сетке выводятся на значения без данных.
HRRR APCP 2019-01-22 12Z f03 (предварительное заполнение ndv)
Похоже, что ReprojectImage, когда он сталкивается с интерполяционной окрестностью всех нулей, оставляет эти области выходной сетки в их значение по умолчанию.Как будто в исходном коде есть какая-то инструкция continue, создающая проблему.
Полагаю, я мог бы создать маску, перепроектировать ее и применить результат к перепроектированным данным, но есть ли лучшее решение?Я скучаю?
Использование python3-gdal 2.2.3 в Ubuntu Linux 18.04.