Ich möchte, dass im Folgenden die Ebene "Projekt" ausgewählt (hervorgehoben) wird, die das Raster schneidet, und dann ein Datensatz aus dem ausgewählten "Raster" gezogen wird. Ich muss die Ebene nicht speichern.
Hinweis: Ausführen des Skripts in ArcMap im Python Console-Fenster.
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")
Dieser Code wird ausgeführt und es werden keine Fehler angegeben, es werden jedoch keine Funktionen ausgewählt (hervorgehoben). Irgendeine Idee warum? Läuft auch sehr langsam.
Grundsätzlich versuche ich das:
Dies läuft sehr schnell fast sofort, aber ich möchte das gleiche mit Python tun. Ich benötige nur einen Wert aus der Tabelle des ausgewählten Features. Ich benötige keine Kopie der Ebene.
Ein Teil der Lösung sein , um die Verwendung kann im Speicher befindlichen Arbeitsbereich , die ist
Das Schreiben von Daten in den In-Memory-Arbeitsbereich ist häufig erheblich schneller als das Schreiben in andere Formate ...
Ich bin mir nur nicht sicher, wie ich den In-Memory-Arbeitsbereich implementieren soll
quelle
import arcpy
Befehls eine Weile dauert.arcpy.MakeFeatureLayer()
Linie nicht, daproject
es sich bereits um eine Ebene handelt. Tu es einfacharcpy.SelectLayerByLocation_management("project","INTERSECT","Grid")
.Antworten:
Gute Frage!
Dmahr hat recht, es ist schneller, einfach die Ebene auszuwählen, anstatt eine Feature-Ebene zu erstellen. Ich würde auch den Rest der Variablen hinzufügen, obwohl sie optional sind.
Eine andere Sache, die ich finde, ist, dass das Ausführen von Dingen im Python-Fenster von ArcMap immer langsamer ist. Ich finde, wenn Sie den Code in eine .py-Datei schreiben, ihn als Skript zur Toolbox hinzufügen und dann ausführen, wird die Verarbeitung schneller.
quelle