Le blog francophone consacré
aux technologies Esri

ArcGIS 10.1 - Un nouveau module Python d'accès aux données

Comme je l'ai évoqué dans mes précédents articles, Esri poursuit et accélère l'enrichissement fonctionnel de l'environnement de scripting Python pour permettre aux utilisateurs d'automatiser leurs tâches. Bien plus simple à appréhender que l'environnement VBA (pour un non-développeur), les scripts Python constituent (après les modèles de géotraitement) la solution la plus accessible pour développer ses propres traitements dans ArcGIS. Un des derniers points importants à adresser par Esri pour satisfaire les développeurs de scripts Python était d'obtenir des performances sur l'accès aux données similaires à celles obtenues avec les macros VBA. Pour cela, en version 10.1, Esri propose un nouveau module Python "Data Access" dans le package ArcPy. Ce module arcpy.da fournit de nouveaux types de curseurs (arcpy.da.insertcursor, arcpy.da.searchcursor et arcpy.da.updatecursor) pour manipuler en lecture/écriture les sources de données ArcGIS (Shapefiles, Géodatabases fichiers, Géodatabase Enterprise, …). 



Ces nouveaux objets curseurs remplacent les objets curseurs des versions précédentes (arcpy.insertcursor, arcpy.searchcursor et arcpy.updatecursor) qui sont toujours disponible dans le package  ArcPy pour assurer la compatibilité avec vos anciens scripts.

Pour quantifier les gains de performances que l'on peut attendre de ces nouveaux curseurs, j'ai réalisé une série de tests sur plusieurs volumétries traitant de 1000 à 1 000 000 d'entités dans une Géodatabase fichier. Pour le test l'insertion (insert), le scénario consiste à insérer des entités dons la géométrie est une polyligne de 5 sommets avec un attribut de type "entier" et un attribut de type "chaîne de caractères". Pour le test de lecture (search), le scénario consiste à lire les valeurs de ces 3 attributs (géométrie, entier, chaîne de caractères) pour les mettre dans des variables. Pour le test de mise à jour (update), le scénario consiste à modifier la valeur de ces 3 attributs et de les enregistrer dans la table. 

On constate que pour la création d'entités, le progrès est relativement constant avec 20% de gain en temps entre les anciens et les nouveaux curseurs. En revanche, pour les opérations de lecture (search) ou de mise à jour (update) sur les données, les réductions sur les temps de traitement peuvent atteindre de 70 à 90% dès que le nombre d'entités devient conséquent. Vous trouverez ci-dessous les courbes des temps mesurés.


Au delà de ces curseurs de lecture/écriture de données, ce nouveau module permet gérer les opérations de modification des données le cadre de sessions de mise à jour (comme le fait interactivement l'utilisateur) grâce à une nouvelle classe d'objet  arcpy.da.editor. Ceci permet de regrouper, d'annuler, de rejouer des blocs d'opérations de modification de données. 

Enfin, le module arcpy.da permet également d'accéder aux autres informations de la Géodatabase comme les versions, les réplicas, les domaines, les sous-types, ...

Pour plus de détails sur ce les classes proposées dans ce nouveau module Python, vous pouvez vous reporter à l'aide en ligne d'ArcGIS 10.1 (en anglais pour l'instant).

Partager cet article:

Rejoindre la discussion

    Les commentaires à propos de cet article: