Функция Wrapper для использования gdal_calc.py в R - PullRequest
0 голосов
/ 08 декабря 2018

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)
}

1 Ответ

0 голосов
/ 12 февраля 2019

По словам разработчиков, до сих пор в gdalUtils не реализованы функции gdal на основе Python.Поэтому, если вы хотите использовать gdal_calc для растровых вычислений в R, вам необходимо создать собственную функцию-оболочку, аналогичную приведенной выше.

...