Skip to content

Instantly share code, notes, and snippets.

@sashazykov
Created November 23, 2014 16:00
Show Gist options
  • Select an option

  • Save sashazykov/4cec41588f294851d97b to your computer and use it in GitHub Desktop.

Select an option

Save sashazykov/4cec41588f294851d97b to your computer and use it in GitHub Desktop.

Revisions

  1. sashazykov created this gist Nov 23, 2014.
    76 changes: 76 additions & 0 deletions gistfile1.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,76 @@
    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});