Введение в RSAGA

Материал из GIS-Lab
Версия от 10:27, 31 марта 2013; SSSRebelious (обсуждение | вклад) (Создан черновик статьи RSAGA)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску
Эта страница является черновиком статьи.


[via Misanthrope's Thoughts]

RSAGA предоставляет доступ к алгоритмам геопроцессинга SAGA GIS из среды R. Наличие установленной SAGA GIS является (довольно очевидным) требованием для использования RSAGA. 

Иногда в Linux x64 необходимы дополнительные приготовления. SAGA, так же как и другие программы, которые будут пытаться использовать SAGA в Linux обычно ищут эти модули в /usr/lib/saga, но в Linux x64, модули SAGA скорее всего будут установлены в /usr/lib64/saga. Конечно же можно задать необходимые параметры окружения, но самым «ленивым» и наиболее эффективным способом в этом случае будет просто добавление символьной ссылки на  /usr/lib64/saga (или другой корректный путь к модулям) из директории /usr/lib/saga:

~> sudo ln -s /usr/lib64/saga /usr/lib/saga

Теперь ни одно приложение с лёгкостью найдёт модули SAGA.

Перейдём к настройке доступа к модулям SAGA из R. > library(RSAGA)

  1. настраиваем параметры окружения:

> work_env <- rsaga.env() # позволяем RSAGA самому определить параметры окружения > work_env  # проверим параметры окружения $workspace [1] "."  # текущая рабочая папка $cmd [1] "saga_cmd"  $path [1] "/usr/bin"  # путь к saga_cmd $modules [1] "/usr/lib/saga"  # путь к модулям $version [1] "2.0.8" # версия SAGA

Обратите внимание, что в данном случае использовался Linux x64 и RSAGA, благодаря символьной ссылке, нашёл модули в /usr/lib хотя на самом деле они находились в /usr/lib64.

Если необходимо задать параметры окружения вручную, выполните следующую команду: > work_env <- rsaga.env(workspace='путь_к_рабочей_папке', +                       path = '/usr/bin', # задаёт путь к saga_cmd +                       modules = '/usr/lib64/saga') # задаёт путь к модулям

Мы убедились, что для RSAGA корректно заданы параметры окружения. Теперь можно посмотреть список доступных библиотек (наборов модулей): > rsaga.get.libraries()   [1] "contrib_a_perego"            "docs_html"   [3] "docs_pdf"                    "garden_3d_viewer"   [5] "garden_webservices"          "geostatistics_grid"   ...и так далее.

В каждой библиотеке находится определённый набор модулей. Именно модули, вызываются для геообработки. Посмотрим список модулей внутри одной из библиотек: > rsaga.get.modules('grid_filter') 

$grid_filter    code                       name interactive 1     0              Simple Filter       FALSE 2     1            Gaussian Filter       FALSE 3     2           Laplacian Filter       FALSE 4     3 Multi Direction Lee Filter       FALSE 5     4        User Defined Filter       FALSE 6     5              Filter Clumps       FALSE 7     6            Majority Filter       FALSE 8     7   DTM Filter (slope-based)       FALSE 9     8       Morphological Filter       FALSE 10    9                Rank Filter       FALSE

В колонке 'name' выводится имя модуля (это имя мы видим в самой SAGA GIS); колонка 'interactive' показывает, является ли модуль интерактивным, а колонка 'code' содержит ID модуля, который необходимо указывать при обращении к данному модулю (обратите внимание, что нумерация начинается с 0).

Теперь мы хотим узнать, как использовать модуль 'DTM Filter (slope-based)':

> rsaga.get.usage('grid_filter', 7)

Usage: saga_cmd -INPUT <str> [-RADIUS <num>] [-TERRAINSLOPE <str>] [-STDDEV] -GROUND <str> -NONGROUND <str>   -INPUT:<str>       Grid to filter Grid (input)   -RADIUS:<num>       Search Radius Integer Minimum: 1.000000   -TERRAINSLOPE:<str> Approx. Terrain Slope Floating point Minimum: 0.000000   -STDDEV             Use Confidence Interval Boolean   -GROUND:<str>       Bare Earth Grid (output)   -NONGROUND:<str>   Removed Objects Grid (output)

library path: /usr/lib/saga library name: libgrid_filter module name : DTM Filter (slope-based) Мы получили детальную информацию о параметрах (и соответствующих типах данных), которые мы должны задать для корректного использования модуля. Теперь надо подготовить данные, которые мы хотим обработать. RSAGA работает только с grid-форматами (.srgd) растров, поэтому надо конвертировать наши данные, изначально имеющие формат GeoTiff: > rsaga.import.gdal('lidar.tif') В результате в папке с оригиналом будет создан файл, имеющий то же название, но с расширением .srgd: 'lidar.srgd'.

Теперь, наконец, можно запустить нашу первую команду геообработки: > rsaga.geoprocessor('grid_filter', module = 7,  +                    env = work_env, +                    param = list(INPUT = 'lidar.sgrd', +                                 RADIUS = 20, +                                 TERRAINSLOPE = 0, +                                 STDDEV = T, +                                 GROUND = 'ground', +                                 NONGROUND = 'non_ground') +                    )

Заключение Мы рассмотрели настройку параметров работы пакета RSAGA, предназначенного для работы с модулями SAGA GIS. Однако RSAGA имеет определённые неудобства в использовании. Модули обработки гридов принимают только формат .srgd, а входящие и результирующие гриды должны физически храниться (сохраняться) на жёстком диске. Таким образом, использование RSAGA (вместо самой SAGA GIS) может быть удобно в большей степени для автоматизации повседневных задач.