@urban-toolkit/autk-db
v2.4.2
Published
<div align="center"> <img src="../logo.png" alt="Autark Logo" height="150"/></br>
Readme
Autark toolkit
Autark is a serverless, modular TypeScript toolkit for prototyping urban visual analytics systems entirely in the browser. It supports client-side workflows for loading, storing, querying, joining, computing, and visualizing physical and thematic urban data using standard formats such as OpenStreetMap, GeoJSON, GeoTIFF, and CSV.
The toolkit is available as the umbrella package @urban-toolkit/autk or as individual modules:
@urban-toolkit/autk-db: In-browser spatial database for urban datasets.@urban-toolkit/autk-compute: WebGPU computation engine for analytical and render-based pipelines.@urban-toolkit/autk-map: WebGPU-based 2D/3D vector map visualization library.@urban-toolkit/autk-plot: D3.js-based plotting library for linked urban data views.
@urban-toolkit/autk-db
@urban-toolkit/autk-db provides an in-browser spatial database built on DuckDB-Wasm and its spatial extension. It helps applications load urban datasets, organize them into workspaces, run spatial joins and custom SQL queries, and export layers as GeoJSON for use with autk-map, autk-plot, or other tools.
Basic usage
import { AutkDb } from '@urban-toolkit/autk-db';
const db = new AutkDb();
await db.init();
await db.loadGeojson({
outputTableName: 'buildings',
geojsonObject: buildingsGeojson,
layerType: 'buildings',
});
const buildings = await db.getLayer('buildings');
console.log(db.tables, buildings);JSON geometry loading
loadJson can import plain JSON records or materialize geometry during load using the same geometry options supported by loadCsv:
geometryColumns: true→ reads defaultLatitude/Longitudefields as points{ latColumnName, longColumnName, coordinateFormat? }→ reads explicit coordinate fields as points{ wktColumnName, coordinateFormat? }→ parses WKT geometry and infers the returned layer family
const parcels = await db.loadJson({
outputTableName: 'parcels',
jsonObject: [
{ id: 1, wkt: 'POLYGON((-43.3 -22.9, -43.2 -22.9, -43.2 -22.8, -43.3 -22.8, -43.3 -22.9))' },
],
geometryColumns: { wktColumnName: 'wkt' },
});
console.log(parcels.type); // 'polygons'API summary
new AutkDb(): Creates an isolated database controller.init(): Initializes DuckDB-Wasm and loads the spatial extension.tables: Lists tables registered in the current workspace.setWorkspace(name),getWorkspaces(),getCurrentWorkspace(): Manage isolated database schemas.loadOsm(params): Loads OpenStreetMap data from Overpass API or PBF-backed workflows.loadCsv(params),loadJson(params): Imports tabular or JSON data.loadGeojson(params): Imports custom GeoJSON layers.loadGeoTiff(params),getGeoTiffLayer(tableName): Imports and exports GeoTIFF-derived raster layers.getLayer(layerTableName): Exports a layer table as a GeoJSONFeatureCollection.getBoundingBoxFromLayer(layerName): Computes a layer bounding box.getTableData(params): Reads table data for inspection or UI display.updateTable(params): Updates a table using the supported update strategies.spatialQuery(params): Runs spatial joins and aggregations between layers.rawQuery(params): Executes custom SQL against the current workspace.buildHeatmap(params): Creates a grid internally and builds aggregated heatmap outputs.removeLayer(tableName): Drops a table from the current workspace.
