Branches conditionnelles
Dans le modeleur il est possible d'utiliser des outils de modélisation.
Nous allons voir comment compléter le résultat de l'exercice précédent en utilisant des branches conditionnelles, nous permettant de créer et d'utiliser ou non un index spatial sur la grille en fonction du choix de l'utilisateur, exprimé sous forme d'une case à cocher.
Modifier le modèle obtenu dans l'exercice précédent en passant par exemple par
Ajouter un booléen comme entrée
Remplir les propriétés comme indiqué
Ajouter branche conditionnelle
Dans les propriétés ajouter une condition : Bouton d'ajout, puis bouton pour préciser l'expression.
Dans le nom de la branche tapez : Utilisez index spatial. Puis ajouter une 2ème branche qui s'appellera Ne pas utilisez index spatial avec comme condition NOT @indexspatial
Relions maintenant les deux branches aux algorithmes appropriés...
Ajouter l'algorithme Créer un index spatial.
et cliquer sur le bouton ... pour indiquer les dépendances :
Choisir la condition Utilisez index spatial
Ajouter un 2ème algorithme extraire par localisation et paramétrer le comme ci-dessous :
et préciser la dépendance
Modifier l'algorithme extraire par localisation existant auparavant :
Mettre à jour l'algorithme Compter les points dans les polygones pour qu'il utilise la bonne entrée en fonction de la variable @indexspatial.
Utiliser l'expression suivante :
if ( @indexspatial, @Extraire_par_localisation__avec_index_spatial__OUTPUT, @Extraire_par_localisation__pas_d_index_spatial__OUTPUT )
Préciser les dépendances :
Votre modèle doit maintenant ressembler à :
tester maintenant votre modèle avec une grille de 500m en activant l'index spatial :
Observer le résultat dans le journal : sur l'ordinateur utilisé pour créer les supports on relève :
Createspatialindex : 5.679s
extraire par localisation : 1.756s
temps total : 8.14s
Refaire le traitement sans activer l'index spatial :
Pour extraire par localisation on note le message :
II n'existe pas d'index spatial pour la couche en entrée, les performances seront fortement dégradées
extraire par localisation : 1.675s
Temps total de traitement : 2.42s
On constate donc que dans notre cas la création de l'index spatial est plus coûteux que le bénéfice obtenu dans l'algorithme extraire par localisation, mais cet exercice avait surtout pour but de montrer l'utilisation des branches conditionnelles dans le modeleur.
Remerciements à Ujaval Gandhi www.spatialthinks.compour les cours mis à disposition dont est inspiré ce paragraphe.