PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL:Fahrten innerhalb eines Begrenzungsrahmens anzeigen

Da Ihre Koordinaten in x,y-Spalten gespeichert sind, müssen Sie ST_MakePoint verwenden um eine richtige Geometrie zu erstellen. Danach können Sie mit der Funktion ST_MakeEnvelope eine BBOX erstellen und prüfen Sie mit ST_Contains , z. B.

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));

Hinweis: der CTE ist nicht wirklich notwendig und dient nur zur Veranschaulichung in der Abfrage. Sie können den ST_MakeEnvelope wiederholen Funktion auf beide Bedingungen im WHERE -Klausel anstelle von bbox.geom . Diese Abfrage setzt auch den SRS WGS84 voraus (4326).