Processing math: 100%

3 votos

PostGIS, punto más cercano a otro punto

Tengo dos tablas: point1 y point2. Para cada punto de la tabla point1, quiero encontrar el punto más cercano de la tabla point2.

Por ejemplo: Para el punto con id=1 de la tabla point1, el punto más cercano de la tabla point2 tiene el id (?? Quiero obtener ese id).

Intenté usar ST_ClosestPoint pero no funcionó correctamente. Mi código:

SELECT ST_ClosestPoint(pont2.geom, (SELECT point1.geomxy WHERE point1.id=1))
FROM pint2, point1

2 votos

Has deletreado mal "point2" de dos formas diferentes en el SQL proporcionado. ¿Qué mensaje de error recibiste y cómo es que no funcionó correctamente? Por favor, edita la pregunta.

9voto

mathieu Puntos 53

Esto se conoce como búsqueda (espacial) (K)NN; el enfoque más eficiente es una subconsulta LATERAL junto con el operador indexado <->:

SELECT a.id,
       b.id,
       -- a.geom / b.geom
FROM    AS pt1
CROSS JOIN LATERAL (
  SELECT id
  FROM   
  ORDER BY
         geom <-> a.geom
  LIMIT  1
) AS b
;

Recomiendo leer más sobre varios temas relacionados con consultas (K)NN, para entender consultas LATERAL, distancias y uso de índices.

`

Relacionado:

`

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