Je voudrais appeler la fonction du plugin d'interpolation QGIS (méthode TIN) (Raster-> Interpoler) à partir de la console python.
Je ne trouve pas la fonction correspondante dans l'API QGIS ou dans la liste des algorithmes de traitement. J'ai trouvé l'algorithme de triangulation SAGA, qui fonctionne bien mais est 5-10 fois plus lent et la vitesse est importante dans mon cas.
Une idée de comment l'exécuter?
qgis
python
qgis-plugins
pyqgis
Vincent D.
la source
la source
from rasterinterpolation import rasterinterpolation
mais je ne sais pas quel module appeler (ou même comment appeler).Réponses:
J'ai pu apporter une solution complète à la question suivante:
Comment calculer un raster d'interpolation à partir de la console python dans QGIS?
Je republierai également la réponse ici, en raison du grand intérêt qu'elle semble susciter:
Répondre:
La documentation sur PyQGIS est pas très explicite, mais je me suis dit comment appeler correctement les classes d'interpolation associées (
QgsInterpolator
,QgsTINInterpolator
,QgsIDWInterpolator
,QgsGridFileWriter
) de python. Je vais décrire chaque étape du script en détail:Étape 1:
Importez le noyau et le module d'analyse et obtenez la couche vectorielle souhaitée pour l'interpolation en la sélectionnant avec un clic de souris dans l'onglet des couches.
Étape 2:
Préparez les classes d'interpolation avec les paramètres nécessaires. Les paramètres exacts pour l'initialisation de la structure LayerData peuvent être trouvés dans les documents de l'API QGIS (searchterm: QgsInterpolator).
Veuillez noter que je n'utilise pas la coordonnée z, j'obtiens le premier champ disponible (index = 0) comme attribut d'interpolation et j'utilise POINTS comme type d'entrée.
Étape 3:
Choisissez votre moteur d'interpolation. Ici, vous pouvez choisir entre la méthode d'interpolation TIN (
QgsTINInterpolator
) et l'interpolation IDW (QgsIDWInterpolator
). J'ai pris leQgsTINInterpolator
dans mon code.Gardez à l'esprit que vous devez passer une liste de python
layer_data
au moteur d'interpolation! Cela vous permet également d'ajouter plusieurs scénarios layer_data.Étape 4:
Configurez les paramètres nécessaires à l'exportation de la sortie d'interpolation (voir la documentation de
QgsGridFileWriter
). Celles-ci incluent des informations similaires à celles de l'interface d'interpolation (chemin de fichier, étendue, résolution, nombre de colonnes et de lignes).Soyez conscient de l'extension de fichier de votre raster de sortie car
QgsGridFileWriter
il écrit uniquement des grilles ASCII (.asc
). Les données sont écrites sur le disque en appelant lawriteFile()
méthode. Après l'exportation, vous pouvez ajouter le fichier de grille en tant que raster au canevas.Script complet pour référence:
Gardez à l'esprit que l'API QGIS est actuellement réécrite dans la version 3.0 et les classes d'interpolation utilisées sont déplacées de
qgis.analysis
versqgis.core
! Cela aura un impact énorme sur la fonctionnalité de ce script et devra donc être réécrit pour la version 3.0!la source
Vous pouvez le faire si vous avez installé le plugin Raster Interpolation à l'aide de Plugin Manager.
Remarque: je ne sais pas vraiment ce que fait le code ci-dessus à part le fait qu'il a imprimé une valeur. Mais cela vous aiderait probablement à comprendre l'utilisation.
la source