R通过gdalUtils
软件包为gdal库提供包装。我想将gdal_calc.py函数用于栅格计算,但是,我没有在包中找到有关此特定功能的信息。我创建了自己的包装函数,该函数可以工作,但是通常不是100%完美,仅在Linux上有效。它也没有原始的灵活(如果感兴趣,请参阅下文)。 R中还有其他实现吗?
f.gdal.calc<-function(path.in.r.1,
#r1.band=1,
path.in.r.2,
# r2.band=1,
path.out.r,
my.fun="A*B",#defaults to multiplication
r.datatype="Float32",
cachemax=2000,
overwrite=FALSE, # caution, can destroy data
printcommand=FALSE,# should the commad be printed prior to execution? Can help debugging
bigtiff=F,
compression=F)
{gdalcommand<-paste("gdal_calc.py ",
"-A ",path.in.r.1,
# " --allBands A ",
#"--A_band=",r1.band,
" -B ",path.in.r.2,
#"--b_band=",r2.band,
" --outfile=",path.out.r,
" --calc=",shQuote(my.fun,type = "cmd"),# supply function as character like "A+B"
" --type ",r.datatype,
ifelse(overwrite==TRUE,paste(" --overwrite"),paste("")),
ifelse(compression==TRUE,paste(" --co COMPRESS=LZW"),paste("")), #should not be enabled when creating bigtiffs
ifelse(bigtiff==TRUE,paste(" --co BIGTIFF=YES"),paste("")),
sep=""
)
if(printcommand==T){print(gdalcommand)}
system(gdalcommand)
}
答案 0 :(得分:0)
根据开发人员的说法,elapsed
到目前为止尚未实现基于python的gdal函数。因此,如果您想使用gdal_Utils
进行R中的栅格计算,则需要创建自己的包装函数,类似于上面的函数。
答案 1 :(得分:0)
现在您可以在“agroEcoTradeoff”R 包中使用“rast_math”和“gdal_calc”函数:
https://rdrr.io/github/marcusspiegel/agroEcoTradeoff/src/R/rast_math.R
希望有用!