Intégration de scripts à un modèle

Les scripts écrits dans Python ou dans d'autres langages de script peuvent être intégrés à des modèles en les convertissant en outils de script et en les ajoutant à un modèle. L'intégration de scripts peut être utilisée lorsque la logique Python ou d'un autre langage de script est nécessaire pour améliorer un modèle ou pour accéder à un paquetage ou programme externe à partir d'ArcGIS.

Le point de départ de l'intégration d'un script à un modèle est le script lui-même. Celui-ci doit être écrit de sorte à pouvoir être intégré à la structure de géotraitement. Pour plus d'informations, reportez-vous à la rubrique Ecriture d'un script Python.

Une fois le script écrit, un outil de script peut être créé et ajouté à une boîte à outils. Cet outil de script peut être ajouté à un modèle et utilisé pour doter le modèle de fonctionnalités supplémentaires.

Exemple d'application

ArcGIS ne comporte aucune fonctionnalité intégrée permettant d'utiliser le format HTML. Toutefois, les scripts Python permettent d'accéder à des méthodes et fonctions qui rendent possible la création et la modification de documents HTML. Pour ajouter cette fonctionnalité HTML à ArcGIS, vous pouvez intégrer un outil de script Python à un modèle.

L'exemple suivant exécute des requêtes spatiales et d'attributs sur une couche de parcelles et génère un rapport HTML détaillant les attributs d'une parcelle spécifiée par utilisateur et des parcelles voisines. La génération HTML est réalisée dans un script Python exécuté à partir du modèle.

Script Python

Le script suivant, tabletohtml.py, permet de lire le contenu d'une table en entrée et de générer un rapport HTML. Le code de script est fourni à la fin de cette rubrique.

Script Python Table to HTML

Création d'un outil de script

La procédure suivante vous indique comment créer un outil de script qui exécute le script tabletohtml.py. Pour plus d'informations sur la création d'outils de script, reportez-vous à la rubrique Présentation rapide de la création d'outils de script

Etapes :
  1. Cliquez avec le bouton droit sur une boîte à outils et cliquez sur Ajouter > Script.
    Ajout d'un nouveau script

    L'Assistant Ajouter un script s'ouvre.

  2. Utilisez l'Assistant Ajouter un script pour spécifier les propriétés générales du script.
    Définition des propriétés générales du script
  3. Sur la page suivante de l'Assistant Ajouter un script, indiquez quel script doit être exécuté lorsque l'outil de script est exécuté.
    Fichier source du script
  4. Sur la page suivante de l'Assistant Ajouter un script, spécifiez les propriétés des paramètres de l'outil de script. Celui-ci comporte deux paramètres : une table en entrée et un fichier HTML en sortie. Ces paramètres ont également été définis dans le script tabletohtml.py.
    Définition des propriétés des paramètres de l'outil de script
  5. Cliquez sur Terminer pour ajouter l'outil de script à la boîte à outils.

Ajout de l'outil de script à un modèle

Etapes :
  1. Le modèle Parcel Report exécute des requêtes spatiales et d'attributs sur une couche de parcelles. Ajoutez le script Table to HTML au modèle pour ajouter la fonctionnalité de génération HTML voulue.
    Ajout d'un outil de script à un modèle
  2. Connectez la sortie de l'outil Sélectionner une couche par emplacement en tant qu'entrée de l'outil de script et définissez le chemin d'accès de la sortie de l'outil de script (le chemin d'accès du fichier HTML à générer). Renommez la sortie de l'outil de script Rapport et convertissez-la en paramètre de modèle.
Exemple de modèle utilisant un outil de script
Modèle terminé contenant un outil de script permettant de générer des rapports au format HTML
import sys, string, os, arcgisscripting
gp = arcgisscripting.create(9.3)

tablePath = gp.GetParameterAsText(0)
filePath = gp.GetParameterAsText(1)

outfile = open(filePath, "w")
fields = gp.ListFields(tablePath)

fieldNames = []
for field in fields:
   if (field.type <> "Geometry" and field.type <> "BLOB"):
       fieldNames.append(field.name)
outfile.write("<table border=""1"">\n")
outfile.write("<tr>\n")

for fieldName in fieldNames:
    outfile.write("<th>" + fieldName + "</th>\n")
outfile.write("</tr>\n")

cur = gp.SearchCursor(tablePath)
row = cur.Next()
while row:
    outfile.write("<tr>\n")
    for fieldName in fieldNames:
        outfile.write("<td>" + str(row.getValue(fieldName)) + "</td>\n")
    outfile.write("</tr>\n")

    row = cur.Next()

del cur

outfile.write("</table>\n")

outfile.flush()
outfile.close()

7/10/2012