PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:mostra i viaggi all'interno di un riquadro di delimitazione

Poiché le tue coordinate sono memorizzate nelle colonne x,y, devi utilizzare ST_MakePoint per creare una geometria adeguata. Successivamente, puoi creare una BBOX utilizzando la funzione ST_MakeEnvelope e controlla se le coordinate di inizio e fine sono all'interno della BBOX utilizzando ST_Contains , ad es.

WITH bbox(geom) AS (
  VALUES (ST_MakeEnvelope(-8.68494,41.24895,-8.47569,41.11591,4326))
)
SELECT * FROM trips,bbox
WHERE 
  ST_Contains(bbox.geom,ST_SetSRID(ST_MakePoint(lon_start,lat_start),4326)) AND
  ST_Contains(bbox.geom,ST_SetSRID(ST_MakePoint(lon_end,lat_end),4326));

Nota: il CTE non è realmente necessario ed è nella query solo a scopo illustrativo. Puoi ripetere il ST_MakeEnvelope funzione su entrambe le condizioni nel WHERE clausola invece di bbox.geom . Questa query presuppone anche l'SRS WGS84 (4326).