contour-wasm
v0.5.0
Published
JS/WASM library to compute isolines and isobands (using marching squares algorithm)
Downloads
67
Maintainers
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/.