Znajdowanie skupisk N punktów w odległości X za pomocą ArcGIS Desktop?


12

Wypróbowaliśmy dwie metody analizy skupień:

... ale żadne z nich nie spełnia naszej specyfikacji, która ma te 3 parametry:

  • zestaw funkcji punktu
  • N punktów w klastrze
  • X pasmo odległości do obejrzenia

Na przykład „znajdź mi punkty, w których każda gromada ma 10 punktów w promieniu 50 metrów” lub coś w tym rodzaju.

ArcGIS 10 ma dwa narzędzia, które połączyłem powyżej, ale żadne nie wydaje się zajmować punktów N w części klastra.

Czy nasze wymagania można spełnić za pomocą innych narzędzi ArcGIS? Czy to, co nazywam analizą skupień, jest znane jako szczególny typ klastrowania?

Mieliśmy wersję tego w innej aplikacji, ale naprawdę chciałem użyć narzędzi w ArcGIS.


„obiecane klientowi bez mojej wiedzy” ... Czuję twój ból. Czy rozwiązanie obiektów łukowych byłoby dopuszczalne?
— Kirk Kuykendall

Czy nie byłoby możliwe utworzenie klastrów, a następnie przetworzenie tych, które nie spełniają Twoich kryteriów? To znaczy (i pytam z powodu braku doświadczenia w tej analizie), czy klastry zmieniłyby się, gdyby przed analizą otrzymały te trzecie kryteria?
— Nathanus

@Kirk Kuykendall. ArcObjects może nie być możliwe, ponieważ musi zostać ujawnione jako usługa geoprzetwarzania za pośrednictwem serwera arcgis 10.
— Hath

Czy klaster musi być oparty na kole, czy może być prostokątny? Tworzenie skrótu ze współrzędnych, dzięki czemu kod skrótu dla wszystkich punktów w tym samym polu 50 x 50 jest taki sam, jest łatwy.
— Kirk Kuykendall

@ Kirk - chyba musi to być krąg.
— Hath

Odpowiedzi:


10

Spróbuj użyć narzędzia Bufor, aby buforować punkty do tolerancji, rozpuść je, aby utworzyć pojedyncze wielokąty dla każdego skupienia, a następnie użyj sprzężenia, aby policzyć liczbę punktów w skupieniu.

Następnie użyj proporcji między obszarem klastra a liczbą punktów, aby zastosować parametry.


+1 To podejście powinno zadziałać, ale nie widzę miejsca, w którym wchodzi rozwiązanie.
— whuber

powierzchnia / liczba daje miarę gęstości w klastrze. Pomogłoby to wyeliminować liniowe łańcuchy punktów, których nie należy uważać za klastry.
— Matthew Snape

2
OK, ale opis problemu nie wymaga tego. Prosi tylko o „10 punktów w promieniu 50 metrów”, np. Jeśli buforujesz punkty o 50/2 = 25 metrów, wówczas każde miejsce, w którym występuje 10 lub więcej nakładek, kwalifikuje się jako środek takiego skupiska. Gotowy!
— whuber

Kiedy masz na myśli „łączenie”, czy masz na myśli sprzężenie przestrzenne.
— Hath

2

Można tego dokonać przy użyciu ArcObjects bez większych trudności.

Utwórz mapę topologii i dodaj do niej klasę obiektów punktowych. Ustaw tolerancję skupienia na podstawie odległości między klastrami (50) i zbuduj pamięć podręczną .

Pętlę przez każdy węzeł w maptopology.cache.nodes . Jeśli ITopologyNode.Parents.Count> 10, zrób wszystko, co musisz zrobić.

Zrobiłem coś podobnego dla niestandardowej warstwy, która rysuje każdy punkt klastra za pomocą symbolu, którego kolor jest oparty na liczbie elementów punktowych w klastrze. Wydajność była do zaakceptowania, ponieważ funkcje są buforowane w pamięci - przebudowanie pamięci podręcznej jest kosztowną częścią.

Podobny do kodu zamieszczonego tutaj .


Czy byłoby to możliwe w Pythonie?
— Hath

Myślę, że nie. Nie jest tak dobrze zaznajomiony z arcobjects sdk i nie do końca jestem pewien wymagań licencyjnych, aby go używać.
— Hath

2

Spróbuj przejść do pierwszego punktu, a następnie utwórz funkcję rekurencyjną, która sprawdza punkty w odległości i wykonuje na nich tę samą operację, która szuka punktów w odległości i wykonuje tę samą operację na tym itd.

Właśnie rozwiązałem podobny problem, polegający na tym, że musiałem znaleźć zestaw punktów zgodnych z pewną klauzulą; Zbudowałem funkcję rekurencyjną, aby sprawdzić, czy istnieją punkty połączone w 8 komórkach (N, NW, W, SW, S, SE, E, NE) i nazwałem tę samą funkcję dla tego punktu. Jeśli zwrócona lista zawiera x punktów, agreguję wokół niej wielokąt.


1

Nie mam żadnych informacji o użytkowaniu w ArcGIS, ponieważ używam tylko oprogramowania OpenSource. Myślę jednak, że można to osiągnąć dzięki Openlayers. Istnieje przykład strategii klastrowej, który można znaleźć tutaj: http://openlayers.org/dev/examples/strategy-cluster.html


-1 OP prosi o arcgis sposób na zrobienie tego. Podanie drogi OpenLayers tak naprawdę nie pomoże.
— Nathan W

2
Ale podejście openlayers nie pomogło mu dowiedzieć się, jak to zrobić, aby wdrożyć go w Arcgis?
— 1amtoo1337

1
Zgadzam się z komentarzem i podoba mi się twoje podejście: często musimy szukać poza naszą strefą komfortu pomysłów i inspiracji. Uważam jednak, że twoja odpowiedź byłaby bardziej przydatna, gdybyś mógł wyjaśnić, w jaki sposób ten przykład jest powiązany z konkretnym pytaniem tutaj zadanym. Chociaż pytanie i przykład dzielą słowo „klaster”, nie jest oczywiste, że używają go w tym samym znaczeniu lub rozwiązują wystarczająco podobne problemy.
— whuber

Głosowałem za tym, gdy szukałem sposobu, aby to zrobić i chociaż post chciał Arcgis, często stwierdziłem, że rozwiązanie w innych systemach GIS może pomóc ci znaleźć rozwiązanie w twoim wybranym oprogramowaniu, używając jego narzędzi w pewien sposób to nie jest powszechne.
— GeorgeC
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.