7 votos

Encontrar el punto más lejano (PostGIS)

Tengo una tabla con registros 2000 y con esas columnas OutletName, longitude, latitude, geom

Me gustaría encontrar una manera de encontrar el más lejano de salida entre una selección de establecimientos

Por ejemplo, tenemos la outletnames : A,B,C,D,E,F,G,H,I,J,K...

Y nos gustaría saber quién es el más lejano de la toma de corriente de Un entre los puntos de venta, 'B', 'F' y 'D'

Ahora lo que estoy haciendo con gran cantidad de consultas de cálculo de las distancias entre todos ellos y la comparación de las distancias en java, pero se necesita tiempo. Hay una manera mejor de hacerlo?

gracias !

6voto

Lars Mæhlum Puntos 4569

Si es sólo de 2000 registros y sólo puntos (no polígonos complejos o linestrings) no se debe tomar muchos milisegundos para calcular.

Si hubiera sido un par de millones de puntos a comprobar la distancia entre usted podría considerar el uso de knn-distancia con PostgreSQL 9.1 y PostGIS 2.0.

Pero creo que debe hacer bien con algo así?

SELECT b."OutletName" FROM the_table AS a, the_table AS b 
WHERE a."OutletName" = 'A' AND b."OutletName" in ('B', 'F', 'D') 
ORDER BY ST_Distance(a.geom, b.geom) desc
limit 1;

El cuello de botella en esta consulta no será la distribución espacial de cálculo ya que está a sólo tres cálculos de distancia entre puntos, pero para encontrar la OutletName rápido. Debido a que quizás salvar una pef milisegundos si pones un índice n la OutletName columna.

editar:
De Whubers comentario supongo que me estoy malentendido algo aquí, pero me dejé llevar por el momento.

HTH

Nicklas

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X