Zliczanie i rasteryzacja nakładających się wielokątów w ArcGIS Desktop?

17

Jak wziąć warstwę wektorową z nakładającymi się wielokątami i przekształcić ją w raster, w którym każda komórka liczy liczbę wielokątów zawierających tę komórkę?

Patrzymy na wielokąty obszarów spalania ognia w latach 1976–2000 i chcemy zobaczyć, ile pożarów byłoby zawartych w każdej komórce rastrowej.

użytkownik15201
źródło

Odpowiedzi:

22

Zrób to w trzech krokach: podziel wieloboki na części składowe, policz nakładki i przekonwertuj na raster. Pozwala to uniknąć potencjalnie ogromnych kosztów obliczeniowych osobnego przekształcania każdego wielokąta w raster i łączenia tych rastrów.

  1. Union(w Geoprocessingmenu) rozbija wielokąty na części.

    Niestety każde nakładanie się jest powielane w danych wyjściowych: ma jedną identyczną kopię dla każdego oryginalnego wielokąta, który je pokrywa. W związku z tym

  2. Dissolve(ponownie w Geoprocessingmenu) połączy zachodzące na siebie części, pod warunkiem, że znajdziesz sposób ich jednoznacznej identyfikacji. Przeczytaj przez okno dialogowe: pod koniec będziesz mieć możliwość obliczenia „statystyk”. Wybierz dowolne pole, które mogło zidentyfikować oryginalne wielokąty i poproś o liczenie.

    W wielu przypadkach połączenie obszaru wielokąta i obwodu jednoznacznie identyfikuje części. Jeśli nie, możesz dodać więcej właściwości geometrycznych w dodatkowych polach, takich jak współrzędne środka ciężkości, dopóki nie zgromadzisz wystarczającej ilości informacji, aby rozróżnić każdą cechę.

    Powstała warstwa ma jedną cechę dla każdego zachodzenia na siebie wielokąta i pewnego rodzaju pole „zliczania” zliczające liczbę zachodzenia na siebie.

  3. Przekształć to w raster, używając pola „count” dla atrybutów.


Na przykład, oto niektóre nakładające się wielokąty i ich identyfikatory z pokazaną tabelą atrybutów:

wprowadź opis zdjęcia tutaj

Po drugim kroku mamy jeden rekord dla każdego nakładającego się regionu wraz z liczbą, która może być już użyta do symbolizacji stopnia nakładania się:

wprowadź opis zdjęcia tutaj

Reszta jest łatwa - i to tylko jedna operacja rasteryzacji.

Whuber
źródło
Ta metoda wektorowa również działa świetnie, z wyjątkiem zastosowania do setek tysięcy wielokątów z wieloma nakładkami na komputerze z ograniczoną pamięcią ...
ccn
@ccn Jeśli jest więcej wielokątów niż ArcGIS może obsłużyć, podziel zestaw danych na części, które może przetworzyć. Wynikiem będzie kilka rastrów - ale nie tysiące lub miliony - które następnie można łatwo zsumować. Kolejną zaletą używania Unionjest to, że przy prawie takim samym przepływie pracy może rozwiązać sytuację, w której wielokąty znajdują się w wielu zestawach danych (co zwykle jest złym projektem bazy danych, ale niestety powszechnym): po prostu łączy się wszystkie wejściowe zestawy danych naraz.
whuber
@ccn (ciąg dalszy) sprowadzasz się do tego: kiedy lepiej zrasteryzować wielokąty i użyć operacji rastrowych do scalenia ich w porównaniu z operacjami wektorowymi ( union), a następnie rasteryzacją? Operacje wektorowe ulegną spowolnieniu, gdy funkcje zostaną zdigitalizowane z większą ilością szczegółów, niż jest to potrzebne, dzięki czemu otrzymają zbyt wiele wierzchołków. W tych ekstremalnych okolicznościach podejście rastrowe może być lepsze (chociaż pierwsze uproszczenie wielokątów może być lepszą opcją). Jednak we wszystkich innych sytuacjach rasteryzacja każdego wielokąta osobno jest ogromną stratą czasu komputerowego i ludzkiego.
whuber
1
+1 dla rozwiązania wektorowego. Aby spojrzeć na to z perspektywy, dane na temat obwodu nagrywania nigdy nie są bardzo duże. Na przykład cały zestaw danych obwodu spalania MTBS (USA, w tym Alaska) dla lat 1984–2010 zawiera ~ 19000 wielokątów. Podejście oparte na wektorze lub rastrze będzie działać dobrze.
Aaron
@Aaron Dziękuję za perspektywę. Aby wykonać współczesne Stany Zjednoczone przy dowolnej rozsądnej rozdzielczości (np. 100 m), potrzebujesz, powiedzmy, rastra 50000 kolumn i 30000 wierszy zawierających 1 500 000 000 komórek. Wygenerowanie 19 000 takich rastrów - nawet uwzględniając wbudowaną kompresję - a następnie wykonanie 19 000 * 1500000000 = około 30000 miliardów dodatków - wymagałoby sporo czasu! Jeśli zamiast tego użyjemy każdego wielokąta, powiedzmy, 100 wierzchołków (co jest bardzo szczegółowe), połączenie obejmuje 1 900 000 wierzchołków i jest operacją O (n log (n)); w zasadzie (ale nie w ArcGIS :-), co zajmuje mniej niż 1 sekundę.
whuber
1

Poniższy post zawiera nieco podobne pytanie, w którym można znaleźć pokrewne rozwiązanie: Tworzenie powierzchni rastrowej zakładek z kształtów wektorowych wielokątów? .

W tym obliczeniowo szybkim i prostym podejściu rastrowym konieczne będzie (1) rozdzielenie nakładających się wielokątów na osobne warstwy (przypuszczalnie według roku w przypadku wielokątów ogniowych) za pomocą opcji Wybierz według atrybutów w ModelBuilder za pomocą iteratora lub narzędzia skryptowego, (2) przekonwertować każdy Wielobok do rastra z przypisaniem komórki MAXIMUM_COMBINED_AREA (zapewniając ten sam rozmiar komórki , przyciągaj raster i że zasięg pozostaje taki sam jak cały zestaw wielokątów) - używając stałej wartości pola (np. Użyj pola roku lub wierszy, które mają wszystkie 1) do konwersji (ponownie użyj ModelBuilder ze iteratorem lub skryptem Python, aby pomóc zautomatyzować), a następnie (3) zastosuj następujące narzędzie Spatial Analyst: Statystyka komórek - użyj zmiennej VARIETY typ_statystyki, jeśli każdy raster ma unikalną wartość, taką jak rok lub SUMA, jeśli wszystkie wartości komórek rastrowych wynoszą 1 s - pamiętaj, aby zignorować NoData.

Pośrednie rastry (z poprzedniej konwersji) mogą zostać usunięte lub są gotowe do użycia w kolejnych analizach rastrowych.

ccn
źródło
(Zobacz mój komentarz do odpowiedzi Aarona .)
whuber