Введение в RSAGA: различия между версиями
(Создан черновик статьи 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. | ||
===Настройка окружения в 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 = | + 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
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) может быть удобно в большей степени для автоматизации повседневных задач.