管理

pycsw管理由 pycsw-admin.py 实用程序处理。 pycsw-admin.py 是作为 pycsw 安装过程的一部分安装到系统,可在你的路径中使用。

注解

运行 pycsw-admin.py -h 来查看所有的管理操作与参数

Metadata Repository Setup

pycsw支持以下数据库:

  • SQLite3
  • PostgreSQL
  • 带有 PostGIS 扩展的 PostgreSQL
  • MySQL

注解

最简单快速部署 pycws 的方式是使用 SQLite3 作为数据后端。

注解

PostgreSQL支持PostGIS功能,如果启用

注解

如果在建立 pycsw/PostgreSQL 数据库之前激活PostGIS(1.×或2.x),则将启用本地PostGIS geometries 。

通过 pycsw 发布地理空间元数据,执行以下操作:

  • 创建数据库
  • 导入元数据
  • 存储库发布

支持的信息模型

默认情况下,pycsw支持 csw:Record 信息模型。

注解

请参见 配置文件的插件 查看有关配置文件的信息

创建数据库

$ pycsw-admin.py -c setup_db -f default.cfg

这将为存储库创建必要的表与值。

创建的数据库是兼容 OGC SFSQL 的,此数据库可应用于任何实现(相关标准的)软件。例如, OGR :

$ ogrinfo /path/to/records.db
INFO: Open of 'records.db'
using driver 'SQLite' successful.
1: records (Polygon)
$ ogrinfo -al /path/to/records.db
# lots of output

注解

如检测到PostGIS, pycsw-admin.py 脚本就不会再创建 SFSQL 表,因为数据库中已经存在了。

加载记录

$ pycsw-admin.py -c load_records -f default.cfg -p /path/to/records

这时所有的 *.xml 记录就会从 /path/to/records 导入到 default.cfg 中指定的数据库 (repository.database)。将 -r 传递到脚本中, 程序 /path/to/records 就会递归运行。将 -y 传递到脚本中, 程序 /path/to/records 将强制替换现有的相同元数据标识符。请注意, -p 只能接受一个目录路径或单个文件。

注解

记录也可以使用 CSW-T导入 (请查看 事务 )。

导出数据库

$ pycsw-admin.py -c export_records -f default.cfg -p /path/to/output_dir

这会将 default.cfg (repository.database) 中指定的数据库的每项记录都以XML格式文件导出到在磁盘目录 /path/to/output_dir 下。

优化数据库

$ pycsw-admin.py -c optimize_db -f default.cfg

注解

此特性只适用于 PostgreSQL和MySQL

从存储库中删除记录

$ pycsw-admin.py -c delete_records -f default.cfg

数据库中的所有记录都会被清空.

数据库特别需要注意的是

PostgreSQL

  • 若 PostGIS不可用,pycsw会启用 PL/Python功能。在PostgreSQL支持下,用户必须在数据库中创建这些功能。如果是最新版本PostgreSQL (9.x),PL/ Python扩展必须在pycsw安装之前可运行
  • PostgreSQL Full Text Search (全文搜索)支持基于 csw:AnyText (任意文本)的查询。pycsw创建的tsvector栏是基于文本anytext栏。然而pycsw针对anytext_tsvector(任意文本)栏创建了GIN索引。这在 pycsw.admin.setup_db 是自动生成的。任何针对 csw:AnyText or apiso:AnyText 的查询都是使用PostgreSQL FTS处理的

PostGIS

  • pycsw使用的是PostGIS空间功能和本地 geometry数据类型.
  • 建议在创建pycsw数据库前先安装PostGIS扩展信息
  • 如果PostGIS被监测到,脚本pycsw-admin.py既会在本地 geometry栏创建,也会在WKT栏创建,以及触发器,来保持两者的同步.
  • 一旦PostGIS被禁用,pycsw将继续与 WKT 栏一起运行
  • 如果plain PostgreSQL数据库移入PostGIS中,PostGIS的空间功能将自行启动
  • 当从普通的数据库plain PostgreSQL移入PostGIS时, 为了启用本地geometry支持,需要手动创建一个名为 "wkb_geometry" 的 "GEOMETRY" 列(随着 pycsw.admin.setup_db 一起更新)。本地geometries也必须在 WKT 中手动填充。pycsw的下一个版本就会将此过程自动化运行

映射到现有的存储库

pycsw支持在现在的存储库中发布元数据。为了启用此功能,必须修改默认数据库映射以表示映射到抽象核心模型的现有数据库列(默认的眏射方式在 pycsw/config.py:MD_CORE_MODEL 中)

覆盖默认的配置:

  • 定于基于 etc/mappings.py 数据库映射
  • default.cfg 中,设置 repository.mappings 为 mappings.py 文件的位置:
[repository]
...
mappings=path/to/mappings.py

注意,还可以将映射作为Python对象引用为虚线路径:

[repository]
...
mappings='path.to.pycsw_mappings'

请参照 GeoNode配置HHypermap配置开放性数据目录配置 查看更多例子.

现有的存储需求

pycsw需要在任何存储库中存在某些存储库属性和语义,以便按照以下方式操作:

  • pycsw:Identifier:唯一的标识符
  • pycsw:Typename: 元数据的类型名;典型的根标签值(例如 csw:Record , gmd:MD_Metadata
  • pycsw:Schema: 元数据图表;典型的目标名称空间(例如 http://www.opengis.net/cat/csw/2.0.2 , http://www.isotc211.org/2005/gmd
  • pycsw:InsertDate : 插入日期
  • pycsw:XML :完整的XML表现形式
  • pycsw:AnyText : XML元素文件值包,用于完整的文本搜索。采用以下设计模式实现:
    • 获取所有的XML元素与属性值
    • 存储数据库
  • pycsw:BoundingBoxWKT or EWKT geometry字符串

如果指定了属性,则存在以下存储库语义:

  • pycsw:Keywords : 以逗号分隔的关键字列表
  • pycsw:Links : 链接的格式结构 "name,description,protocol,url[^,,,[^,,,]]"

映射值由以下的结构获得:

  • 文本域
  • Python datetime.datetimedatetime.date 对象
  • Python 功能

pycsw/config.py:MD_CORE_MODEL 中可获得更多资料。