Ensemble de définition (Definition Query) et Python.

Les ensembles de définition de ArcGIS. C’est pratique, très pratique même. Cela permet de faire afficher dans  notre carte que les données nécessaires. Par exemple, si l’on possède une classe d’entités de routes et que l’on veut que conserver les axes majeurs. Il est possible de le faire via l’option d’ensemble de définition de la couche sans avoir à créer une autre classe d’entité. Cependant, cela peut aussi causer problème lorsque le ne sais pas que cette option est en application. On s’imagine qu’il nous manque des données, alors qu’elles sont en fait cachées par un filtre.
Pour remédier à ce problème, j’ai fait un « Add in » en Python. C’est une barre d’outils qui contient, pour l’instant, qu’un seul bouton. Ce dernier permet de savoir si les couches de notre projet (mxd) contiennent un « ensemble de définition ». Pratique n’est-ce pas.  Maintenant, voici le code Python qui a servi à faire le bouton.
 
 # -*- coding: utf-8 -*- 
#La ligne ci haut permet d’utiliser les accents dans Python.
 
import arcpy
import pythonaddins  #Importation du module de « addins »
 
 class cls_ensemblededefinition(object):
    """Implementation for DQ_AddIn_addin.button (Button)"""
    def __init__(self):
        self.enabled = True
        self.checked = False
    def onClick(self):  #Les lignes ci-haut jusqu’à « class cls » servent pour le « addins ».
        projet = arcpy.mapping.MapDocument("CURRENT") #Définiton du projet
        couches = arcpy.mapping.ListLayers(projet) #Questionnement des couches
 
        #Préparation pour le fenêtre d’info
        msg = u"Liste des couche(s) ayant un ensemble de définition\n\n"
        compteur =0 #Compteur pour le nb de couche.
 
        #Pour chaque couche, inspection s’il y a un ens. de déf.
         for couche in couches:
             if len(couche.definitionQuery) > 0:
                 msg = msg + "-" + couche.name + "\n"
                 compteur +=1
 
        #Finalisation du message pour l’usager
         msg  = msg + "\nNombre de couche(s) est de " + str(compteur)
 
        #Affichage de la fenêtre d’information à l’usager.
         pythonaddins.MessageBox(msg, u"Ensemble de définition", "INFO")
  
Voilà, pas plus compliqué que cela. Pour l’utiliser cliquez ici : http://bit.ly/1pBYIFe
 
Martin
Vous avez du contenu à publier sur SigQuébec?

Communiquez avec le Webmestre.