R中的空间数据叠加选择

Spatial data overlay selection in R

我正在尝试将一些空间数据从更大的 SpatialPolygonsDataFrame(世界大小)覆盖到更小的(国家大小),方法是:

x <- c("rgdal", "dplyr",'ggplot2')
apply(x, library, character.only = TRUE) 

est<-readOGR(dsn='/estados_2010',layer='estados_2010')
est_f<-fortify(est)
est$id<-row.names(est)
est_f<-left_join(est_f,est@data)

zon<-readOGR(dsn='/Zonas Homogeneas/gyga_ed_poly.shp',layer='gyga_ed_poly')
zon_f<-fortify(zon)
zon$id<-row.names(zon)
zon_f<-left_join(zon_f,zon@data)     

t<-ggplot()+geom_polygon(data=zon_f,aes(x=long,y=lat,group=group,fill=GRID_CODE))

t+geom_polygon(data=est_f,aes(x=long,y=lat,group=group),fill=NA,color='red')+coord_fixed(xlim=est_f$long,ylim=est_f$lat,1)

结果是:

我只想 select 只绘制多边形内用红线绘制的内容。 如果有人可以帮助我解决这个问题,我将不胜感激

PS.: 对于那些想自己完全重现该示例的人,可以在上面的链接中找到我的 google 驱动器的文件:

https://drive.google.com/open?id=0B6XKeXRlyyTDakx2cmJORlZqNUE

提前致谢。

由于您使用多边形来显示栅格值,因此您可以通过 [ 使用空间选择,就像在这个可重现的示例中一样:

library(raster)
library(rgdal)

bra <- getData("GADM", country = "BRA", level = 1)

r <- getData("worldclim", res = 10, var = "bio")
r <- r[[1]]
r <- crop(r, bra)

r <- rasterToPolygons(r)
# bra and raster (now as polygons) have to have the same projection, thusly reproject!
bra <- spTransform(bra, CRSobj = proj4string(r))

魔法来了!!

r <- r[bra, ]

让我们看看结果:

library(ggplot2)
t <- ggplot()+
  geom_polygon(data=r,aes(x=long,y=lat,group=group, fill = rep(r$bio1, each = 5)))
t + 
  geom_polygon(data=bra,aes(x=long,y=lat,group=group),fill=NA,color='red') + coord_map()