Вибір PostGIS за lat / long limiting box


18

У мене є minLat, minLong, maxLat та maxLong з поля, намальованого на карті. Зараз мій запит на отримання всіх балів у полі виглядає так:

SELECT *
FROM geomTable
WHERE (longitude BETWEEN minLon AND maxLon)
AND (latitude BETWEEN minLat AND maxLat)

Я хочу використовувати стовпчик геометрії замість lat / довгих стовпців, щоб отримати результати. Я спробував цей запит:

SELECT *
FROM mytable
WHERE mytable.geom && ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326);

з цієї публікації: Виберіть обмежувальне поле за допомогою postgis, але воно не дає результатів.

Хтось має приклад того, як вибрати всі точки у вікні, створеному min та max lat / longs, використовуючи геометрію в postgis?


Яку версію PostGIS ви використовуєте?
Mapperz

Мій PostGIS - версія 2.0.1
bl8rchk

2
чи обидва стовпчики geom в одному SRID?
ники

Я думаю, що я можу обійтись своїм підходом ... У мене є лише одна колонка з геоматом. Це SRID - 2223
bl8rchk

@ bl8rchk що таке таблиця geomTableта поле mytable.geom?
Theartofbeing

Відповіді:


16

Ваші дані не в lat / lon, тому вам потрібно натиснути поле в координатний простір ваших даних:

SELECT *
FROM mytable
WHERE 
  mytable.geom && 
  ST_Transform(ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326), 2223);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.