Werkzeug Layer aus ausgewählten Features erstellen: Wie wird die Liste der Features gespeichert?

12

In ArcGIS Desktop gibt es ein Tool mit dem Namen Layer aus ausgewählten Features erstellen . Mit diesem Werkzeug kann ich eine Auswahl in ArcMap in einen Layer konvertieren.

Ich vermute, dass es eine "Liste von Features" gibt, die irgendwo in den Layer eingebettet ist, um zu isolieren, welche Features in der Karte angezeigt werden sollen.

Ich hätte gedacht, dass die "Liste der Features" in einer whereKlausel in einer Definitionsabfrage als Liste von gespeichert worden wäre objectids. Zum Beispiel: where objectid in(123,456,789,...). Dies ist jedoch nicht der Fall.

Wenn der Layer keine WHEREKlausel oder Definitionsabfrage enthält, wie wird die Liste der Features gespeichert?

Wilson
quelle
2
Zwischen Menüelement und Geoverarbeitungswerkzeug besteht ein großer Unterschied. Was du redest, ist früher. Sie können im Fidset gespeicherte Daten verwenden, um Ihre Ebenen zu erstellen.
FelixIP
2
Ich bin mir ziemlich sicher, dass beim Erstellen einer Auswahlebene keine WHERE-Klausel gespeichert ist und dass Sie nach dem Erstellen NICHT die ursprüngliche Auswahl herausfinden können, die zum Erstellen verwendet wurde. Ich hoffe, ich habe mich in Form einer Antwort geirrt, weil ich mich in letzter Zeit mit einer sehr alten Auswahlebene befasst habe und herausgefunden habe, mit welcher Auswahl von Features sie ursprünglich erstellt wurden.
Dan C
1
Fidset ist Eigentum der Ebene. Es ist ; Getrennte Zeichenfolge zum Speichern von Auswahl-FIDs.
FelixIP
Ebene aus ausgewählten Features erstellen Erstellt KEINE DYNAMISCHE Ebene. Die resultierende Ebene ist überhaupt nicht dynamisch. Es basiert auf einem FIDset. Wenn Sie die Quelldaten ändern, ändern sich die FIDs und Ihre Auswahlschicht wird unterbrochen. Dies ist nichts anderes als eine
Abfrageebene

Antworten:

14

Ebene aus ausgewählten Features erstellen Erstellt KEINE DYNAMISCHE Ebene . Die resultierende Ebene ist überhaupt nicht dynamisch. Es basiert auf einem FIDset.

Wenn Sie die Quelldaten ändern, ändern sich die FIDs und Ihre Auswahlschicht wird unterbrochen.

Es gibt keine where-Klausel in einer Auswahlschicht. Es basiert auf FIDset (den FIDs, die ausgewählt wurden, als Sie "Layer aus ausgewählten Features erstellen" verwendet haben).

Beachten Sie, dass sich die FIDs ändern, wenn Sie Datensätze zu den Quelldaten hinzufügen oder daraus entfernen, und dass in Ihrer Auswahlebene falsche Datensätze angezeigt werden.

Sie verwechseln die Auswahlebene mit einer Abfrageebene, die eine where-Klausel speichert und dynamisch ist.

BEARBEITEN: Die Liste der Funktionen für eine Auswahlebene wird gespeichert. Es ist keine gute Praxis, andere Auswahlebenen als temporäre Arbeit zu verwenden, da die ursprüngliche Auswahl nicht wiederhergestellt werden kann, sobald die Auswahlebene unterbrochen wird.

Um die Liste der Features in einer Auswahlebene zu finden, können Sie viele verschiedene Methoden verwenden, einschließlich SearchCursor, um eine Liste der IDs zu erstellen.

Etwas wie das:

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

Aus dem Kommentar von crmackey :

Es gibt auch einen eingebauten Weg mit beschreiben, um das FIDSet zu bekommen. Dies ist eine Zeichenfolge, die sich jedoch leicht in eine Liste umwandeln lässt:

OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
jbalk
quelle
1
Es gibt auch einen eingebauten Weg mit beschreiben, um das zu bekommen FIDSet. Dies ist eine Zeichenfolge, die sich jedoch leicht in eine Liste umwandeln lässt: OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
crmackey
11

Am besten habe ich verstanden, wie Create Layer from Selected Featuresich auf diese Referenz gestoßen bin. Erstellen Sie eine temporäre Ebene, um Features auszuwählen

Durch das Erstellen einer temporären Ebene können Sie beispielsweise eine Auswahl treffen, ohne die ursprüngliche Datenquelle zu beeinträchtigen. Dieser Layer wird nicht im ArcCatalog-Inhalt angezeigt, da er im Arbeitsspeicher erstellt wird und nur auf die auf der Festplatte gespeicherten Daten verweist. Diese Layer können als Eingaben für andere Geoverarbeitungswerkzeuge in Ihrer Arbeitssitzung verwendet werden. Sobald Sie die Anwendung beenden, werden die In-Memory-Ebenen entfernt.

Das Werkzeug Feature-Layer erstellen befindet sich im Toolset Layer und Tabellenansichten in der Toolbox Datenverwaltungstools. Klicken Sie mit der rechten Maustaste auf das Werkzeug Feature-Layer erstellen und klicken Sie auf Öffnen, oder doppelklicken Sie darauf, um das Werkzeug zu öffnen.

Der Mechanismus, der in diesen Speicherplatz lesen kann, wäre, wie auf die "Ergebnismenge" zuzugreifen ist.

Wie bereits erwähnt und von Esri behandelt. Arbeiten mit ausgewählten Funktionen ,

In diesem Beispiel ist der Layer, der aus ausgewählten Features erstellt wird, nur als temporäres Arbeitsdataset nützlich (z. B. zur Verwendung als Eingabe in ein Geoverarbeitungsmodell). Die neue Ebene erstellt eine Liste der FeatureIDs (FIDs) oder ObjectIDs (OIDs) der ausgewählten Features und wird ungültig, wenn die ursprüngliche Datenquelle aktualisiert oder geändert wird .

Im Folgenden finden Sie eine allgemeine Erläuterung zum Thema Verwenden des Arbeitsbereichs im in_memoryArbeitsspeicher. Dies ist nur zur zusätzlichen Information gedacht, wenn Sie interessiert waren.

Whyzar
quelle
2

Ich vermute, dass die Ebene von Create Layer From Selected Featuresnicht auf einer WHEREKlausel oder einer logischen Bedingung basiert , da der Auswahlsatz ohne Logik erstellt werden kann.

Sie können beispielsweise über das Hauptmenü manuell Features zum Auswahlsatz hinzufügen / daraus entfernen, indem Sie z. B. ein Feld ziehen, das aus einem der vorherigen Felder "Auswahl nach Attributen / Ort" stammt.

Ich vermute, dass die Auswahlmenge ( IFeatureSelection) nur eine umfangreiche Ergebnismenge ist (die Kopien der IDs der ursprünglichen Ebene enthält), und nicht die Regeln, die die Ergebnismenge definieren. Daher die Warnung in der verknüpften Dokumentation, dass die IDs möglicherweise ungültig werden, wenn sich die IDs der ursprünglichen Ebene ändern.

Tinlyx
quelle