Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mapbox/osrm-isochrone
Generate drivetime isochrones from OpenStreetMap data using OSRM
https://github.com/mapbox/osrm-isochrone
banished
Last synced: 8 days ago
JSON representation
Generate drivetime isochrones from OpenStreetMap data using OSRM
- Host: GitHub
- URL: https://github.com/mapbox/osrm-isochrone
- Owner: mapbox
- License: mit
- Created: 2014-11-24T23:19:28.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2018-01-20T00:51:05.000Z (almost 7 years ago)
- Last Synced: 2024-10-01T23:36:55.348Z (about 1 month ago)
- Topics: banished
- Language: JavaScript
- Homepage:
- Size: 33.2 KB
- Stars: 126
- Watchers: 118
- Forks: 50
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
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();
```