geosphere :: areaPolygon возвращает разные результаты, основанные на упорядочении вершин - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь вычислить площадь многоугольника, определенного в виде широты и долготы:

example_polygon <- data.frame(
  lat = c(42.7093213,42.7079761,42.7093941,42.7080938,42.7093213), 
  lon = c(23.3194939,23.3194379,23.3194379,23.3182881,23.3194939)
) # last point equals first point

с использованием функции areaPolygon из пакета geosphere:

geosphere::areaPolygon(cbind(example_polygon$lon, example_polygon$lat))
[1] 350.9063

Тем не менее, я заметил, что если я переставлю точки в многоугольнике, я получу другой результат:

example_scrambled <- example_polygon[c(2,1,3,4,2),]
geosphere::areaPolygon(cbind(example_scrambled$lon, example_scrambled$lat))
[1] 7780.469

Мой вопрос заключается в том, что является причиной такого несоответствия в результатах (документация по функции неупомянуть, что порядок имеет значение)? Есть ли правильный способ упорядочить точки в многоугольнике и что это?

1 Ответ

0 голосов
/ 10 ноября 2019

Постройте их обоих, и вы поймете, почему:

par(mfrow=c(1,2))
plot(example_polygon, type = "l")
plot(example_scrambled, type = "l")

enter image description here

Это совершенно разные полигоны.

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