Deutsche Bahn: Haltestellen
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))
no comments