Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Thu 16 March 2023 16:03

kulpinski.nicolas
Membre
Lieu: Marseille
Date d'inscription: 25 Jan 2007
Messages: 21
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
Membre
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
Membre
Lieu: Marseille
Date d'inscription: 25 Jan 2007
Messages: 21
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
Membre
Lieu: Marseille
Date d'inscription: 25 Jan 2007
Messages: 21
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 smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |