Deutsche Bahn: Haltestellen

node v5.12.0
version: 1.0.0
endpointsharetweet
let haltestellenUrl = "http://data.deutschebahn.com/datasets/haltestellen/D_Bahnhof_2016_01_alle.csv"
let request = require('request-promise') let _ = require("lodash/fp");
let {Converter} = require('csvtojson')
/*let converter = new Converter({ delimiter: ";" }); function convertCSV (string) { return new Promise((resolve,reject)=>converter.fromString(string, (err,result)=>(!err)? resolve(result) : reject(err))) }*/
let converter = new Converter({ delimiter: ";" }); let promisify = require('promisify-node'); converter.fromString = promisify(converter.fromString); function convertCSV(csvString) { return converter.fromString(csvString); }
let data = await request(haltestellenUrl); let json = await convertCSV(data); _.take(10,json)
function geo (data) { return { latitude: data.BREITE, longitude: data.LAENGE, title:data.NAME } } let location = _.find(x=>_.startsWith("Berlin",x.NAME),json) geo(location)
let distance = _.curry((a, b) => { let dlat = b.latitude - a.latitude; let dlong = b.longitude - a.longitude; return Math.sqrt(dlat*dlat + dlong*dlong); }); let sortedGeo = _.compose(_.sortBy(distance(geo(location))), _.map(geo)) sortedGeo(json) _.take(20,sortedGeo(json))
Loading…

no comments

    sign in to comment