PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL:mostre viagens dentro de uma caixa delimitadora


Como suas coordenadas são armazenadas em colunas x,y, você deve usar ST_MakePoint para criar uma geometria adequada. Depois disso, você pode criar um BBOX usando a função ST_MakeEnvelope e verifique se as coordenadas inicial e final estão dentro do BBOX usando ST_Contains , por exemplo.
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));

Observação: o CTE não é realmente necessário e está na consulta apenas para fins de ilustração. Você pode repetir o ST_MakeEnvelope função em ambas as condições no WHERE cláusula em vez de bbox.geom . Esta consulta também assume o SRS WGS84 (4326).