Me gustaría llamar a la función del complemento de interpolación QGIS (método TIN) (Raster-> Interpolate) desde la consola de Python.
No puedo encontrar la función correspondiente en QGIS API o en la lista de algoritmos de procesamiento. Encontré el algoritmo de triangulación SAGA, que funciona bien pero es 5-10 veces más lento y la velocidad es importante en mi caso.
¿Alguna idea de cómo ejecutarlo?
qgis
python
qgis-plugins
pyqgis
Vincent D.
fuente
fuente
from rasterinterpolation import rasterinterpolation
pero no estoy seguro de a qué módulo llamar (o cómo llamar).Respuestas:
Pude proporcionar una solución completa en la siguiente pregunta:
¿Cómo calcular un ráster de interpolación desde la consola de Python en QGIS?
Volveré a publicar la respuesta aquí también, debido al gran interés que parece atraer:
Responder:
La documentación sobre PyQGIS no es muy explica por sí mismo, pero me di cuenta de cómo llamar correctamente a las clases de interpolación asociados (
QgsInterpolator
,QgsTINInterpolator
,QgsIDWInterpolator
,QgsGridFileWriter
) de pitón. Voy a describir cada paso del guión con gran detalle:Paso 1:
Importe el núcleo y el módulo de análisis y obtenga la capa vectorial deseada para la interpolación seleccionándola con un clic del mouse en la pestaña de la capa.
Paso 2:
Prepare las clases de interpolación con los parámetros necesarios. Los parámetros exactos para la inicialización de la estructura LayerData se pueden encontrar en los documentos de la API QGIS (searchterm: QgsInterpolator).
Tenga en cuenta que no uso la Coordenada z, obtengo el primer campo disponible (índice = 0) como atributo de interpolación y uso PUNTOS como tipo de entrada.
Paso 3:
Elige tu motor de interpolación. Aquí puede elegir entre el método TIN-Interpolation (
QgsTINInterpolator
) y IDW-Interpolation (QgsIDWInterpolator
). Tomé elQgsTINInterpolator
en mi código.¡Tenga en cuenta que debe pasar una lista de Python
layer_data
al motor de interpolación! Esto también le permite agregar múltiples escenarios layer_data.Etapa 4:
Configure los parámetros necesarios para la exportación de la salida de interpolación (consulte la documentación de
QgsGridFileWriter
). Estos incluyen información similar a la interfaz gráfica de usuario de interpolación (ruta de archivo, extensión, resolución, número de columnas y filas).Tenga en cuenta la extensión del archivo de su ráster de salida, ya que
QgsGridFileWriter
solo escribe ASCII-grids (.asc
). Los datos se escriben en el disco llamando alwriteFile()
método. Después de exportar, puede agregar el archivo de cuadrícula como ráster al lienzo.Guión completo para referencia:
¡Tenga en cuenta que la API QGIS se reescribe actualmente a la versión 3.0 y las clases de interpolación utilizadas se trasladan de
qgis.analysis
aqgis.core
! ¡Esto tendrá un gran impacto en la funcionalidad de este script, por lo que debe reescribirse para la versión 3.0!fuente
Puede hacer esto si tiene instalado el complemento Raster Interpolation usando Plugin Manager.
Nota: Realmente no sé qué hace el código anterior aparte del hecho de que imprimió un valor. Pero probablemente te ayudaría a entender el uso.
fuente