2011-06-24 13 views
8

Buduję aplikację, która ściąga wartości długie/długie z bazy danych i kreśli je na mapie Google. Mogą istnieć tysiące punktów danych, więc "grupuję" punkty blisko siebie, aby użytkownik nie był przytłoczony ikonami. W tej chwili wykonać tę klastrów we wniosku, za pomocą prostego algorytmu tak:Punkty klastra w PostGIS

  1. Get tablicę wszystkich punktach
  2. Pop pierwszy punkt poza tablicą
  3. Porównaj pierwszego punktu do wszystkich innych punktów w tablicy patrząc dla tych, które mieszczą się w odległości x
  4. Utwórz klaster z punktami oryginalnymi i bliskimi.
  5. Usuń bliskie punkty z tablicy
  6. Repeat

Teraz zwolnij ten jest nieskuteczny i jest powodem czekałem na systemach GIS. Skonfigurowałem PostGIS i mam długie latki o długości & zapisane w obiekcie geometrii POINT.

Czy ktoś może mi pomóc lub zwrócić się do niektórych zasobów dotyczących prostej implementacji tego algorytmu grupowania w PostGIS?

+1

Warto również spojrzeć na K-oznacza contrib: http://pgxn.org/dist/kmeans/doc/kmeans.html –

Odpowiedz

2

Skończyłem z wykorzystaniem kombinacji snaptogrid i avg. Zdaję sobie sprawę, że istnieją algorytmy (np. Milenijne, jak zasugerował Denis), które dadzą mi lepsze klastry, ale to, co robię, jest wystarczająco szybkie i dokładne.

1

Jeśli to wystarczy, aby mieć klaster w przeglądarce, możesz z łatwością wykorzystać możliwości klastrowania OpenLayer. Istnieją 3 przykłady pokazujące tworzenie klastrów.

Używałem go wcześniej z bazą danych PostGIS i dopóki nie masz śmiesznych ilości danych, działa całkiem gładko.

+0

Chcę zrobić stronę serwera klastra, aby skrócić czas ładowania do klientów. Dzięki za odpowiedź. – Mike