Je voudrais que ce qui suit sélectionne (surligne) la couche "projet" qui coupe la grille, puis tire un enregistrement de la "grille" sélectionnée. Je n'ai pas besoin de sauvegarder le calque.
Remarque: Exécution du script à partir d'ArcMap dans la fenêtre de la console Python.
import arcpy
# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("project","project_lyr")
# Then add a selection to the layer based on location to features in another feature class
arcpy.SelectLayerByLocation_management("project_lyr","INTERSECT","Grid")
Ce code s'exécute et aucune erreur n'est donnée, mais il ne sélectionne (surligne) aucune fonctionnalité. Une idée pourquoi? Fonctionne également très lentement.
Fondamentalement, j'essaie de faire ceci:
Cela fonctionne très rapidement presque instantanément, mais je veux faire de même en utilisant python. J'ai juste besoin d'une valeur de la table de l'entité sélectionnée, je n'ai pas besoin d'une copie de la couche.
Une partie de la solution peut consister à utiliser l' espace de travail en mémoire qui est
L'écriture de données dans l'espace de travail en mémoire est souvent beaucoup plus rapide que l'écriture dans d'autres formats ...
Je ne sais pas comment implémenter l'espace de travail en mémoire
la source
import arcpy
commande prend un certain temps à s'exécuter.arcpy.MakeFeatureLayer()
ligne, car ilproject
s'agit déjà d'une couche. Faites-learcpy.SelectLayerByLocation_management("project","INTERSECT","Grid")
.Réponses:
Bonne question!
Dmahr a raison, il est plus rapide de simplement sélectionner la couche au lieu de créer une couche d'entités. J'ajouterais également le reste des variables, même si elles sont facultatives.
Une autre chose que je trouve, c'est que l'exécution des choses dans la fenêtre python d'ArcMap est toujours plus lente. Je trouve que si vous écrivez le code dans un fichier .py, l'ajoutez en tant que script à la boîte à outils, puis l'exécutez, le traitement ira plus vite.
la source