Suite

Vous recherchez une valeur dans le calque sans ouvrir le fichier MXD ?

Vous recherchez une valeur dans le calque sans ouvrir le fichier MXD ?


Dans le cadre de la validation des paramètres d'une boîte à outils Python, je dois vérifier si le texte du paramètre n°1 existe dans une couche d'un fichier MXD sélectionné en tant que paramètre n°2. Actuellement, j'utilise ce code dansmettre à jour les messages:

mxd = arcpy.mapping.MapDocument(parameters[2].valueAsText) layer = arcpy.mapping.ListLayers(mxd, "LayerName")[0] condition = u"Field=" + parameters[1].text avec arcpy.da .SearchCursor(layer.dataSource, ["Field"], condition) en tant que curseur : #Do some stuff…

Le problème est que cela prend beaucoup de temps car le fichier MXD assez volumineux doit être ouvert. Il n'est pas acceptable d'avoir un temps d'attente de deux minutes avec le gel d'ArcMap à chaque fois que la validation des paramètres est effectuée.

Ma question est donc la suivante : existe-t-il un moyen de trouver la source de la couche et d'y rechercher une valeur sans avoir à ouvrir le MXD ?


À moins que vos définitions de calques ne soient suffisamment statiques pour que vous puissiez les conserver également en tant que fichiers de calques, je pense que vous êtes obligé de créer un objet MapDocument afin de localiser ses définitions de calques.

Si vous pouvez utiliser un fichier de couche au lieu d'utiliser un fichier de carte pour accéder aux définitions de couche, utilisez simplement l'objet Layer spécifique au lieu de créer un objet MapDocument, et cela devrait être beaucoup plus rapide.


Voir la vidéo: Kylmänjähmeällä kyy-hepulla oli asiaa..