osrm-isochrone
Warning: this is experimental
Generate drive-time isochrones from OpenStreetMap data using OSRM.
Install
npm install osrm-isochrone
Build
An osrm file is required for routing. This can be generated using included binaries. (Note: this will take a lot of processing power if you are planning to use the entire planet.osm file, for general use a regional OSM data extract is preferable. More info here)
#first download an osm file containing the area you need ./node_modules/osrm-isochrone/osrm/lib/binding/osrm-extract mydata.osm -p ./node_modules/osrm-isochrone/osrm/test/data/car.lua./node_modules/osrm-isochrone/osrm/lib/binding/osrm-prepare mydata.osrm -p ./node_modules/osrm-isochrone/osrm/test/data/car.lua
Usage
Create a file containing something such as:
var isochrone = ; var time = 300; // 300 second drivetime (5 minutes)var location = -77029266357421883890011780426885; // center point // Note: coordinates are E/W , N/Svar options = resolution: 25 // sample resolution maxspeed: 70 // in 'unit'/hour unit: 'miles' // 'miles' or 'kilometers' network: './dc.osrm' // prebuilt dc osrm network file, or use the one just built. ;
Run with
node my-file.js
The output will be in GeoJSON format.
Advanced
Alternatively the network
parameter can be an OSRM module instance. Allowing setup an OSRM with custom parameters, e.g. usage of shared-memory.
You can too define your own function to draw line/polygon instead of default:
var concave = ;var Isochrone = ; var time = 300; // 300 second drivetime (5 minutes)var location = -77029266357421883890011780426885; // center pointvar options = resolution: 25 // sample resolution maxspeed: 70 // in 'unit'/hour unit: 'miles' // 'miles' or 'kilometers' network: './dc.osrm' // prebuild dc osrm network file var isochrone = location time options { iferr throw err; // your geojson from draw overload console};isochrone { var inside = destinationsfeatures; destinationsfeatures = inside; return ;}isochrone;