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