Вы можете сделать это с помощью spatstat
пакета, но вам нужно конвертировать из и SpatialPolygons
к psp
(плоскостной сегмента образца) и owin
(смотровое окно - это многоугольник в плоскости), используя maptools
пакета.
Поскольку вы не предоставили пример данные я первый построить SpatialPolygons и SpatialLines объектов выгляжу как ваша графика:
library(maptools)
#> Loading required package: sp
#> Checking rgeos availability: TRUE
library(spatstat)
#> Loading required package: nlme
#> Loading required package: rpart
#>
#> spatstat 1.48-0.029 (nickname: 'Alternative Facts')
#> For an introduction to spatstat, type 'beginner'
A <- owin(c(1,3), c(2,5))
B <- owin(c(4,7), c(1,5))
p <- union.owin(A,B)
p <- as(p, "SpatialPolygons")
l <- psp(c(0.5, 0.5), c(2, 4), c(4, 6), c(2, 4), window = owin(c(0,7), c(0,5)))
l <- as(l, "SpatialLines")
plot(p)
plot(l, col = "green", add = TRUE, lwd = 3)
Теперь, чтобы сделать то, что вы просите вам преобразовать кромки полигона до psp
и найдите, где линии пересекают эти края (возвращаются как плоская точка модель):
l <- as(l, "psp")
p <- as(p, "owin")
e <- edges(p)
x <- crossing.psp(l, e)
x
#> Planar point pattern: 4 points
#> window: rectangle = [1, 6] x [2, 4] units
Добавление точек на графиках показывает, что мы нашли:
plot(p, main = "")
plot(l, col = "green", add = TRUE, lwd = 3)
plot(x, add = TRUE, col = "red", pch = 20, cex = 3)
Вы ищете что-то вроде этого? http://gis.stackexchange.com/questions/154689/how-to-find-the-coordinates-of-the-intersection-points-between-two-spatiallines –