Model Builder : convertir un modèle batch en modèle interactif

Le principe de Model Builder est de créer des outils de geotraitement, qui sont par définition des outils « batch ». Ceci veut dire qu’il n’y pas d’interaction entre l’utilisateur et le traitement, une fois celui-ci lancé. Vous définissez les données en entrée et vous récupérez les données en sortie.
Il y a des situations où cet aspect est contraignant. Imaginez que vous devez exécuter un modèle en utilisant seulement une partie de l’ensemble des données et si vous utilisez l’outil Clip vous dupliquez les données, ou bien vous voulez sélectionner une zone sur la carte et appliquer votre modèle de géotraitement seulement aux entités complètement contenues dans cette zone. Une autre possibilité, celle que nous allons suivre dans cet exemple, vous utilisez un modèle avec un outil qui nécessite une entrée de point, comme « Champ de vision », et vous voulez entrer manuellement le, ou les, emplacements de l’observateur.

Eh bien, c’est possible de faire ceci avec Model Builder en utilisant un JEU D’ENTITES.
Vous n’avez jamais entendu parler? pas étonnant. Il est vraiment caché!

Le Jeu d’entités va remplacer dans votre modèle une couche en entrée du modèle. En indiquant que ce Jeu d’entités est un paramètre du modèle, au moment du lancement, la fenêtre d’exécution va s’ouvrir et vous aurez la possibilité de saisir manuellement, soit dans la table, soit sur la carte, les éléments en entrée du modèle.

Dans l’exemple que nous allons prendre, vous cliquerez sur les points d’observation que vous souhaitez traiter avec l’outil « Champ de vision », puis vous cliquerez sur le bouton OK et le modèle s’exécutera sur les points rentrés.

Mise en place d’un modèle classique

Nous allons construire un modèle classique avec Model Builder pour calculer le « Champ de vision ». Nous avons besoin d’un MNT et d’une couche de points en entrée. Nous obtiendrons en sortie un raster avec des pixels 1, pour les pixels visibles à partir du, ou des, points d’observation et des pixels 0, pour les pixels non visibles.

L’outil se trouve dans la boîte à outil Spatial Analystr -> Surface -> Champ de vision

model builder outil champ de vision

On ajoute le raster en entrée :

raster en entrée de l'outil champ de vision

Là où on ne fait pas dans le classique

Maintenant on va faire quelque chose d’un peu bizarre. On va ajouter une couche quelconque de type point, puis on va lui appliquer une symbologie quelconque et on va la sauver en fichier de couche (layer). Une fois ceci fait, on supprime la couche dans ArcMap.

La seule chose qu’importe est que la couche corresponde au bon type de données (point, ligne, polygone) pour l’outil qu’on utilise. Accessoirement, la symbologie est utilisée au moment de la saisie des points, mais tout le reste (système de coordonnées, etc) n’est pas pris en compte.

Nous faisons cette opération et créons un fichier de couche « observateurs.lyr »

Où l’on finit le modèle

Pour l’instant, dans notre modèle, nous n’avons toujours pas de couche de points en entrée de l’outil « Champ de vision ». Nous allons l’ajouter maintenant.

Nous n’allons pas le faire comme on le ferait avec une couche de points, en cliquant et en la déplaçant dans le modèle. Nous allons créer une variable : cliquez avec le bouton droit n’import’où dans le modèle pour ouvrir le menu contextuel.
Sélectionnez « Créer une variable »

model builder : créer une variable

Cherchez et sélectionnez « Jeu d’entités » (Je vous avez bien dit que c’était bien caché!). Il y a pas mal de lignes Jeu … Faites bien attention à choisir la bonne.

variable  jeu d'entités

Connectez le Jeu d’entités à l’outil.

connexion du jeu d'entités à l'outil

Vous observerez que le modèle n’est pas prêt à être exécuté. Pour cela, il manque la définition de la symbologie du Jeu d’entités. On va lui attribuer la symbologie du fichier layer créé un peu plus haut.

Cliquez droit sur le Jeu d’entités et sélectionnez Propriétés. Ouvrez l’onglet Type de données et pointez sur le fichier de couche.

schema et symbologie du jeu d'entités

Le modèle est maintenant prêt à tourner. Ne vous inquiétez pas de la sortie non définie, c’est une sortie optionnelle de l’outil que nous n’utiliserons pas dans cet exemple.

modèle pret a l'emploi

Dernière étape, définir les paramètres du modèle. Cliquez droit sur les ovales bleus et sélectionnez « Paramètre du modèle ».

parametres du modele

Enregistrez votre modèle dans une boîte à outils et fermez-le.

Précision : pour que l’interactivité fonctionne, le modèle ne doit pas être en édition. Il n’est interactif qu’au moment de l’exécution à partir de la Toolbox.

Enfin, on exécute le modèle

sauvegarde du modèle

Exécutez le modèle à partir de la toolbox.

La fenêtre de paramétrage s’ouvre:

parametrage du modele

Sur cette fenêtre vous avez un champ d’un nouveau type. Il correspond au modèle de saisie de données, comme dans la fenêtre « Editeur ». En cliquant sur le modèle affiché, le curseur devient un curseur de saisie. En cliquant sur la carte d’ArcMap vous saisissez les points qui seront pris en compte par le modèle.

saisie des points en entrée du modèle

Une fois terminée la saisie, vous cliquez sur OK pour exécuter le modèle. A la fin du processus, vous obtenez la carte de champ visuel des points saisis.

carte de visibilité resulante du modèle

N’hésitez pas à laisser vos questions!

8 pensées sur “Model Builder : convertir un modèle batch en modèle interactif”

  1. S’il vous plais comment ajouter un texte d’aide dans l’interface d’exécution du model builder ( comme dans votre exemple au dessous du texte « champdevision » à droite de la fenêtre d’exécution)
    merci infiniment.

    1. Dans la fenêtre d’arctoolbox, si vous cliquez-droit pour ouvrir le menu contextuel d’un de vos modèles, vous verrez une option Item Description (désolé je travaille avec la version anglais d’ArcGis. C’est juste en-dessous d’Aide). Cliquez sur cette option et vous verrez une fenêtre avec le fichier XML de métadonnées de l’item.
      Cliquez en haut sur Editer (ou Modifier) et vous pourrez remplir les différents champs.
      Ce qui apparaît à droite dans la fenêtre d’exécution du modèle c’est le contenu du champ RESUME des métadonnées (pas celui de DESCRIPTION)
      Pour chaque paramètre du modèle, vous pouvez entrer une explication qui sera affichée dans la fenêtre de droite quand vous cliquerez sur le paramètre dans la fenêtre d’exécution.

  2. Super ce site et spécialement cet article très intéressant. Je suis entrain de créer un modèle aussi, je vais m’en inspirer du coup.

    Le fait de rajouter un jeu d’entité (variable) est obligatoire pour pouvoir appliquer une symbologie par rapport à un .lyr selon toi?

    Je cherche après une « union » de plusieurs de plusieurs couches entre elles et une simplification du résultat (sur laquelle je suis toujours entrain de travailler) faire attribuer une symbologie à ma couche finale sortie sur la base d’un .lyr existant. Faisable ?

    Super en tout cas, je continue à lire les autres articles

    Sylvain

    1. Merci!
      Pour appliquer une symbologie existante à une couche résultat d’un modèle:
      – cliquer droit sur la couche dans Model Builder, puis Propriétés
      Dans la fenêtre de propriétés, clique sur l’onglet Symbologie de la couche (??) Désolé mais je travaille avec la version anglaise et je ne suis jamais sûr de traduire exactement. L’onglet est « Layer Symbologie » en anglais.
      On clique sur le bouton répertoire et on va pointer sur le fichier .lyr que l’on souhaite appliquer à la couche en sortie.
      Bonne continuation.

      1. Merci pour le retour rapide. C’est bien ce que je viens de voir en fait, plutôt simple si on veut se baser sur une symbologie existante. On peut faire une symbologie directement à partir du MB, où doit-on passer à chaque fois par un .lyr du coup?
        Cela j’imagine implique d’avoir a minima les meme champs que la couche qui a servit à la symbologie dans la couche finale?

        1. Pour faire une symbologie dans MB il faut faire du Python. Le plus simple c’est de passer pat un fichier lyr. Et oui, il faut que la couche corresponde aux critères du lyr.

  3. j’aime bien le site , je suis en train d’essayer de réaliser un modèle, le but est d’afficher 2 couches raster côte à côte au lieu de les superposer, vu qu’ils ont des données en commun.

    Merci à vous !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *