R中的空间数据叠加选择

时间:2017-09-20 23:51:05

标签: r ggplot2 geospatial raster r-raster

我尝试将一些空间数据从较大的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)

这导致了这个:

我想只选择用红线在多边形内绘制的内容。 如果有人可以帮我解决这个问题,我会很感激

PS。:对于那些想要完全重现这个例子的人来说,这些文件可以在上面的链接中找到我的google驱动器:

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

由于您使用多边形来显示栅格值,因此您可以通过[使用空间选择,如此可重现示例中所示:

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()