PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgreSQL :afficher les trajets dans une boîte englobante

Puisque vos coordonnées sont stockées dans des colonnes x,y, vous devez utiliser ST_MakePoint pour créer une géométrie appropriée. Après cela, vous pouvez créer une BBOX en utilisant la fonction ST_MakeEnvelope et vérifiez si les coordonnées de début et de fin sont à l'intérieur de la BBOX en utilisant ST_Contains , par exemple

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

Remarque : le CTE n'est pas vraiment nécessaire et est dans la requête uniquement à des fins d'illustration. Vous pouvez répéter le ST_MakeEnvelope fonction sur les deux conditions dans le WHERE clause au lieu de bbox.geom . Cette requête suppose également le SRS WGS84 (4326).