用SPPLOT叠加绘制两个空间多边形数据帧 [英] Overplotting two SpatialPolygonsDataFrames with spplot

查看:14
本文介绍了用SPPLOT叠加绘制两个空间多边形数据帧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一堆数据,我已经在县级绘制了without borders。我想加上一些州的边界。我有一个州形状文件(多边形),但spplot似乎没有任何方法可以添加到以前的地图上。有没有办法在不重写面板函数以获取两个SPDF的情况下做到这一点(对于其他人可能遇到的问题,这似乎是非常专门的)?

这里有一个可重复使用的示例:

library(sp)
Srs1 = Polygons(list(Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))), "s1")
Srs2 = Polygons(list(Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))), "s2")

county <- SpatialPolygonsDataFrame( SpatialPolygons(list(Srs1,Srs2)), 
                                  data.frame( z=1:2, row.names=c("s1","s2") ) )

SrsA <- Polygons(list(Polygon(cbind(c(3,5,5,1,3),c(3,4,6,5,3)))),"sA")
state <- SpatialPolygonsDataFrame( SpatialPolygons(list(SrsA)),
                                  data.frame( z=1,row.names="sA" ))

spplot( county, zcol="z",col=NA )
spplot( state, add=TRUE ) # Note the add=TRUE does nothing here, but that's the spirit of what I want to accomplish

推荐答案

要使用spplot函数进行叠加,可以使用sp.layout参数。例如,创建相应布局项目的列表,如

spCounty <- list("sp.polygons", county, col = NA)
spState <- list("sp.polygons", state)

然后绘制,将上述列表项作为列表传递给sp.layout参数:

# spplot(county, zcol = "z", col = NA, sp.layout = list(spCounty, spState))
# actually, you only need to pass the second layout item to sp.layout
spplot(county, zcol = "z", col = NA, sp.layout = spState)
如果两个空间数据帧不完全重叠,则x和y限制可能不正确。如有必要,您可以通过从bbox(obj)

中提取适当的限制来更正此问题

例如

theMin <- pmin(bbox(county)[,1], bbox(state)[,1])
theMax <- pmax(bbox(county)[,2], bbox(state)[,2])

spplot(county, zcol = "z", col = NA, sp.layout = spState,
  ylim = c(theMin[2], theMax[2]), xlim = c(theMin[1], theMax[1]))

这篇关于用SPPLOT叠加绘制两个空间多边形数据帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆