空间线和空间多边形之间的相交以识别

时间:2019-04-16 11:38:41

标签: spatial intersection

我正在尝试识别与多边形相交的空间线以消除它们

我已经尝试了各种软件包来完成这项工作,但所有软件包都给出了相同的错误“ RGEOSBinPredFunc(spgeom1,spgeom2,byid,func)中的错误:   IllegalArgumentException:点数组必须包含0或> 1个元素”

可以从此链接https://drive.google.com/drive/folders/1CWzZzZucBjhfAthApnOGgSEL7dLXlPt5下载空间线和多边形

图书馆(rgeos)

lines_onland <-gIntersection(my.lines,多边形,byid = TRUE) “ RGEOSBinPredFunc(spgeom1,spgeom2,byid,func)中的错误:   IllegalArgumentException:点数组必须包含0或> 1个元素”

lines_onland <-gIntersect(我的线条,多边形,byid = TRUE) “ RGEOSBinPredFunc(spgeom1,spgeom2,byid,func)中的错误:   IllegalArgumentException:点数组必须包含0或> 1个元素”

库(光栅)

lines_onland <-raster :: intersect(我的线,多边形) RGEOSBinPredFunc(spgeom1,spgeom2,byid,func)中的错误:   IllegalArgumentException:点数组必须包含0或> 1个元素

穿越陆地的线

1 个答案:

答案 0 :(得分:0)

数据

library(raster)
my.lines <- shapefile("my.lines.shp")
polygons <- shapefile("polygons.shp")

首先找出错误发生的地方

err <- NULL
for (i in 1:length(my.lines)) {
    x <- try(raster::intersect(my.lines[i,], polygons))
    if (class(x) == "try-error") {
        err <- c(err, i)
    }
}

err
#[1]  48  59 191 294

包含一个位置的四行出现错误,这使它们无效

geom(my.lines[err,])
#     object part cump         x        y
#[1,]      1    1    1 -28.53502 38.53658
#[2,]      2    1    2 -28.53413 38.53638
#[3,]      3    1    3 -28.54550 38.53687
#[4,]      4    1    4 -28.53340 38.53602

删除无效的行,使一切正常运行

x <- raster::intersect(my.lines[-err,], polygons)