Как рассчитать площадь нескольких многоугольников в R? - PullRequest
0 голосов
/ 27 мая 2020

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

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

Большое спасибо за предложения.

  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

...