sql >> Base de Datos >  >> RDS >> PostgreSQL

PostgreSQL:mostrar viajes dentro de un cuadro delimitador

Dado que sus coordenadas se almacenan en columnas x, y, debe usar ST_MakePoint para crear una geometría adecuada. Después de eso, puede crear un BBOX usando la función ST_MakeEnvelope y verifique si las coordenadas de inicio y fin están dentro del BBOX usando ST_Contains , por ejemplo

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: el CTE no es realmente necesario y está en la consulta solo con fines ilustrativos. Puede repetir el ST_MakeEnvelope funcionan en ambas condiciones en WHERE cláusula en lugar de bbox.geom . Esta consulta también asume el SRS WGS84 (4326).