[英]Overlay shapefile over Raster in Multiple plots
我正在尝试使用以下代码将南亚的 shapefile 覆盖在多个光栅图之上:'a' 是一个多层光栅文件。 这是数据的链接(917KB 大小) Test_Data
ras <- list.files("/filepath/", pattern = "\\.tif$", full=TRUE)
s <- stack(ras)
south_asia <- readOGR('/filepath/south_asia.shp') #to import shapefile
cropped <- crop(x = s, y = extent(south_asia)) #crop raster
plot(cropped)
plot(south_asia, add=TRUE)
这段代码给了我一个 shapefile 和多个光栅图。 如何将 shapefile 叠加在栅格之上? 任何帮助将不胜感激。 PS:他们在同一个 CRS 谢谢
首先,请尝试给出可重现的示例,而不是外部下载文件的链接!
如果您手动构建绘图(例如使用par
with base
plotting),您可以获得所需的行为:
library(raster)
## testdata
# shapefile
shp <- getData(country='IND', level=1)
# raster
r <- getData('alt', country='IND', mask=TRUE)
# create 4 layer rasterstack
rs <- stack(r,r,r,r)
## finally plot
# 2 rows, 2 cols
par(mfrow=c(2,2))
# loop layers
for (ii in 1:nlayers(rs)){
plot(subset(rs,ii), main=names(rs)[ii])
plot(shp, add=T)
}
在循环中使用plot(subset(rs,ii), main=names(rs)[ii])
绘制相应的图层。
结果:
我建议在光栅堆栈/砖块的绘图选项中使用参数addfun例如:
# Function to add shapefile "shp_file" on each raster plot
add_shp=function(){plot(shp_file, bg="transparent", add=TRUE)}
#Plot selected raster of a raster stack, rs
plot(rs[[c(1:5)]],col=tim.colors(5),addfun=add_shp)
这会将 shapefile shp_file添加到来自 rasterstack rs的 5 个绘图中的每一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.