# osrm-isochrone **Repository Path**: mirrors_mapbox/osrm-isochrone ## Basic Information - **Project Name**: osrm-isochrone - **Description**: Generate drivetime isochrones from OpenStreetMap data using OSRM - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-09 - **Last Updated**: 2026-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README osrm-isochrone --- **Warning: this is experimental** [![Build Status](https://travis-ci.org/mapbox/osrm-isochrone.svg)](https://travis-ci.org/mapbox/osrm-isochrone) Generate drive-time [isochrones](http://en.wikipedia.org/wiki/Isochrone_map) from [OpenStreetMap](http://www.openstreetmap.org/) data using [OSRM](http://project-osrm.org/). ![](https://dl.dropbox.com/s/r7hntimgiv5cfeq/Screenshot%202014-11-24%2017.20.32.png?dl=0) ##Install ```sh 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](https://github.com/Project-OSRM/osrm-backend/wiki/Running-OSRM)*) ```sh #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: ```js var isochrone = require('osrm-isochrone'); var time = 300; // 300 second drivetime (5 minutes) var location = [-77.02926635742188,38.90011780426885]; // center point // Note: coordinates are E/W , N/S var 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. } isochrone(location, time, options, function(err, drivetime) { if(err) throw err; // a geojson linestring console.log(JSON.stringify(drivetime)) }); ``` Run with ```sh node my-file.js ``` The output will be in GeoJSON format. ###Advanced Alternatively the `network` parameter can be an [OSRM](https://github.com/Project-OSRM/node-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: ```js var concave = require('turf-concave'); var Isochrone = require('osrm-isochrone'); var time = 300; // 300 second drivetime (5 minutes) var location = [-77.02926635742188,38.90011780426885]; // center point var 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 = new Isochrone(location, time, options, function(err, drivetime) { if(err) throw err; // your geojson from draw overload console.log(JSON.stringify(drivetime)) }); isochrone.draw = function(destinations) { var inside = destinations.features.filter(function(feat) { return feat.properties.eta <= time; }); destinations.features = inside; return concave(destinations, this.sizeCellGrid, unit); } isochrone.getIsochrone(); ```