【问题标题】:Clipping raster using shapefile in R, but keeping the geometry of the shapefile在 R 中使用 shapefile 裁剪栅格,但保留 shapefile 的几何形状
【发布时间】:2014-05-29 05:08:40
【问题描述】:

我正在使用 {raster} 根据不规则 shapefile(亚马逊生物群系)裁剪(或裁剪)栅格,但输出始终具有矩形范围。但是,我需要与 shapefile 完全相同的几何形状的输出。有小费吗?干杯。

library(raster)
library(rgdal)

myshp <- readOGR("Amazon.shp", layer="Amazon")
e <- extent(myshp)
myraster <- raster("Temperature.tif")
myraster.crop <- crop(myraster, e, snap="out", filename="myoutput.tif")

【问题讨论】:

    标签: r crop raster shapefile clip


    【解决方案1】:

    对于简单的几何图形(例如盒子),可以直接放置范围的坐标:

    e <- as(extent(c(xmin= -16, xmax= -7.25, ymin= 4, ymax= 12.75)), 'SpatialPolygons')
    crs(e) <- "+proj=longlat +datum=WGS84 +no_defs"
    r <- crop(my_raster, e)
    

    来源:https://gis.stackexchange.com/questions/229356/crop-a-raster-file-in-r/389376#389376

    【讨论】:

      【解决方案2】:

      一种选择是使用raster::mask()

      library(maptools)  ## For wrld_simpl
      library(raster)
      
      ## Example SpatialPolygonsDataFrame
      data(wrld_simpl)
      SPDF <- subset(wrld_simpl, NAME=="Brazil")
      
      ## Example RasterLayer
      r <- raster(nrow=1e3, ncol=1e3, crs=proj4string(SPDF))
      r[] <- 1:length(r)
      
      ## crop and mask
      r2 <- crop(r, extent(SPDF))
      r3 <- mask(r2, SPDF)
      
      ## Check that it worked
      plot(r3)
      plot(SPDF, add=TRUE, lwd=2)
      

      【讨论】:

      • 完美运行!谢谢。
      • 您需要先遮罩,然后将其裁剪以移除 NA,而不是相反。
      • 这是一个不正确的解决方案... plot(r3, colNA="magenta") 清楚地表明光栅没有被裁剪,而只是被“蒙版”
      • @Gmichael 我相信你错了。 Here is a nice explanation NAs 在 R 栅格中的角色,提交以回应与您有类似问题的 OP
      猜你喜欢
      • 2018-09-15
      • 1970-01-01
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 2021-09-11
      • 2022-09-24
      相关资源
      最近更新 更多