Я хочу сделать следующее:
Для изображения ниже (см. «Данные» ниже для примера точек 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)