Понимание вывода `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
,