R предлагает оболочки для библиотек gdal с пакетом gdalUtils
.Я хотел бы использовать функцию 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)
}