我正在尝试识别与多边形相交的空间线以消除它们
我已经尝试了各种软件包来完成这项工作,但它们都给出了相同的错误"RGEOSBinPredFunc(spgeom1,spgeom2,byid,func)中的错误: 非法参数异常:点数组必须包含 0 或>1 个元素">
空间线和面可从此链接下载 https://drive.google.com/drive/folders/1CWzZzZucBjhfAthApnOGgSEL7dLXlPt5
图书馆 (rgeos)
lines_onland<-gIntersection(my.lines, polygons,byid=TRUE) "RGEOSBinPredFunc(spgeom1, spgeom2, byid, func) 中的错误: 非法参数异常:点数组必须包含 0 或>1 个元素">
lines_onland<-gIntersect(my.lines, polygons, byid=TRUE) "RGEOSBinPredFunc(spgeom1, spgeom2, byid, func) 中的错误: 非法参数异常:点数组必须包含 0 或>1 个元素">
图书馆(光栅)
lines_onland<- 栅格::相交(我的线,多边形) RGEOSBinPredFunc(spgeom1, spgeom2, byid, func) 中的错误: 非法参数异常:点数组必须包含 0 或>1 个元素
穿越陆地的线路
data
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)