Введение в RSAGA: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
(Создан черновик статьи RSAGA)
 
Нет описания правки
 
(не показано 6 промежуточных версий 2 участников)
Строка 1: Строка 1:
{{Статья|Черновик}}
{{Статья|Опубликована|rsaga-intro}}
[[http://ssrebelious.blogspot.ru/ via Misanthrope's Thoughts]]
{{Аннотация| В данной статье описана подготовка к использованию модулей SAGA GIS в среде R посредством пакета RSAGA. Продемонстрированы базовые приёмы вызовов модулей SAGA из R}}
[[http://ssrebelious.blogspot.ru/2013/03/rsaga-getting-started.html via Misanthrope's Thoughts]]


[http://cran.r-project.org/web/packages/RSAGA/ RSAGA] предоставляет доступ к алгоритмам геопроцессинга [http://www.saga-gis.org/ SAGA GIS] из среды R. Наличие установленной SAGA GIS является (довольно очевидным) требованием для использования RSAGA. 
[http://cran.r-project.org/web/packages/RSAGA/ RSAGA] предоставляет доступ к алгоритмам геопроцессинга [http://www.saga-gis.org/ SAGA GIS] из среды R. Наличие установленной SAGA GIS является (довольно очевидным) требованием для использования RSAGA. 


===Особенности настройки в Linux===
Иногда в Linux x64 необходимы дополнительные приготовления. SAGA, так же как и другие программы, которые будут пытаться использовать SAGA в Linux обычно ищут эти модули в /usr/lib/saga, но в Linux x64, модули SAGA скорее всего будут установлены в /usr/lib64/saga. Конечно же можно задать необходимые параметры окружения, но самым «ленивым» и наиболее эффективным способом в этом случае будет просто добавление символьной ссылки на  /usr/lib64/saga (или другой корректный путь к модулям) из директории /usr/lib/saga:
Иногда в 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
<syntaxhighlight lang="bash">:~> sudo ln -s /usr/lib64/saga /usr/lib/saga</syntaxhighlight>
Теперь ни одно приложение с лёгкостью найдёт модули SAGA.
Теперь любое приложение с лёгкостью найдёт модули SAGA.


===Настройка окружения в R===
Перейдём к настройке доступа к модулям SAGA из R.
Перейдём к настройке доступа к модулям SAGA из R.
<syntaxhighlight lang="rsplus">
> library(RSAGA)
> library(RSAGA)


Строка 19: Строка 23:
$modules [1] "/usr/lib/saga"  # путь к модулям
$modules [1] "/usr/lib/saga"  # путь к модулям
$version [1] "2.0.8" # версия SAGA
$version [1] "2.0.8" # версия SAGA
 
</syntaxhighlight>
Обратите внимание, что в данном случае использовался Linux x64 и RSAGA, благодаря символьной ссылке, нашёл модули в /usr/lib хотя на самом деле они находились в /usr/lib64.
Обратите внимание, что в данном случае использовался Linux x64 и RSAGA, благодаря символьной ссылке, нашёл модули в /usr/lib хотя на самом деле они находились в /usr/lib64.


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


===Работа с модулями геообработки===
Мы убедились, что для RSAGA корректно заданы параметры окружения. Теперь можно посмотреть список доступных библиотек (наборов модулей):
Мы убедились, что для RSAGA корректно заданы параметры окружения. Теперь можно посмотреть список доступных библиотек (наборов модулей):
<syntaxhighlight lang="rsplus">
> rsaga.get.libraries() 
> rsaga.get.libraries() 
 [1] "contrib_a_perego"            "docs_html" 
 [1] "contrib_a_perego"            "docs_html" 
Строка 33: Строка 41:
 [5] "garden_webservices"          "geostatistics_grid" 
 [5] "garden_webservices"          "geostatistics_grid" 
 ...и так далее.
 ...и так далее.
 
</syntaxhighlight>
В каждой библиотеке находится определённый набор модулей. Именно модули, вызываются для геообработки. Посмотрим список модулей внутри одной из библиотек:
В каждой библиотеке находится определённый набор модулей. Именно модули, вызываются для геообработки. Посмотрим список модулей внутри одной из библиотек:
<syntaxhighlight lang="rsplus">
> rsaga.get.modules('grid_filter') 
> rsaga.get.modules('grid_filter') 


Строка 49: Строка 58:
9     8       Morphological Filter       FALSE
9     8       Morphological Filter       FALSE
10    9                Rank Filter       FALSE
10    9                Rank Filter       FALSE
</syntaxhighlight>


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


Теперь мы хотим узнать, как использовать модуль 'DTM Filter (slope-based)':
Теперь мы хотим узнать, к примеру, как использовать модуль 'DTM Filter (slope-based)':
 
<syntaxhighlight lang="rsplus">
> rsaga.get.usage('grid_filter', 7)  
> rsaga.get.usage('grid_filter', 7)  


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


Теперь, наконец, можно запустить нашу первую команду геообработки:
Теперь, наконец, можно запустить нашу первую команду геообработки:
<syntaxhighlight lang="rsplus">
> rsaga.geoprocessor('grid_filter', module = 7, 
> rsaga.geoprocessor('grid_filter', module = 7, 
+                    env = work_env,
+                    env = work_env,
Строка 85: Строка 99:
+                                 RADIUS = 20,
+                                 RADIUS = 20,
+                                 TERRAINSLOPE = 0,
+                                 TERRAINSLOPE = 0,
+                                 STDDEV = T,
+                                 STDDEV = TRUE,
+                                 GROUND = 'ground',
+                                 GROUND = 'ground',
+                                 NONGROUND = 'non_ground')
+                                 NONGROUND = 'non_ground')
+                    )
+                    )
</syntaxhighlight>
Результат работы сохраняется в ту же папку, где находится исходный файл. Если требуется сохранить результат в другую директорию, то вместе с именем выходного файла (или файловов) следует указать полный путь к нему.


Заключение
===Заключение===
Мы рассмотрели настройку параметров работы пакета RSAGA, предназначенного для работы с модулями SAGA GIS. Однако RSAGA имеет определённые неудобства в использовании. Модули обработки гридов принимают только формат .srgd, а входящие и результирующие гриды должны физически храниться (сохраняться) на жёстком диске. Таким образом, использование RSAGA (вместо самой SAGA GIS) может быть удобно в большей степени для автоматизации повседневных задач.
Мы рассмотрели настройку параметров работы пакета RSAGA, предназначенного для работы с модулями SAGA GIS. Однако RSAGA имеет определённые неудобства в использовании. Модули обработки гридов принимают только формат .srgd, а входящие и результирующие гриды должны физически храниться (сохраняться) на жёстком диске. Таким образом, использование RSAGA (вместо самой SAGA GIS) может быть удобно в большей степени для автоматизации повседневных задач.
==Ссылки по теме==
*[http://gis-lab.info/qa/saga-intro.html Открытая настольная ГИС SAGA - общая характеристика]
*[http://gis-lab.info/qa/rspatial.html Возможности работы с пространственными данными статистического пакета R]
*[http://gis-lab.info/qa/grass-r.html Анализ данных с использованием GRASS GIS и R]

Текущая версия от 06:56, 24 апреля 2013

Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/rsaga-intro.html


В данной статье описана подготовка к использованию модулей SAGA GIS в среде R посредством пакета RSAGA. Продемонстрированы базовые приёмы вызовов модулей SAGA из R

[via Misanthrope's Thoughts]

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

Особенности настройки в Linux

Иногда в 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.

Настройка окружения в R

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

> library(RSAGA)

# настраиваем параметры окружения:
> 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 = TRUE,
+                                 GROUND = 'ground',
+                                 NONGROUND = 'non_ground')
+                    )

Результат работы сохраняется в ту же папку, где находится исходный файл. Если требуется сохранить результат в другую директорию, то вместе с именем выходного файла (или файловов) следует указать полный путь к нему.

Заключение

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

Ссылки по теме