About
S2JSON is a format for encoding a variety of geographic data structures that simplifies the GeoJSON spec and builds ontop of it to include S2 Geometry.
Notable features of S2JSON are:
- Properties data is clearly defined on how it can be shaped.
- đ§ Support for 3D geometries.
- đˇī¸ Support for metadata.
- â Support for M-Values for each geometry point.
- đĻ Support for bounding boxes
- đĢĨ Updated spec to handle vector structures.
- đ¨ Tools for converting between GeoJSON, S2JSON, and quad-tree Tile structures
- đĒŠ Support for
S2FeatureandS2FeatureCollectiontypes based upon the S2 Geometry spherical projection. - âģī¸ Feature Properties & M-Values are defined in scope to ensure they can be easily processed by lower level languages as structures, but also adds value to other projects down the line.
- đ GeoJSON no longer supports
GeometryCollection. - đ Attribution can be added to either a
FeatureCollectionorS2FeatureCollection
// GeoJSON example
// GeoJSON Vector example
// S2JSON example
Read The Spec
Implementations
Install
# bun
# pnpm
# yarn
# npm
# cargo
grammars/highlighting for VSCode are available for install.
[!NOTE]
Unsafe code is forbidden by a #![forbid(unsafe_code)] attribute in the root of the rust library.
Development
Requirements
You need the tool tarpaulin to generate the coverage report. Install it using the following command:
The bacon coverage tool is used to generate the coverage report. To utilize the pycobertura package for a prettier coverage report, install it using the following command:
Validated Your Data
Note: Be sure to set
resolveJsonModule: truein yourtsconfig.jsonto ensure json may be loaded as a module.
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
Running Tests
To run the tests, use the following command:
# TYPESCRIPT
## basic test
## live testing
# RUST
## basic test
# live testing
Generating Coverage Report
To generate the coverage report, use the following command:
# bacon