gpt4 book ai didi

r - 使用 spplot 重叠绘制两个 SpatialPolygonsDataFrames

转载 作者:行者123 更新时间:2023-12-04 10:45:29 27 4
gpt4 key购买 nike

我有一堆我在县级绘制的数据,without borders .我想添加州界。我有一个状态 shapefile(多边形),但是 spplot似乎没有任何方法可以添加到之前的 map 之上。有没有办法在不重写面板函数以获取两个 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)

如果两个空间 data.frames 不完全重叠,则 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]))

enter image description here

关于r - 使用 spplot 重叠绘制两个 SpatialPolygonsDataFrames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12873591/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com