我正在尝试识别与多边形相交的空间线以消除它们
我已经尝试了各种软件包来完成这项工作,但所有软件包都给出了相同的错误“ 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个元素
穿越陆地的线
答案 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)