Ho un db PostGIS e voglio trovare i punti che si trovano all'interno di una regione (un rettangolo di selezione). Ho due serie di coordinate, da cui posso ottenere tutti e quattro i punti rettangolari che formano la casella (se necessario). La mia colonna di dati in questione è denominata "punto" ed è anche di tipo punto.
- C'è comunque modo di specificare quattro serie di coordinate (lat / long) e ottenere tutti i punti che si trovano all'interno del riquadro.
- Oppure specifica due punti e lascia che il DB risolva gli angoli del rettangolo e restituisca i punti all'interno
Nel caso in cui non fossi chiaro su ciò che voglio ottenere. L'equivalente con 'vanilla' sql se avessi un campo lat e long anziché un punto sarebbe:
SELECT * FROM myTable where lat> xMin AND lat < xMax AND long > yMin and long < yMax
MODIFICA AGGIORNATA:
Sto provando la soluzione di underdark. All'inizio non avevo il constatore ST_MakePoint (ora lo faccio) e ricevo ancora un errore molto simile (solo su un carattere diverso).
SELECT * FROM myTable WHERE ST_Within(ST_MakePoint(point),GeometryFromText('POLYGON((75 20,80 30,90 22,85 10,75 20))',4326))
e sto ricevendo questo errore:
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
MODIFICARE:
A breve termine posso risolverlo con:
SELECT * FROM triples WHERE box '((point1),(point2))' @> point
Ma dovrò capire perché nessuna delle funzioni PostGIS non funziona per me.