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.