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.

Hath
źródło
„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.

Matthew Snape
źródło
+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 .

Kirk Kuykendall
źródło
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.

Włochaty
źródło
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

1amtoo1337
źródło
-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