Basic Mapping
1. Natural Breaks
natural_breaks()
Array naturalBreaks(Number k, Array val)Examples
const jsgeoda = require('jsgeoda');
const fs = require('fs');
// load data
const data = fs.readFileSync('./data/natregimes.geojson').buffer;
// create jsgeoda instance
const geoda = await jsgeoda.New();
// load geojson in jsgeoda
const nat = geoda.readGeoJSON(data);
// get data
const hr60 = geoda.getCol(nat, 'HR60');
// natural breaks
const brks = geoda.naturalBreaks(5, hr60);import React, { Component } from "react";
import ReactDOM from "react-dom";
import DeckGL from "@deck.gl/react";
import { GeoJsonLayer } from "@deck.gl/layers";
import { StaticMap } from "react-map-gl";
import colorbrewer from "colorbrewer";
import jsgeoda from "jsgeoda";
// Set your mapbox access token here
const MAPBOX_TOKEN =
"pk.eyJ1Ijoic21peWFrYXdhIiwiYSI6ImNqcGM0d3U4bTB6dWwzcW04ZHRsbHl0ZWoifQ.X9cvdajtPbs9JDMG-CMDsA";
// The geojson data
const DATA_URL = `https://webgeoda.github.io/data/natregimes.geojson`;
// Viewport settings
const INITIAL_VIEW_STATE = {
longitude: -100.4,
latitude: 38.74,
zoom: 2.5,
maxZoom: 20
};
class App extends Component {
constructor() {
super();
this.state = {
mapId: "",
layer: null
};
}
// load spatial data when mount this component
loadSpatialData(geoda) {
fetch(DATA_URL)
.then((res) => res.arrayBuffer())
.then((data) => {
// load geojson in jsgeoda, an unique id (string) will be returned for further usage
const nat = geoda.readGeoJSON(data);
const hr60 = geoda.getCol(nat, "HR60");
const cb = geoda.customBreaks(nat, "natural_breaks", hr60, 5);
const layer = new GeoJsonLayer({
id: "GeoJsonLayer",
data: DATA_URL,
filled: true,
getFillColor: (f) => this.getFillColor(f, cb.breaks),
stroked: true,
pickable: true
});
this.setState({
mapId: nat,
layer: layer
});
});
}
componentDidMount() {
// jsgeoda.New() function will create an instance from WASM
jsgeoda.New().then((geoda) => {
this.loadSpatialData(geoda);
});
}
// Determine which color for which geometry
getFillColor(f, breaks) {
for (let i = 1; i < breaks.length; ++i) {
if (f.properties.HR60 < breaks[i]) {
return colorbrewer.YlOrBr[breaks.length - 1][i - 1]
.match(/[0-9a-f]{2}/g)
.map((x) => parseInt(x, 16));
}
}
}
render() {
return (
<div>
<DeckGL
initialViewState={INITIAL_VIEW_STATE}
layers={[this.state.layer]}
controller={true}
getTooltip={({ object }) =>
object && `${object.properties.NAME}: ${object.properties.HR60}`
}
>
<StaticMap mapboxApiAccessToken={MAPBOX_TOKEN} />
</DeckGL>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById("root"));
get_viewport()
2. Quantile Breaks
quantile_breaks()
3. Percentile Breaks
quantile_breaks()
4. Hinge Box Breaks
hinge15_breaks()
hinge30_breaks()
5. Standard Deviation Breaks
stddev_breaks()
Last updated