Как рассчитать площадь многоугольника в R, если у меня есть только координаты X, Y? - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть фрейм данных с координатами X, Y, но мне нужно вычислить область, которая покрывает все точки на диаграмме рассеяния , есть способ нарисовать многоугольник, который окружает все точки, и вычислитьэта область?

1 Ответ

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

Это проблема выпуклой оболочки. Другие вопросы охватывают аналогичную территорию. Мы можем собрать проблемы построения и вычисления площади здесь для хорошей меры.

Чтобы построить выпуклую оболочку облака точек, мы можем использовать функцию chull:

library(tidyverse)

data <- tibble(x = runif(50), y = runif(50))

convex_hull <- data %>% slice(chull(x, y))

ggplot(data, aes(x = x, y = y)) + 
  geom_point() + 
  geom_polygon(data = convex_hull,
               alpha = 0.25)

2D convex hull

Библиотека splancs имеет функцию areapl для вычисления площади несамопересекающегося многоугольника, например, convex_hull выше. Следовательно, мы можем сделать:

library(splancs)
as.matrix(convex_hull) %>% areapl
...