5个稳定版本
新版本 1.5.1 | 2024年8月12日 |
---|---|
1.5.0 | 2024年8月1日 |
1.4.0 | 2024年8月1日 |
1.3.0 | 2024年7月29日 |
1.0.0 | 2024年6月21日 |
#1048 in 编码
每月下载量 449次
64KB
901 行
s2json
关于
S2JSON是一种用于编码各种地理数据结构的格式,简化了GeoJSON规范,并在此基础上添加了S2几何结构。
S2JSON的显著特性包括
- 属性数据如何定义形状有明确的说明。
- 🧊 支持3D几何。
- ♏ 支持每个几何点的M值。
- 🪩 支持基于S2几何的
S2Feature
和S2FeatureCollection
类型。 - ♻️ 特性属性和M值在作用域内定义,以确保它们可以作为结构体轻松由低级语言处理,同时也增加了后续项目的价值。
- 🛑 GeoJSON不再支持
GeometryCollection
。 - 📝 可以将归属添加到
FeatureCollection
或S2FeatureCollection
。
// GeoJSON example
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [125.6, 10.1]
},
"properties": {
"name": "Dinagat Islands"
}
}
// S2JSON example
{
"type": "S2Feature",
"face": 0,
"geometry": {
"type": "Point",
"coordinates": [0.5, 0.5]
},
"properties": {
"name": "Null Island"
}
}
阅读规范
安装
# bun
bun add -D s2json-spec
# pnpm
pnpm add -D s2json-spec
# yarn
yarn add -D s2json-spec
# npm
npm install -D s2json-spec
# cargo
cargo install s2json --dev
VSCode的语法高亮和扩展可安装。
开发
要求
您需要tarpaulin
工具来生成覆盖率报告。使用以下命令安装它
cargo install cargo-tarpaulin
bacon coverage
工具用于生成覆盖率报告。要使用pycobertura包生成更漂亮的覆盖率报告,使用以下命令安装它
pip install pycobertura
验证您的数据
注意:请确保在您的
tsconfig.json
中设置resolveJsonModule: true
,以确保json可以作为模块加载。
import Ajv from 'ajv';
import * as schema from 's2json-spec/s2json.schema.json'; // Path to the schema
import type { Feature } from 's2json-spec';
const ajv = new Ajv();
const validate = ajv.compile(schema);
const feature: Feature = {
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [125.6, 10.1]
},
properties: {
name: 'Dinagat Islands'
},
};
validate(feature); // true
运行测试
要运行测试,请使用以下命令
# TYPESCRIPT
## basic test
bun run test
## live testing
bun run test:dev
# RUST
## basic test
cargo test
# live testing
bacon test
生成覆盖率报告
要生成覆盖率报告,请使用以下命令
cargo tarpaulin
# bacon
bacon coverage # or type `l` inside the tool
依赖项
~0.7–1.6MB
~35K SLoC