有没有快速的方法来构建一个使用更详细的新shapefile?以下示例将显示问题。
使用此link中提供的数据,可以获得圣保罗市政当局。
if(require(rgdal) == F){install.packages('rgdal'); require(rgdal)}
if(require(ggplot2) == F){install.packages('ggplot2'); require(ggplot2)}
setwd("..data directory..")
sp4.rg <- readOGR(".", "35MUE250GC_SIR")
plot(sp4.rg, axes=TRUE, border="gray")
在这个地块中有645个市镇。我想做同样的情节,但现在我想在一个新的区域(多边形)中聚集一些这样的城市。例如:我们将这个新区域称为“SPABCD”。该地区由以下城市组成:“圣保罗”,“圣奥德纳多坎普”,“圣安德烈”,“圣卡塔诺”和“DIADEMA”。
sp <- fortify(sp4.rg, region = "NM_MUNICIP")
spabcd <- c("SÃO PAULO", "SÃO BERNARDO DO CAMPO", "SANTO ANDRÉ", "SÃO CAETANO DO SUL", "DIADEMA")
sp$region <- ifelse(sp$id %in% spabcd, "SPABCD", sp$id)
我的问题是:有一种快速的方法(一种已经创建的功能)可以选择围绕这个新区域的纬度和经度,以便可以绘制它吗?
答案 0 :(得分:3)
使用您的数据的一个快速 /玩具示例(因为我相信,您需要做更多的工作才能做到这一点):
library(maptools)
regs <- c("S\xc3O PAULO", "S\xc3O BERNARDO DO CAMPO",
"SANTO ANDR\xc9", "S\xc3O CAETANO DO SUL", "DIADEMA")
# make a copy of all the IDs
sp2 <- sp$ID
# filter out only the ones we want dissolved:
sp2[which(!sp$NM_MUNICIP %in% regs)] <- NA
sp.u <- unionSpatialPolygons(sp, sp2)
# sample new plot
plot(sp.u)
# showing this region on the whole map
plot(sp, axes=TRUE, border="gray")
plot(sp.u, col="red", add=TRUE)
现在,只有边界:
# make one "bin"
sp.u.s <- getSpPPolygonsLabptSlots(sp.u)
outline <- cut(sp.u.s[,1], range(sp.u.s[,1]), include.lowest=TRUE)
# one more dissolve
dissolved <- unionSpatialPolygons(sp.u ,outline)
plot(sp, axes=TRUE, border="gray")
plot(dissolved, add=TRUE)