У меня есть база данных баллов (в данном случае, школ), и в моем приложении пользователи ищут ближайшие к ним. Под капотом мы в настоящее время используем ElasticSearch для фильтрации по широте (используя Geo Distance , который получает расстояние по прямой линии. В большинстве мест это работает нормально, но в некоторых прибрежных районах, это позволит подобрать места, в которые невозможно попасть, в приведенном ниже примере радиус в 20 миль будет подбирать школы в Уэстон-сьюпер-Мэр, в действительности 55 миль:
Изначально я решил использовать API Google Maps Matrix API для фильтрации своих исходных данных при поиске в прямом эфире, но существует ограничение в 25 пунктов назначения на запрос, и так как запросы будут динамическими и пользовательскими. не стоит разбивать эти запросы на маленькие части и вставлять их в фоновую работу.
Есть ли способ выполнить эти расчеты при учете водоемов на уровне базы данных? Школы хранятся в базе данных Postgres, поэтому я думаю об использовании PostGIS и какой-то точке в запросе полигонов, но я не знаю, с чего начать.
Любые идеи очень ценятся!