@mapbox/geojson-tidy
v2.0.0
Published
tidy up a geojson input by filtering out noisy point clusters
Downloads
162
Maintainers
Readme
geojson-tidy
Create a tidy geojson by resmapling points in the feature based on sampling time and distance. Handy when geometries that have been converted from a noisy GPS/GPX output.
- Set a minimum sampling time between successive points (Default: 5 seconds)
- Set a minimum distance between successive points (Default: 10 metres)
- Set a maximum feature length to split long segments (Default: 100 points)
install
npm install @mapbox/geojson-tidy
usage
var geojsonTidy = require('@mapbox/geojson-tidy');
var tidyLineString = geojsonTidy.tidy(obj, [options]);
Input
Any geojson file from togeojson is a valid input for geojson-tidy. Only LineString features are processed currently.
The timestamp array for the trackpoints need to be stored stored in features[].properties.coordTimes[]
.
Timestamps can either be JavaScript numeric Time Values
(milliseconds since epoch) or strings in the ISO 8601 format.
Output
The default output is a geojson FeatureCollection
with the timestamps stored in the cordTimes[]
property. All other properties are stripped out.
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"coordTimes": []
},
"geometry": {
"type": "LineString",
"coordinates": []
}
}
]
}
API
geojsonTidy.tidy(obj, [options])
Given a geojson object, return contains a tidy geometry with extra points filtered out based on default settings
options
Allows you to set custom values for the filter
{
minimumDistance: 10, // Minimum distance between points in metres
minimumTime: 5, // Minimum time interval between points in seconds
maximumPoints: 100 // Maximum points in a feature
}
CLI
./geojson-tidy -h
Usage: geojson-tidy [-d minimum distance between points] [-t minimum sample time between points] [-m maximum number of points in a single line feature] FILE
FILE is any valid geojson file generated by togeojson
geojson-tidy returns a stingified gejosn FeatureCollection
Example: ./geojson-tidy test/walk-1.json -d 10 -t 5 -m 100 > output.json
Algorithm
- Read a geojson FeatureCollection
- Loop through the features for LineString features
- Compare successive coordinates of the feature
- If the dinstance between the points or timestamp difference is too small, delete it
- Write a tidied geojson FeatureCollection with reduced points
Development
Build with Browserify
To run this project in the browser, you first need to build it with browserify:
git clone [email protected]:mapbox/geojson-tidy.git
cd geojson-tidy
# to run tests
npm install
# to build geojson-tidy
npm run build
geojson-tidy.js
and geojson-tidy.min.js
are built files generated
from geojson-tidy.js
by browserify
. If you find an issue, it either needs to be
fixed in index.js
, or in one of the libraries mapbox-mapmatch uses
to parse formats.