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 where
Klausel 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 WHERE
Klausel oder Definitionsabfrage enthält, wie wird die Liste der Features gespeichert?
Antworten:
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:
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:
quelle
FIDSet
. Dies ist eine Zeichenfolge, die sich jedoch leicht in eine Liste umwandeln lässt:OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
Am besten habe ich verstanden, wie
Create Layer from Selected Features
ich auf diese Referenz gestoßen bin. Erstellen Sie eine temporäre Ebene, um Features auszuwählenDer 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 ,
Im Folgenden finden Sie eine allgemeine Erläuterung zum Thema Verwenden des Arbeitsbereichs im
in_memory
Arbeitsspeicher. Dies ist nur zur zusätzlichen Information gedacht, wenn Sie interessiert waren.quelle
Ich vermute, dass die Ebene von
Create Layer From Selected Features
nicht auf einerWHERE
Klausel 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.quelle