使用默认验证规则集验证GeoPackage:
shgpkg_path=相对路径/至/文件.gpkg docker run -v "$(pwd)":/gpkg --rm pdok/geopackage-validator validate --gpkg-path "/gpkg/${gpkg_path}"
使用默认验证规则集及模式文件验证GeoPackage:
shschema_path=相对路径/至/模式.json gpkg_path=相对路径/至/文件.gpkg docker run -v "$(pwd)":/gpkg --rm pdok/geopackage-validator validate --gpkg-path "/gpkg/${gpkg_path}" --table-definitions-path "/gpkg/${schema_path}"
生成模式文件:
shschema_path=相对路径/至/模式.json gpkg_path=相对路径/至/文件.gpkg docker run -v "$(pwd)":/gpkg --rm pdok/geopackage-validator generate-definitions --gpkg-path "/gpkg/${gpkg_path}" > "$schema_path"
GeoPackage验证器可验证.gpkg文件是否符合一系列标准规范。当前支持的检查项如下(另见“show-validations”命令):
| 验证代码** | 描述 |
|---|---|
| UNKNOWN_ERROR | 不得出现意外的(GDAL)错误。 |
| RQ0 | 遗留项: * GeoPackage必须符合给定JSON或YAML定义中的表名。 |
| RQ1 | 图层名称必须以字母开头,允许的字符为小写a-z、数字或下划线。 |
| RQ2 | 图层必须至少包含一个要素。 |
| RQ3 | 遗留项: * 图层要素应具有允许的几何类型(POINT、LINESTRING、POLYGON、MULTIPOINT、MULTILINESTRING或MULTIPOLYGON之一)。 |
| RQ4 | GeoPackage不应定义视图。 |
| RQ5 | 几何应有效。 |
| RQ6 | 列名必须以字母开头,允许的字符为小写a-z、数字或下划线。 |
| RQ7 | 表应具有带唯一索引的要素ID列。 |
| RQ8 | GeoPackage必须符合给定的JSON或YAML定义。 |
| RQ9 | 所有几何表必须具有rtree索引。 |
| RQ10 | 所有几何表的rtree索引必须有效。 |
| RQ11 | OGR索引要素计数必须是最新的。 |
| RQ12 | 仅允许以下EPSG空间参考系统:28992、3034、3035、3038、3039、3040、3041、3042、3043、3044、3045、3046、3047、3048、3049、3050、3051、4258、4936、4937、5730、7409。 |
| RQ13 | 所有GEOMETRY要素必须使用相同的默认空间参考系统。 |
| RQ14 | gpkg_geometry_columns表中的geometry_type_name必须为POINT、LINESTRING、POLYGON、MULTIPOINT、MULTILINESTRING或MULTIPOLYGON之一。 |
| RQ15 | 所有表几何必须与gpkg_geometry_columns表中的geometry_type_name匹配。 |
| RQ16 | 所有图层和列名长度不得超过53个字符。 |
| RC17 | 建议所有GEOMETRY类型列命名为“geom”。 |
| RC18 | 建议所有GEOMETRY类型列使用相同的名称。 |
| RC19 | 建议仅在必要时使用多维几何坐标(高程和测量值)。 |
| RC20 | 建议所有(MULTI)POLYGON几何的外环采用逆时针方向,所有内环采用顺时针方向。 |
| UNKNOWN_WARNINGS | 建议关注意外的(GDAL)警告。 |
* 遗留要求仅在验证命令中明确请求验证集时执行。
** 从0.8.0版本开始,建议项与要求项纳入同一序列。此后,检查项将始终保留其代码的整数部分,即使后续验证类型在要求和建议之间转换。
各规则的荷兰语详细解释及原因可参考此处。
GeoPackage验证器支持以下GeoPackage版本:
本工具需要:
推荐使用Docker镜像。若满足上述依赖,也可通过pip安装(pip install pdok-geopackage-validator)。
拉取最新版本的Docker镜像(首次使用或更新时需要):
bashdocker pull pdok/geopackage-validator:latest
或从源码构建Docker镜像:
bashdocker build -t pdok/geopackage-validator .
可直接在容器中运行命令,子命令可直接调用:
bashdocker run -v ${PWD}:/gpkg --rm pdok/geopackage-validator validate -t /path/to/generated_definitions.json --gpkg-path /gpkg/tests/data/test_allcorrect.gpkg
要执行RQ8验证,需先生成定义文件:
bashdocker run -v ${PWD}:/gpkg --rm pdok/geopackage-validator generate-definitions --gpkg-path /path/to/file.gpkg
bashUsage: geopackage-validator validate [OPTIONS] GeoPackage验证器,用于验证本地文件或S3存储中的文件。当文件路径以'/vsis3'或'/vsicurl'开头时,将使用GDAL虚拟文件系统访问S3上的文件,无需直接下载。详见[***] VSI环境参数和可选参数以S3_为前缀(AWS_前缀的环境参数同样适用)。 示例: vsicurl: geopackage-validator validate --gpkg-path /vsicurl/[***] vsis3: geopackage-validator validate --gpkg-path /vsis3/bucketname/key/to/public.gpkg --s3-signing-region eu-central-1 --s3-secret-key secret --s3-access-key acces-key --s3-secure=false --s3-virtual-hosting false --s3-endpoint-no-protocol minio-url.nl 环境变量方式: S3_SECRET_KEY=secret S3_ACCESS_KEY=acces-key S3_SIGNING_REGION=eu-central-1 S3_SECURE=false S3_VIRTUAL_HOSTING=false S3_ENDPOINT_NO_PROTOCOL=minio-url.nl geopackage-validator validate --gpkg-path /vsis3/bucketname/key/to/public.gpkg AWS环境变量方式: AWS_SECRET_ACCESS_KEY=secret AWS_ACCESS_KEY_ID=acces-key AWS_DEFAULT_REGION=eu-central-1 AWS_HTTPS=NO AWS_VIRTUAL_HOSTING=FALSE AWS_S3_ENDPOINT=minio-url.nl geopackage-validator validate --gpkg-path /vsis3/bucketname/key/to/public.gpkg Options: --gpkg-path FILE 指向geopackage.gpkg文件的路径 [环境变量: GPKG_PATH] -t, --table-definitions-path FILE 指向表定义JSON或YAML文件的路径(通过generate-definitions命令生成) --validations-path FILE 要运行的验证集路径。若未指定validations-path和validations,将运行所有验证 [环境变量: VALIDATIONS_FILE] --validations TEXT 逗号分隔的验证规则列表(例如--validations RQ1,RQ2,RQ3)。若未指定validations-path和validations,将运行所有验证 [环境变量: VALIDATIONS] --exit-on-fail 验证失败时以代码1退出 --yaml 输出YAML格式 --s3-endpoint-no-protocol TEXT S3服务的端点(不含协议)[环境变量: S3_ENDPOINT_NO_PROTOCOL] --s3-access-key TEXT S3服务的访问密钥 [环境变量: S3_ACCESS_KEY] --s3-secret-key TEXT S3服务的密钥 [环境变量: S3_SECRET_KEY] --s3-bucket TEXT S3存储桶名称 [环境变量: S3_BUCKET] --s3-key TEXT S3存储桶中的文件键 [环境变量: S3_KEY] --s3-secure BOOLEAN 是否使用TLS安全连接S3 [环境变量: S3_SECURE] --s3-virtual-hosting TEXT TRUE:通过虚拟主机名标识存储桶(如mybucket.cname.domain.com);FALSE:将存储桶作为URI顶层目录(如cname.domain.com/mybucket)。便捷参数,等同于GDAL的AWS_VIRTUAL_HOSTING [环境变量: S3_VIRTUAL_HOSTING] --s3-signing-region TEXT S3签名区域。便捷参数,等同于GDAL的AWS_DEFAULT_REGION [环境变量: S3_SIGNING_REGION] --s3-no-sign-request TEXT 设置后禁用请求签名,适用于公共访问权限的存储桶。便捷参数,等同于GDAL的AWS_NO_SIGN_REQUEST [环境变量: S3_NO_SIGN_REQUEST] -v, --verbosity LVL 日志级别:CRITICAL、ERROR、WARNING、INFO或DEBUG --help 显示帮助信息并退出
示例:
bashdocker run -v ${PWD}:/gpkg --rm pdok/geopackage-validator validate -t /path/to/generated_definitions.json --gpkg-path /gpkg/tests/data/test_allcorrect.gpkg
仅运行特定验证规则:
通过文件指定:
bashdocker run -v ${PWD}:/gpkg --rm pdok/geopackage-validator validate --gpkg-path tests/data/test_allcorrect.gpkg --validations-path tests/validationsets/example-validation-set.json
或通过命令行指定:
bashdocker run -v ${PWD}:/gpkg --rm pdok/geopackage-validator validate --gpkg-path tests/data/test_allcorrect.gpkg --validations RQ1,RQ2,RQ3
显示验证命令中可执行的所有可能验证规则:
bashUsage: geopackage-validator show-validations [OPTIONS] 显示验证命令中可执行的所有可能验证规则。 Options: -v, --verbosity LVL 日志级别:CRITICAL、ERROR、WARNING、INFO或DEBUG --help 显示帮助信息并退出
bashUsage: geopackage-validator generate-definitions [OPTIONS] 为本地或S3存储中的GeoPackage生成表定义。生成的JSON或YAML定义文件可在验证步骤中通过--table-definitions-path参数使用。当文件路径以'/vsi'开头时,将使用GDAL虚拟文件系统访问S3上的文件,无需直接下载。详见[***] VSI环境参数和可选参数以S3_为前缀(AWS_前缀的环境参数同样适用)。 示例: vsicurl: geopackage-validator validate --gpkg-path /vsicurl/[***] vsis3: geopackage-validator generate-definitions --gpkg-path /vsis3/bucketname/key/to/public.gpkg --s3-signing-region eu-central-1 --s3-secret-key secret --s3-access-key acces-key --s3-secure=false --s3-virtual-hosting false --s3-endpoint-no-protocol minio-url.nl 环境变量方式: S3_SECRET_KEY=secret S3_ACCESS_KEY=acces-key S3_SIGNING_REGION=eu-central-1 S3_SECURE=false S3_VIRTUAL_HOSTING=false S3_ENDPOINT_NO_PROTOCOL=minio-url.nl geopackage-validator generate-definitions --gpkg-path /vsis3/bucketname/key/to/public.gpkg Options: --gpkg-path FILE 指向geopackage.gpkg文件的路径 [环境变量: GPKG_PATH] --yaml 输出YAML格式 --s3-endpoint-no-protocol TEXT S3服务的端点(不含协议)[环境变量: S3_ENDPOINT_NO_PROTOCOL] --s3-access-key TEXT S3服务的访问密钥 [环境变量: S3_ACCESS_KEY] --s3-secret-key TEXT S3服务的密钥 [环境变量: S3_SECRET_KEY] --s3-bucket TEXT S3存储桶名称 [环境变量: S3_BUCKET] --s3-key TEXT S3存储桶中的文件键 [环境变量: S3_KEY] --s3-secure BOOLEAN 是否使用TLS安全连接S3 [环境变量: S3_SECURE] --s3-virtual-hosting TEXT TRUE:通过虚拟主机名标识存储桶(如mybucket.cname.domain.com);FALSE:将存储桶作为URI顶层目录(如cname.domain.com/mybucket)。便捷参数,等同于GDAL的AWS_VIRTUAL_HOSTING [环境变量: S3_VIRTUAL_HOSTING] --s3-signing-region TEXT S3签名区域。便捷参数,等同于GDAL的AWS_DEFAULT_REGION [环境变量: S3_SIGNING_REGION] --s3-no-sign-request TEXT 设置后禁用请求签名,适用于公共访问权限的存储桶。便捷参数,等同于GDAL的AWS_NO_SIGN_REQUEST [环境变量: S3_NO_SIGN_REQUEST] -v, --verbosity LVL 日志级别:CRITICAL、ERROR、WARNING、INFO或DEBUG --help 显示帮助信息并退出
建议使用docker-compose进行本地开发,可实时代码编辑和测试,并确保使用正确的GDAL/OGR版本及Spatialite 5.0.0。首先使用本机的用户ID和组ID构建本地镜像:
bashdocker-compose build --build-arg USER_ID=`id -u` --build-arg GROUP_ID=`id -g`
可通过以下命令运行脚本:
bashdocker-compose run --rm validator geopackage-validator
该命令可直接访问当前目录下的文件。如需访问其他文件,可在docker-compose.yaml中添加或编辑卷配置。
Docker中已安装IPython:
bashdocker-compose run --rm validator ipython
为保持Python文件格式统一,可定期运行:
bashdocker-compose run --rm validator black .
定期运行测试,同时检查pyflakes和black格式:
bashdocker-compose run --rm validator pytest
在GitHub中发布时,需更新geopackage_validator.constants.py中的__version__,创建并推送新标签至master分支,然后在GitHub中创建新发布。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429