:Author: OSGeo-Live :Author: Tom Kralidis, Angelos Tzotsos :Version: osgeo-live6.0 :License: Creative Commons .. image:: ../../images/project_logos/logo-pycsw.png :scale: 80 % :alt: Лого проекта :align: right :target: http://pycsw.org/ ******************************************************************************** pycsw: начало работы ******************************************************************************** **pycsw** является реализацией сервера OGC CSW на языке `Python`_. pycsw реализует положения параграфа 10 (HTTP protocol binding (Catalogue Services for the Web, CSW)) спецификации`OpenGIS Catalogue Service Implementation Specification`_, версия 2.0.2. Процесс разработки начался в 2010 г. (официальный анонс сделан в `2011`_ г.). pycsw позволяет публиковать и просматривать пространственные метаданные. Существующие репозитории метаданных должны могут быть сделаны доступными через OGC:CSW 2.0.2. pycsw имеет `открытый код`_, распространяется под лицензией MIT и работает на всех основных платформах (Windows, Linux, Mac OS X). pycsw входит в состав OSGeo-Live. Этот документ показывает, как: * выполнить установку pycsw; * проверить работоспособность pycsw при помощи проверочного приложения; * редактировать документ Capabilities и отображать эту информацию в браузере; * создавать описание метаданных в формате ISO 19139 (при помощи INSPIRE Metadata Editor или GIMED); * загружать созданный файлы метаданных в базу данных pycsw; * установить модуль CSWClient для QGIS; * выполнять поиск данных в каталоге pycsw из QGIS. Установка ========= Системные требования -------------------- Для работы **pycsw** необходимо наличие следующих библиотек: - `lxml`_ (версия >= 2.2.3) для работы с XML - `SQLAlchemy`_ (версия >= 0.0.5) для взаимодействия с базами данных - `Shapely`_ (версия >= 1.2.8) для поддержки пространственных запросов - `pyproj`_ (версия >= 1.8.9) для преобразования координат Установка из исходных кодов --------------------------- `Загрузите`_ последнюю версию pycsw или получите код из svn: .. code-block:: bash $ svn co https://pycsw.svn.sourceforge.net/svnroot/pycsw pycsw Убедитесь, что для каталога установки разрешен CGI. Например, при использовании Apache, если вы установили pycsw в ``/srv/www/htdocs/pycsw`` (и ваш URL будет иметь вид ``http://host/pycsw/csw.py``), добавьте следующие строки в ``httpd.conf``: .. code-block:: none Options FollowSymLinks +ExecCGI Allow from all AddHandler cgi-script .py Установка в Ubuntu/Lubuntu/Kubuntu ---------------------------------- Для установки **pycsw** в Ubuntu и производных можно использовать установочный скрипт OSGeo-Live из ``pycsw/etc/dist``: .. code-block:: bash $ cd pycsw/etc/dist $ sudo ./install_pycsw.sh Этот скрипт выполнит установку всех необходимых зависимостей (Apache, lxml, sqlalchemy, shapely, pyproj) и затем установит pycsw в ``/var/www``. Установка в openSUSE -------------------- Установить OBS-пакет в openSUSE 12.1 можно, выполнив следующие команду от имени ``root``: .. code-block:: bash $ zypper -ar http://download.opensuse.org/repositories/Application:/Geo/openSUSE_12.1/ GEO $ zypper -ar http://download.opensuse.org/repositories/devel:/languages:/python/openSUSE_12.1/ python $ zypper refresh $ zypper install pycsw Для предыдущих версий замените ``12.1`` на ``11.4``. Для будущих версий openSUSE используйте ``Factory``. Также поддерживается и rolling-ветка ``Tumbleweed``. pycsw включен в официальный репозиторий Application::Geo OpenSUSE Build Service. Проверочное приложение ====================== Запустить проверочное приложение pycsw можно при помощи ярлыка pycsw в группе Web Services или открыв Firefox и указав адрес ``http://localhost/pycsw/tester/index.html``: .. image:: ../../images/screenshots/1024x768/pycsw_tester_startup.png :scale: 75 % В левом выпадающем списке пользователь может выбирать предустановленные POST-запросы в формате XML, которые затем будут отправлены pycsw: .. image:: ../../images/screenshots/1024x768/pycsw_tester_selection.png :scale: 75 % Например, если выбрать "apiso/DescribeRecord" и нажать кнопку "Send", в правой панели отобразится описание записи в ISO Application Profile: .. image:: ../../images/screenshots/1024x768/pycsw_tester_describe_apiso_record.png :scale: 75 % Если выбрать "GetCapabilities-SOAP" и нажать кнопку "Send", на сервер будет отправлен SOAP-запрос на получение его возможностей: .. image:: ../../images/screenshots/1024x768/pycsw_tester_soap_capabillities.png :scale: 75 % Кроме того, пользователь может выполнять поиск данных с фильтрацией по охвату, выбрав "GetRecords-filter-bbox" и отредактировав координаты в XML-представлении запроса: .. image:: ../../images/screenshots/1024x768/pycsw_tester_getrecords_bbox_filter.png :scale: 75 % Пользователь может пройтись по всем доступным запросам и выполнять различные операции из этого приложения. Более надежный и удобный способ выполнения запросов описан ниже. Документа Capabilities и настрока ================================= Описание capabilities можно просмотреть по адресу ``http://localhost/pycsw/csw.py?service=CSW&version=2.0.2&request=GetCapabilities``. Чтобы отредактировать метаданные сервиса, входящие в состав документа capabilities, необходимо изменить файл ``/var/www/pycsw/default.cfg``, а именно раздел ``[metadata:main]``. Если необходимо включить поддержку INSPIRE Discovery Service, заполните метаданые в разделе ``[metadata:inspire]`` и установите значение свойства ``enabled`` в ``true``. За подробным описаним настроек обратитесь к `документации`_ на сайте pycsw. Создание метаданных =================== При помощи European Open Source Metadata Editor (EUOSME) -------------------------------------------------------- Описание метаданных пространственного набора данных или пространственного веб-сервиса можно создать при помощи открытой реализации редактора INSPIRE, European Open Source Metadata Editor (EUOSME). Это приложение можно найти по адресу ``http://inspire-geoportal.ec.europa.eu/editor/``. Также доступен исходный код ``https://joinup.ec.europa.eu/svn/euosme/trunk`` Пользователь заполняет необходимые поля метаданных, переключаясь между вкладками приложения, и внося информацию о владельце данных, ключевых словах, размещении, географическом охвате (задавая координаты ограничивающего прямоугольника или название страны) и т.д. .. image:: ../../images/screenshots/1024x768/pycsw_euosme_metadata_input.png :scale: 75 % После добавления всей необходимой информации необходимо нажать кнопку валидации вверху страницы, чтобы проверить целостность и соответствие директивам INSPIRE. .. image:: ../../images/screenshots/1024x768/pycsw_euosme_save_metadata.png :scale: 75 % После успешной валидации файл можно сохранить на диск и просмотреть, используя текстовый редактор либо браузер. При помощи GIMED ---------------- `GIMED`_ — свободное приложение для создания и редактирования метаданных в формате XML, совместимом с директивами INSPIRE. Для установки приложения введите следующие команды в окне терминала: .. code-block:: bash $ wget http://downloads.sourceforge.net/project/gimed/GIMED_v1.3.0.tar.gz $ tar zxvf GIMED_v1.3.0.tar.gz $ mono ./GIMED_v1.3.0/bin/GIMED.exe Пользователь может вводить или редактировать метаданные как и при использовании EUOSME, но без необходимости в подключении к Интернет. .. image:: ../../images/screenshots/1024x768/pycsw_gimed.png :scale: 75 % Загрузка метаданных =================== Настройка репозитория метаданных -------------------------------- pycsw поддерживает следующие базы данных: - SQLite3 - PostgreSQL - MySQL В OSGeo-Live использован простой вариант с SQLite. Базу данных можно найти в ``/var/www/pycsw/data/cite`` В случае новой базы данных, процесс установки будет выглядеть так: .. code-block:: bash $ cd /path/to/pycsw $ export PYTHONPATH=`pwd` $ python ./sbin/setup_db.py sqlite:////path/to/records.db Импорт метаданных ----------------- .. code-block:: bash $ cd /path/to/pycsw $ export PYTHONPATH=`pwd` $ python ./sbin/load_records.py /path/to/records sqlite:////path/to/records.db Эта последовательность команд импортирует все записи ``*.xml`` из ``/path/to/records`` в ``records.db`` и настроит репозиторий на отображение информации в соответствии с таблицей 53 OGC:CSW. Установка CSW Client для QGIS ============================= Механизм HTTP запросов/ответов не достаточно удобен для конечных пользователей. Поэтому существует несколько различных клиентов CSW в форме веб-приложений как `INSPIRE Geoportal `_ или :doc:`GeoNetwork <../overview/geonetwork_overview>`. В этом документе мы будем использовать модуль `OGC Catalogue Service Client `_ для :doc:`QGIS <../overview/qgis_overview>`. Для установки модуля выполните: .. code-block:: bash $ cd ~ $ cd .qgis/python/plugins $ svn co https://qgiscommunitypl.svn.sourceforge.net/svnroot/qgiscommunitypl/python/plugins/qgcsw/trunk qgcsw Поиск данных ============ Модуль CSW для QGIS ------------------- Запустите QGIS из группы Desktop GIS и найдите пункт "Manage Plugins" .. image:: ../../images/screenshots/1024x768/pycsw_qgis_plugin.png :scale: 75 % Активируйте модуль CSW .. image:: ../../images/screenshots/1024x768/pycsw_qgis_plugin_enable.png :scale: 75 % Затем при помощи кнопки CSW на панели инструментов запустите CSW Client .. image:: ../../images/screenshots/1024x768/pycsw_qgis_csw_plugin_open.png :scale: 75 % Добавьте сервер pycsw, нажав на кнопку "New" и введя адрес ``http://localhost/pycsw/csw.py`` .. image:: ../../images/screenshots/1024x768/pycsw_qgis_csw_plugin_add_server.png :scale: 75 % Также можно добавить несколько предустановленных серверов, нажав кнопку "Add default servers" и получить описание возможностей сервера при помощи кнопки "Server info" .. image:: ../../images/screenshots/1024x768/pycsw_qgis_csw_plugin_server_info.png :scale: 75 % Выполнять поиск данных в каталоге можно как по описанию, так и по охвату .. image:: ../../images/screenshots/1024x768/pycsw_qgis_csw_plugin_search.png :scale: 75 % Проверочное приложение ---------------------- Поиск данных также можно выполнять из проверочного приложения, задав соответствущий запрос, например, поиск по фразе "imagery" приведет к отображению всех данных, созданных ранее в EUOSME .. image:: ../../images/screenshots/1024x768/pycsw_tester_discovery.png :scale: 75 % Более подробное описание pycsw можно получить в `документации`_, размещенной на официальном сайте. .. _`Python`: http://www.python.org/ .. _`OpenGIS Catalogue Service Implementation Specification`: http://www.opengeospatial.org/standards/cat .. _`2011`: http://www.kralidis.ca/blog/2011/02/04/help-wanted-baking-a-csw-server-in-python/ .. _`открытый код`: http://www.opensource.org/ .. _`документации`: http://pycsw.org/docs/documentation.html .. _`lxml`: http://lxml.de/ .. _`SQLAlchemy`: http://www.sqlalchemy.org/ .. _`Shapely`: http://trac.gispython.org/lab/wiki/Shapely .. _`pyproj`: http://code.google.com/p/pyproj/ .. _`Загрузите`: http://pycsw.org/download.html .. _`GIMED`: http://sourceforge.net/projects/gimed/