Suite

Limitations de la sélection de lignes par itération dans ArcGIS ModelBuilder ?


inb4 en utilisant un script réel ;), je recherche des conseils sur le constructeur de modèles d'arc.

L'itération de la sélection de lignes dans le générateur de modèles d'Arc vous permet de créer plusieurs vues de table en fonction des regroupements de champs d'une table. Ces vues de table peuvent ensuite être utilisées pour d'autres processus dans le modèle.

J'utilise les vues tabulaires pour calculer plusieurs variables qui sont ensuite renseignées dans un autre jeu de données d'entités. Plus ou moins, j'utilise la sélection de ligne itérative pour exécuter des processus sur des ensembles d'enregistrements associés (MANY) dans une table, puis j'utilise les résultats pour remplir une deuxième table (ONE).

L'un des champs de la deuxième table requiert une variable qui est calculée en partie par un groupe d'enregistrements qui n'est pas le groupe d'enregistrements identifié par la sélection de ligne d'itération. En d'autres termes, jusqu'à présent, chaque champ ne nécessite que l'ensemble d'enregistrements transformés en vue de table par l'itérateur. Mais comme mentionné ci-dessus, ce nouveau champ nécessite une vue sous forme de tableau non basée sur les sélections rendues possibles dans la sélection de ligne d'itération - une relation différente est requise.

Il y a quelques problèmes avec cela dans le générateur de modèles. Mon approche consiste maintenant à prendre la sortie de la variable en ligne de la sélection de ligne itérée et à l'utiliser dans une expression SQL d'une vue de table séparée dans le modèle. Cette vue de table de création est basée sur la table d'origine (utilisée par l'itérateur) avec la variable dans une expression SQL de sorte qu'une colonne différente est utilisée pour baser la vue de table de création pour chaque itération. exemple : "c%Value%" = 1. (dans le tableau, il y a un certain nombre d'en-têtes de colonnes qui commencent par la lettre c, puis un nombre. |c1|c2|c3|c4|… c24|. Mon raisonnement est le suivant : à chaque itération, une nouvelle %Value% est produite (1-24), et avec chaque nouvelle %Value%, la Make Table View séparée "devrait" produire une vue tabulaire basée sur la variable en ligne dans l'expression, qui faire les calculs nécessaires qui peuvent ensuite être calculés dans le champ problématique de la deuxième table.

Après avoir exécuté le modèle, je trouve que les champs sont calculés correctement jusqu'à présent, mais le champ problématique a des valeurs tout à fait fausses. L'exécution de la vue make table produit indépendamment les variables correctes et le calcul de ces valeurs dans l'ensemble de données cible, mais lorsqu'il est exécuté avec l'itérateur, cela ne fonctionne pas.


j'ajouterais une condition préalable allant

De:

La "Valeur" sortant de l'itérateur

À:

"Make Table" (le 1er outil que vous exécutez sur "Final1(2)")

Cela garantira que la valeur change à chaque fois


Voir la vidéo: Model Builder - Iterators Video One - Iterate through Features (Octobre 2021).