Как узнать, в каком полигоне находится точка? Как найти, в каком полигоне находится точка?
У меня в таблице polygons хранятся полигоны районов РФ. Их 8 штук, планируется большое увеличение их количества. Структура:
region_id (int), lat (decimal, 8, 6), lng (decimal, 9, 6).region_id - ID районаlat - широта точкиlng - долгота точки
Как найти, к какому полигону принадлежит точка? Как оптимизировать запрос под нагрузки? Мне нужно узнать лишь region_id полигона
Гугл дает только инфу как проверить что точка в регионе

21 Авг 2019 в 06:16
260 +1
0
Ответы
1

Для определения к какому полигону принадлежит точка, можно воспользоваться функцией ST_Contains или ST_Within из расширения PostGIS для работы с геоданными в PostgreSQL.

Пример запроса может выглядеть примерно так:

SELECT region_id
FROM polygons
WHERE ST_Contains(
ST_GeomFromText('POINT(lat lng)', 4326),
polygon_geom
);

В данном примере предполагается, что у вас также есть столбец polygon_geom в таблице polygons, в котором хранятся геометрии полигонов в формате геометрического типа данных (например, POLYGON).

Чтобы оптимизировать запрос под нагрузки, рекомендуется создать пространственный индекс на столбце polygon_geom, что значительно ускорит выполнение запроса для большого количества полигонов.

Для этого можно использовать следующую команду:

CREATE INDEX idx_polygon_geom ON polygons USING GIST (polygon_geom);

Таким образом, оптимизированный запрос будет быстро определять к какому полигону принадлежит точка по её координатам широты и долготы.

20 Апр 2024 в 13:21
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир