要标识的空间线和空间多边形之间的交集



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

我已经尝试了各种软件包来完成这项工作,但它们都给出了相同的错误"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) 

最新更新