Я хотел бы вызвать функцию плагина интерполяции QGIS (метод TIN) (Raster-> Interpolate) из консоли Python.
Я не могу найти соответствующую функцию в QGIS API или в списке алгоритмов обработки. Я нашел алгоритм триангуляции SAGA, который отлично работает, но в 5-10 раз медленнее, и скорость важна в моем случае.
Есть идеи, как это выполнить?
qgis
python
qgis-plugins
pyqgis
Винсент Д.
источник
источник
from rasterinterpolation import rasterinterpolation
не знаю, какой модуль вызывать (или как вообще звонить).Ответы:
Я смог дать полное решение в следующем вопросе:
Как вычислить интерполяционный растр из консоли Python в QGIS?
Я также опубликую ответ здесь из-за большого интереса, который это, кажется, привлекает:
Ответ:
Документация по pyqgis не очень понятна, но я понял, как правильно называть связанные классы интерполяции (
QgsInterpolator
,QgsTINInterpolator
,QgsIDWInterpolator
,QgsGridFileWriter
) из питона. Я собираюсь описать каждый шаг сценария очень подробно:Шаг 1:
Импортируйте модуль ядра и анализа и получите требуемый векторный слой для интерполяции, выделив его щелчком мыши на вкладке слоя.
Шаг 2:
Подготовьте классы интерполяции с необходимыми параметрами. Точные параметры для инициализации структуры LayerData можно найти в документации по API QGIS (searchterm: QgsInterpolator).
Обратите внимание, что я не использую координату z, я получаю первое доступное поле (index = 0) в качестве атрибута интерполяции и использую POINTS в качестве типа ввода.
Шаг 3:
Выберите свой механизм интерполяции. Здесь вы можете выбрать между методом TIN-Interpolation (
QgsTINInterpolator
) и IDW-Interpolation (QgsIDWInterpolator
). Я взялQgsTINInterpolator
в своем коде.Имейте в виду, что вы должны передать список python
layer_data
в механизм интерполяции! Это также позволяет добавлять несколько сценариев layer_data.Шаг 4:
Настройте параметры, необходимые для экспорта выходных данных интерполяции (см. Документацию
QgsGridFileWriter
). Они включают информацию, аналогичную интерфейсу интерполяции (путь к файлу, экстент, разрешение, количество столбцов и строк).Помните о расширении файла вашего выходного растра, так как
QgsGridFileWriter
пишет только ASCII-сетки (.asc
). Данные записываются на диск путем вызоваwriteFile()
метода. После экспорта вы можете добавить grid-файл в качестве растра на холст.Полный скрипт для справки:
Имейте в виду , что QGIS-API в настоящее время переписывается до версии 3.0 и используемые интерполяции-классы перемещаются из
qgis.analysis
кqgis.core
! Это будет иметь огромное влияние на функциональность этого скрипта, поэтому его необходимо переписать для версии 3.0!источник
Вы можете сделать это, если у вас установлен плагин Raster Interpolation с помощью диспетчера плагинов.
Примечание: я действительно не знаю, что делает приведенный выше код, кроме того, что он напечатал значение. Но это, вероятно, поможет вам понять использование.
источник