Skip to content

Web Assembly version of DGGRID ​

A WebAssembly wrapper for DGGRID, the C++ library for working with Discrete Global Grid Systems.

NPM VersionGitHub ReleaseDocsPR CheckPublishjsDelivr

Webdggrid demo screenshot


Features ​

  • 🚀 WebAssembly Performance - Full DGGRID C++ library compiled to WASM
  • 🌐 Browser & Node.js - Works in any modern JavaScript environment
  • 🔷 Multiple Topologies - HEXAGON, TRIANGLE, DIAMOND shapes supported
  • 📐 ISEA & FULLER - Both projection systems available
  • 🎯 Multi-Aperture Grids - Define custom aperture sequences (e.g., "434747") for mixed refinement
  • 🗺️ GeoJSON Output - Direct export to GeoJSON FeatureCollections
  • 📊 Grid Statistics - Cell counts, areas, and spacing at any resolution

How to use ​

Please check tests folder and examples documentation for more examples.

in browser

js

const WebdggridLocal = await import("../dist/index.js").then(m => m.Webdggrid).catch(console.log);
import { Webdggrid as WebdggridExternal } from "https://cdn.jsdelivr.net/npm/webDggrid/dist/index.js";

const Webdggrid = WebdggridLocal ?? WebdggridExternal;

const webdggrid = await Webdggrid.load();
const seqNum = dggs.geoToSequenceNum([[0, 0]]);

In nodejs

js
import { Webdggrid } from 'webdggrid'
const dggs = await Webdggrid.load();
const seqNum = dggs.geoToSequenceNum([[0, 0]]);

Live Demos ​

API ​

Lifecycle ​

Webdggrid.load · Webdggrid.unload

Configuration ​

setDggs · getResolution · setResolution · version

Coordinate Conversion ​

geoToSequenceNum · sequenceNumToGeo · geoToGeo · sequenceNumToGrid · sequenceNumToGridFeatureCollection

Grid Statistics ​

nCells · cellAreaKM · cellDistKM · gridStatCLS

Hierarchical Operations ​

sequenceNumNeighbors · sequenceNumParent · sequenceNumAllParents · sequenceNumChildren

Hierarchical Address Types ​

sequenceNumToVertex2DD · vertex2DDToSequenceNum · sequenceNumToZOrder · zOrderToSequenceNum · sequenceNumToZ3 · z3ToSequenceNum · sequenceNumToZ7 · z7ToSequenceNum

Index Digit Manipulation ​

z7GetQuad · z7GetDigit · z7SetDigit · z7ExtractDigits · z3GetQuad · z3GetDigit · z3SetDigit · z3ExtractDigits · zOrderGetQuad · zOrderGetDigit · zOrderSetDigit · zOrderExtractDigits

Low-Level Coordinate Systems ​

geoToPlane · geoToProjtri · geoToQ2dd · geoToQ2di · sequenceNumToPlane · sequenceNumToProjtri · sequenceNumToQ2dd · sequenceNumToQ2di

Q2DI Conversions ​

q2diToGeo · q2diToSequenceNum · q2diToPlane · q2diToProjtri · q2diToQ2dd

Q2DD Conversions ​

q2ddToGeo · q2ddToSequenceNum · q2ddToPlane · q2ddToProjtri · q2ddToQ2di

PROJTRI Conversions ​

projtriToGeo · projtriToSequenceNum · projtriToPlane · projtriToQ2dd · projtriToQ2di

Multi-Aperture Support ​

javascript
// Configure a grid with mixed apertures
dggs.setDggs({
    poleCoordinates: { lat: 0, lng: 0 },
    azimuth: 0,
    apertureSequence: "434747",  // Custom aperture per resolution
    topology: Topology.HEXAGON,
    projection: Projection.ISEA,
}, 5);

See the full API reference and examples for details.

Contributing & Development ​

See CONTRIBUTING.md for setup instructions, project structure, and commit conventions.

Changes ​

See CHANGELOG.md for the full history.