LIVRE EN LIGNECartographie humanitaire avec ArcGIS Desktop
📖 Livre ⌂ Site SMX
Module 20 – Automatisation avec ModelBuilder et PythonPage 28 / 53
MODULE 20

Automatisation avec ModelBuilder et Python

Toute tâche répétée chaque semaine mérite d'être automatisée. ModelBuilder le permet sans code ; Python va plus loin.

À LA FIN DE CE MODULE, VOUS SEREZ CAPABLE DE :
  • construire un modèle ModelBuilder avec paramètres ;
  • itérer sur une liste de couches ou de valeurs ;
  • lancer un premier script ArcPy dans la fenêtre Python ;
  • automatiser l'export de cartes.

20.1 ModelBuilder

Ouvrez ModelBuilder depuis la barre Standard ou Geoprocessing › ModelBuilder. Glissez des outils depuis ArcToolbox, reliez données et outils, puis exécutez. Clic droit sur une variable › Model Parameter pour qu'elle soit demandée au lancement. Enregistrez le modèle dans une boîte à outils personnelle (.tbx).

Un modèle hebdomadaire : import Kobo, comptage par zone de santé, export.
FIGURE 20.1 — Un modèle hebdomadaire : import Kobo, comptage par zone de santé, export.

Les itérateurs (menu Insert › Iterators du modèle) répètent un traitement : pour chaque classe d'entités d'une géodatabase, pour chaque valeur d'un champ, etc.

20.2 Python et ArcPy

ArcPy est le module Python d'ArcGIS [33]. Dans ArcMap 10.x, il fonctionne avec Python 2.7 et donne accès à tous les outils de géotraitement ainsi qu'au module arcpy.mapping pour manipuler les documents de carte. La fenêtre Python s'ouvre depuis la barre Standard.

# Exporter une carte 3W par province (ArcMap 10.x, Python 2.7)
import arcpy
mxd = arcpy.mapping.MapDocument(r"D:\Livret_SIG\05_Gabarits\3W_Province.mxd")
df = arcpy.mapping.ListDataFrames(mxd)[0]
lyr = arcpy.mapping.ListLayers(mxd, "Provinces", df)[0]
for prov in ["Nord-Kivu", "Sud-Kivu", "Tshopo"]:
    lyr.definitionQuery = "Province = '{0}'".format(prov)
    df.extent = lyr.getExtent()
    sortie = r"D:\Livret_SIG\06_Sorties\20261018_{0}_3W.pdf".format(prov.replace("-", ""))
    arcpy.mapping.ExportToPDF(mxd, sortie, resolution=300)
    print("Exporte : " + sortie)
del mxd
EXERCICE 20.AAutomatiser les cartes 3W60 min

Objectif. Produire trois cartes en une exécution.

Étapes

  1. Construisez un modèle qui joint le tableau 3W nettoyé aux zones de santé et exporte la couche.
  2. Rendez le tableau d'entrée paramétrable.
  3. Adaptez le script ci-dessus à votre gabarit et lancez-le dans la fenêtre Python.
  4. Vérifiez les trois PDF et leur nommage.