pycsw 是 OGC CSW 网络地理数据编录服务的 Python 实现。
pycsw 针对的是 CSW 网络地理数据编录服务标准第 10 款 HTTP 交换协议的 2.0.2 版。其开发始于 2010 年,正式发布于 2011 年。
pycsw 为发布和获取地理信息元数据提供支持。现有数据库的元数据可以通过 OGC:CSW 2.0.2 标准获取。
pycsw 为 开源软件 ,以 MIT 麻省理工开源协议发布,可运行与三大主要操作系统平台(Windows 、Linux 、Mac OS X)。
pycsw 在 OSGeo-Live DVD 已经安装。本文涉及的内容有:
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>
在 Ubuntu 或基于其的系统环境下安装 pycsw 可以使用位于 pycsw/etc/dist 的 OSGeo-Live 安装脚本:
$ cd pycsw/etc/dist
$ sudo ./install_pycsw.sh
该脚本会将 pycsw 及所需软件(Apache, lxml, sqlalchemy, shapely, pyproj)安装至 /var/www 。
在 OpenSUSE 12.1 安装 OBS 软件包(以 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
对于更早的 OpenSUSE 版本,修改其中的``12.1``,例如改为``11.4``。对于以后的版本可以使用``Factory``。滚动发布的版本为``Tumbleweed``。pycsw 包含在 OpenSUSE 官方的 Application::Geo 库中。
在 FireFox 中访问 http://localhost/pycsw/tester/index.html 或在 Web Services 应用组中选择 pycsw tester 可以启动软件环境测试工具。
在左侧下拉菜单中可以看到一系列已定义的 POST 请求。这些请求是以 XML 文档保存的。
例如,选择 “apiso/DescribeRecord” 这一项并单击 “Send” 按钮,可以在右侧面板得到返回的 ISO 标准的 Application Profile 记录:
选择 “GetCapabilities-SOAP” 并点击 “Send” ,将发送一个 SOAP 简单对象访问协议用于获取其功能。
同时,用户可以搜索特定的数据记录。通过选择 “GetRecords-filter-bbox” 并编辑坐标可以就一定的空间范围检索。
用户可以尝试测试其它各种测试项目。参考下面的内容可以做出更具体的测试。
pycsw 的功能文档页面在 http://localhost/pycsw/csw.py?service=CSW&version=2.0.2&request=GetCapabilities 。
在该文档中包含着该服务的元数据。通过编辑 /var/www/pycsw/default.cfg 中 [metadata:main] 下的内容可以修改元数据。对于需要 INSPIRE Discovery Service 服务(见后述)的用户,请在 [metadata:inspire] 下编辑元数据并保证 enabled 为 true 。
详尽的配置说明请参考 pycsw 文档 。
pycsw 服务下的空间数据集或数据服务的元数据可以通过 INSPIRE 元数据标准的开源实现,European Open Source Metadata Editor (EUOSME) 编辑器来操作。该程序可以在 http://inspire-geoportal.ec.europa.eu/editor/ 获得。其源码库位于 https://joinup.ec.europa.eu/svn/euosme/trunk 。
首先,用户需要选择各个选项卡,输入必需的元数据条目。这些信息包括数据所有者名称、关键字、数据源地址、数据覆盖地理范围(地名或坐标范围)等。
输入后点击“validation”按键可以测试数据是否符合 INSPIRE 元数据规范。
若测试通过,元数据可以存储为 XML 文档,可由文本编辑器或浏览器查看和编辑。
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
以上操作从 /path/to/records 载入全部 *.xml 文件,生成 records.db 。这个数据库可以以符合 OGC:CSW Table 53 的请求检索。
单纯的 HTTP request/response 机制对用户不友好。有多款 CSW 服务客户端可以方便用户进行 CSW 查询,例如 INSPIRE Geoportal 和 GeoNetwork 。
本文使用 QGIS OGC Catalogue Service Client 这一插件。
插件安装:
$ cd ~
$ cd .qgis/python/plugins
$ svn co https://qgiscommunitypl.svn.sourceforge.net/svnroot/qgiscommunitypl/python/plugins/qgcsw/trunk qgcsw