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 или получите код из svn:
$ 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:
<Location /pycsw/>
Options FollowSymLinks +ExecCGI
Allow from all
AddHandler cgi-script .py
</Location>
Для установки pycsw в Ubuntu и производных можно использовать установочный скрипт OSGeo-Live из pycsw/etc/dist:
$ cd pycsw/etc/dist
$ sudo ./install_pycsw.sh
Этот скрипт выполнит установку всех необходимых зависимостей (Apache, lxml, sqlalchemy, shapely, pyproj) и затем установит pycsw в /var/www.
Установить OBS-пакет в openSUSE 12.1 можно, выполнив следующие команду от имени root:
$ 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:
В левом выпадающем списке пользователь может выбирать предустановленные POST-запросы в формате XML, которые затем будут отправлены pycsw:
Например, если выбрать “apiso/DescribeRecord” и нажать кнопку “Send”, в правой панели отобразится описание записи в ISO Application Profile:
Если выбрать “GetCapabilities-SOAP” и нажать кнопку “Send”, на сервер будет отправлен SOAP-запрос на получение его возможностей:
Кроме того, пользователь может выполнять поиск данных с фильтрацией по охвату, выбрав “GetRecords-filter-bbox” и отредактировав координаты в XML-представлении запроса:
Пользователь может пройтись по всем доступным запросам и выполнять различные операции из этого приложения. Более надежный и удобный способ выполнения запросов описан ниже.
Описание 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.
Описание метаданных пространственного набора данных или пространственного веб-сервиса можно создать при помощи открытой реализации редактора INSPIRE, European Open Source Metadata Editor (EUOSME). Это приложение можно найти по адресу http://inspire-geoportal.ec.europa.eu/editor/. Также доступен исходный код https://joinup.ec.europa.eu/svn/euosme/trunk
Пользователь заполняет необходимые поля метаданных, переключаясь между вкладками приложения, и внося информацию о владельце данных, ключевых словах, размещении, географическом охвате (задавая координаты ограничивающего прямоугольника или название страны) и т.д.
После добавления всей необходимой информации необходимо нажать кнопку валидации вверху страницы, чтобы проверить целостность и соответствие директивам INSPIRE.
После успешной валидации файл можно сохранить на диск и просмотреть, используя текстовый редактор либо браузер.
GIMED — свободное приложение для создания и редактирования метаданных в формате XML, совместимом с директивами INSPIRE. Для установки приложения введите следующие команды в окне терминала:
$ 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, но без необходимости в подключении к Интернет.
pycsw поддерживает следующие базы данных:
В OSGeo-Live использован простой вариант с SQLite. Базу данных можно найти в /var/www/pycsw/data/cite
В случае новой базы данных, процесс установки будет выглядеть так:
$ cd /path/to/pycsw
$ export PYTHONPATH=`pwd`
$ python ./sbin/setup_db.py sqlite:////path/to/records.db
$ 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.
Механизм HTTP запросов/ответов не достаточно удобен для конечных пользователей. Поэтому существует несколько различных клиентов CSW в форме веб-приложений как INSPIRE Geoportal или GeoNetwork. В этом документе мы будем использовать модуль OGC Catalogue Service Client для QGIS.
Для установки модуля выполните:
$ cd ~
$ cd .qgis/python/plugins
$ svn co https://qgiscommunitypl.svn.sourceforge.net/svnroot/qgiscommunitypl/python/plugins/qgcsw/trunk qgcsw
Запустите QGIS из группы Desktop GIS и найдите пункт “Manage Plugins”
Активируйте модуль CSW
Затем при помощи кнопки CSW на панели инструментов запустите CSW Client
Добавьте сервер pycsw, нажав на кнопку “New” и введя адрес http://localhost/pycsw/csw.py
Также можно добавить несколько предустановленных серверов, нажав кнопку “Add default servers” и получить описание возможностей сервера при помощи кнопки “Server info”
Выполнять поиск данных в каталоге можно как по описанию, так и по охвату
Поиск данных также можно выполнять из проверочного приложения, задав соответствущий запрос, например, поиск по фразе “imagery” приведет к отображению всех данных, созданных ранее в EUOSME
Более подробное описание pycsw можно получить в документации, размещенной на официальном сайте.