管理¶
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-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
下。
数据库特别需要注意的是¶
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:BoundingBox
: WKT or EWKT geometry字符串
如果指定了属性,则存在以下存储库语义:
pycsw:Keywords
: 以逗号分隔的关键字列表pycsw:Links
: 链接的格式结构 "name,description,protocol,url[^,,,[^,,,]]"
映射值由以下的结构获得:
- 文本域
- Python
datetime.datetime
或datetime.date
对象 - Python 功能
在 pycsw/config.py:MD_CORE_MODEL
中可获得更多资料。