Тъй като вашите координати се съхраняват в колони x,y, трябва да използвате ST_MakePoint
за създаване на правилна геометрия. След това можете да създадете BBOX с помощта на функцията ST_MakeEnvelope
и проверете дали началните и крайните координати са вътре в BBOX, като използвате ST_Contains
, напр.
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));
Забележка: CTE
всъщност не е необходимо и е в заявката само за илюстрация. Можете да повторите ST_MakeEnvelope
функционира и при двете условия в WHERE
клауза вместо bbox.geom
. Тази заявка също предполага SRS WGS84
(4326).