Arcmap Seleziona per Attributo con Python


9

Vorrei selezionare (evidenziare) il livello "progetto" che interseca la griglia e quindi estrarre un record dalla "Griglia" selezionata. Non ho bisogno di salvare il livello.

Nota: esecuzione dello script da ArcMap nella finestra di Python Console.

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")

Questo codice viene eseguito e non vengono forniti errori, tuttavia non seleziona (evidenzia) alcuna funzionalità. Qualche idea sul perché? Funziona anche molto lentamente.

risultati

Fondamentalmente sto cercando di fare questo:

inserisci qui la descrizione dell'immagine

Funziona molto velocemente quasi all'istante, ma voglio fare lo stesso usando Python. Ho solo bisogno di un valore dalla tabella della funzione selezionata, non ho bisogno di una copia del livello.

Parte della soluzione potrebbe essere quella di utilizzare lo spazio di lavoro in memoria che è

La scrittura di dati nell'area di lavoro in memoria è spesso significativamente più rapida rispetto alla scrittura in altri formati ...

Non sono sicuro di come implementare l'area di lavoro in memoria


Stai eseguendo questo script da ArcMap (cioè nella console Python)? O dall'esterno di ArcMap (ovvero all'interno di IDLE o di un altro editor Python)? L'unico modo in cui ArcMap "seleziona (evidenzia) qualsiasi funzione" è all'interno di ArcMap. Sospetto che tu stia eseguendo lo script dall'esterno di ArcMap, perché l' import arcpyesecuzione del comando richiede del tempo.
Dmahr

Sto eseguendo lo script da ArcMap nella finestra di Python Console.
Tristan Forward

Se lo stai eseguendo da ArcMap, non hai bisogno della arcpy.MakeFeatureLayer()linea, poiché projectè già un livello. Fallo e basta arcpy.SelectLayerByLocation_management("project","INTERSECT","Grid").
Dmahr

grande formato di domanda!
Brad Nesom il

Grazie @dmahr, funziona ancora più lentamente rispetto a Select by Attribute integrato ma funziona.
Tristan Forward

Risposte:


2

Buona domanda!

Dmahr ha ragione, è più veloce semplicemente selezionare il layer invece di creare un feature layer. Vorrei anche aggiungere il resto delle variabili, anche se sono opzionali.

arcpy.SelectLayerByLocation_management ("project_lyr", "INTERSECT", "Grid", "#", "NEW_SELECTION")

Un'altra cosa che trovo è che eseguire le cose nella finestra di Python di ArcMap è sempre più lento. Trovo che se scrivi il codice in un file .py, lo aggiungi come script alla casella degli strumenti e poi lo esegui, l'elaborazione andrà più veloce.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.