Mam plik kształtu z 16 400 wielokątami. Każdy wielokąt pokazuje ekspansję gatunku ptaka na cały świat.
Teraz muszę policzyć zachodzące na siebie wielokąty. Próbowałem tego ze związkiem i rozwiązałem (policzę związek), ale związek nie działa na tak wiele wielokątów.
Potem próbowałem wyciąć kontynenty, ale to też nie działa z powodu ogromnej liczby wielokątów. Ponadto wypróbowałem tę metodę , również bez powodzenia.
Dlatego pytam cię, czy istnieje sposób na policzenie nakładających się wielokątów, jeśli 16400 wielokątów znajduje się w jednym pliku kształtu?
Pracuję z 10.0 i mogę pracować z 10.2. Rozwiązanie ArcPy jest również wspaniałe.
W tej chwili myślę o stworzeniu kabaretki i iteracji po rzędach shp z 16400 wielokątów i wpisaniu 1 do pola wartości komórki kabaretki, jeśli wielokąt znajduje się w tej komórce, a następnie weźmy następny wiersz (wielokąt) i jeśli jest to również w komórce kabaretki, licz +1.
Ale nie wiem, czy to dobre rozwiązanie i jak to zrealizować. Albo muszę nauczyć się R, aby zastosować to podejście.
Wynik: powinien to być kształt, w którym masz nowe wielokąty spośród nakładających się, oraz pole, w którym policzone są nakładające się wielokąty.
Tak więc na końcu powinien znajdować się plik kształtu, w którym można zobaczyć, ile gatunków ptaków występuje w tym samym miejscu.
Odpowiedzi:
Polecam korzystanie z narzędzia Count Count Overlapping Features (Analysis) .
źródło
Korzystając z arkadowych tokenów geometrii, możesz spróbować czegoś takiego:
Dla przykładowych danych powyżej kod zwróci następujące liczby nakładania się:
Kod w obecnej postaci zwraca tylko liczby wielokątów, które mają co najmniej jedno zachodzenie na siebie.
źródło
Bardzo prostą metodą jest:
join_count
pola.źródło
Myślę, że wypróbowałeś tę metodę: liczenie i rasteryzacja wieloboków nakłada się w ArcGIS Desktop?
16 400 wielokątów to niewiele. Jednak jednym potencjalnym rozwiązaniem jest po prostu regularne łączenie przestrzenne. W
ArcMap toolbox, > Analysis Tools -> Overlap -> Spatial Join
.Ustaw zarówno funkcje, jak
target
ijoin
funkcje na ten sam zestaw danych i określ dane wyjściowe. Pozostaw resztę ustawień.Po kilku chwilach powinieneś odzyskać plik kształtu, który zawiera kolumnę „liczba złączy”. Odejmij 1 od tego (jak oczywiście każda cecha powinna się przecinać), i powinna to być liczba „nakładek” (faktycznie przecina się) dla każdego wielokąta.
Właśnie to wykonałem
źródło
Pobrałem i wypróbowałem narzędzie „Policz nakładające się wielokąty”. Może to działać, ale zajmuje to strasznie dużo czasu (prawdopodobnie dlatego, że rozmiar pliku, ale mój wejściowy FC miał tylko <5000 rekordów).
Podczas oczekiwania na uruchomienie tego narzędzia otworzyłem kolejne okno ArcMap i wystarczyło kilka szybkich kroków, aby uzyskać to, czego chciałem. 1) Łączenie przestrzenne - przy użyciu tej samej klasy obiektów co obiekty docelowe i łączenie oraz wybranie opcji „Połącz jeden z wieloma”. 2) Rozpuszczanie - wykorzystując dane wyjściowe z ostatniego kroku. Użyj „TARGET_FID” jako pola rozpuszczania, a dla statystyk możesz SUMOWAĆ pole „Join_Count” lub COUNT pole „JOIN_FID”. 3) W pliku wyjściowym z kroku 2 użyj kalkulatora pola odejmij 1 od pola statystyk („SUM_Join_Count” lub „COUNT_JOIN_FID”) - ponieważ każda cecha przecina się sama.
Sugeruję użycie tej metody w narzędziu „Policz nakładający się wielokąt”. Zacząłem uruchamiać narzędzie COP ~ 5 minut przed uruchomieniem tej metody Join-> Dissolve, co dało mi wystarczająco dużo czasu na napisanie tego, zanim narzędzie „Count Count Overlap Polygon” jeszcze się skończyło.
Mam nadzieję że to pomoże!
źródło