Narzędzie Utwórz warstwę z wybranych funkcji: Jak przechowywana jest lista funkcji?

12

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 whereklauzuli w zapytaniu definicji jako lista objectids. Na przykład: where objectid in(123,456,789,...). Tak jednak nie jest.

Jeśli warstwa nie ma WHEREklauzuli ani zapytania dotyczącego definicji, jak przechowywana jest lista funkcji?

Wilson
źródło
2
Istnieje duża różnica między pozycją menu a narzędziem geoprzetwarzania. To, o czym mówisz, jest dawne. Możesz użyć danych przechowywanych w Fidset do tworzenia warstw.
FelixIP
2
Jestem prawie pewien, że podczas tworzenia warstwy wyboru nie jest przechowywana żadna klauzula WHERE i że po jej utworzeniu NIE można znaleźć oryginalnego wyboru użytego do jej utworzenia. Mam nadzieję, że popełniłem błąd w postaci odpowiedzi, ponieważ ostatnio miałem do czynienia z bardzo starą warstwą selekcji i znalezienie oryginalnej selekcji funkcji użytych do jej stworzenia byłoby przydatne.
Dan C
1
Fidset jest własnością warstwy. To jest ; oddzielony ciąg do przechowywania FID wyboru.
FelixIP
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. Nie przypomina to warstwy zapytania, która przechowuje klauzulę
where

Odpowiedzi:

14

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:

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

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ę:

OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
jbalk
źródło
1
Istnieje również wbudowany sposób opisywania, aby uzyskać FIDSet. Jest to ciąg znaków, ale łatwo go przekonwertować na listę: OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
crmackey,
Powiązane informacje tutaj: Wygeneruj sql klauzulę WHERE z wybranych funkcji
Wilson
11

Najlepszy sposób, w jaki zrozumiałem, w jaki sposób spotkałem Create Layer from Selected Featuresto odniesienie Utwórz tymczasową warstwę, aby wybrać funkcje

Utworzenie warstwy tymczasowej umożliwia wykonywanie takich czynności, jak dokonywanie wyborów, bez wpływu na oryginalne źródło danych. Ta warstwa nie pojawi się w zawartości ArcCatalog, ponieważ jest tworzona w pamięci i po prostu odwołuje się do danych przechowywanych na dysku. Warstwy te można wykorzystać jako dane wejściowe do innych narzędzi geoprzetwarzania w ramach sesji roboczej. Po zamknięciu aplikacji warstwy w pamięci zostaną usunięte.

Narzędzie Utwórz warstwę obiektów znajduje się w zestawie narzędzi Warstwy i widoki tabel w przyborniku Narzędzia do zarządzania danymi. Kliknij prawym przyciskiem myszy narzędzie Utwórz warstwę obiektów i kliknij Otwórz lub kliknij dwukrotnie, aby otworzyć narzędzie.

Mechanizmem, 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 ,

W tym przykładzie warstwa utworzona z wybranych elementów jest użyteczna tylko jako tymczasowy działający zestaw danych (na przykład do użycia jako dane wejściowe do modelu geoprzetwarzania). Nowa warstwa tworzy listę FeatureIDs (FIDs) lub ObjectIDs (OIDs) wybranych obiektów i stanie się nieważna, gdy oryginalne źródło danych zostanie zaktualizowane lub zmienione .

Również tutaj jest więcej dyskusji jako ogólne czytanie, Korzystanie z przestrzeni roboczej w pamięci , związanej z in_memoryprzestrzenią roboczą. Jest to przeznaczone tylko dla dodatkowych informacji, jeśli jesteś zainteresowany.

whyzar
źródło
2

Domyślam się, że warstwa z Create Layer From Selected Featuresnie jest oparta na WHEREklauzuli 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.

tinlyx
źródło