繁体   English   中英

在多个图中将 shapefile 覆盖在 Raster 上

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM