geoarrow-jsA minimal TypeScript implementation of GeoArrow building on top of Arrow JS.
It complements the work-in-progress geoarrow-wasm, which will provide Rust-based operations on GeoArrow memory.
Only spatial operations that are implemented on binary representations of geometry will be added to this repo.
This means that geoarrow-js will not, say, use algorithms from Turf, because that would require conversions to and from GeoJSON for the operation.
Refer to the algorithm namespace in the docs.
@math.gl/polygon)@math.gl/polygon)@math.gl/polygon, a fork of earcut.)proj4)Refer to the worker namespace. Note that due to limitations in Arrow JS (as of v14) you must use preparePostMessage before a call to structuredClone or postMessage, to ensure it can correctly be rehydrated on the worker.
import * as arrow from "apache-arrow";
import {
preparePostMessage,
rehydrateVector,
} from "@geoarrow/geoarrow-js/worker";
const originalVector = arrow.makeVector(new Int32Array([1, 2, 3]));
const [preparedVector, arrayBuffers] = preparePostMessage(originalVector);
// Here we use structuredClone to simulate a postMessage but on the main thread
const receivedVector = structuredClone(preparedVector, {
transfer: arrayBuffers,
});
const rehydratedVector = rehydrateVector(receivedVector);
geoarrow-js is designed to be used seamlessly with WebAssembly-based GeoArrow operations, such as those in the JavaScript bindings of the Rust GeoArrow implementation, and with rendering libraries, such as deck.gl, with the help of @geoarrow/deck.gl-layers.
For more background on my plans for GeoArrow ecosystem in JS and WebAssembly, refer to this thread.
Generated using TypeDoc