Кластерные точки в PostGIS - PullRequest
8 голосов
/ 24 июня 2011

Я создаю приложение, которое извлекает значения широты / долготы из базы данных и выводит их на карту Google.Могут быть тысячи точек данных, поэтому я «группирую» точки близко друг к другу, чтобы пользователь не перегружался значками.В данный момент я выполняю эту кластеризацию в приложении с помощью простого алгоритма, подобного следующему:

  1. Получить массив всех точек
  2. Получить первую точку из массива
  3. СравнитьСначала укажите все остальные точки в массиве, ища те, которые находятся в пределах расстояния x
  4. Создайте кластер с исходными и близкими точками.
  5. Удалите точки закрытия из массива
  6. Повтор

Теперь я сообщаю, что это неэффективно и является причиной, по которой я искал ГИС-системы.Я настроил PostGIS и храню свои координаты в объекте POINT.

Может ли кто-нибудь начать меня или указать на некоторые ресурсы по простой реализации этого алгоритма кластеризации в PostGIS?

Ответы [ 2 ]

2 голосов
/ 26 июня 2011

Я использовал комбинацию snaptogrid и avg . Я понимаю, что есть алгоритмы (то есть kmeans, как предложил Денис), которые дадут мне лучшие кластеры, но для того, что я делаю, это достаточно быстро и точно.

1 голос
/ 26 июня 2011

Если этого достаточно для кластеризации содержимого в вашем браузере, вы можете легко использовать возможности кластеризации OpenLayer. Есть 3 примера, которые показывают кластеризацию.

Я уже использовал его с базой данных PostGIS, и пока у вас нет смешных объемов данных, он работает довольно гладко.

...