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网络编程

Download history 135/week @ 2024-06-17 6/week @ 2024-06-24 12/week @ 2024-07-22 122/week @ 2024-08-12

每月下载量:134

MIT 许可证

115KB
2.5K SLoC

cjval:CityJSON + CityJSONSeq 数据集的架构验证

crates.io GitHub license

A Rust 库和二进制程序,用于验证 CityJSON 对象(CityJSON + CityJSONSeq)的语法。

它针对 CityJSON 架构 进行验证,并实现了额外的功能(因为这些检查不能用 JSON 架构 表达)。

执行以下错误检查:

  1. JSON 语法:是否为有效的 JSON 对象?
  2. CityJSON 架构:对架构进行验证(CityJSON v1.0 + v1.1 + v2.0)
  3. 扩展架构:如果有 扩展(这些将从 URL 自动获取),则验证额外的架构
  4. 父子一致性:如果 City 对象在其 "children" 中引用另一个对象,则确保该子对象存在。并且该子对象在其 "parents" 中有父对象
  5. 错误的顶点索引:检查所有顶点索引是否存在于顶点列表中
  6. 语义数组:检查几何体中语义的数组是否与几何体的形状相同,并且值是否一致
  7. 纹理:检查纹理的数组是否一致(如果顶点存在 + 如果纹理存在)
  8. 材料:检查材料的数组是否与几何体对象一致,并且材料是否存在

它还验证以下内容,这些不是错误,而是警告,因为文件仍然被认为是有效和可用的,但它们可能会使文件更大,并且某些解析器可能无法理解所有属性

  1. 额外的根属性:如果 CityJSON 有额外的根属性,这些应该记录在扩展中。如果没有,则返回此警告
  2. duplicate_vertices:在"vertices"中允许重复顶点,但它们会占用空间并明确减少文件中的拓扑关系。如果有任何,cjio具有操作符clean来自动修复此问题。
  3. unused_vertices:在文件中未引用的顶点,它们会占用额外空间。如果有任何,cjio具有操作符clean来自动修复此问题。

Rust库 + 2个二进制文件

cjval是一个Rust库,并且有2个不同的二进制文件

  1. cjval用于验证CityJSON文件或CityJSONSeq流(如果文件包含某些内容,它将自动下载扩展)
  2. cjvalext用于验证CityJSON扩展文件

安装/编译

为了轻松地在您的系统上安装二进制文件

  1. 安装Rust编译器
  2. cargo安装cjval --特性构建二进制文件

为了编译项目(并最终修改它)

  1. 安装Rust编译器
  2. git clone https://github.com/cityjson/cjval.git
  3. cargo build --release --features build-binary(这将确保编译二进制文件)
  4. ./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用于获取每行的详细报告,如果不使用则只报告有错误的行。

贡献者

依赖项

~12–26MB
~418K SLoC