2011-06-24 11 views
8

Estoy creando una aplicación que extrae los valores lat/long de una base de datos y los traza en un mapa de Google. Puede haber miles de puntos de datos, por lo que "agrupo" puntos cerca unos de otros para que el usuario no se vea abrumado por los iconos. Por el momento realizo esta agrupación en la aplicación, con un algoritmo simple como esto:Puntos de clúster en PostGIS

  1. Get conjunto de todos los puntos
  2. Pop primer punto fuera de serie
  3. Compare primer punto a todos los demás puntos en conjunto mirando para los que caen dentro de la distancia x
  4. Cree un clúster con los puntos original y cercano.
  5. eliminar puntos cercanos de la matriz
  6. Repita

Ahora suelto esto es ineficiente y es la razón por la que he estado buscando en sistemas de información geográfica. He configurado PostGIS y tengo mis longitudes lat & almacenadas en un objeto de geometría POINT.

¿Alguien me puede ayudar o indicarme algunos recursos en una implementación simple de este algoritmo de agrupamiento en PostGIS?

+1

También puede ser que desee ver en el k-medias contrib: http://pgxn.org/dist/kmeans/doc/kmeans.html –

Respuesta

2

Terminé usando una combinación de snaptogrid y avg. Me doy cuenta de que hay algoritmos por ahí (es decir, kmeans como sugirió Denis) que me darán mejores clústeres, pero por lo que estoy haciendo esto es lo suficientemente rápido y preciso.

1

Si es suficiente para tener cosas agrupadas en su navegador, puede hacer fácilmente uso de las capacidades de clúster de OpenLayer. Hay 3 ejemplos que muestran agrupamiento.

Lo he usado con una base de datos PostGIS antes, y mientras no tenga cantidades ridículas de datos, funciona bastante bien.

+0

Quiero hacer el lado del servidor de clustering para reducir el tiempo de carga para los clientes. Gracias por la respuesta sin embargo. – Mike

Cuestiones relacionadas