W ArcGIS Desktop znajduje się narzędzie o nazwie Utwórz warstwę z wybranych operacji . Za pomocą tego narzędzia mogę przekonwertować zaznaczenie na warstwę w ArcMap.
Sądzę, że istnieje „lista funkcji”, która jest osadzona gdzieś w warstwie, która izoluje, które funkcje mają być pokazane na mapie.
Myślałem, że „lista funkcji” byłaby zapisana w where
klauzuli w zapytaniu definicji jako lista objectids
. Na przykład: where objectid in(123,456,789,...)
. Tak jednak nie jest.
Jeśli warstwa nie ma WHERE
klauzuli ani zapytania dotyczącego definicji, jak przechowywana jest lista funkcji?
Odpowiedzi:
Utwórz warstwę z wybranych operacji NIE tworzy warstwy DYNAMICZNEJ . Powstała warstwa wcale nie jest dynamiczna. Opiera się na FIDset.
Jeśli zmienisz dane źródłowe, FID zmienią się, a twoja warstwa wyboru pęknie.
W warstwie wyboru nie ma klauzuli where. Opiera się na FIDset (FID, które zostały wybrane, gdy użyto opcji „Utwórz warstwę z wybranych funkcji”).
Pamiętaj, że jeśli dodasz lub usuniesz rekordy z danych źródłowych, identyfikatory FID zmienią się, a twoja warstwa wyboru pokaże nieprawidłowe rekordy.
Mylisz warstwę wyboru z warstwą zapytania, która przechowuje klauzulę where i jest dynamiczna.
EDYCJA: Lista funkcji dla warstwy wyboru jest przechowywana w pamięci. Złą praktyką jest używanie warstw wyboru innych niż do pracy tymczasowej, ponieważ nie ma możliwości odzyskania oryginalnego wyboru po zerwaniu warstwy wyboru.
Aby znaleźć listę funkcji w warstwie wyboru, możesz użyć wielu różnych metod, w tym SearchCursor, aby zbudować listę identyfikatorów.
Coś takiego:
Z komentarza crmackey :
Istnieje również wbudowany sposób opisywania, aby uzyskać FIDSet. To jest ciąg znaków, ale łatwo go przekonwertować na listę:
źródło
FIDSet
. Jest to ciąg znaków, ale łatwo go przekonwertować na listę:OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
Najlepszy sposób, w jaki zrozumiałem, w jaki sposób spotkałem
Create Layer from Selected Features
to odniesienie Utwórz tymczasową warstwę, aby wybrać funkcjeMechanizmem, który może wczytać to miejsce na dysku, byłby sposób uzyskania dostępu do „zestawu wyników”
Ponadto, jak wspomniano wcześniej, a Esri to opisuje. Pracując z wybranymi funkcjami ,
Również tutaj jest więcej dyskusji jako ogólne czytanie, Korzystanie z przestrzeni roboczej w pamięci , związanej z
in_memory
przestrzenią roboczą. Jest to przeznaczone tylko dla dodatkowych informacji, jeśli jesteś zainteresowany.źródło
Domyślam się, że warstwa z
Create Layer From Selected Features
nie jest oparta naWHERE
klauzuli ani warunku logicznym, ponieważ zestaw wyboru można utworzyć bez udziału logiki.Na przykład możesz ręcznie dodawać / usuwać dowolne funkcje z zestawu wyboru za pomocą menu głównego , np. Przeciągając pole, które może pochodzić z jednego z poprzednich Wybierz według atrybutów / lokalizacji.
Domyślam się, że zestaw wyboru (
IFeatureSelection
) jest tylko obszernym zestawem wyników (zawierającym kopie identyfikatorów oryginalnej warstwy), a nie regułami określającymi zestaw wyników. Stąd ostrzeżenie w połączonej dokumentacji, że identyfikatory mogą stać się nieprawidłowe, jeśli zmienią się identyfikatory oryginalnej warstwy.źródło