是否可以叠加SpatialLinesDataFrame和SpatialPolygonDataFrame

Jd *_*aba 4 gis plot r map clip

我想知道这是否可能做到这一点.

我有一个数据作为SpatialLinesDataFrame,另一个作为spatialPolygonDataFrame.是否有可能覆盖这两个数据?

当我尝试覆盖这些时,我收到以下错误:

  jd <- overlay(res,hello) 
  Error in function (classes, fdef, mtable)  :  unable to find an inherited method for function      
  ‘overlay’ for signature ‘"SpatialLinesDataFrame", "SpatialPolygonsDataFrame"’
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,res是SpatialLinesDataFrame,hello是SpatialPolygonDataFrame.

我有一个shapefile,然后我有x,y和z坐标的数据点.我想在shapefile上显示轮廓线.

我使用的程序是使用akima包进行插值.我用来插值的代码是

fld <- interp(x,y,z)
Run Code Online (Sandbox Code Playgroud)

然后我使用以下代码将其更改为空间对象:

res <-ContourLines2SLDF(contourLines(fld))
Run Code Online (Sandbox Code Playgroud)

上述命令将轮廓线存储为空间数据.

然后我读取shapefile,我将shapefile和res绘制如下:

p1 <-
spplot(hello,sp.layout=list(list("sp.lines",res)),col="blue",lwd=0,fill="grey",colorkey=F)
p1
Run Code Online (Sandbox Code Playgroud)

"hello"是我的shapefile,"res"是我创建的对象,如上所示.

问题是存储在"res"中的轮廓延伸到shapefile之外.所以我想用shapefile剪切那个轮廓,只显示shapefile区域内的轮廓.

所以我正在寻找一种用多边形图层剪切轮廓图层的方法.

我附上了我的代码所附的图像. 在此输入图像描述

在图像中,您可以看到shapefile中的行.我还想知道如何在地图上显示轮廓水平.

非常感谢.

Jdbaba

我也想知道叠加层到底做了什么.它是否与两个数据的区域相交?

谢谢.

Noa*_*oah 6

听起来你正试图将线条剪裁到多边形范围.gIntersectionrgeos包中使用.这是一个可重复的例子:

library(rgeos)
xx <- SpatialPoints(coords=matrix(data=c(0,0), nrow=1))
xx <- gBuffer(spgeom=xx, width=1)
yy <- SpatialLines(list(Lines(Line(matrix(c(-1,1,-1,1), nrow=2)), ID=1)))
zz <- gIntersection(yy, xx)
Run Code Online (Sandbox Code Playgroud)

您可以像这样叠加图:

plot(xx)
plot(zz, add = TRUE, col = "blue")
Run Code Online (Sandbox Code Playgroud)