Нарисуйте многоугольник на карте Google и элемент запроса, расположенный в этой области - PullRequest
0 голосов
/ 23 мая 2018

У меня есть веб-панель, которая заполнена информацией о движениях автомобилей за 7 дней.Слой карты в данном случае - это карта Google, а данные о движении транспортного средства хранятся в PostgreSQL.Пользователь хотел бы нарисовать многоугольник в определенной области и вызвать запрос, который покажет все вхождения транспортных средств, которые проезжали эту область.У меня уже есть карта и все данные о транспортных средствах, есть ли способ сделать это с помощью json или javascript, не загружая полигон в базу данных?

Я знаю, что Postgress может это сделать, если у меня естьполигон загружен в базу данных.Для безопасности и управления данными я не хочу загружать полигон в PostgreSQL.Я хочу нарисовать многоугольник и вызвать запрос, используя JavaScript.

1 Ответ

0 голосов
/ 24 мая 2018

Просто используйте статическую геометрию, например

SELECT *
FROM <points_table> AS pt
WHERE ST_Intersects(pt.geom, <static_geometry);

, где <static_geometry> будет одним из

  • ST_GeomFromText (обычно самый быстрый)
  • ST_GeomFromKML (собственный Google, может пригодиться)
  • ST_GeomFromGeoJSON (так как если у вас есть строки GeoJSON в любом случае)

  • ST_PolygonFromText (медленнее, чем общая функция; добавляет шаг проверки многоугольника)

и анализируют переданные входные координаты в функцию (обратите внимание на различный порядок координат для каждой функции),Тем не менее, загрузка не требуется, поскольку эти функции принимают только строковый формат, примите обычные меры предосторожности для возможных SQL-инъекций .
Существуют эквивалентные функции для вывода геометрии (ST_As<Format>, например, ST_AsGeoJSON.).

Как лучше всего собирать, передавать и анализировать координаты многоугольника с клиента на сервер в БД, зависит от ваших настроек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...