PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL:показване на пътувания в рамките на ограничителна кутия

Тъй като вашите координати се съхраняват в колони 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).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Мога ли да създам избирателно резервно копие на база данни на Postgres само с определени таблици?

  2. SQL имена на колони и сравняването им със записи на редове в друга таблица в PostgreSQL

  3. Вмъкнете речника на Python с помощта на Psycopg2

  4. Импортирайте SQL дъмпа в PostgreSQL база данни

  5. Как Asind() работи в PostgreSQL