Tengo una base de datos PostGIS, y quiero encontrar los puntos que se encuentran dentro de alguna región (un cuadro delimitador). Tengo dos conjuntos de coordenadas, de las cuales puedo obtener los cuatro puntos rectangulares que forman el cuadro (si es necesario). Mi columna de datos en cuestión se llama 'punto' y también es de tipo punto.
- ¿Hay alguna forma de especificar cuatro conjuntos de coordenadas (lat / long) y obtener todos los puntos que se encuentran dentro del cuadro?
- O especifique dos puntos y deje que el DB resuelva las esquinas del rectángulo y devuelva los puntos dentro de
Por si acaso no estoy siendo claro en cuanto a lo que quiero lograr. El equivalente con sql 'vainilla' si tuviera un campo lat y long en lugar de un punto sería:
SELECT * FROM myTable where lat> xMin AND lat < xMax AND long > yMin and long < yMax
EDICIÓN ACTUALIZADA:
Estoy intentando la solución de Underdark. Al principio no tenía el constructor ST_MakePoint (ahora sí) y sigo teniendo un error muy similar (solo en un carácter diferente).
SELECT * FROM myTable WHERE ST_Within(ST_MakePoint(point),GeometryFromText('POLYGON((75 20,80 30,90 22,85 10,75 20))',4326))
y recibo este error:
ERROR: function st_makepoint(point) does not exist
LINE 1: SELECT * FROM triples WHERE ST_Within(ST_MakePoint(point),Ge...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********
ERROR: function st_makepoint(point) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Character: 39
EDITAR:
A corto plazo puedo resolverlo con:
SELECT * FROM triples WHERE box '((point1),(point2))' @> point
Pero tendré que averiguar por qué ninguna de las funciones de PostGIS no me funciona.