14 个不稳定版本 (6 个重大更新)
0.8.1 | 2024年8月14日 |
---|---|
0.8.0 | 2024年6月20日 |
0.7.1 | 2024年4月16日 |
0.6.1 | 2024年2月5日 |
0.3.0 | 2021年10月27日 |
#359 在 网络编程
每月下载量:134
115KB
2.5K SLoC
cjval:CityJSON + CityJSONSeq 数据集的架构验证
A Rust 库和二进制程序,用于验证 CityJSON 对象(CityJSON + CityJSONSeq)的语法。
它针对 CityJSON 架构 进行验证,并实现了额外的功能(因为这些检查不能用 JSON 架构 表达)。
执行以下错误检查:
- JSON 语法:是否为有效的 JSON 对象?
- CityJSON 架构:对架构进行验证(CityJSON v1.0 + v1.1 + v2.0)
- 扩展架构:如果有 扩展(这些将从 URL 自动获取),则验证额外的架构
- 父子一致性:如果 City 对象在其
"children"
中引用另一个对象,则确保该子对象存在。并且该子对象在其"parents"
中有父对象 - 错误的顶点索引:检查所有顶点索引是否存在于顶点列表中
- 语义数组:检查几何体中语义的数组是否与几何体的形状相同,并且值是否一致
- 纹理:检查纹理的数组是否一致(如果顶点存在 + 如果纹理存在)
- 材料:检查材料的数组是否与几何体对象一致,并且材料是否存在
它还验证以下内容,这些不是错误,而是警告,因为文件仍然被认为是有效和可用的,但它们可能会使文件更大,并且某些解析器可能无法理解所有属性
- 额外的根属性:如果 CityJSON 有额外的根属性,这些应该记录在扩展中。如果没有,则返回此警告
- duplicate_vertices:在
"vertices"
中允许重复顶点,但它们会占用空间并明确减少文件中的拓扑关系。如果有任何,cjio具有操作符clean
来自动修复此问题。 - unused_vertices:在文件中未引用的顶点,它们会占用额外空间。如果有任何,cjio具有操作符
clean
来自动修复此问题。
Rust库 + 2个二进制文件
cjval
是一个Rust库,并且有2个不同的二进制文件
cjval
用于验证CityJSON文件或CityJSONSeq流(如果文件包含某些内容,它将自动下载扩展)cjvalext
用于验证CityJSON扩展文件
安装/编译
为了轻松地在您的系统上安装二进制文件
- 安装Rust编译器
cargo安装cjval --特性构建二进制文件
为了编译项目(并最终修改它)
- 安装Rust编译器
git clone https://github.com/cityjson/cjval.git
cargo build --release --features build-binary
(这将确保编译二进制文件)./target/release/cjvalmyfile.json
Web应用程序
代码在https://validator.cityjson.org中使用,它被编译为WebAssembly(WASM代码在此)并构建了一个简单的GUI。
CLI使用方法
对于CityJSON文件
CityJSON模式与二进制文件一起打包,所以只需
cjval myfile.city.json --verbose
(将自动获取X.Y版本的最新模式)
--verbose
用于获取每个错误检查的详细报告。
如果文件包含一个或多个扩展,例如
{
"type": "CityJSON",
"version": "2.0",
"extensions":
{
"Potato":
{
"url": "https://www.cityjson.org/extensions/potato.ext.json",
"version": "1.0"
}
}
...
那么cjval
将自动下载扩展模式文件。
如果您想使用您自己的本地扩展模式,您可以使用带有-e
标志的参数传递它们,这将覆盖自动下载
cjval myfile.city.json -e ./myextensions/generic.ext.json
对于CityJSONSeq
要验证CityJSONFeature流,您需要使用'cat'文件
cat mystream.city.jsonl | cjval --verbose
或者您可以使用cjseq从CityJSON文件生成流
cjseq cat -f myfile.city.json | cjval --verbose
您将获得每行的简短报告(每行是一个CityJSON
,后跟几个CityJSONFeature
)。
--verbose
用于获取每行的详细报告,如果不使用则只报告有错误的行。
贡献者
- @hugoledoux
- @josfeenstra(该项目是由TU Delft的地理信息系统硕士课程开始的,原始代码)
依赖项
~12–26MB
~418K SLoC