naiad:Plugins
From
Line 1: | Line 1: | ||
Все исходные файлы плагинов продуктов находятся в директории [qdione_install_dir]/src/plugins/collections . | Все исходные файлы плагинов продуктов находятся в директории [qdione_install_dir]/src/plugins/collections . | ||
- | Каждый плагин представляет собой дерево директорий. Корневая директория имеет название, аналогичное названию плагина. В ней располагаются следующие директории: | + | Каждый плагин представляет собой дерево директорий. Корневая директория имеет название, аналогичное названию плагина. В ней располагаются следующие директории: main (обязательно), filtering, aggregation и virtual. |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
Плагины написаны на языке С++ с использованием библиотек Qt4. (Для удобства используйте среду разработки QtCreator.) | Плагины написаны на языке С++ с использованием библиотек Qt4. (Для удобства используйте среду разработки QtCreator.) | ||
Line 13: | Line 9: | ||
Функция buildConstraintExpression создаёт строку (ограничений для каждой переменной) для отправления на OPeNDAP сервер. Строка имеет вид: | Функция buildConstraintExpression создаёт строку (ограничений для каждой переменной) для отправления на OPeNDAP сервер. Строка имеет вид: | ||
- | + | '''variable_name1[min:stride:max],variable_name2[min:stride:max],...''', | |
- | где [min:stride:max] - формат записи ограничений (для каждой переменной ограничения могут быть разными), variable_name[1,2] - имена переменных. Например, | + | где [min:stride:max] - формат записи ограничений (для каждой переменной ограничения могут быть разными), variable_name[1,2] - имена переменных. Например, "wvc_row_time[0:1:1623],wvc_lon[0:1:1623][0:1:75],wvc_lat[0:1:1623]" |
- | + | ||
- | Общий вид функции | + | Общий вид функции '''extern "C" QString buildConstraintExpression(QStringList & nativeVariableStringList, QString xOffset, QString yOffset, QString zOffset, DioneDapDataFile* dapfile);''' |
Переменная nativeVariableStringList хранит список имён переменных, для которых необходимо создать ограничения ([min:stride:max]); | Переменная nativeVariableStringList хранит список имён переменных, для которых необходимо создать ограничения ([min:stride:max]); | ||
Line 26: | Line 21: | ||
Функция buildGranule строит структуру гранул в QDione из OPeNDAP файла. Возвращает true, если гранула построена правильно, иначе false. | Функция buildGranule строит структуру гранул в QDione из OPeNDAP файла. Возвращает true, если гранула построена правильно, иначе false. | ||
- | Общий вид функции | + | Общий вид функции '''extern "C" bool buildGranule(DioneDapDataFile* dapfile, DioneGranule * granule);''' |
Переменная dapfile - указатель на OPeNDAP файл; | Переменная dapfile - указатель на OPeNDAP файл; | ||
Line 32: | Line 27: | ||
В этой функции необходимо обработать глобальные атрибуты и переменные. Для этого применяются функции buildGlobalAttributeList и buildVariableList. В случае ошибка хотя бы при одной переменной функция вернёт false. | В этой функции необходимо обработать глобальные атрибуты и переменные. Для этого применяются функции buildGlobalAttributeList и buildVariableList. В случае ошибка хотя бы при одной переменной функция вернёт false. | ||
+ | |||
+ | Переменные latitude и longitude должны называться lat и lon. Иначе, перед добавлением в гранулы их необходимо переименовать, например: | ||
+ | |||
+ | [code] | ||
+ | if (name == "longitude" || name == "latitude") | ||
+ | { | ||
+ | name = (baseTypeVariable->name() == "longitude") ? "lon" : "lat"; | ||
+ | } | ||
+ | var = granule->addVariable(name, dioneTypeFromDapType(arrayVariable->var()->type()), list, | ||
+ | granule->getVariable(granule->indexOfVariable("time"))); | ||
+ | [/code] | ||
+ | |||
+ | Для правильной обработки переменной time, к ней необходимо необходимо прибывить значение 347155200. | ||
+ | |||
=============== | =============== | ||
Плагины, которые могут быть использованы любой коллекцией, находятся в директории [qdione_install_dir]/src/plugins/generic | Плагины, которые могут быть использованы любой коллекцией, находятся в директории [qdione_install_dir]/src/plugins/generic | ||
Для разработки плагина продукта необходимо.. | Для разработки плагина продукта необходимо.. | ||
- | --[[User:Denis.spiridonov|Denis.spiridonov]] 10: | + | |
+ | --[[User:Denis.spiridonov|Denis.spiridonov]] 10:18, 11 January 2013 (UTC) |
Revision as of 10:18, 11 January 2013
Все исходные файлы плагинов продуктов находятся в директории [qdione_install_dir]/src/plugins/collections .
Каждый плагин представляет собой дерево директорий. Корневая директория имеет название, аналогичное названию плагина. В ней располагаются следующие директории: main (обязательно), filtering, aggregation и virtual.
Плагины написаны на языке С++ с использованием библиотек Qt4. (Для удобства используйте среду разработки QtCreator.)
В папке main находится сам плагин продукта, состоящий из проектного файла plugin_name.pro и файла исходных текстов plugin_name.cpp. В файле plugin_name.cpp реализуются две основные функции buildConstraintExpression и buildGranule (которые вызываются из QDione при загрузке гранулы), а так же несколько вспомогательных функций.
Функция buildConstraintExpression создаёт строку (ограничений для каждой переменной) для отправления на OPeNDAP сервер. Строка имеет вид:
variable_name1[min:stride:max],variable_name2[min:stride:max],...,
где [min:stride:max] - формат записи ограничений (для каждой переменной ограничения могут быть разными), variable_name[1,2] - имена переменных. Например, "wvc_row_time[0:1:1623],wvc_lon[0:1:1623][0:1:75],wvc_lat[0:1:1623]"
Общий вид функции extern "C" QString buildConstraintExpression(QStringList & nativeVariableStringList, QString xOffset, QString yOffset, QString zOffset, DioneDapDataFile* dapfile);
Переменная nativeVariableStringList хранит список имён переменных, для которых необходимо создать ограничения ([min:stride:max]); Переменные xOffset, yOffset, zOffset содержать ограничения (строки), которые передаются в запросе (из XML или web-запроса); Переменная dapfile - указатель на файл, используемый OPeNDAP.
Функция buildGranule строит структуру гранул в QDione из OPeNDAP файла. Возвращает true, если гранула построена правильно, иначе false.
Общий вид функции extern "C" bool buildGranule(DioneDapDataFile* dapfile, DioneGranule * granule);
Переменная dapfile - указатель на OPeNDAP файл; Переменная granule - указатель на гранулу, которую необходимо построить.
В этой функции необходимо обработать глобальные атрибуты и переменные. Для этого применяются функции buildGlobalAttributeList и buildVariableList. В случае ошибка хотя бы при одной переменной функция вернёт false.
Переменные latitude и longitude должны называться lat и lon. Иначе, перед добавлением в гранулы их необходимо переименовать, например:
[code]
if (name == "longitude" || name == "latitude") { name = (baseTypeVariable->name() == "longitude") ? "lon" : "lat"; } var = granule->addVariable(name, dioneTypeFromDapType(arrayVariable->var()->type()), list, granule->getVariable(granule->indexOfVariable("time")));
[/code]
Для правильной обработки переменной time, к ней необходимо необходимо прибывить значение 347155200.
===
Плагины, которые могут быть использованы любой коллекцией, находятся в директории [qdione_install_dir]/src/plugins/generic
Для разработки плагина продукта необходимо..
--Denis.spiridonov 10:18, 11 January 2013 (UTC)