パッケージの詳細

contour-wasm

mthh201AGPL-3.0-or-later0.5.0

JS/WASM library to compute isolines and isobands (using marching squares algorithm)

contour, polygon, isobands, marching-squares

readme

Contour-wasm

Contour and contour-isobands rust crates, compiled to WebAssembly, for use in the browser.

Usage

This module exposes two functions:

  • isobands(data, width, height, intervals[, options])
  • isolines(data, width, height, intervals[, options])

isobands

With default values

import * as contours from 'contour-wasm';

const data = [
  0, 0, 0, 0,
  0, 2, 2, 0,
  0, 2, 2, 0,
  0, 0, 0, 0,
];

const result = contours.isobands(data, 4, 4, [0, 1.5]);

With options

import * as contours from 'contour-wasm';

const data = [
  0, 0, 0, 0,
  0, 2, 2, 0,
  0, 2, 2, 0,
  0, 0, 0, 0,
];

const options = {
  use_quad_tree: false, // default: true
  x_origin: 22.5, // default: 0
  y_origin: 22.5, // default: 0
  x_step: 45, // default: 1
  y_step: -45, // default: 1
}

const result = contours.isobands(data, 4, 4, [0, 1.5], options);

isolines

With default values

import * as contours from 'contour-wasm';

const data = [
  0, 0, 0, 0,
  0, 2, 2, 0,
  0, 2, 2, 0,
  0, 0, 0, 0,
];

const result = contours.isolines(data, 4, 4, [0, 1.5]);

With options

import * as contours from 'contour-wasm';

const data = [
  0, 0, 0, 0,
  0, 2, 2, 0,
  0, 2, 2, 0,
  0, 0, 0, 0,
];

const options = {
  x_origin: 22.5, // default: 0
  y_origin: 22.5, // default: 0
  x_step: 45, // default: 1
  y_step: -45, // default: 1
}

const result = contours.isolines(data, 4, 4, [0, 1.5], options);

Micro-benchmark

Performance of isobands function from this module compared to MarchingSquaresJS.isoBands (which is also the package used internally by turf-isobands).

Data size (number of points) Number of intervals MarchingSquares.js contour-wasm
5307 23 16ms 12ms
17608 15 25ms 15ms
336960 14 369ms 186ms
1010880 14 832ms 492ms

Installation instructions

📦 Install with npm

npm install contour-wasm

Build instructions

Only for developers. Otherwise, you can use the npm package.

🛠️ Build with wasm-pack

wasm-pack build

🔬 Test in Headless Browsers with wasm-pack test

wasm-pack test --headless --firefox

🎁 Publish to NPM with wasm-pack publish

wasm-pack publish

Demo

Demonstration page is available at https://mthh.github.io/contour-wasm/.

更新履歴

Changelog

All notable changes to this project will be documented in this file.

0.5.0

  • Update contour-isobands dependency to use the new precision internal parameter.

0.4.0

  • Update contour and contour-isobands dependencies.

0.3.0

  • Update contour and contour-isobands dependencies.

0.2.0

  • Fix built code sent to npm.

0.1.0

  • Initial release.