【问题标题】:shapefile to a raster .tif file Rshapefile 到光栅 .tif 文件 R
【发布时间】:2020-12-04 05:04:09
【问题描述】:

我添加了一个新变量来编码我的形状文件的单元格,我想将该文件保存为 .tif 并拥有我的新变量的所有信息。我将它保存为一个新的.shp 文件,然后使用shp2raster 函数,但我得到了错误。

beijing10<-sf::read_sf("Landuse/Beijing2010.shp")
beijing10<-mutate(beijing10,land=ifelse(CODE%in%c(41,42),"Cultivated Land","Unused Land"))
st_write(beijing10,"beijing2010new.shp")
shp2raster("beijing2010new.shp",column = "land")

错误: Error in p$rasterize(nrow(r), ncol(r), as.vector(extent(r)), values, background) : Not compatible with requested type: [type=character; target=double].

我也尝试过这个,但我没有得到 2 个分类。

r <- raster(ncol=180, nrow=180) #can take any value
extent(r) <- extent(beijing10)
rr<-rasterize(beijing10,r,'land')
writeRaster(rr,"beijing2.tif",options=c('TFW=YES'),'land')

是否有其他选项可以获取.tif 文件。有人可以帮助我了解转换是如何工作的,以及我应该如何添加正确的代码,这样我就不需要使用 ArcMap 来获取文件了。谢谢

【问题讨论】:

    标签: r geospatial raster spatial sf


    【解决方案1】:

    这是一个最小的、可重复的、独立的示例

    library(raster)
    p <- shapefile(system.file("external/lux.shp", package="raster"))
    r <- raster(p, res=0.01)
    p$land <- ifelse(p$ID_2 > 6, "Cultivated Land", "Unused Land")
    

    发生错误是因为您尝试栅格化字符变量。这是不支持的。不过,你可以使用一个因子

    p$land <- as.factor(p$land)
    r <- rasterize(p, r, "land")
    r
    #class      : RasterLayer 
    #dimensions : 73, 78, 5694  (nrow, ncol, ncell)
    #resolution : 0.01, 0.01  (x, y)
    #extent     : 5.74414, 6.52414, 49.45162, 50.18162  (xmin, xmax, ymin, ymax)
    #crs        : +proj=longlat +datum=WGS84 +no_defs 
    #source     : memory
    #names      : layer 
    #values     : 1, 2  (min, max)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 2013-06-26
      • 2020-03-06
      相关资源
      最近更新 更多