Есть ли в R функция для вычисления площади нескольких многоугольников? - PullRequest
1 голос
/ 28 мая 2020

Я хочу сделать следующее:

Для изображения ниже (см. «Данные» ниже для примера точек xy) удалите линию, связывающую два многоугольника. Адаптируйте код так, чтобы, если форма почти готов, заполните пробел. Скажем, «почти завершено» означает, что расстояние между первой и последней точкой составляет менее 5% от общей длины линии: Рассчитайте площадь многоугольников Большое спасибо за предложения.

 coor1 <- R_data[1,8]


#Extract x and y coordinates from annonations 
x1 <- str_extract_all(coor1,'([x])[\\\":]+([0-9\\.]+)')
y1 <- str_extract_all(coor1,'([y])[\\\":]+([0-9\\.]+)')

#clean up coordinates 
x1simp <- sapply(x1, FUN = function(x1){substring(x1, regexpr('x',x1) + 1, nchar(x1))}, USE.NAMES=FALSE)  
x1simp2 <- sapply(x1simp, FUN = function(x1simp){substring(x1simp, regexpr(':',x1simp) + 1, nchar(x1simp))}, USE.NAMES=FALSE)

y1simp <- sapply(y1, FUN = function(y1){substring(y1, regexpr('y',y1) + 1, nchar(y1))}, USE.NAMES=FALSE)  
y1simp2 <- sapply(y1simp, FUN = function(y1simp){substring(y1simp, regexpr(':',y1simp) + 1, nchar(y1))}, USE.NAMES=FALSE)  

#convert to numeric
x1_num <- as.numeric(x1simp2)
y1_num <- as.numeric(y1simp2)


#data into tibble format 
data <- tibble(x = x1_num, y = y1_num)


data
    # A tibble: 16 x 2
           x     y
       <dbl> <dbl>
     1  709.  123.
     2  729.  263.
     3  747.  325.
     4  705.  433.
     5  658.  527 
     6  610.  602.
     7  622.  642.
     8  707.  639.
     9  707.  639.
    10  764.  615.
    11  926.  496.
    12  935.  340.
    13  875.  276.
    14  848.  220.
    15  817.  176.
    16  709.  123.][1]][1]

#plot polygon
plot(x1_num,y1_num,type="n")
polygon(x1_num,y1_num)

enter image description here

...