Pages: 1
- Sujet précédent - arcpy.management.SelectLayerByAttribute n'aime pas les boucles - Sujet suivant
#1 Thu 16 March 2023 16:03
- kulpinski.nicolas
- Participant occasionnel
- Lieu: Marseille
- Date d'inscription: 25 Jan 2007
- Messages: 39
- Site web
arcpy.management.SelectLayerByAttribute n'aime pas les boucles
Bonjour à tous,
Afin de continuer en français le sujet sur les problèmes de mémoire traité sur le site ESRI.COM https://community.esri.com/t5/python-qu … d-p/580086 et parce qu'ils n'ont pas vraiment résolu ce problème, voici le mien.
Je dois faire une série d'itération (2209 exactement) avec une requête à chaque fois pour pouvoir tester si les données correspondant à cette requête existe ou pas et si elle existe, alors je fais un calcul sur la sélection.
Jusqu'ici rien de folichon, j'ai quand même réduit le nombre d'itération en regroupant mes requêtes par famille.
Sans regroupement par famille, mon script n'arrive pas au bout et plante après plus de 10 heures de traitement.
Avec le regroupement le script va au bout mais comme l'a constaté le sujet en anglais, il y a bien un ralentissement lorsqu'on utilise la fonction arcpy.management.SelectLayerByAttribute dans une boucle qui a pour effet de passer les requêtes de quelques milisecondes à quelques voire plusieurs longues secondes en fin de parcour du tableau.
Un script qui devrait être exécuté en 10 à 15 minutes maxi prend près de 6h à cause de ce BUG d'arcpy
Si vous avez des idées pour le contourner ?
Merci
Dernière modification par kulpinski.nicolas (Wed 22 March 2023 09:01)
Hors ligne
#2 Tue 21 March 2023 03:34
- Cornet Jérémie
- Participant assidu
- Lieu: Nouméa
- Date d'inscription: 6 Apr 2008
- Messages: 229
Re: arcpy.management.SelectLayerByAttribute n'aime pas les boucles
Bonjour,
Si j'ai à peu prêt compris votre besoin, je vous conseille de :
1) Lire et mettre en mémoire toutes les informations du csv soit dans un dictionnaire soit dans une liste python
2) Parcourir toute la couche ANALYZONE avec un UpdateCursor
3) Pour chaque ligne, faire la recherche dans les données mises en mémoire et calculer/mettre à jour si nécessaire la ligne.
Ce code devrait s'exécuter extrêmement rapidement vu qu'il parcourt (et modifie) la couche en une unique passe.
Bonne journée,
Jérémie
Hors ligne
#3 Tue 21 March 2023 19:03
- kulpinski.nicolas
- Participant occasionnel
- Lieu: Marseille
- Date d'inscription: 25 Jan 2007
- Messages: 39
- Site web
Re: arcpy.management.SelectLayerByAttribute n'aime pas les boucles
Merci
Je vais regarder ça. Je connais les curseurs mais quand on a la tête dans le guidon on n’ouvre plus trop les yeux.
Hors ligne
#4 Wed 22 March 2023 09:02
- kulpinski.nicolas
- Participant occasionnel
- Lieu: Marseille
- Date d'inscription: 25 Jan 2007
- Messages: 39
- Site web
Re: arcpy.management.SelectLayerByAttribute n'aime pas les boucles
En effet avec les Curseurs l’exécution se fait en 2 minutes
Merci pour le relevage de nez dans le guidon
Hors ligne
Pages: 1
- Sujet précédent - arcpy.management.SelectLayerByAttribute n'aime pas les boucles - Sujet suivant