@urban-toolkit/autk-grammar
v0.3.0
Published
A declarative grammar for urban visual analytics, built on Autark
Keywords
Readme
@urban-toolkit/autk-grammar
A declarative grammar for urban visual analytics, running on Autark. Describe the data to load, the computations to run, and the maps and plots to draw in one spec, and the grammar wires them together in the browser.
- Documentation: https://autarkjs.org/grammar/
- Examples: https://autarkjs.org/grammar/examples/
- Source: https://github.com/urban-toolkit/autk-grammar
Installation
npm install @urban-toolkit/autk-grammarUsage
import { AutkGrammar, UrbanSpec } from '@urban-toolkit/autk-grammar';
const spec: UrbanSpec = {
data: [{ type: 'csv', csvFileUrl: 'buildings.csv', outputTableName: 'buildings' }],
map: { layerRefs: [{ dataRef: 'buildings', isColorMap: true }] },
plot: { dataRef: 'buildings', mark: 'bar', axis: ['height', 'count'] }
};
const grammar = new AutkGrammar({ map: 'map', plot: 'plot' }); // ids of the map canvas and plot container
await grammar.run(spec);JSON Schema
The package ships the grammar's JSON Schema (draft-07) as @urban-toolkit/autk-grammar/build/autk-grammar-schema.json, with $id https://autarkjs.org/schema/autk-grammar/v1.json. Validate a spec with any draft-07 validator:
import { Ajv } from 'ajv';
import schema from '@urban-toolkit/autk-grammar/build/autk-grammar-schema.json' with { type: 'json' };
const validate = new Ajv({ allowUnionTypes: true }).compile(schema);
if (!validate(spec)) console.error(validate.errors);Compute helpers
runCompute(block, layers, run) runs one compute entry against named FeatureCollections with a GPU runner you pass in, for example params => new AutkComputeEngine().gpgpuPipeline(params). It joins a wglsFunction written as an array of lines, resolves fromFeature uniforms, and drives iterate: 'all' (one dispatch per feature, outputs summed) and iterate: 'batched' (one dispatch over packed uniform arrays). resolveComputeParams(block, layers, iterateIndex?) returns the parameters of a single dispatch without running anything.
License
MIT
