Я занимаюсь разработкой на Python и использую GDAL из OSGEO для работы с растрами и шейп-файлами и взаимодействия с ними.
Я хочу взять шейп-файл с точечными объектами и интерполировать его в поверхностный растр. Прямо сейчас я использую метод 'RasterizeLayer', который записывает значение из точечного объекта в растр (который устанавливается со всеми значениями узлов), но оставляет все нетронутые пиксели в качестве значения узлов. Поэтому у меня остался растр типа шахматной доски.
Что у меня после использования RasterizeLayer:
Что я хочу для конечного продукта:
Я считаю, что функция, которую я ищу, известна как 'Spline_sa ()' из импорта arcgisscripting.
GDAL имеет аналогичную функцию, или есть другой метод для получения желаемого результата?
Взгляните на GDAL Gridal API . Я не знаю, присутствует ли это в привязках Python, но если нет, вы вызываете вызов утилиты gdal_grid через модуль подпроцесса .
GDAL grid API использует только взвешивание обратных расстояний, скользящее среднее и ближайший сосед, он не реализует сплайны. Другой вариант - использовать Scipy .
источник
Немного устаревший для этой темы, но я написал простой модуль, который использует алгоритм KNN из sklearn, называемый skspatial.
https://github.com/rosskush/skspatial
Вы можете импортировать шейп-файл с помощью геопанд и выбрать столбец, и он будет интерполировать поверхность, которую можно экспортировать в растр. Это очень простой и, вероятно, не лучший способ сделать это, но он содержит все, по крайней мере, на чистом питоне.
источник