Выбор PostGIS по широте / долготе


18

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

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

Я хочу использовать столбец геометрии вместо столбцов lat / long, чтобы получить результаты. Я пробовал этот запрос:

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?
nickves

Я думаю, что я могу быть далеко от моего подхода ... У меня есть только один столбец geom. Это SRID 2223
bl8rchk

@ bl8rchk что такое таблица geomTableи поле mytable.geom?
theartofbeing

Ответы:


16

Ваши данные не в широте / долготе, поэтому вам нужно поместить ваш ящик в координатное пространство ваших данных:

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.