pdok/atom-generator和数据集feed(Dataset Feed)的生成,可自动获取文件元数据(如类型、大小),适用于需要提供符合INSPIRE标准下载服务的场景。
data配置的entry,通过HEAD请求自动获取文件的Content-Type(type)和Content-Length(length)dockerdocker build -t pdok/atom-generator .
通过挂载配置目录(含YAML文件)和输出目录,生成ATOM feed:
dockerdocker run -it -v `pwd`/example/inspire:/config -v `pwd`/output:/output --name atom pdok/atom-generator ./atom -f=/config/xyz-example.yaml -o=/output
-v pwd/example/inspire:/config:挂载本地配置目录到容器内/config-v pwd/output:/output:挂载本地输出目录到容器内/output-f=/config/xyz-example.yaml:指定YAML配置文件路径-o=/output:指定输出目录复杂场景(如代理minio中的文件并通过lighttpd提供web服务)可参考example目录下的docker-compose配置:
docker# 启动服务 docker-compose up -d # 停止并清理 docker-compose down -v
服务启动后可通过以下URL访问生成的feed和文件:
| 文件类型 | URL |
|---|---|
| 服务feed | http://localhost/download/en.xml |
| 数据集feed | http://localhost/download/waternetwork.xml |
| 数据集条目文件 | http://localhost/data/abc/waternetwork_25832.gml |
通过YAML配置文件定义ATOM feed结构,支持server(服务feed)和dataset(数据集feed数组)配置。
yamlserver: id: "[***]" title: "服务feed XML" # 其他服务feed属性... dataset: - id: "[***]" title: "数据集feed XML" subtitle: "这是一个数据集feed条目" # 其他数据集feed属性...
ATOM feed的链接由预定义链接和自定义链接数组组成,确保INSPIRE合规性:
self(自身文档)、describedby(元数据描述)、search(搜索)、up(上级资源),强制INSPIRE合规link数组添加额外链接,支持自由格式示例:
yamlself: href: "[***]" type: "application/atom+xml" hreflang: en title: "本文档" describedby: href: "[***]" rel: describedby type: "application/xml" link: - rel: search href: "[***]" type: "application/opensearchdescription+xml" title: "XYZ下载服务的开放搜索描述" - href: "[***]" rel: alternate type: "application/atom+xml" hreflang: de title: "德文版下载服务信息"
数据集feed的条目通过entry数组定义,支持自动或手动配置文件元数据:
data字段指向文件URL,工具通过HEAD请求自动获取type(Content-Type)和length(Content-Length)data时,需手动指定type和length示例(自动元数据):
yamlentry: - id: "[***]" title: "WGS84坐标系下的水网数据(GML)" link: - rel: alternate href: "[***]" data: "[***]" # 通过HEAD请求获取元数据 hreflang: en title: "WGS84地理坐标系下的GML 3.2格式水网数据集"
示例(手动元数据):
yamlentry: - id: "[***]" title: "EPSG:25832坐标系下的水网数据(GML)" link: - rel: alternate href: "[***]" type: "application/gml+xml;version=3.2" # 手动指定type length: 34987 # 手动指定length hreflang: en title: "ETRS89 UTM 32N坐标系下的GML 3.2格式水网数据集"
通过stylesheet字段指定XSLT样式表,生成的XML将包含样式表引用:
yamlservice: stylesheet: "./style/style.xsl" # 相对路径(相对于输出XML)或绝对URL dataset: - lang: en stylesheet: "http://localhost/atom/style/style.xsl" # 绝对URL
生成的XML效果:
xml<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="./style/style.xsl" type="text/xsl" media="screen"?> <feed xmlns="[***]" xmlns:georss="[***]" xmlns:inspire_dls="[***]" xml:lang="nl"> <!-- feed内容 --> </feed>
生成的ATOM feed需通过INSPIRE参考验证器验证,选择“Conformance Class: Download Service - Pre-defined Atom”一致性类进行合规性检查。
!INSPIRE验证器


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务