Skip to content

Instantly share code, notes, and snippets.

@sashazykov
Created November 23, 2014 16:00
Show Gist options
  • Save sashazykov/4cec41588f294851d97b to your computer and use it in GitHub Desktop.
Save sashazykov/4cec41588f294851d97b to your computer and use it in GitHub Desktop.
Importing public transport stops and routes from gortransperm to JOSM
var routeData = {"routeId":"713","routeNumber":null,...}
// Data from http://map.gortransperm.ru/json/full-route/06.11.2014/713
var builder = require("josm/builder")
var nb = builder.NodeBuilder;
var rb = builder.RelationBuilder;
var ds = new org.openstreetmap.josm.data.osm.DataSet();
var out = ""
// var routeId = parseFloat(routeData['routeId']);
var routeId = '13'
var mr = rb.create({tags: {
name: 'Троллейбус №'+routeId,
network: 'Городской транспорт Перми',
route_master: 'trolleybus',
ref: routeId,
type: 'route_master',
'public_transport:version': 2
}});
var addStops = function (stoppoints, relation) {
for (var i = 0; i < stoppoints.length; i++) {
stop = stoppoints[i];
point = stop['location'].match(/POINT \(([\d\.]+) ([\d\.]+)\)/);
lon = parseFloat(point[1]);
lat = parseFloat(point[2]);
var node = nb.create({lat: lat, lon: lon, tags: {
public_transport: "platform",
trolleybus: "yes",
highway: 'bus_stop',
fixme: 'нужно смержить остановки и нормализовать названия. координаты старой остановки скорее всего более точные',
name: stop['stoppointName'],
ref: stop['stoppointId'],
description: stop['note']}});
ds.add(node)
relation.add(rb.member('platform', node));
};
return relation;
}
var stopsRelation = function (stoppoints) {
from = stoppoints[0]['stoppointName']
to = stoppoints[stoppoints.length - 1]['stoppointName']
relation = rb.create({tags: {
name: 'Троллейбус №'+routeId+': '+from+' – '+to,
from: from,
to: to,
network: 'Городской транспорт Перми',
route: 'trolleybus',
ref: routeId,
type: 'route',
'public_transport:version': 2
}});
relation = addStops(stoppoints, relation);
ds.add(relation);
return relation;
}
fr = stopsRelation(routeData['fwdStoppoints']);
mr.add(fr);
br = stopsRelation(routeData['bkwdStoppoints']);
mr.add(br);
ds.add(mr);
if (out != "") { josm.alert(out); };
var layer = josm.layers.addDataLayer({ds: ds, name: "route "+routeId});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment