Понимание вывода `areaPolygon()` из пакета геосфера

Из этого вопроса я получил отличную функцию areaPolygon() который дает мне область в пределах многоугольника координат. однако, когда я экспериментирую с функцией, вычисления кажутся странными:

Я начинаю с создания набора из двух точек

 require(fields)
 coords <- c(11.3697193956209, 47.233380520521, 11.3723606043791, 
 47.235179479479)
 coords <- matrix(coords, nrow=2, ncol=2, byrow=TRUE)

Затем я проверяю расстояние между этими двумя:

 rdist.earth(coords,coords,miles=FALSE)[1,2]

получение: 0,2827821 километров (что будет диагональю прямоугольника)

Я продолжаю создавать прямоугольник

 polygon <- matrix(coords, nrow=2, ncol=2)
 polygon <- rbind(polygon, polygon)
 polygon[4,2] <- polygon[1,2]
 polygon[4,1] <- polygon[2,1]
 polygon[3,2] <- polygon[2,2]
 polygon[3,1] <- polygon[1,1]
 polygon <- rbind(polygon, polygon[1,])

посмотрим, хорошо ли это выглядит: plot(polygon)

Четвертый шаг: я вычисляю площадь внутри многоугольника.

geosphere::areaPolygon(polygon)
[1] 31.99288 #from the help file I know this ought to be square metres.

однако я бы ожидал 200*200=40000 m² так как стороны моего переплета 200 на 200 метров. это можно проверить через

rdist.earth(polygon,coords,miles=FALSE)

           [,1]         [,2]
 [1,] 0.0000000 2.827821e-01
 [2,] 0.2827821 9.504539e-05
 [3,] 0.2002671 1.996434e-01
 [4,] 0.1996501 2.002671e-01

так что теперь перейдем к моему вопросу (наконец), что я делаю не так? Большое спасибо за Вашу помощь!

1 ответ

Решение

Вы сделали неверный полигон! Если вы планируете это с type="l" вы увидите бабочку:

> plot(polygon,type="l")

Половина галстука-бабочки будет иметь отрицательную площадь, другая половина - положительную, поэтому ваш результат - разница в размерах половинок. Они не будут точно такими же, потому что земля сферическая...

Вам просто нужно изменить порядок своих очков в polygon,

Другие вопросы по тегам