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