es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Puntos postGIS dentro de polígonos

Estoy trabajando con postgres/postGIS.
Tengo dos tablas en las que estoy interesado en hacer consultas:

Tabla A: contiene valores de geometría como (POINT) como (P1, P2, P3,...)
Tabla B: contiene valores de geometría como (POLYGON) como (Polígono 1, polígono 2, ...)

Estoy tratando de encontrar en qué polígono se encuentra cada punto. La respuesta que probablemente estoy buscando enumera el punto y el polígono que contiene, por ejemplo:

Punto Polígono
P1 Polígono 3
P2 Polígono 1

Lo que intenté es lo siguiente:


SELECT *
FROM area, points
WHERE st_intersects(area.polygons, points.point);

Y estoy obteniendo el siguiente error:
ERROR: ST_Intersects: Operación con geometrías de SRID mixto (Polígono, 4326) != (Punto, 8307)

Agradecería mucho tu ayuda.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como sugiere el mensaje de error, el problema proviene de tener geometrías con identificadores de referencia espacial (SRID) diferentes en las dos tablas. En este caso, la tabla A contiene puntos con SRID 8307 y la tabla B contiene polígonos con SRID 4326. Para solucionar esto, debes transformar las geometrías en la tabla A para que tengan el mismo SRID que la tabla B utilizando la función ST_Transform(). La consulta actualizada se vería así:

    SELECT puntos.punto, area.poligonos
    FROM tablaA puntos, tablaB area
    WHERE ST_Intersects(area.poligonos, ST_Transform(puntos.punto, 4326))
    

    Esta consulta primero utiliza la función ST_Transform() para transformar los puntos de la tabla A a SRID 4326 para que coincidan con los polígonos de la tabla B. Luego utiliza ST_Intersects() para encontrar las intersecciones entre los puntos transformados y los polígonos. El resultado es una lista de puntos y los polígonos en los que se encuentran.

Comments are closed.