Почему инструменты RSAGA не работают из-за неожиданного параметра? - PullRequest
0 голосов
/ 07 ноября 2018

Я хочу использовать один из инструментов SAGA в R, и он дает мне ошибку, которую я не понимаю и для которой я не смог найти решение в другом месте.

Для этого конкретного кода я пытаюсь заполнить приемники растровой матрицы высот, но у меня возникает та же проблема, когда я пытаюсь использовать любой другой инструмент.

Вот мой код

library(RSAGA)
library(raster)

wd="C:/Users/charlie/Desktop/Cartographie_risques"
setwd(wd)
myenv=rsaga.env(workspace = wd, path = "C:/Program Files/QGIS 2.18/apps/saga-ltr")

#Read the raster and prepare the dataset
input.single.raster=raster("C:/Users/charlie/Desktop/Cartographie_risques/Localisation_alea/Lacs_glaciaires/MNT_sans_glaciers/Clipped_limite_1.tif")

#Launch the calculation 
rsaga.geoprocessor("sim_qm_of_esp",1,list(DEM=input.single.raster,FILLED="Filled",SINKS="Sinks",DZFILL=0.01),env=myenv)

Тогда у меня есть это сообщение

> rsaga.geoprocessor("sim_qm_of_esp",1,list(DEM=input.single.raster,FILLED="Filled",SINKS="Sinks",DZFILL=0.01),env=myenv)
Unexpected parameter '+zone=32'


SAGA Version: 6.3.0 (64 bit)

library path: C:\Users\CHARLI~1\Desktop\saga-6.3.0_x64\saga-6.3.0_x64\tools\
library name: sim_qm_of_esp
library     : sim_qm_of_esp
tool        : Fill Sinks (QM of ESP)
identifier  : 1
author      : O.Conrad (c) 2013
processors  : 6 [6]


Usage: saga_cmd sim_qm_of_esp 1 [-DEM <str>] [-FILLED <str>] [-SINKS <str>] [-DZFILL <double>]
  -DEM:<str>        DEM
    Grid (input)
  -FILLED:<str>     DEM without Sinks
    Grid (output)
  -SINKS:<str>      Sinks
    Grid (optional output)
  -DZFILL:<double>  Fill Increment
    Floating point
    Minimum: 0.000000
    Default: 0.010000
Warning message:
In system(command, intern = intern, show.output.on.console = show.output.on.console,  :
  running command '"C:/Users/charlie/Desktop/saga-6.3.0_x64/saga-6.3.0_x64/saga_cmd.exe" -f=q sim_qm_of_esp 1 -DEM "new(\"RasterLayer\", file = new(\".RasterFile\", name = \"C:\\Users\\charlie\\Desktop\\Cartographie_risques\\Localisation_alea\\Lacs_glaciaires\\MNT_sans_glaciers\\Clipped_limite_1.tif\", datanotation = \"FLT4S\", byteorder = \"little\", nodatavalue = -Inf, NAchanged = FALSE, nbands = 1, bandorder = \"BIL\", offset = 0, toptobottom = TRUE, blockrows = 5, blockcols = 366, driver = \"gdal\", open = FALSE), data = new(\".SingleLayerData\", values = logical(0), offset = 0, gain = 1, inmemory = FALSE, fromdisk = TRUE, 
    isfactor = FALSE, attributes = list(), haveminmax = TRUE, min = 825.53076171875, max = 3009.1381835938, band = 1, unit = \"\", names = \"Clipped_limite_1\"), legend = new(\".RasterLegend\", type = character(0), values = logical(0), color = logical(0), names = logical(0), colortable = logical(0)), title = character(0), extent = new(\"Extent\", x [... truncated]

Кажется, что "неожиданный параметр" относится к проекции, но я не понимаю, почему это проблематично и действительно ли это проблема.

Charlie

1 Ответ

0 голосов
/ 13 ноября 2018

RSAGA не работает с объектом RasterLayer в качестве входного параметра. Он всегда использует файлы на вашем жестком диске. rsaga.geoprocessor вызывает интерпретатор командной строки SAGA-GIS. SAGA GIS не может обрабатывать объекты R, и в RSAGA нет автоматического способа преобразования объектов R в файлы.

Этот код должен работать:

library(RSAGA)
library(raster)

# Set environment
setwd("C:/Users/charlie/Desktop/Cartographie_risques")
myenv <- rsaga.env(workspace = wd, path = "C:/Program Files/QGIS 2.18/apps/saga-ltr")

# Convert tiff to sgrd
r <- raster("C:/Users/charlie/Desktop/Cartographie_risques/Localisation_alea/Lacs_glaciaires/MNT_sans_glaciers/Clipped_limite_1.tif")
writeRaster(r, "C:/Users/charlie/Desktop/Cartographie_risques/Localisation_alea/Lacs_glaciaires/MNT_sans_glaciers/Clipped_limite_1.sdat")

# Set raster path
input.single.raster <- "C:/Users/charlie/Desktop/Cartographie_risques/Localisation_alea/Lacs_glaciaires/MNT_sans_glaciers/Clipped_limite_1.sgrd"

#Launch the calculation 
rsaga.geoprocessor("sim_qm_of_esp",1,list(DEM=input.single.raster,FILLED="Filled",SINKS="Sinks",DZFILL=0.01),env=myenv)

Обратите внимание, что мы просто используем растровый пакет для преобразования файла TIFF в файл sgrd. Затем мы используем файл sgrd на жестком диске в качестве входного параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...