微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将shapefile转换为栅格.tif文件R

如何解决将shapefile转换为栅格.tif文件R

添加一个新变量来对形状文件的单元格进行编码,我想将该文件另存为.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问题时,请提供一个最小的,可复制的,独立的示例,像这样

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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。