Crea livello da strumento Funzioni selezionate: come viene memorizzato l'elenco delle funzioni?


12

In ArcGIS Desktop è presente uno strumento chiamato Crea livello dalle funzionalità selezionate . Utilizzando questo strumento, posso convertire una selezione in un livello in ArcMap.

Suppongo che esista un "elenco di funzioni" incorporato nel livello da qualche parte che isola le funzioni da mostrare nella mappa.

Avrei pensato che l '"elenco di funzionalità" sarebbe stato archiviato in una whereclausola in una query di definizione come un elenco di objectids. Ad esempio: where objectid in(123,456,789,...). Tuttavia, questo non è il caso.

Se il layer non ha una WHEREclausola o una query di definizione, come viene memorizzato l'elenco delle funzionalità?


2
C'è una grande differenza tra la voce di menu e lo strumento di geoprocessing. Quello di cui stai parlando è precedente. È possibile utilizzare i dati memorizzati nel fidset per creare i livelli.
FelixIP,

2
Sono abbastanza sicuro che non ci sia alcuna clausola WHERE memorizzata quando crei un livello di selezione e che, una volta creato, NON puoi trovare la selezione originale utilizzata per crearlo. Spero di essermi smentito nella forma di una risposta perché di recente ho avuto a che fare con un livello di selezione molto vecchio e scoprire che la selezione originale di funzioni utilizzate per crearlo sarebbe stata utile.
Dan C

1
Fidset è proprietà del livello. È ; stringa separata per memorizzare i FID di selezione.
FelixIP,

Crea livello dalle funzioni selezionate NON crea un livello DINAMICO. Il livello risultante non è affatto dinamico. Si basa su un FIDset. Se modifichi i dati di origine, i FID cambieranno e il tuo livello di selezione si spezzerà. Non assomiglia a un livello Query, che memorizza una clausola
where

Risposte:


14

Crea livello dalle funzioni selezionate NON crea un livello DINAMICO . Il livello risultante non è affatto dinamico. Si basa su un FIDset.

Se modifichi i dati di origine, i FID cambieranno e il tuo livello di selezione si spezzerà.

Non esiste una clausola where in un livello di selezione. Si basa su FIDset (i FID che sono stati selezionati quando si utilizzava "Crea livello da funzioni selezionate").

Se si aggiungono o rimuovono record dai dati di origine, i FID cambieranno e il livello di selezione mostrerà record errati.

Stai confondendo il livello di selezione con un livello di query, che memorizza una clausola where ed è dinamico.

MODIFICA: l'elenco delle funzioni per un livello di selezione è memorizzato. È buona norma utilizzare livelli di selezione diversi da quelli per lavori temporanei in quanto non è possibile ripristinare la selezione originale una volta interrotto il livello di selezione.

Per trovare l'elenco di funzionalità in un livello di selezione, è possibile utilizzare molti metodi diversi tra cui SearchCursor per creare un elenco di ID.

Qualcosa come questo:

OIDlist = []
with arcpy.da.SearchCursor(layer, 'OBJECTID') as scur:
    for row in scur:
        OIDlist.append(row[0])

Dal commento di crmackey :

C'è anche un modo integrato con descrivi per ottenere il FIDSet. Questa è una stringa, ma è facile da convertire in un elenco:

OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))

1
C'è anche un modo integrato con descrivi per ottenere il file FIDSet. Questa è una stringa, ma è facile da convertire in un elenco: OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
crmackey,


11

Il modo migliore in cui ho capito come Create Layer from Selected Featuresè stato trovato questo riferimento Crea un livello temporaneo per selezionare le funzionalità

La creazione di un livello temporaneo consente di eseguire operazioni, ad esempio effettuare selezioni, senza influire sull'origine dati originale. Questo livello non verrà visualizzato nei contenuti di ArcCatalog, poiché è stato creato in memoria e fa semplicemente riferimento ai dati memorizzati sul disco. Questi livelli possono essere utilizzati come input per altri strumenti di geoprocessing durante la sessione di lavoro. Una volta chiusa l'applicazione, i livelli in memoria verranno rimossi.

Lo strumento Crea livello funzionalità si trova nel set di strumenti Livelli e viste tabella, nella casella degli strumenti Strumenti di gestione dati. Fare clic con il pulsante destro del mouse sullo strumento Crea feature layer e fare clic su Apri oppure fare doppio clic su di esso per aprire lo strumento.

Il meccanismo in grado di leggere nello spazio su disco sarebbe come accedere al "set di risultati"

Inoltre, come accennato in precedenza ed Esri lo copre Lavorando con le funzionalità selezionate ,

In questo esempio, il layer creato dalle funzionalità selezionate è utile solo come set di dati di lavoro temporaneo (ad esempio, da utilizzare come input in un modello di geoprocessing). Il nuovo livello crea un elenco dei FeatureID (FID) o ObjectID (OID) delle funzionalità selezionate e diventerà non valido quando l'origine dati originale viene aggiornata o modificata .

Inoltre, ecco ulteriori discussioni come lettura generale, Utilizzo dell'area di lavoro in memoria , relativa all'area di in_memorylavoro. Questo è solo per ulteriori informazioni se eri interessato.


2

La mia ipotesi è che il layer da Create Layer From Selected Featuresnon sia basato su una WHEREclausola o una condizione logica, poiché il set di selezione può essere creato senza coinvolgere la logica.

Ad esempio, è possibile aggiungere / eliminare manualmente tutte le funzioni dal set di selezione utilizzando il menu principale, ad esempio trascinando una casella, che può provenire da una delle precedenti Seleziona per Attributi / Posizione.

La mia ipotesi è che il set di selezione ( IFeatureSelection) sia solo un ampio set di risultati (contenente copie degli ID del livello originale), piuttosto che le regole che definiscono il set di risultati. Da qui l'avvertimento nella documentazione collegata che gli ID potrebbero diventare non validi se cambiano gli ID del livello originale.

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.