Настройка сторонних приложений

Введение

Возможности SEXTANTE могут расширяться за счет использования дополнительных приложений, которые вызываются из SEXTANTE. В настоящее время поддерживаются SAGA, GRASS, OTB (Orfeo Toolbox) и R, а также некоторые другие приложения, предоставляющие функции анализа пространственных данных. Алгоритмы, зависящие от внешних приложений, управляются своими провайдерами.

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

По умолчанию, все алгоритмы, зависящие от внешних приложений, которые не поставляются с QGIS, деактивированы. Вы можете активировать их в диалоге настройки SEXTANTE. Убедитесь, что соответствующее приложение уже установлено в системе. Активация провайдера алгоритмов без установки приложения, которое ему требуется, приведет к появлению алгоритмов в панели инструментов, но при попытке запуска алгоритма вы получите ошибку.

Дело в том, что описания алгоритмов (необходимые для создания диалога параметров и используемые SEXTANTE для получения информации об алгоритме) поставляются не с приложениями, а входят в состав SEXTANTE. Т.е. они являются частью SEXTANTE и доступны даже если сторонние приложение не установлены. Однако для запуска алгоритма необходимо наличие исполняемых файлов приложения в системе.

О форматах файлов

При использовании сторонних приложений возможность открытия файла в QGIS ещё не значит, что этот файл может быть открыт и обработан каким-то другим программным обеспечением. В большинстве случаев сторонние приложения могут читать данные, загруженные в QGIS, но в некоторых случаях это невозможно. При использовании баз данных или малораспространенных форматов, не зависимо от того растровые это данные или векторные, возможно появление проблем. Если при обработке таких данных возникли трудности, попробуйте использовать более распространенные форматы, которые точно поддерживаются обеими программами, а также проверьте консольный вывод (в окне History and log), чтобы узнать что именно пошло не так.

Использование растровых данных GRASS является одним из случаев, когда у вас могут возникнуть проблемы, мешающие завершить анализ, если внешний алгоритм использует такой слой в качестве исходного. Поэтому такие слои не отображаются в качестве доступных для алгоритмов SEXTANTE (мы работаем над решением этой проблемы и надеемся оно будет доступно в ближайшее время).

С векторными слоями любых типов таких проблем возникать не должно, так как SEXTANTE автоматически конвертирует их из исходного формата в формат, понимаемый внешним приложением, перед тем как выполнить алгоритм. Это увеличивает время обработки, и может потребовать длительное время в случае больших слоёв. Так что не удивляйтесь, если обработка данных их базы данных будет длиться дольше, чем обработка аналогичных данных в формате shape-файлов.

Провайдеры, не использующие внешние приложения, могут обрабатывать любые слои, открытые в QGIS, так как они открыты для анализа самой QGIS.

Что касается выходных форматов, то растровые данные сохраняются в формате TIFF, а векторные — как shape-файлы. Эти форматы были выбраны, так как они являются «ingua franca» для QGIS и сторонних приложений. Если имя выходного файла не содержит соответствующего суффикса, будет добавлен суффикс по умолчанию и использован формат по умолчанию.

В случае GDAL список поддерживаемых выходных форматов больше. В диалоге открытия файла есть возможность выбрать необходимый формат из списка. Более полную информацию о поддерживаемых форматах можно найти в документации GDAL.

О выделении в векторных слоях

По умолчанию, когда внешнее приложение получает на обработку векторный слой, используются все объекты, даже если в QGIS активно выделение. Заставить внешние приложения учитывать веделение можно активировав настройку Use selected features in external applications в разделе General диалога настройки SEXTANTE. После этого при каждом запуске внешнего алгоритма, использующего векторный слой, выделенные объекты этого слоя будут экспортированы в новый временный слой, и алгоритм будет работать именно с этим временным слоем.

Обратите внимание, что после активации этой настройки, слой без выделения будет обрабатываться как слой со всеми выделенными объектами, а не как пустой.

SAGA

Алгоритмы SAGA могут использоваться из SEXTANTE, если SAGA установлена в системе, а SEXTANTE правильно настроена и может найти исполнимые файлы SAGA. Для запуска алгоритмов SAGA необходимы консольные приложения SAGA. Исполнимые файлы SAGA не поставляются с SEXTANTE, поэтому необходимо загрузить и установить программу самостоятельно. Подробную информацию об установке можно найти на сайте SAGA. Поддерживаемая версия SAGA — 2.0.8.

После установки SAGA, если вы используете Windows, откройте диалог настройки SEXTANTE. В разделе SAGA найдите параметр SAGA Folder и введите путь к каталогу установки SAGA. Закройте диалог настройки. Теперь вы можете запускать алгоритмы SAGA из SEXTANTE.

Если вы используете Linux, потребности в дополнительной настройке нет. Вместо этого необходимо убедиться, что SAGA установлена корректно и доступна в PATH. Просто откройте эмулятор терминала и введите saga_cmd чтобы поверить, что система может найти файлы SAGA.

Ограничения системы покрытий SAGA

Большинство алгоритмов SAGA, оперирующих несколькими растрами, требуют, чтобы эти растры имели одну систему покрытия. Т.е. имели одинаковый географический охват и одинаковый размер ячейки. При вызове алгоритмов SAGA из SEXTANTE можно использовать любые слои, не зависимо от размера их ячеек и охвата. В случаях, когда несколько растров используется в качестве исходных данных алгоритма SAGA, SEXTANTE автоматически пересчитывает их в единую систему и затем передаёт SAGA (кроме случаев, когда соответствующий алгоритм SAGA может использовать слои с разными системами).

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

  • Задать параметры охвата, установив следующие параметры:

    • Resampling min X
    • Resampling max X
    • Resampling min Y
    • Resampling max Y
    • Resampling cellsize

    Имейте ввиду, что SEXTANTE выполнит пересчет исходных слоёв к этому охвату даже если они не пересекают его.

  • Установить автоматически из исходных слоёв. Для активации этого режима включите флажок ’Use min covering grid system for resampling. Все остальные параметры в этом случае будут проигнорированы и будет использован минимальный охват, захватывающий все исходные слои. Размер ячейки целевых слоёв будет равен максимальному размеру ячейки исходных растров.

При вызове алгоритмов, которые не используют несколько исходных слоёв или не требуют единой системы покрытия, пересчет перед запуском SAGA не выполняется и все эти настройки ингорируются.

Ограничения многоканальных слоёв

В отличие от QGIS, SAGA не поддерживает многоканальные растры. Если требуется использовать многоканальное изображение (такое как RGB-растр или мультиспектральное изображение), вначале необходимо разделить его на одноканальные растры. Для этого можно использовать алгоритм «SAGA/Grid - Tools/Split RGB image» (создаёт 3 растра из RGB-композита) или «SAGA/Grid - tools/Extract band» (извлекает один канал).

Ограничения на размер ячейки

SAGA полагает, что растровые слои имеют одинаковый размер ячеек по осям X и Y. Если вы работаете со слоями, имеющими разные размеры ячеек по горизонтали и вертикали, можно получить неожиданные результаты. В таких случаях в отладочных сообщениях SEXTANTE появится соответствующее предупреждение, информирующее о том, что исходный слой не подходит к использованию в SAGA.

Логгирование

Когда SEXTANTE вызывает SAGA, она делает это с использованием интерфейса командной строки, т.е. передаёт набор команд, выполняющих необходимую операцию. SAGA отображает информацию о процессе, выводя на консоль сообщения, которые содержат данные о прогрессе выполнения, а также дополнительные сведения. Эта информация фильтруется SEXTANTE и используется для обновления индикатора прогресса в процессе работы алгоритма.

Команды, посылаемые SEXTANTE, а также информация, возвращаямая SAGA, могут записываться наряду с остальными сообщениями SEXTANTE. Эти сведения могут быть полезны для изучения того, как SEXTANTE взаимодействует с SAGA. За активацию логгирования отвечают два параметра — Log console output and Log execution commands.

Большинство провайдеров, использующих сторонние приложения и взаимодействующие с ними через командную строку, имеют схожие параметры, так что вы можете встретить их и в других местах диалога настройки.

R и скрипты R

Интеграция R в SEXTANTE отличается от остальных, так как не существует предустановленного набора алгоритмов, которые можно запускать (кроме нескольких примеров). Вместо этого вы должны писать свои скрипты и вызывать команды R, почти так же как и при использовании«чистого» R и почти так же, как мы вызывали скрипты SEXTANTE в соответствующем разделе. Этот параграф покажет как вызывать команды R из SEXTANTE и как использовать в них объекты SEXTANTE (слои, таблицы).

Прежде всего, как мы уже видели на примере SAGA, необходимо указать SEXTANTE где находятся исполнимые файлы R. Для этого предназначено поле R folder в диалоге настройки SEXTANTE. После настройки этого параметра можно начинать создавать свои собственные скрипты R, а затем выполнять их.

И снова, в Linux всё значительно проще: достаточно убедиться, что R доступен в PATH. Если ыв можете запустить R просто введя в консоли R, значит всё в порядке.

Чтобы добавить новый алгоритм, вызывающий функицю R (или более сложный скрипт R, который вы написали и хотите сделать доступным из SEXTANTE), необходимо создать файл скрипта, объясняющий SEXTANTE как выполнить операцию и содержащий соответствующие команды R.

Файлы скриптов должны иметь расширение .rsx, а создавать их при наличии базовых знаний синтаксиса R очень просто. Скрипты сохраняются в каталог R скриптов, путь к этому каталогу можно задать в группе R (в диалоге настройки SEXTANTE), точно так же как это делалось в случае каталога для обычных скриптов SEXTANTE.

Рассмотрим очень простой скрипт, который вызывает метод R spsample для создания случайной сетки внутри границ полигонов заданного полигонального слоя. Этот метод находится в пакете maptools. Так как большинство алгоритмов, которые вы скорее всего захотите реализовать в SEXTANTE, будет использовать или создавать пространственные даные, знание таких пакетов как maptools и особенно sp является обязательным.

##polyg=vector
##numpoints=number 10
##output=output vector
##sp=group
pts=spsample(polyg,numpoints,type="random")
output=SpatialPointsDataFrame(pts, as.data.frame(pts))

Первые строки, начинающиеся с двойного символа комментария Python (##), дают SEXTANTE информацию об исходных данных алгоритма и создаваемых им результатах. Они имеют такой же синтаксис, как и в обычных скриптах SEXTANTE, которые мы рассматривали выше, поэтому повторять описание не будем. Обратитесь к соответствующему разделу за более подробной информацией.

Когда вы описываете исходный параметр, SEXTANTE использует эту информацию для двух вещей: создания пользовательского интерфейса и для создания соответствующей переменной R, которая позже может использоваться в командах R.

В примере выше мы задали исходный аргумент типа vector с именем polyg. При выполнении алгоритма SEXTANTE откроет в R слой, выбранный пользователем и запишет его в переменную с именем polyg. Т.е. имя параметра также вляется именем переменной, которую можно использовать в R для доступа к значению этого параметра (поэтому следует избегать использования зарезервированных слов R в качестве названий параметров).

Пространственные элементы, такие как векторные и растровые слои, открываются при помощи команд readOGR() и readGDAL() (вам не нужно беспокоиться о добавлении этих команд в файл описания, SEXTANTE сделает это автоматически), а и сохраняются как объекты Spatial*DataFrame. Поля таблиц сохраняются как строки, содержащие имя выбранного поля.

Таблицы открываются при помощи команды read.csv(). Если таблица создаётся пользователем и имеет формат, отличный от CSV, она будет соответствующим образом преобразована перед испортированием в R.

Располагая этими сведениями мы теперь можем понять первую строку нашего примера, которая не начинается символом комментария Python.

pts=spsample(polyg,numpoints,type="random")

Переменная polygon уже содержит объект SpatialPolygonsDataFrame и может использоваться для вызова метода spsample, как и переменная numpoints, которая содержит число точек для создания сетки.

Так как мы описали результат типа vector с именем out, необходимо создать переменную out и записать в неё объект Spatial*DataFrame (в нашем случае SpatialPointsDataFrame). Для промежуточных переменных можно использовать любые имена. Но необходимо убедиться, что переменные, содержащие конечный результат, имеют те же имена, что использовались при их описании, а также содержат значения правильного типа.

В нашем случае результат полученный от метода spsample необходимо явно преобразовать в объект SpatialPointsDataFrame, так как изначально это экземпляр класса ppp, который не подходит для возвращения SEXTANTE.

Если ваш алгоритм не создаёт никаких слоёв, а выдаёт текстовую информацию на консоль, необходимо указать SEXTANTE, что надо показать окно консоли после выполнения алгоритма. Для этого строки, отвечающие за вывод результата на консоль, должны начинаться с символа > («больше»). Текст, выводимый другими командами отображаться не будет. Например, вот код алгоритма, выполняющего тест на нормальность заданного поля (столбца) атрибутивной таблицы векторного слоя:

##layer=vector
##field=field layer
##nortest=group
library(nortest)
>lillie.test(layer[[field]])

Результат работы последней строки будет выведен на консоль, а результат работы первой — нет (равно как и вывод остальных команд, добавленных SEXTANTE автоматически).

Если алгоритм создаёт какие-либо графические объекты (используя метод plot()), добавьте следующую строку:

##showplots

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

И консольные и графические результаты будут доступны в менеджере результатов SEXTANTE.

Больше информации можно получить, ознакомившись со скриптами, входящими в состав SEXTANTE. Большинство их них достаточно простые и будут полезны для понимания того, как создавать свои собственные.

GRASS

Настройка GRASS мало чем отличается от настройки SAGA. Прежде всего необходимо указать путь к каталогу установки GRASS, но только в том случае, если вы использует Windows. Дополнительно требуется указать используемый интерпретатор командной строки (обычно это msys.exe, который имеется в большинстве дистрибутивов GRASS для Windows) и его расположение.

По умолчанию, SEXTANTE пытается настроить свой провайдер GRASS на использование версии GRASS, распространяемой вместе с QGIS. В большинстве случаев это должно работать без дополнительных действий со стороны пользователя, но если у вас возникают проблемы — попробуйте настроить провайдер вручную. Также, если вы хотите использовать другую версию GRASS. эти настройки можно изменить, указав путь к каталогу с другой версией. Для работы алгоритмов требуется GRASS 6.4.

Если вы используете Linux, просто убедитесь, что GRASS корректно установлена и запускается из командной строки без ошибок.

Алгоритмы GRASS выполняют операции над районом. Район может быть задан вручную, используя значения, схожие с параметрами настройки SAGA, или автоматически, по минимальному охвату, покрывающему все исходные слои. Если вы предпочитаете такой подход — активируйте параметр Use min covering region в настройках провайдера GRASS.

В состав GRASS входят файлы справки, описывающие каждый алгоритм. Если вы укажете путь к этому каталогу в поле GRASS help folder, SEXTANTE сможет открывать их по нажатию на кнопку [Show help] в окне алгоритма.

Последний параметр, нуждающийся в настройке, связан с набором данных GRASS. Набор данных необходим для запуска GRASS, и SEXTANTE автоматически создаёт временный набор при каждом запуске. Необходимо указать какие координаты используются исходными данными — географические (широта/долгота) или спроецированные.

GDAL

Для запуска алгоритмов GDAL дополнительная настройка не требуется, так как они уже включены в QGIS и SEXTANTE может получить необходимые данные от неё.

Orfeo ToolBox

Алгоритмы OrfeoToolBox (OTB) можно вызывать из SEXTANTE, если OTB установлен, а SEXTANTE правильно настроена и может найти все необходимые файлы (инструменты командной строки и библиотеки). Помните, что бинарные файлы OTB не входят в состав SEXTANTE, поэтому вам необходимо загрузить и установить недостающие программы самостоятельно. Подробные инструкции можно найти на сайте OTB.

После установки OTB запустите QGIS, откройте диалог настройки и сконфигурируйте провайдер OTB. Настройки находятся в группе Orfeo Toolbox (image analysis). Прежде всего убедитесь, что провайдер активирован.

Затем укажите путь к каталогам инструментов командной строки OTB и библиотекам:

  • nix обычно OTB applications folder указывает на /usr/lib/otb/applications, а OTB command line tools folder это /usr/bin

  • win если вы используете установщик OSGeo4W, установите пакет otb-bin и укажите C:\OSGeo4W\apps\orfeotoolbox\applications в качестве OTB applications folder, а C:\OSGeo4W\bin в качестве OTB command line tools folder

TauDEM

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

Windows

Инструкция по установке, а также скомпилированные инструменты для 32-х и 64-х разрядных платформ находятся на домашней странице TauDEM. ВАЖНО: необходимо загружать TauDEM версии 5.0.6, версия 5.2 в настоящее время не поддерживается.

Linux

Пакеты для большинства дистрибутивов Linux отсутствуют, поэтому вам, скорее всего, потребуется скомпилировать TauDEM самостоятельно. Так как TauDEM использует MPICH2, сначала установите его, используя пакетный менеджер своего дистрибутива. Также TauDEM может работать с OpenMPI, так что можно установить его вместо MPICH2.

Загрузите исходный код TauDEM и распакуйте архив в какой-то каталог.

Откройте файл linearpart.h и после строки

#include "mpi.h"

добавьте новую строку

#include <stdint.h>

Т.е. у вас будет

#include "mpi.h"
#include <stdlib.h>

Сохраните изменения и закройте файл. Теперь откройте файл file:tiffIO.h, найдите строку #include "stdint.h" и замените кавычки ("") на <>, т.е. у вас должно получиться

#include <stdint.h>

Сохраните изменения и закройте файл. Создайте каталог сборки и перейдите в него.

mkdir build
cd build

Настройте параметры сборки при помощи команды

CXX=mpicxx cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..

и запустите компиляцию

make

Наконец, для установки TauDEM в /usr/local/bin`, выполните

sudo make install