Utiliser le paramètre d'entrée comme variable dans l'expression
Dans mon projet, j'ai une couche vectorielle et une couche raster. Je souhaite supprimer toutes les entités de la couche vectorielle où l'emplacement de l'entité a une valeur de hauteur de 0 au même emplacement dans la couche raster.
Cela fonctionne bien en utilisant "Sélectionner par expression" et en utilisant l'expression ci-dessous:
raster_value('layerid' ,1,make_point(x($geometry),y($geometry))) = 0
puis en remplaçant 'layerid'par l'ID de la couche raster.
Je souhaite automatiser un long flux de travail avec le modélisateur graphique, où c'est l'une des tâches.
Il ressemble actuellement à ceci:
J'essaie d'utiliser "Extraire par expression", avec la même expression que ci-dessus, et cela fonctionne tant que le layeridparamètre est modifié avant d'exécuter le modèle, mais je souhaite utiliser l'entrée de la couche raster heightmappour obtenir l'ID. Ainsi:
Cela ne marche pas. L'expression renvoie null à chaque fois. J'ai aussi essayé d'utiliser eval(@heightmap), mais pas de chance.
En guise de solution de contournement, j'ai essayé d'utiliser l'algorithme "Charger la couche dans le projet", puis d'utiliser sa variable de sortie dans l'expression, mais cela a fait la même chose.
Comment puis-je mettre correctement le layerid de l' heightmapentrée dans l'expression?
Réponses
Je n'ai pas trouvé de solution au problème de la référence à une entrée de modèle dans l'expression, mais j'ai trouvé une solution qui a résolu ce que j'essayais de faire.
L'algorithme "Statistiques zonales" peut ajouter des attributs à chaque entité de la couche vectorielle qui peut contenir la valeur moyenne de la couche raster pour la zone de polygone.
Cela m'a permis d'utiliser ce champ comme valeur de comparaison dans l'algorithme "Extraire par expression"
Pour garantir que "Statistiques zonales" s'exécute avant "Extraire par expression", "Statistiques zonales" peut être définie comme dépendance.
Notez que vous pouvez également utiliser "Extraire par attribut" au lieu de "expression".