Как обрабатывать значения lat long, используя boost? - PullRequest
0 голосов
/ 15 апреля 2019

В моем приложении я получаю ввод широты / долготы в следующей форме: «N48 E010», «N40 E020», «S30 W110» ...
То, что я с нетерпением жду, это проверить, формируют ли эти точки правильный многоугольник или нет. Мое намерение состоит в том, чтобы использовать библиотеку наддува для достижения моей цели. Итак, мне нужна помощь:

  1. Есть ли уже определенный тип для хранения латинской пары?
  2. Если полигон уже заполнен точками, как проверить, является ли этот полигон действительным?
  3. Если полигон действителен. Как получить его площадь?

1 Ответ

2 голосов
/ 16 апреля 2019

Чтобы быть действительным, многоугольник должен быть закрыт, т. Е. Последняя точка должна совпадать с первой.
Поскольку наименьший многоугольник - это треугольник с 3 точками, допустимый многоугольник должен иметь как минимум 4.
Это достаточно простой тест для вас.

В библиотеке boost geometry есть типы, определенные для хранения широтных пар, и можно найти площадь многоугольника в географических координатах, см.: area .

Примечание. Точки широты и долготы не имеют стандартной формы, например ISO 6709 , где координаты широты и долготы представлены в виде десятичных чисел с североми Восток положительный, Юг и Запад отрицательный.
Следовательно, вам нужно будет проанализировать координаты в десятичные числа, чтобы использовать библиотеку наддува.

Кроме того, имейте в виду, что многие библиотеки ГИС (включая геометрию наддува)принимать координаты в порядке долготы / широты, чтобы соответствовать OGC и GeoJSON стандартам.

...