我尝试将一些空间数据从较大的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
提前致谢。
答案 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()