#open #vector #tile #gis #low-cost-code

不依赖 std s2json

此库支持S2JSON 1.0规范

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 编码

Download history 116/week @ 2024-06-20 2/week @ 2024-06-27 129/week @ 2024-07-25 221/week @ 2024-08-01 99/week @ 2024-08-08

每月下载量 449次

MIT 许可证

64KB
901

s2json

npm crate downloads bundle docs-ts docs-rust Discord

关于

S2JSON是一种用于编码各种地理数据结构的格式,简化了GeoJSON规范,并在此基础上添加了S2几何结构。

S2JSON的显著特性包括

  • 属性数据如何定义形状有明确的说明。
  • 🧊 支持3D几何。
  • ♏ 支持每个几何点的M值。
  • 🪩 支持基于S2几何的S2FeatureS2FeatureCollection类型。
  • ♻️ 特性属性和M值在作用域内定义,以确保它们可以作为结构体轻松由低级语言处理,同时也增加了后续项目的价值。
  • 🛑 GeoJSON不再支持GeometryCollection
  • 📝 可以将归属添加到FeatureCollectionS2FeatureCollection
// 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"
  }
}

阅读规范

s2json-spec

安装

# 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