Tengo una tabla de polígonos (buffer) y una tabla de puntos (dem_points), y quiero hacer una unión espacial entre ellas. Necesito unir el punto con la elevación mínima (dn) a su polígono correspondiente espacialmente en PostGIS.
En el ejemplo anterior quiero que mi resultado sea el polígono con osm_id de '1234' unido al punto donde dn=4200. Tengo esta consulta pero algo está mal:
SELECT osm_id, gid, MIN(dn)
FROM (
SELECT a.id AS osm_id, b.id AS gid, b.dn AS dn
FROM
buffer AS a, dem_points AS b
WHERE ST_Within(buffer.geom, dem_points.geom)
) AS subquery
GROUP BY (osm_id, gid);
Con esta consulta recibo este error:
ERROR: la subconsulta en FROM debe tener un alias
LÍNEA 2: FROM (
^
SUGERENCIA: Por ejemplo, FROM (SELECT ...) [AS] foo.
ERROR: subconsulta en FROM debe tener un alias
Estado SQL: 42601
Sugerencia: Por ejemplo, FROM (SELECT ...) [AS] foo.
Personaje: 40
¿Cómo debo estructurar mi consulta para unir espacialmente el punto con la elevación mínima al polígono en el que se encuentre?
0 votos
¿Qué es exactamente estar apagado?
0 votos
No estoy seguro, pero recibo este error:
ERROR: subconsulta en FROM debe tener un alias LÍNEA 2: FROM ( ^ HINT: Por ejemplo, FROM (SELECT ...) [AS] foo. ********** Error ********** ERROR: subconsulta en FROM debe tener un alias Estado SQL: 42601 Sugerencia: Por ejemplo, FROM (SELECT ...) [AS] foo. Carácter: 40
0 votos
Necesitas poner un AS alias_name después de tu consulta interna, es decir, SELECT osm_id, gid, MIN(dn) FROM (.......) AS g GROUP BY (osm_id, gid);
1 votos
Siempre es una buena idea poner cualquier error que encuentres en la pregunta :-)
0 votos
Ahora recibo este error:
ERROR: columna a.id no existe LÍNEA 3: SELECT a.id AS osm_id, b.id AS gid, b.dn AS dn ^ ********** Error ********** ERROR: columna a.id no existe Estado SQL: 42703 Carácter: 59
0 votos
¿Y hay un campo llamado id en la tabla buffer?
0 votos
No hay ningún campo llamado 'id'. Hay un campo llamado 'osm_id'.
0 votos
Entonces necesitas seleccionar osm_id en lugar de id, que no existe, en la consulta interna.
0 votos
¿Puedes escribir la consulta completa como respuesta?
0 votos
Estoy sorprendido por los votos positivos. La pregunta se trata más sobre la sintaxis de SQL y cómo formular consultas correctamente. Yo la movería a stack overflow.
0 votos
Esta pregunta se trata principalmente de cómo ejecutar una consulta de PostGIS para seleccionar el punto con el valor mínimo que cae dentro de un polígono. Es un tipo único de unión espacial y, por lo tanto, una pregunta válida en GIS SE, creo al menos.