From c5a5c333b5b930ccc8d879067eddd874313f9574 Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Mon, 02 Nov 2020 20:25:34 +0000
Subject: [PATCH] [map] New API approach
---
map.js | 342 ++++-----
/dev/null | 1799 -------------------------------------------------
lang_en.js | 4
lang_pl.js | 4
4 files changed, 152 insertions(+), 1,997 deletions(-)
diff --git a/lang_en.js b/lang_en.js
index bf8f333..79c8b42 100644
--- a/lang_en.js
+++ b/lang_en.js
@@ -50,8 +50,8 @@
types: {
v: 'Vehicle',
- b: 'Bus',
- t: 'Tram',
+ vb: 'Bus',
+ vt: 'Tram',
s: 'Stop',
sb: 'Bus stop',
st: 'Tram stop',
diff --git a/lang_pl.js b/lang_pl.js
index 32b5aaf..a51190f 100644
--- a/lang_pl.js
+++ b/lang_pl.js
@@ -50,8 +50,8 @@
types: {
'v': 'Pojazd',
- 'b': 'Autobus',
- 't': 'Tramwaj',
+ 'vb': 'Autobus',
+ 'vt': 'Tramwaj',
's': 'Przystanek',
'sb': 'Przystanek autobusowy',
'st': 'Przystanek tramwajowy',
diff --git a/map.js b/map.js
index 14cd19c..d957dbb 100644
--- a/map.js
+++ b/map.js
@@ -1,8 +1,7 @@
'use strict';
var api_refresh = 10000; // 10 seconds
-var api_poll_url = 'http://127.0.0.1/sub';
-var api_poll_refresh = 1000;
+var api_url = 'https://api.ttss.pl';
var geolocation = null;
var geolocation_set = 0;
@@ -15,7 +14,6 @@
var vehicles = {};
var hash = null;
-var stops_ignored = ['131', '744', '1263', '3039'];
var stops_style = {
'sb': new ol.style.Style({
image: new ol.style.Circle({
@@ -54,7 +52,6 @@
var stop_selected_source = null;
var stop_selected_layer = null;
-var feature_clicked = null;
var feature_xhr = null;
var feature_timer = null;
var path_xhr = null;
@@ -121,7 +118,9 @@
fail: function(message) {
addParaWithText(this._content, message).className = 'error';
},
- show: function(contents, closeCallback) {
+ show: function(contents, closeCallback, hashValue) {
+ hash.set(hashValue ? hashValue : '');
+
this._runCallback();
this.closeCallback = closeCallback;
@@ -205,9 +204,7 @@
this.timeout = setTimeout(this.find.bind(this), 100);
},
open: function(panel) {
- setHash('f');
-
- panel.show(this.div, this.close.bind(this));
+ panel.show(this.div, this.close.bind(this), 'f');
this.input.focus();
},
close: function() {
@@ -240,7 +237,7 @@
style: function(feature, clicked) {
var color_type = 'black';
- var vehicleType = vehicles_info.getParsed(feature.getId());
+ var vehicleType = feature.get('type');
if(vehicleType) {
switch(vehicleType.low) {
case 0:
@@ -277,12 +274,12 @@
// if(special_directions[vehicle.direction]) {
// vehicle.line = special_directions[vehicle.direction];
// }
- text: feature.get('name').substr(0, feature.get('name').indexOf(' ')),
+ text: feature.get('line'),
fill: new ol.style.Fill({color: 'white'}),
}),
}));
},
- select: function(feature, callback) {
+ select: function(feature) {
if(feature instanceof ol.Feature) {
feature = feature.getId();
}
@@ -294,20 +291,12 @@
this.style(feature, true);
this.selectedFeatureId = feature.getId();
- this.deselectCallback = callback;
},
deselect: function() {
if(!this.selectedFeatureId) return false;
var feature = this.source.getFeatureById(this.selectedFeatureId);
this.style(feature);
-
- this._internalDeselect();
- },
- _internalDeselect: function() {
- var callback = this.deselectCallback;
- this.deselectCallback = null;
this.selectedFeatureId = null;
- if(callback) callback();
},
typesUpdated: function() {
@@ -317,20 +306,50 @@
},
_newFeature: function(id, data) {
- var feature = new ol.Feature();
- feature.setId(this.prefix + id);
- feature.setProperties(data);
- feature.setGeometry(getGeometryPair(feature.get('pos')));
+ var feature = new ol.Feature(data);
+ feature.set('_', 'v' + this.prefix);
+ feature.setId(id);
+ feature.setGeometry(getGeometryFeature(feature));
this.style(feature);
return feature;
},
+ _updateFeature: function(feature, vehicle) {
+ Object.keys(vehicle).forEach(function (key) {
+ feature.set(key, deepMerge(feature.get(key), vehicle[key]));
+ if(key === 'lon' || key === 'lat') {
+ feature.setGeometry(getGeometryFeature(feature));
+ } else if(key === 'angle') {
+ feature.getStyle().getImage().setRotation(Math.PI * parseFloat(vehicle.angle ? vehicle.angle : 0) / 180.0);
+ } else if(key === 'line') {
+ // TODO: Special directions
+ feature.getStyle().getText().setText(vehicle.line);
+ }
+ });
+ },
+ _removeFeature: function(feature) {
+ if(!feature) return;
+ this.source.removeFeature(feature);
+ if(this.selectedFeatureId === feature.getId()) {
+ this.deselect();
+ }
+ },
loadFullData: function(data) {
+ var self = this;
var features = [];
for(var id in data) {
- features.push(this._newFeature(id, data[id]));
+ var feature = this.source.getFeatureById(id);
+ if(feature) {
+ this._updateFeature(feature, data[id]);
+ } else {
+ features.push(this._newFeature(id, data[id]));
+ }
}
- this.source.clear();
this.source.addFeatures(features);
+ this.source.forEachFeature(function(feature) {
+ if(!data[feature.getId()]) {
+ self._removeFeature(feature);
+ }
+ });
if(this.selectedFeatureId) {
this.select(this.selectedFeatureId);
@@ -338,31 +357,13 @@
},
loadDiffData: function(data) {
for(var id in data) {
- var feature = this.source.getFeatureById(this.prefix + id);
+ var feature = this.source.getFeatureById(id);
var vehicle = data[id];
- // TODO: handle vehicleInfo updates
-
if(vehicle === null) {
- if(feature) {
- this.source.removeFeature(feature);
- if (this.selectedFeatureId === feature.getId()) {
- this._internalDeselect();
- }
- }
+ this._removeFeature(feature);
} else if(feature) {
- var isPosModified = false;
- Object.keys(vehicle).forEach(function (key) {
- feature.set(key, deepMerge(feature.get(key), vehicle[key]));
- if(key === 'pos') {
- feature.setGeometry(getGeometryPair(feature.get('pos')));
- } else if (key === 'angle') {
- feature.getStyle().getImage().setRotation(Math.PI * parseFloat(vehicle.angle ? vehicle.angle : 0) / 180.0);
- } else if (key === 'name') {
- // TODO: Special directions
- feature.getStyle().getText().setText(vehicle.name.substr(0, vehicle.name.indexOf(' ')));
- }
- });
+ this._updateFeature(feature, vehicle);
} else {
this.source.addFeature(this._newFeature(id, data[id]));
}
@@ -371,48 +372,27 @@
fetch: function() {
var self = this;
- var result = this.fetchFull();
-
- // TODO: XHR only as fallback
- result.done(function() {
- setTimeout(self.fetchDiff.bind(self), 1);
- });
+ var result = this.fetchXhr();
// TODO: updates (EventSource)
- // TODO: error handling (reconnect)
+ // TODO: error ahandling (reconnect)
// TODO: error handling (indicator)
return result;
},
- fetchFull: function() {
+ fetchXhr: function() {
var self = this;
this.xhr = $.get(
- api_poll_url + '?id=' + this.prefix + '-full'
+ api_url + '/positions/?type=' + this.prefix + '&last=' + this.lastUpdate
).done(function(data) {
try {
- self.lastUpdate = this.request.getResponseHeader('Etag');
- self.loadFullData(data);
- } catch(e) {
- console.log(e);
- throw e;
- }
- }).fail(this.failXhr.bind(this));
- return this.xhr;
- },
- fetchDiff: function() {
- var self = this;
- this.xhr = $.get(
- api_poll_url + '?id=' + this.prefix + '-diff',
- {'If-None-Match': this.lastUpdate}
- ).done(function(data) {
- try {
- if(this.request.status == 304) {
- setTimeout(self.fetchDiff.bind(self), api_poll_refresh);
- return;
+ if(data['type'] == 'full') {
+ self.loadFullData(data['pos']);
+ } else {
+ self.loadDiffData(data['pos']);
}
- self.lastUpdate = this.request.getResponseHeader('Etag');
- self.loadDiffData(data);
- setTimeout(self.fetchDiff.bind(self), 1);
+ self.lastUpdate = data['last'];
+ setTimeout(self.fetchXhr.bind(self), api_refresh);
} catch(e) {
console.log(e);
throw e;
@@ -427,9 +407,9 @@
if(result.status === 0) {
fail(lang.error_request_failed_connectivity, result);
- } else if (result.status === 304) {
+ } else if(result.status === 304) {
fail(lang.error_request_failed_no_data, result);
- } if (result.statusText) {
+ } else if(result.statusText) {
fail(lang.error_request_failed_status.replace('$status', result.statusText), result);
} else {
fail(lang.error_request_failed, result);
@@ -463,6 +443,9 @@
fail_ajax_generic(data, panel.fail.bind(panel));
}
+function getGeometryFeature(feature) {
+ return getGeometryPair([feature.get('lon'), feature.get('lat')]);
+}
function getGeometryPair(pair) {
return new ol.geom.Point(ol.proj.fromLonLat(pair));
}
@@ -470,10 +453,10 @@
return getGeometryPair([object.longitude / 3600000.0, object.latitude / 3600000.0]);
}
-function markStops(stops, ttss_type, routeStyle) {
+function markStops(stops, featureSource, routeStyle) {
stop_selected_source.clear();
- var style = stops_layer['s' + ttss_type].getStyle().clone();
+ var style = stops_layer['s' + featureSource].getStyle().clone();
if(routeStyle) {
style.getImage().setRadius(5);
@@ -490,8 +473,7 @@
if(stops[i].getId) {
feature = stops[i];
} else {
- prefix = stops[i].substr(0,2);
- feature = stops_source[prefix].getFeatureById(stops[i]);
+ feature = stops_source['s' + featureSource].getFeatureById(stops[i]);
}
if(feature) {
stop_selected_source.addFeature(feature);
@@ -510,43 +492,29 @@
}
function updateStopSource(stops, prefix) {
- var source = stops_source[prefix];
- var mapping = stops_mapping[prefix];
var stop;
for(var i = 0; i < stops.length; i++) {
stop = stops[i];
- if(stop.category === 'other') continue;
- if(stops_ignored.includes(stop.shortName)) continue;
+ var feature = new ol.Feature(stop);
+ feature.setId(stop.id);
+ feature.setGeometry(getGeometryFeature(feature));
- stop.geometry = getGeometry(stop);
- var stop_feature = new ol.Feature(stop);
-
- if(prefix.startsWith('p')) {
- mapping[stop.stopPoint] = stop_feature;
+ if(feature.get('parent') === null) {
+ feature.set('_', 's' + prefix);
+ stops_source['s' + prefix].addFeature(feature);
} else {
- mapping[stop.shortName] = stop_feature;
+ feature.set('_', 'p' + prefix);
+ stops_source['p' + prefix].addFeature(feature);
}
-
- stop_feature.setId(prefix + stop.id);
-
- source.addFeature(stop_feature);
}
}
-function updateStops(stop_type, ttss_type) {
- var methods = {
- 's': 'stops',
- 'p': 'stopPoints',
- };
+function updateStops(ttss_type) {
return $.get(
- ttss_urls[ttss_type] + '/geoserviceDispatcher/services/stopinfo/' + methods[stop_type]
- + '?left=-648000000'
- + '&bottom=-324000000'
- + '&right=648000000'
- + '&top=324000000'
+ api_url + '/stops/?type=' + ttss_type
).done(function(data) {
- updateStopSource(data[methods[stop_type]], stop_type + ttss_type);
+ updateStopSource(data, ttss_type);
}).fail(fail_ajax);
}
@@ -584,41 +552,34 @@
if(feature_xhr) feature_xhr.abort();
if(feature_timer) clearTimeout(feature_timer);
- var featureId = feature.getId();
- var ttss_type = featureId.substr(0, 1);
+ var featureDiscriminator = feature.get('_');
+ var featureType = featureDiscriminator.substr(0, 1);
+ var featureSource = featureDiscriminator.substr(1, 1);
+ var featureStatus = feature.get('status');
feature_xhr = $.get(
- ttss_urls[ttss_type] + '/services/tripInfo/tripPassages'
- + '?tripId=' + encodeURIComponent(feature.get('trip'))
- + '&mode=departure'
+ api_url + '/trip/?type=' + featureSource + '&id=' + feature.get('trip')
).done(function(data) {
- if(typeof data.old === "undefined" || typeof data.actual === "undefined") {
- return;
- }
-
deleteChildren(table);
- var all_departures = data.old.concat(data.actual);
var tr;
var stopsToMark = [];
- for(var i = 0, il = all_departures.length; i < il; i++) {
+ for(var i = 0, il = data.length; i < il; i++) {
tr = document.createElement('tr');
- addCellWithText(tr, all_departures[i].actualTime || all_departures[i].plannedTime);
- addCellWithText(tr, all_departures[i].stop_seq_num + '. ' + normalizeName(all_departures[i].stop.name));
+ addCellWithText(tr, data[i].time);
+ addCellWithText(tr, (i+1) + '. ' + normalizeName(data[i].name));
- if(i >= data.old.length) {
- stopsToMark.push('s' + ttss_type + all_departures[i].stop.id);
- }
+ stopsToMark.push(data[i].stop);
- if(i < data.old.length) {
+ if(data[i].seq < feature.get('seq')) {
tr.className = 'active';
- } else if(all_departures[i].status === 'STOPPING') {
+ } else if(data[i].seq == feature.get('seq') && featureStatus < 2) {
tr.className = 'success';
}
table.appendChild(tr);
}
- if(all_departures.length === 0) {
+ if(data.length === 0) {
tr = document.createElement('tr');
table.appendChild(tr);
tr = addCellWithText(tr, lang.no_data);
@@ -626,21 +587,23 @@
tr.className = 'active';
}
- markStops(stopsToMark, ttss_type, true);
+ markStops(stopsToMark, featureSource, true);
feature_timer = setTimeout(function() { vehicleTable(feature, table); }, api_refresh);
}).fail(fail_ajax_popup);
return feature_xhr;
}
-function stopTable(stopType, stopId, table, ttss_type) {
+function stopTable(feature, table) {
if(feature_xhr) feature_xhr.abort();
if(feature_timer) clearTimeout(feature_timer);
+ var featureDiscriminator = feature.get('_');
+ var featureType = featureDiscriminator.substr(0, 1);
+ var featureSource = featureDiscriminator.substr(1, 1);
+
feature_xhr = $.get(
- ttss_urls[ttss_type] + '/services/passageInfo/stopPassages/' + stopType
- + '?' + stopType + '=' + encodeURIComponent(stopId)
- + '&mode=departure'
+ api_url + '/stop/?type=' + featureSource + '&id=' + feature.getId()
).done(function(data) {
deleteChildren(table);
@@ -650,7 +613,7 @@
tr = document.createElement('tr');
addCellWithText(tr, all_departures[i].patternText);
dir_cell = addCellWithText(tr, normalizeName(all_departures[i].direction));
- vehicle = vehicles_info.getParsed(all_departures[i].vehicleId);
+ //vehicle = vehicles_info.getParsed(all_departures[i].vehicleId);
dir_cell.appendChild(displayVehicle(vehicle));
status = parseStatus(all_departures[i]);
status_cell = addCellWithText(tr, status);
@@ -672,13 +635,15 @@
table.appendChild(tr);
}
- feature_timer = setTimeout(function() { stopTable(stopType, stopId, table, ttss_type); }, api_refresh);
+ feature_timer = setTimeout(function() { stopTable(feature, table); }, api_refresh);
}).fail(fail_ajax_popup);
return feature_xhr;
}
function featureClicked(feature) {
- if(feature && !feature.getId()) return;
+ if(!feature || !feature.getId() || !feature.get('_')) {
+ feature = null;
+ }
unstyleSelectedFeatures();
@@ -687,9 +652,13 @@
return;
}
+ var featureDiscriminator = feature.get('_');
+ var featureType = featureDiscriminator.substr(0, 1);
+ var featureSource = featureDiscriminator.substr(1, 1);
+
var div = document.createElement('div');
- var name = normalizeName(feature.get('name'));
+ var name = normalizeName(feature.get('name') ? feature.get('name') : feature.get('line') + ' ' + feature.get('dir'));
var additional;
var table = document.createElement('table');
var thead = document.createElement('thead');
@@ -699,24 +668,20 @@
var tabular_data = true;
- var type = feature.getId().substr(0, 1);
- var full_type = feature.getId().match(/^[a-z]+/)[0];
- var typeName = lang.types[full_type];
+ var typeName = lang.types[featureDiscriminator];
if(typeof typeName === 'undefined') {
typeName = '';
}
// Location
- if(type == 'l') {
+ if(featureType == 'l') {
tabular_data = false;
name = typeName;
typeName = '';
}
// Vehicle
- else if(ttss_types.includes(type)) {
- vehicles[type].select(feature);
-
- var span = displayVehicle(feature.get('vehicle_type'));
+ else if(featureType == 'v') {
+ var span = displayVehicle(feature.get('type'));
additional = document.createElement('p');
if(span.title) {
@@ -730,42 +695,41 @@
addElementWithText(thead, 'th', lang.header_stop);
vehicleTable(feature, tbody);
- vehiclePath(feature);
+ //vehiclePath(feature);
}
// Stop or stop point
- else if(['s', 'p'].includes(type)) {
- var ttss_type = feature.getId().substr(1, 1);
- if(type == 's') {
+ else if(['s', 'p'].includes(featureType)) {
+ if(featureType == 's') {
var second_type = lang.departures_for_buses;
- var mapping = stops_mapping['sb'];
+ var source = stops_source['sb'];
- if(ttss_type == 'b') {
+ if(featureSource == 'b') {
second_type = lang.departures_for_trams;
- mapping = stops_mapping['st'];
+ source = stops_source['st'];
}
- stopTable('stop', feature.get('shortName'), tbody, ttss_type);
+ stopTable(feature, tbody);
- if(mapping[feature.get('shortName')]) {
+ var second = source.getFeatureById(feature.get('id'));
+ if(second) {
additional = document.createElement('p');
additional.className = 'small';
addElementWithText(additional, 'a', second_type).addEventListener(
'click',
function() {
- featureClicked(mapping[feature.get('shortName')]);
+ featureClicked(second);
}
);
}
} else {
- stopTable('stopPoint', feature.get('stopPoint'), tbody, ttss_type);
+ stopTable(feature, tbody);
additional = document.createElement('p');
additional.className = 'small';
addElementWithText(additional, 'a', lang.departures_for_stop).addEventListener(
'click',
function() {
- var mapping = stops_mapping['s' + ttss_type];
- featureClicked(mapping[feature.get('shortName')]);
+ featureClicked(stops_source['s' + featureSource].getFeatureById(feature.get('parent')));
}
);
}
@@ -774,8 +738,6 @@
addElementWithText(thead, 'th', lang.header_direction);
addElementWithText(thead, 'th', lang.header_time);
addElementWithText(thead, 'th', lang.header_delay);
-
- markStops([feature], feature.getId().substr(1,1));
} else {
panel.close();
return;
@@ -806,22 +768,23 @@
if(tabular_data) {
div.appendChild(table);
- hash.set(feature.getId());
}
showOnMapFunction();
panel.show(div, function() {
- hash.set('');
-
unstyleSelectedFeatures();
if(path_xhr) path_xhr.abort();
if(feature_xhr) feature_xhr.abort();
if(feature_timer) clearTimeout(feature_timer);
- });
+ }, tabular_data ? featureDiscriminator + feature.getId() : '');
- feature_clicked = feature;
+ if(featureType == 'v') {
+ vehicles[featureSource].select(feature);
+ } else if(['s', 'p'].includes(featureType)) {
+ markStops([feature], featureSource);
+ }
}
function listFeatures(features) {
@@ -834,7 +797,7 @@
addParaWithText(div, lang.select_feature);
- var feature, p, a, full_type, typeName;
+ var feature, p, a, featureDiscriminator, typeName;
for(var i = 0; i < features.length; i++) {
feature = features[i];
@@ -845,18 +808,18 @@
featureClicked(feature);
}}(feature));
- full_type = feature.getId().match(/^[a-z]+/)[0];
- typeName = lang.types[full_type];
+ featureDiscriminator = feature.get('_');
+ typeName = lang.types[featureDiscriminator];
if(typeof typeName === 'undefined') {
typeName = '';
}
- if(feature.get('vehicle_type')) {
- typeName += ' ' + feature.get('vehicle_type').num;
+ if(feature.get('type')) {
+ typeName += ' ' + feature.get('type').num;
}
addElementWithText(a, 'span', typeName).className = 'small';
a.appendChild(document.createTextNode(' '));
- addElementWithText(a, 'span', normalizeName(feature.get('name')));
+ addElementWithText(a, 'span', normalizeName(feature.get('name') ? feature.get('name') : feature.get('line') + ' ' + feature.get('dir')));
div.appendChild(p);
}
@@ -938,20 +901,18 @@
return false;
},
_updateOld: function() {
- if(window.location.hash.match(/^#!t[0-9]{3}$/)) {
- this.go(depotIdToVehicleId(window.location.hash.substr(3), 't'));
- } else if(window.location.hash.match(/^#!b[0-9]{3}$/)) {
- this.go(depotIdToVehicleId(window.location.hash.substr(3), 'b'));
- } else if(window.location.hash.match(/^#![A-Za-z]{2}[0-9]{3}$/)) {
- this.go(depotIdToVehicleId(window.location.hash.substr(2)));
- } else if(window.location.hash.match(/^#!v-?[0-9]+$/)) {
- this.go('t' + window.location.hash.substr(3));
+ if(window.location.hash.match(/^#![bt][0-9]{3}$/)) {
+ this.go('v' + window.location.hash.substr(2));
+ } else if(window.location.hash.match(/^#![RHrh][A-Za-z][0-9]{3}$/)) {
+ this.go('vt'+ window.location.hash.substr(4));
+ } else if(window.location.hash.match(/^#![BDPbdp][A-Za-z][0-9]{3}$/)) {
+ this.go('vb'+ window.location.hash.substr(4));
}
},
ready: function() {
this._updateOld();
this.changed();
- window.addEventListener('hashchange', this.changed, false);
+ window.addEventListener('hashchange', this.changed.bind(this), false);
},
go: function(id) {
this._ignoreChange = false;
@@ -968,14 +929,13 @@
}
var feature = null;
+ var source = null;
var vehicleId = null;
var stopId = null;
- if(window.location.hash.match(/^#![tb]-?[0-9]+$/)) {
- vehicleId = window.location.hash.substr(2);
- } else if(window.location.hash.match(/^#![sp]-?[0-9]+$/)) {
- stopId = window.location.hash.substr(2,1) + 't' + window.location.hash.substr(3);
- } else if(window.location.hash.match(/^#![sp][tb]-?[0-9]+$/)) {
+ if(window.location.hash.match(/^#!v[tb][0-9]+$/)) {
+ vehicleId = window.location.hash.substr(3);
+ } else if(window.location.hash.match(/^#![sp][tb][0-9a-z_]+$/)) {
stopId = window.location.hash.substr(2);
} else if(window.location.hash.match(/^#!f$/)) {
find.open(panel);
@@ -983,10 +943,9 @@
}
if(vehicleId) {
- vehicles[vehicleId.substr(0, 1)].select(vehicleId);
- return true;
+ feature = vehicles[vehicleId.substr(0,1)].source.getFeatureById(vehicleId.substr(1));
} else if(stopId) {
- feature = stops_source[stopId.substr(0,2)].getFeatureById(stopId);
+ feature = stops_source[stopId.substr(0,2)].getFeatureById(stopId.substr(2));
}
featureClicked(feature);
@@ -1179,15 +1138,10 @@
map.getView().on('change:resolution', change_resolution);
change_resolution();
- var future_requests = [
- vehicles_info.update(),
- ];
+ var future_requests = [];
ttss_types.forEach(function(type) {
- vehicles_info.addWatcher(vehicles[type].typesUpdated.bind(vehicles[type]));
future_requests.push(vehicles[type].fetch());
- });
- stops_type.forEach(function(type) {
- future_requests.push(updateStops(type.substr(0,1), type.substr(1,1)));
+ future_requests.push(updateStops(type));
});
hash = new Hash();
diff --git a/proxy_bus.php b/proxy_bus.php
deleted file mode 100644
index 6486943..0000000
--- a/proxy_bus.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
-$base_proxy = 'http://ttss.mpk.krakow.pl/internetservice';
-require('proxy_common.php');
diff --git a/proxy_common.php b/proxy_common.php
deleted file mode 100644
index cbc5350..0000000
--- a/proxy_common.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-if(!isset($base_proxy)) {
- echo 'This script is for inclusion only.';
- die();
-}
-
-function is_number($str) {
- $str = (string)$str;
-
- return
- ctype_digit($str)
- OR
- (
- substr($str, 0, 1) == '-'
- AND
- ctype_digit(substr($str, 1))
- );
-}
-
-$method = [
- '/services/lookup/autocomplete/json' => [
- 'query' => function() { return TRUE; },
- ],
- '/services/passageInfo/stopPassages/stop' => [
- 'stop' => 'ctype_alnum',
- 'mode' => function($mode) { return in_array($mode, ['arrival', 'departure']); },
- #'startTime' => 'ctype_digit',
- #'timeFrame' => 'ctype_digit',
- ],
- '/services/passageInfo/stopPassages/stopPoint' => [
- 'stopPoint' => 'is_number',
- 'mode' => function($mode) { return in_array($mode, ['arrival', 'departure']); },
- #'startTime' => 'ctype_digit',
- #'timeFrame' => 'ctype_digit',
- ],
- '/services/tripInfo/tripPassages' => [
- 'tripId' => 'ctype_digit',
- 'mode' => function($mode) { return in_array($mode, ['arrival', 'departure']); },
- #'vehicleId' => 'ctype_digit',
- ],
- '/services/routeInfo/routeStops' => [
- 'routeId' => 'ctype_alnum',
- ],
- '/services/stopInfo/stop' => [
- 'stop' => 'is_number',
- ],
- '/services/stopInfo/stopPoint' => [
- 'stopPoint' => 'is_number',
- ],
-
- '/geoserviceDispatcher/services/stopinfo/stops' => [
- 'left' => 'is_number',
- 'bottom' => 'is_number',
- 'right' => 'is_number',
- 'top' => 'is_number',
- ],
- '/geoserviceDispatcher/services/stopinfo/stopPoints' => [
- 'left' => 'is_number',
- 'bottom' => 'is_number',
- 'right' => 'is_number',
- 'top' => 'is_number',
- ],
- '/geoserviceDispatcher/services/pathinfo/route' => [
- 'id' => 'is_number',
- 'direction' => 'is_number',
- ],
- '/geoserviceDispatcher/services/pathinfo/vehicle' => [
- 'id' => 'is_number',
- ],
- '/geoserviceDispatcher/services/vehicleinfo/vehicles' => [
- 'lastUpdate' => 'ctype_digit',
- 'positionType' => function($type) { return in_array($type, ['CORRECTED', 'RAW']); },
- 'colorType' => function($type) { return in_array($type, ['ROUTE_BASED']); },
- ],
-];
-$rewrite = [
- '/lookup/autocomplete/json' => '/services/lookup/autocomplete/json',
- '/passageInfo/stopPassages/stop' => '/services/passageInfo/stopPassages/stop',
- '/routeInfo/routeStops' => '/services/routeInfo/routeStops',
- '/internetservice/geoserviceDispatcher/services/pathinfo/vehicle' => '/geoserviceDispatcher/services/pathinfo/vehicle',
-];
-
-$path = $_SERVER['PATH_INFO'];
-
-if(isset($rewrite[$path])) {
- $path = $rewrite[$path];
-}
-
-if(!isset($method[$path])) {
- header('HTTP/1.1 403 Forbidden');
- die('Forbidden');
-}
-
-$parameters = [];
-
-foreach($method[$path] as $name => $filter) {
- if(!isset($_GET[$name])) {
- header('HTTP/1.1 403 Forbidden');
- die('Parameter '.$name.' is required');
- }
-
- if(!$filter($_GET[$name])) {
- header('HTTP/1.1 403 Forbidden');
- die('Parameter '.$name.' has invalid value');
- }
-
- $parameters[$name] = $_GET[$name];
-}
-
-$result = @file_get_contents($base_proxy . $path . '?' . http_build_query($parameters));
-if(!$result OR $http_response_header[0] != 'HTTP/1.1 200 OK') {
- header('HTTP/1.1 503 Service Unavailable');
- if(isset($http_response_header[0])) {
- die($http_response_header[0]);
- } else {
- die('Unknown error');
- }
-}
-
-header('Content-Type: application/json');
-echo $result;
diff --git a/proxy_tram.php b/proxy_tram.php
deleted file mode 100644
index 40e04ee..0000000
--- a/proxy_tram.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-$base_proxy = 'http://www.ttss.krakow.pl/internetservice';
-if($_GET['positionType'] ?? NULL === 'RAW') {
- $_GET['positionType'] = 'CORRECTED';
-}
-require('proxy_common.php');
diff --git a/stops.php b/stops.php
deleted file mode 100644
index 16eab82..0000000
--- a/stops.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-include(__DIR__.'/stops/common.php');
-include(__DIR__.'/stops/stops.php');
-
-try {
- // Reject invalid input
- if(!isset($_GET['query'])) throw new UnexpectedValueException();
- if(empty($_GET['query'])) throw new UnexpectedValueException();
- if(strlen($_GET['query']) > 50) throw new UnexpectedValueException();
-
- // Initialize a DB connection an a query
- $pdo = new PDO('sqlite:stops/stops.db', NULL, NULL, array(
- PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
- ));
- $st = $pdo->prepare('SELECT DISTINCT id FROM stop_search WHERE word LIKE ? AND id LIKE \'t%\'');
-
- // Split stop name into words
- $words = split_stop_name($_GET['query']);
-
- // Find matching stops (their IDs)
- $ids = NULL;
- foreach($words as $word) {
- if(empty($word)) continue;
-
- // Find stop IDs with names matching the word
- $st->execute(array($word.'%'));
- $results = $st->fetchAll(PDO::FETCH_COLUMN);
- $st->closeCursor();
-
- if(is_array($ids)) {
- // Merge results with list for previous words
- $ids = array_intersect($ids, $results);
- } else {
- // First search - initialize results list
- $ids = $results;
- }
-
- // No results will be found
- if(count($ids) == 0) break;
- }
-
- // Close a DB connection
- unset($st, $pdo);
-
- // No query was executed - return empty list
- if(!is_array($ids)) throw new UnexpectedValueException();
-
- // Build a structure for the UI
- $stop_list = [];
- $query_lower = mb_strtolower($_GET['query'], 'UTF-8');
- foreach($ids as $id) {
- $stop_list[] = [
- 'id' => $id,
- 'name' => $stops[$id],
- 'type' => 'stop',
- 'relevance' => similar_text(
- $query_lower,
- mb_strtolower($stops[$id], 'UTF-8')
- )
- ];
- }
-
- // Sort stops by relevance
- usort($stop_list, function($a, $b) {
- $rel = $b['relevance'] - $a['relevance'];
- if($rel == 0) return strcasecmp($a['name'], $b['name']);
- return $rel;
- });
-
- // Return JSON
- echo json_encode($stop_list);
-} catch(UnexpectedValueException $e) {
- echo '[]';
-} catch(Exception $e) {
- header('HTTP/1.1 503 Service Unavailable');
- echo $e->getMessage();
-}
diff --git a/stops/common.php b/stops/common.php
deleted file mode 100644
index 8cf4642..0000000
--- a/stops/common.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-setlocale(LC_CTYPE, 'pl_PL.UTF-8');
-
-function split_stop_name($string) {
- $string = strtolower(iconv('utf-8', 'ascii//TRANSLIT', $string));
- $words = preg_split('/\\W+/', $string);
-
- foreach($words as &$word) {
- $two = substr($word, 0, 2);
- if($two == 'os') $word = 'os';
- elseif($two == 'al') $word = 'al';
- elseif($two == 'sw') $word = 'sw';
- }
- unset($word);
-
- return array_values($words);
-}
-
-function normalize_name($string) {
- return strtr(strtr($string, ['.' => '. ']), [' ' => ' ']);
-}
-
-function normalize_name_cmp($string) {
- return normalize_name(mb_strtolower($string, 'UTF-8'));
-}
diff --git a/stops/download_stops.php b/stops/download_stops.php
deleted file mode 100644
index 4c689b6..0000000
--- a/stops/download_stops.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-if(php_sapi_name() !== 'cli') die();
-
-function fetchStops($url) {
- $json = file_get_contents($url);
- $elements = json_decode($json, 1);
- $stops = [];
- foreach($elements['stops'] as $element) {
- if($element['category'] == 'other') continue;
- $stops[$element['shortName']] = $element['name'];
- }
- asort($stops);
- return $stops;
-}
-
-function printStops($stops, $prefix) {
- foreach($stops as $id => $stop) {
- echo ' \''.$prefix.str_pad($id."'", 5, ' ', STR_PAD_RIGHT).' => '.var_export($stop, TRUE).','."\n";
- }
-}
-
-$stops_tram = fetchStops('http://www.ttss.krakow.pl/internetservice/geoserviceDispatcher/services/stopinfo/stops?left=-648000000&bottom=-324000000&right=648000000&top=324000000');
-$stops_bus = fetchStops('http://91.223.13.70/internetservice/geoserviceDispatcher/services/stopinfo/stops?left=-648000000&bottom=-324000000&right=648000000&top=324000000');
-
-echo '<?php'."\n";
-echo '$stops = array ('."\n";
-printStops($stops_tram, 't');
-echo "\n";
-printStops($stops_bus, 'b');
-echo ');'."\n";
diff --git a/stops/index.php b/stops/index.php
deleted file mode 100644
index eca9c39..0000000
--- a/stops/index.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-include('common.php');
-include('stops.php');
-
-try {
- // Reject invalid input
- if(!isset($_GET['query'])) throw new UnexpectedValueException();
- if(empty($_GET['query'])) throw new UnexpectedValueException();
- if(strlen($_GET['query']) > 50) throw new UnexpectedValueException();
-
- // Split stop name into words
- $words = split_stop_name($_GET['query']);
- $find_ondemand = in_array('nz', $words);
-
- // Initialize a DB connection and a query
- $pdo = new PDO('sqlite:stops.db', NULL, NULL, array(
- PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
- ));
- $st = $pdo->prepare('SELECT DISTINCT id FROM stop_search WHERE word LIKE ?'.($find_ondemand ? '' : ' AND word != \'nz\'').' ORDER BY id DESC');
-
- // Find matching stops (their IDs)
- $ids = NULL;
- foreach($words as $word) {
- if(empty($word)) continue;
-
- // Find stop IDs with names matching the word
- $st->execute(array($word.'%'));
- $results = $st->fetchAll(PDO::FETCH_COLUMN);
- $st->closeCursor();
-
- if(is_array($ids)) {
- // Merge results with list for previous words
- $ids = array_intersect($ids, $results);
- } else {
- // First search - initialize results list
- $ids = $results;
- }
-
- // No results will be found
- if(count($ids) == 0) break;
- }
-
- // Close a DB connection
- unset($st, $pdo);
-
- // No query was executed - return empty list
- if(!is_array($ids)) throw new UnexpectedValueException();
-
- // Build a structure for the UI
- $stop_list = [];
- $query_lower = normalize_name_cmp($_GET['query']);
- foreach($ids as $id) {
- $letters = similar_text(
- $query_lower,
- normalize_name_cmp($stops[$id]),
- $percent
- );
- $percent += $letters * 100;
- // -5 due to UTF-8
- if(substr($stops[$id], -5) == '(nż)' && !$find_ondemand) {
- $percent /= 2;
- }
- $stop_list[] = [
- 'id' => $id,
- 'name' => normalize_name($stops[$id]),
- 'type' => 'stop',
- 'relevance' => $percent,
- ];
- }
-
- // Sort stops by relevance
- usort($stop_list, function($a, $b) {
- $rel = $b['relevance'] - $a['relevance'];
- if($rel == 0) return strcasecmp($a['name'], $b['name']);
- return $rel;
- });
-
- // Return JSON
- header('Content-Type: application/json');
- echo json_encode($stop_list);
-} catch(UnexpectedValueException $e) {
- header('Content-Type: application/json');
- echo '[]';
-} catch(Exception $e) {
- header('HTTP/1.1 503 Service Unavailable');
- echo $e->getMessage();
-}
diff --git a/stops/populate_db.php b/stops/populate_db.php
deleted file mode 100644
index 845ec95..0000000
--- a/stops/populate_db.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-if(php_sapi_name() !== 'cli') die();
-
-include('stops.php');
-include('common.php');
-
-$pdo = new PDO('sqlite:stops_temp.db');
-
-$pdo->query('DROP TABLE IF EXISTS stop_search');
-$pdo->query('CREATE TABLE stop_search (
- word VARCHAR(60),
- id VARCHAR(255)
-)');
-
-function processStops($st, $stops) {
- foreach($stops as $id => $name) {
- foreach(split_stop_name($name) as $word) {
- $st->execute([$word, $id]);
- $st->closeCursor();
- }
- }
-}
-
-$pdo->beginTransaction();
-$st = $pdo->prepare('INSERT INTO stop_search (word, id) VALUES (?, ?)');
-processStops($st, $stops);
-$pdo->commit();
-
-$pdo->query('CREATE INDEX stop_search_word ON stop_search (word COLLATE NOCASE)');
-
-rename('stops_temp.db', 'stops.db');
diff --git a/stops/stops.db b/stops/stops.db
deleted file mode 100644
index dc53950..0000000
--- a/stops/stops.db
+++ /dev/null
Binary files differ
diff --git a/stops/stops.php b/stops/stops.php
deleted file mode 100644
index cb3baee..0000000
--- a/stops/stops.php
+++ /dev/null
@@ -1,1799 +0,0 @@
-<?php
-$stops = array (
- 't113' => 'AWF',
- 't462' => 'Agencja Kraków Wschód',
-# 't134' => 'Balicka Wiadukt', # nowa nazwa # 't136' => 'Bronowice Wiadukt',
- 't449' => 'Bardosa',
-# 't75' => 'Basztowa LOT', # nowa nazwa # 't3032' => 'Stary Kleparz',
- 't78' => 'Batorego',
- 't130' => 'Białucha',
- 't867' => 'Bieńczycka',
- 't630' => 'Bieżanowska',
- 't84' => 'Biprostal',
- 't461' => 'Blokowa',
-# 't2798' => 'Boisko Kabel', # dawny tymczasowy
- 't747' => 'Borek Fałęcki',
- 't824' => 'Borek Fałęcki I',
- 't612' => 'Borsucza',
- 't451' => 'Brama nr 4 (nż)',
- 't453' => 'Brama nr 5 (nż)',
- 't61' => 'Bratysławska',
- 't89' => 'Bronowice',
- 't135' => 'Bronowice Małe',
- 't136' => 'Bronowice Wiadukt',
- 't613' => 'Brożka (nż)',
- 't409' => 'Centralna',
-# 't3039' => 'Centrum Kongresowe ICE', # nowa nazwa # 't3338' => 'Rondo Grunwaldzkie',
- 't2691' => 'Chmieleniec',
- 't87' => 'Cichy Kącik',
- 't3037' => 'Cienista',
-# 't2549' => 'Cmentarz Grębałów Zachód', # nowa nazwa # 't2685' => 'Jarzębiny',
- 't621' => 'Cmentarz Podgórski',
- 't124' => 'Cmentarz Rakowicki',
-# 't318' => 'Cracovia', # nowa nazwa # 't3141' => 'Muzeum Narodowe',
- 't129' => 'Cystersów',
- 't3038' => 'Czerwone Maki P+R',
- 't407' => 'Czyżyny',
- 't392' => 'DH Wanda',
- 't915' => 'Dajwór', # nieczynny - linia muzealna
- 't435' => 'Darwina',
- 't632' => 'Dauna',
- 't388' => 'Dunikowskiego',
- 't623' => 'Dworcowa',
-# 't131' => 'Dworzec Główny', # nowa nazwa # 't3242' => 'Teatr Słowackiego',
- 't1173' => 'Dworzec Główny Tunel',
-# 't8567' => 'Dworzec Główny Tunel', # duplikat # 't1173' => 'Dworzec Główny Tunel',
- 't2608' => 'Dworzec Główny Zachód',
- 't2870' => 'Dworzec Płaszów Estakada',
- 't70' => 'Dworzec Towarowy',
-# 't6685' => 'Dworzec Towarowy', # duplikat # 't70' => 'Dworzec Towarowy',
- 't370' => 'Dąbie',
- 't464' => 'Elektromontaż (nż)',
- 't368' => 'Fabryczna',
- 't322' => 'Filharmonia',
- 't1051' => 'Fort Mogiła (nż)',
- 't367' => 'Francesco Nullo',
- 't560' => 'Gromadzka',
-# 't585' => 'Grota Roweckiego', # nowa nazwa # 't2687' => 'Grota-Roweckiego',
- 't2687' => 'Grota-Roweckiego',
- 't1049' => 'Głowackiego',
- 't363' => 'Hala Targowa',
-# 't6990' => 'Hala Targowa', # duplikat # 't363' => 'Hala Targowa',
- 't2685' => 'Jarzębiny',
- 't452' => 'Jeżynowa',
- 't319' => 'Jubilat',
- 't624' => 'Kabel',
- 't2690' => 'Kampus UJ',
- 't576' => 'Kapelanka',
- 't429' => 'Klasztorna',
- 't382' => 'Kleeberga',
- 't946' => 'Klimeckiego',
- 't584' => 'Kobierzyńska',
-# 't401' => 'Kocmyrzowska', # nowa nazwa # 't3037' => 'Cienista',
- 't457' => 'Koksochemia (nż)',
- 't459' => 'Kombinat',
- 't313' => 'Komorowskiego',
- 't450' => 'Kopiec Wandy',
-# 't2536' => 'Kordylewskiego', # nowa nazwa # 't2859' => 'Teatr Variété',
- 't571' => 'Korona',
-# 't2803' => 'Kraków Arena Al. Pokoju', # nowa nazwa # 't2871' => 'TAURON Arena Kraków Al. Pokoju',
-# 't959' => 'Kraków Plaza', # nowa nazwa # 't3033' => 'Plaza',
- 't63' => 'Krowodrza Górka',
-# 't7612' => 'Krowodrza Górka', # duplikat # 't63' => 'Krowodrza Górka',
- 't567' => 'Kuklińskiego',
-# 't744' => 'Kurdwanów', # nowa nazwa # 't3176' => 'Kurdwanów P+R',
- 't3176' => 'Kurdwanów P+R',
-# 't7389' => 'Kurdwanów pętla', # nowa nazwa # 't744' => 'Kurdwanów',
-# 't2537' => 'Lema', # nowa nazwa # 't2803' => 'Kraków Arena Al. Pokoju'
- 't569' => 'Limanowskiego',
- 't2686' => 'Lipińskiego',
- 't561' => 'Lipska',
- 't126' => 'Lubicz',
- 't930' => 'M1 Al. Pokoju',
-# 't1263' => 'Mały Płaszów', # nowa nazwa # 't3310' => 'Mały Płaszów P+R',
- 't3310' => 'Mały Płaszów P+R',
- 't454' => 'Meksyk (nż)',
- 't362' => 'Miodowa',
-# 't6989' => 'Miodowa', # duplikat # 't362' => 'Miodowa',
- 't375' => 'Mistrzejowice',
- 't2538' => 'Miśnieńska',
-# 't574' => 'Most Grunwaldzki', # nowa nazwa # 't3039' => 'Centrum Kongresowe ICE',
- 't460' => 'Mrozowa',
- 't2726' => 'Muzeum Inżynierii Miejskiej', # nieczynny - linia muzealna
- 't2811' => 'Muzeum Lotnictwa',
- 't3141' => 'Muzeum Narodowe',
- 't2688' => 'Norymberska',
-# 't372' => 'Nowohucka', # nowa nazwa # 't3041' => 'Rondo 308. Dywizjonu',
- 't715' => 'Nowosądecka',
-# 't2580' => 'Nowy Bieżanów', # nowa nazwa # 't3175' => 'Nowy Bieżanów P+R',
- 't3175' => 'Nowy Bieżanów P+R',
- 't71' => 'Nowy Kleparz',
- 't2582' => 'Nowy Prokocim',
- 't369' => 'Ofiar Dąbia',
- 't823' => 'Oleandry',
- 't361' => 'Orzeszkowej',
- 't413' => 'Os.Kolorowe',
- 't424' => 'Os.Na Skarpie',
- 't378' => 'Os.Piastów',
- 't418' => 'Os.Zgody',
- 't377' => 'Os.Złotego Wieku',
- 't466' => 'PH',
- 't614' => 'PT',
- 't960' => 'Park Jordana',
- 't716' => 'Piaski Nowe',
- 't379' => 'Piasta Kołodzieja',
- 't570' => 'Plac Bohaterów Getta',
-# 't7207' => 'Plac Bohaterów Getta', # duplikat # 't570' => 'Plac Bohaterów Getta',
-# 't414' => 'Plac Centralny', # nowa nazwa # 't2744' => 'Plac Centralny im. R.Reagana',
- 't2744' => 'Plac Centralny im. R.Reagana',
- 't79' => 'Plac Inwalidów',
- 't360' => 'Plac Wolnica', # nieczynny - przebudowa ul. Krakowskiej
- 't1360' => 'Plac Wszystkich Świętych',
- 't3033' => 'Plaza',
- 't458' => 'Pleszów',
- 't357' => 'Poczta Główna',
- 't3158' => 'Podgórze SKA',
- 't73' => 'Politechnika',
-# 't6689' => 'Politechnika', # duplikat # 't73' => 'Politechnika',
-# 't568' => 'Powstańców Wielkopolskich', # nowa nazwa # 't3158' => 'Podgórze SKA',
-# 't7204' => 'Powstańców Wielkopolskich', # duplikat # 't568' => 'Powstańców Wielkopolskich',
- 't637' => 'Prokocim',
-# 't7279' => 'Prokocim', # duplikat # 't637' => 'Prokocim',
- 't682' => 'Prokocim Szpital',
-# 't69' => 'Prądnicka', # nowa nazwa # 't3036' => 'Szpital Narutowicza',
-# 't6684' => 'Prądnicka', # duplikat # 't69' => 'Prądnicka',
- 't72' => 'Pędzichów',
- 't128' => 'Rakowicka (nż)',
- 't320' => 'Reymana',
- 't3041' => 'Rondo 308. Dywizjonu',
- 't408' => 'Rondo Czyżyńskie',
- 't3338' => 'Rondo Grunwaldzkie',
- 't365' => 'Rondo Grzegórzeckie',
-# 't6992' => 'Rondo Grzegórzeckie', # duplikat # 't365' => 'Rondo Grzegórzeckie',
- 't2539' => 'Rondo Hipokratesa',
-# 't419' => 'Rondo Kocmyrzowskie', # nowa nazwa # 't2745' => 'Rondo Kocmyrzowskie im. Ks. Gorzelanego',
- 't2745' => 'Rondo Kocmyrzowskie im. Ks. Gorzelanego',
- 't610' => 'Rondo Matecznego',
- 't125' => 'Rondo Mogilskie',
-# 't6747' => 'Rondo Mogilskie', # duplikat # 't125' => 'Rondo Mogilskie',
- 't383' => 'Rondo Piastowskie',
-# 't587' => 'Rostworowskiego', # nowa nazwa # 't589' => 'Ruczaj',
- 't589' => 'Ruczaj',
-# 't586' => 'Ruczaj I', # nowa nazwa # 't585' => 'Grota Roweckiego',
- 't1262' => 'Rzebika',
- 't611' => 'Rzemieślnicza',
- 't311' => 'Salwator',
- 't615' => 'Sanktuarium Bożego Miłosierdzia', # nieczynny - budowa Trasy Łagiewnickiej
- 't572' => 'Smolki',
- 't746' => 'Solvay',
- 't358' => 'Starowiślna',
-# 't6985' => 'Starowiślna', # duplikat # 't358' => 'Starowiślna',
- 't3032' => 'Stary Kleparz',
- 't112' => 'Stella-Sawickiego',
- 't359' => 'Stradom',
- 't423' => 'Struga',
- 't2548' => 'Suche Stawy',
- 't3036' => 'Szpital Narutowicza',
- 't575' => 'Szwedzka',
- 't577' => 'Słomiana',
- 't2871' => 'TAURON Arena Kraków Al. Pokoju (nż)',
- 't3040' => 'TAURON Arena Kraków Wieczysta',
- 't77' => 'Teatr Bagatela',
- 't420' => 'Teatr Ludowy',
- 't3242' => 'Teatr Słowackiego',
- 't2859' => 'Teatr Variété',
- 't681' => 'Teligi',
- 't127' => 'Uniwersytet Ekonomiczny',
- 't321' => 'Uniwersytet Jagielloński',
- 't88' => 'Uniwersytet Pedagogiczny',
- 't83' => 'Urzędnicza',
- 't463' => 'Walcownia',
- 't325' => 'Wawel',
- 't2543' => 'Wańkowicza',
- 't133' => 'Wesele',
- 't434' => 'Wiadukty',
-# 't114' => 'Wieczysta', # nowa nazwa # 't3040' => 'TAURON Arena Kraków Wieczysta',
- 't718' => 'Witosa',
-# 't7362' => 'Witosa', # duplikat # 't718' => 'Witosa',
- 't634' => 'Wlotowa',
- 't442' => 'Wzgórza Krzesławickie',
- 't1154' => 'Zabłocie',
- 't465' => 'Zajezdnia Nowa Huta',
- 't679' => 'Ćwiklińskiej',
- 't922' => 'Łagiewniki',
-# 't7584' => 'Łagiewniki', # duplikat # 't922' => 'Łagiewniki',
- 't2821' => 'Łagiewniki ZUS',
-# 't324' => 'Św. Gertrudy', # duplikat # 't2741' => 'Św.Gertrudy',
-# 't364' => 'Św. Wawrzyńca', # duplikat # 't2742' => 'Św.Wawrzyńca',
-# 't8508' => 'Św. Wawrzyńca', # duplikat # 't364' => 'Św. Wawrzyńca',
- 't2741' => 'Św.Gertrudy',
- 't2742' => 'Św.Wawrzyńca',
-
- 'b3111' => 'AGH / UR',
- 'b113' => 'AWF',
- 'b1328' => 'Agatowa (nż)',
- 'b462' => 'Agencja Kraków Wschód (nż)',
- 'b117' => 'Akacjowa',
- 'b2573' => 'Albatrosów',
- 'b415' => 'Aleja Przyjaźni',
- 'b416' => 'Aleja Róż',
- 'b2625' => 'Aleja Waszyngtona (nż)',
-# 'b235' => 'Aleksandrowice', # nowa nazwa # 'b3388' => 'Aleksandrowice Centrum',
- 'b3388' => 'Aleksandrowice Centrum',
- 'b236' => 'Aleksandrowice Osiedle (nż)',
- 'b3150' => 'Aleksandrowicza (nż)',
- 'b1122' => 'Aleksandry',
- 'b437' => 'Architektów',
- 'b3337' => 'Archiwum UMK (nż)',
- 'b403' => 'Arka',
- 'b2533' => 'Armii Krajowej',
- 'b54' => 'Azory',
- 'b145' => 'Baba Jaga (nż)',
- 'b767' => 'Babińskiego',
- 'b1083' => 'Baczyńskiego (nż)',
- 'b2565' => 'Bagienna',
- 'b2865' => 'Bagry',
- 'b221' => 'Balice Autostrada (nż)',
- 'b2635' => 'Balice Grzybów (nż)',
- 'b226' => 'Balice I (nż)',
-# 'b223' => 'Balice Instytut (nż)', # nowa nazwa # 'b3385' => 'Balice Instytut Zootechniki (nż)',
- 'b3385' => 'Balice Instytut Zootechniki (nż)',
- 'b2636' => 'Balice Leśna (nż)',
- 'b3012' => 'Balice Medweckiego (nż)',
-# 'b892' => 'Balice OSP (nż)', # nowa nazwa # 'b3415' => 'Balice Remiza (nż)',
- 'b3013' => 'Balice Olszanica Bory',
- 'b3415' => 'Balice Remiza (nż)',
- 'b222' => 'Balice Szkoła',
- 'b2912' => 'Balice Winna Góra (nż)',
- 'b2796' => 'Banacha',
- 'b541' => 'Bartnicza (nż)',
- 'b2551' => 'Barwna (nż)',
- 'b703' => 'Barycz (nż)',
- 'b2528' => 'Batalionu \'Skała\' AK',
- 'b78' => 'Batorego',
- 'b2962' => 'Batowice Dłubnia',
- 'b352' => 'Batowice Kapliczka',
- 'b2959' => 'Batowice Spławy (nż)',
- 'b3121' => 'Bazarowa',
- 'b578' => 'Bałuckiego (nż)',
- 'b2633' => 'Belwederczyków (nż)',
- 'b2518' => 'Benedyktowicza (nż)',
- 'b923' => 'Beskidzka',
- 'b1271' => 'Białoprądnicka',
- 'b130' => 'Białucha',
- 'b973' => 'Biały Kościół (nż)',
- 'b330' => 'Bibice (nż)',
- 'b2783' => 'Bibice Cmentarz (nż)',
- 'b2960' => 'Bibice Kościuszki',
- 'b3361' => 'Bibice Mokra',
-# 'b2995' => 'Bibice Na Czekaj', # nowa nazwa # 'b3361' => 'Bibice Mokra',
- 'b2961' => 'Bibice Rynek',
- 'b260' => 'Bielany',
- 'b262' => 'Bielany Klasztor (nż)',
- 'b3102' => 'Bielany Obwodnica (nż)',
- 'b261' => 'Bielany Szkoła',
- 'b265' => 'Bielańska (nż)',
- 'b272' => 'Bielańskie Skały (nż)',
- 'b867' => 'Bieńczycka',
- 'b630' => 'Bieżanowska',
- 'b667' => 'Bieżanów',
- 'b3183' => 'Bieżanów Drożdżownia SKA',
- 'b2725' => 'Bieżanów Granica Miasta',
- 'b672' => 'Bieżanów Kaim',
- 'b665' => 'Bieżanów Pomnik',
- 'b670' => 'Bieżanów Potrzask',
- 'b663' => 'Bieżanów Szkoła',
- 'b662' => 'Bieżanów Trafo', # nieczynny - remont ul. Bieżanowskiej
- 'b84' => 'Biprostal',
- 'b122' => 'Biskupa Prandoty',
-# 'b3244' => 'Biskupia', # tymczasowy - przebudowa linii do Bronowic
- 'b3220' => 'Biskupice I (nż)',
- 'b3221' => 'Biskupice II (nż)',
- 'b2574' => 'Biskupińska (nż)',
- 'b461' => 'Blokowa (nż)',
- 'b2597' => 'Bochenka (nż)',
- 'b34' => 'Bociana',
- 'b3381' => 'Bodzów',
- 'b592' => 'Bogucianka',
- 'b1258' => 'Bojki',
-# 'b208' => 'Bolechowice', # nowa nazwa # 'b3413' => 'Bolechowice Centrum',
- 'b3413' => 'Bolechowice Centrum',
- 'b2917' => 'Bolechowice Drogi (nż)',
- 'b2916' => 'Bolechowice Krzewiny (nż)',
- 'b2915' => 'Bolechowice Zielona (nż)',
- 'b2920' => 'Bolechowice Zielona Mała (nż)',
- 'b2561' => 'Bolesława Śmiałego',
- 'b3210' => 'Boleń Pętla',
- 'b1255' => 'Bonarka',
- 'b810' => 'Bora-Komorowskiego',
- 'b747' => 'Borek Fałęcki',
- 'b1118' => 'Borek Szlachecki I (nż)',
- 'b1117' => 'Borek Szlachecki II (nż)',
- 'b753' => 'Borkowska',
- 'b612' => 'Borsucza',
- 'b2532' => 'Bosaków',
-# 'b1071' => 'Bosutów Dziekanowice (nż)', # nowa nazwa # 'b3442' => 'Węgrzce B1 (nż)',
- 'b2769' => 'Bosutów Krakowska (nż)',
- 'b3211' => 'Bosutów Remiza',
- 'b453' => 'Brama nr 5 (nż)',
- 'b530' => 'Branice (nż)',
- 'b513' => 'Branice Na Dole (nż)',
- 'b2652' => 'Branice Ośrodek Zdrowia (nż)',
- 'b512' => 'Branice Pagórek (nż)',
- 'b531' => 'Branice Szkoła',
- 'b61' => 'Bratysławska',
- 'b1165' => 'Brodowicza',
- 'b123' => 'Brogi',
- 'b89' => 'Bronowice',
- 'b135' => 'Bronowice Małe',
- 'b136' => 'Bronowice Wiadukt',
- 'b19' => 'Bronowice Wielkie',
-# 'b638' => 'Brzegi', # nowa nazwa # 'b3311' => 'Brzegi Pętla',
- 'b639' => 'Brzegi I',
- 'b1294' => 'Brzegi III (nż)',
- 'b3311' => 'Brzegi Pętla',
- 'b3340' => 'Brzegi Użytek Ekologiczny (nż)',
- 'b2648' => 'Brzeska (nż)',
- 'b1016' => 'Brzezie Działki (nż)',
- 'b3209' => 'Brzezie Kluczwody (nż)',
- 'b3049' => 'Brzezie Kościół (nż)',
- 'b1048' => 'Brzezie Kulka (nż)',
- 'b1021' => 'Brzezie Narodowe (nż)',
-# 'b1028' => 'Brzezinka', # nowa nazwa # 'b3417' => 'Brzezinka Kościół',
- 'b3417' => 'Brzezinka Kościół',
- 'b3329' => 'Brzezinka Kuźnia (nż)',
- 'b1029' => 'Brzezinka Skrzyżowanie',
- 'b1027' => 'Brzezinka Zarzecze (nż)',
-# 'b1106' => 'Brzeźnica', # nowa nazwa # 'b3328' => 'Brzeźnica Dworzec',
- 'b3328' => 'Brzeźnica Dworzec',
-# 'b1109' => 'Brzeźnica Kuźnia (nż)', # nowa nazwa # 'b3329' => 'Brzezinka Kuźnia (nż)',
- 'b1108' => 'Brzeźnica Pasieka (nż)',
- 'b2695' => 'Brzoskwinia Góra (nż)',
- 'b240' => 'Brzoskwinia Kamyk (nż)',
- 'b238' => 'Brzoskwinia Koziary (nż)',
- 'b3201' => 'Brzoskwinia Pętla',
- 'b239' => 'Brzoskwinia Sklep',
- 'b3271' => 'Brzozówka Oskarówka',
- 'b3272' => 'Brzozówka Ośrodek',
- 'b2708' => 'Brzyczyna',
- 'b765' => 'Brücknera',
- 'b2780' => 'Budzyń Plaża Główna (nż)',
- 'b2781' => 'Budzyń Zalew Budzyński (nż)',
- 'b2779' => 'Budzyń Zalew na Piaskach (nż)',
- 'b743' => 'Bujaka',
-# 'b881' => 'Buków', # nowa nazwa # 'b3323' => 'Buków Pętla',
- 'b882' => 'Buków Klin (nż)',
- 'b3323' => 'Buków Pętla',
- 'b883' => 'Buków Szkoła (nż)',
- 'b432' => 'Bulwarowa (nż)',
- 'b2603' => 'Bulwarowa Ogródki Działkowe (nż)',
- 'b1346' => 'Bunscha (nż)',
-# 'b2914' => 'Burów (nż)', # nowa nazwa # 'b3414' => 'Burów Balica (nż)',
- 'b3414' => 'Burów Balica (nż)',
- 'b2913' => 'Burów Centrum',
- 'b2627' => 'Bystronia (nż)',
- 'b978' => 'Bębło Lasek (nż)',
- 'b976' => 'Bębło Stara Wieś (nż)',
- 'b977' => 'Bębło Łabajowa (nż)',
- 'b982' => 'Będkowice',
- 'b981' => 'Będkowice Borynia (nż)',
- 'b3007' => 'Będkowice Cmentarz (nż)',
- 'b2869' => 'Będkowice Długa (nż)',
- 'b980' => 'Będkowice Kawiory (nż)',
- 'b979' => 'Będkowice Mosurowa (nż)',
- 'b2700' => 'Będkowice Pętla',
- 'b505' => 'Błonia Kościelnickie (nż)',
- 'b2595' => 'Cechowa (nż)',
- 'b385' => 'Cedyńska',
- 'b409' => 'Centralna',
- 'b2453' => 'Centrum JP II',
-# 'b3039' => 'Centrum Kongresowe ICE', # nowa nazwa # 'b3338' => 'Rondo Grunwaldzkie',
- 'b40' => 'Chabrowa',
- 'b728' => 'Chałubińskiego (nż)',
- 'b525' => 'Chałupki',
- 'b2651' => 'Chałupki Górne (nż)',
- 'b151' => 'Chełm',
- 'b3073' => 'Chełmońskiego Osiedle',
- 'b3072' => 'Chełmońskiego Pętla',
- 'b152' => 'Chełmska (nż)',
- 'b2691' => 'Chmieleniec',
- 'b1274' => 'Chobot (nż)',
- 'b1288' => 'Chobot Leśniczówka',
-# 'b254' => 'Cholerzyn (nż)', # nowa nazwa # 'b3298' => 'Cholerzyn Skwer (nż)',
- 'b3056' => 'Cholerzyn Granica (nż)',
- 'b253' => 'Cholerzyn Sklep (nż)',
- 'b252' => 'Cholerzyn Skrzyżowanie (nż)',
- 'b3298' => 'Cholerzyn Skwer (nż)',
- 'b3055' => 'Cholerzyn Zagórze (nż)',
- 'b2878' => 'Chopina',
-# 'b886' => 'Chorowice', # nowa nazwa # 'b3324' => 'Chorowice Pętla',
- 'b3324' => 'Chorowice Pętla',
- 'b230' => 'Chrosna Kapliczka (nż)',
- 'b2911' => 'Chrosna Pętla',
- 'b229' => 'Chrosna Sklep (nż)',
- 'b228' => 'Chrosna Studnia (nż)',
- 'b87' => 'Cichy Kącik',
- 'b2653' => 'Ciekowiec (nż)',
- 'b3037' => 'Cienista',
- 'b36' => 'Clepardia',
- 'b897' => 'Cmentarz Batowice',
- 'b2699' => 'Cmentarz Batowice Wschód (nż)',
- 'b3137' => 'Cmentarz Bielany (nż)',
- 'b3126' => 'Cmentarz Bieżanów',
- 'b3139' => 'Cmentarz Borek Fałęcki (nż)',
- 'b3108' => 'Cmentarz Bronowice (nż)',
- 'b448' => 'Cmentarz Grębałów',
- 'b2989' => 'Cmentarz Grębałów Południe (nż)',
- 'b3034' => 'Cmentarz Olszanica (nż)',
- 'b621' => 'Cmentarz Podgórski',
- 'b2992' => 'Cmentarz Prokocim', # nieczynny - remont ul. Bieżanowskiej
- 'b124' => 'Cmentarz Rakowicki',
- 'b2531' => 'Cmentarz Rakowicki Zachód (nż)',
- 'b3120' => 'Cmentarz Ruszcza (nż)',
- 'b3133' => 'Cmentarz Wróblowice',
- 'b822' => 'Conrada',
- 'b2500' => 'Cracovia Błonia',
- 'b2501' => 'Cracovia Stadion',
- 'b129' => 'Cystersów',
- 'b975' => 'Czajowice (nż)',
- 'b1159' => 'Czarnochowice I (nż)',
- 'b81' => 'Czarnowiejska',
- 'b1226' => 'Czernichów Bór (nż)',
-# 'b1204' => 'Czernichów GS (nż)', # nowa nazwa # 'b3402' => 'Czernichów Studzienki (nż)',
-# 'b3224' => 'Czernichów Pętla', # nowa nazwa # 'b3394' => 'Czernichów Rynek',
- 'b2892' => 'Czernichów Ratanice (nż)',
- 'b2891' => 'Czernichów Ratanice Most (nż)',
- 'b3394' => 'Czernichów Rynek',
- 'b1203' => 'Czernichów Stacja Paliw (nż)',
- 'b3402' => 'Czernichów Studzienki (nż)',
- 'b2890' => 'Czernichów Zakamycze (nż)',
- 'b920' => 'Czerwiakowskiego',
- 'b1063' => 'Czerwieńskiego',
- 'b3038' => 'Czerwone Maki P+R',
-# 'b878' => 'Czulice', # nowa nazwa # 'b3283' => 'Czulice Kościół',
-# 'b496' => 'Czulice I (nż)', # nowa nazwa # 'b3280' => 'Czulice Przymiarki (nż)',
- 'b3283' => 'Czulice Kościół',
- 'b3280' => 'Czulice Przymiarki (nż)',
-# 'b2881' => 'Czułów (nż)', # nowa nazwa # 'b3295' => 'Czułów Granica (nż)',
-# 'b2880' => 'Czułów Droga na Czułówek (nż)', # nowa nazwa # 'b3294' => 'Czułów Sklep (nż)',
- 'b3295' => 'Czułów Granica (nż)',
- 'b3294' => 'Czułów Sklep (nż)',
- 'b2879' => 'Czułów Szkoła',
- 'b1215' => 'Czułówek (nż)',
- 'b1365' => 'Czułówek Kapliczka',
- 'b407' => 'Czyżyny',
- 'b965' => 'Czyżyny Dworzec',
- 'b522' => 'Cło',
- 'b392' => 'DH Wanda',
- 'b3122' => 'Danalówka (nż)',
- 'b435' => 'Darwina',
- 'b632' => 'Dauna',
- 'b3113' => 'Dobrego Pasterza',
- 'b3370' => 'Dobry Początek (nż)', # tymczasowy - przebudowa ul. Wrobela
- 'b474' => 'Dojazdów Działki (nż)',
- 'b475' => 'Dojazdów PKS',
-# 'b686' => 'Dom Spokojnej Starości', # nowa nazwa # 'b3384' => 'Miejskie Centrum Opieki',
- 'b646' => 'Domagały (nż)',
- 'b3412' => 'Domagały Magazyny (nż)',
- 'b31' => 'Dożynkowa',
- 'b216' => 'Droga do Niegoszowic (nż)',
- 'b192' => 'Droga do Rząski (nż)',
- 'b2614' => 'Drożdżowa',
- 'b518' => 'Drożyska (nż)',
- 'b2590' => 'Drużbackiej',
- 'b2922' => 'Dubie Skrzyżowanie (nż)',
- 'b388' => 'Dunikowskiego',
- 'b3125' => 'Duża Góra (nż)',
- 'b623' => 'Dworcowa',
- 'b1060' => 'Dworzec Główny Wschód',
- 'b2608' => 'Dworzec Główny Zachód',
- 'b836' => 'Dwór Czeczów',
- 'b2657' => 'Dymarek (nż)',
- 'b3193' => 'Dziekanowice Batowice SKA',
- 'b3165' => 'Dziekanowice Długa (nż)',
- 'b3166' => 'Dziekanowice Kapliczka',
- 'b3194' => 'Dziekanowicka (nż)',
- 'b370' => 'Dąbie',
- 'b600' => 'Dąbrowa',
-# 'b1202' => 'Dąbrowa Szlachecka (nż)', # nowa nazwa # 'b3401' => 'Wołowice Skrzyżowanie (nż)',
- 'b907' => 'Dąbrowa Szlachecka Figurka (nż)',
- 'b1237' => 'Dąbrowa Szlachecka Krzemiennik',
- 'b910' => 'Dąbrowa Szlachecka Krzyż (nż)',
- 'b3117' => 'Dąbrowskiej',
- 'b838' => 'EC Łęg',
- 'b374' => 'Elektrociepłownia Kraków',
- 'b464' => 'Elektromontaż (nż)',
- 'b3116' => 'Fatimska (nż)',
- 'b322' => 'Filharmonia',
- 'b1375' => 'Fiszera',
- 'b2566' => 'Fort Bodzów (nż)',
- 'b1051' => 'Fort Mogiła (nż)',
- 'b2587' => 'Fort Swoszowice (nż)',
- 'b1371' => 'Fort Winnica (nż)',
- 'b754' => 'Forteczna',
- 'b367' => 'Francesco Nullo',
- 'b617' => 'Fredry',
- 'b2615' => 'Gaik (nż)',
- 'b2856' => 'Gaj Kwiatowa (nż)',
- 'b2857' => 'Gaj Rudawa (nż)',
- 'b790' => 'Gaj Szkoła',
- 'b791' => 'Gaj Zadziele',
- 'b2858' => 'Gaj Zgody (nż)',
-# 'b174' => 'Garlica Duchowna (nż)', # nowa nazwa # 'b3344' => 'Garlica Duchowna Kapliczka (nż)',
-# 'b2957' => 'Garlica Duchowna Droga do Garliczki', # nowa nazwa # 'b2628' => 'Garlica Duchowna Rozjazd',
- 'b3344' => 'Garlica Duchowna Kapliczka (nż)',
- 'b2628' => 'Garlica Duchowna Rozjazd',
-# 'b175' => 'Garlica Murowana', # nowa nazwa # 'b3345' => 'Garlica Murowana Plac Zabaw',
- 'b2770' => 'Garlica Murowana Kasztany (nż)',
- 'b3345' => 'Garlica Murowana Plac Zabaw',
-# 'b2958' => 'Garlica Murowana Podskale (nż)', # nowa nazwa # 'b3358' => 'Zielonki Jaskinia Zielonkowska (nż)',
- 'b2629' => 'Garliczka Chochół (nż)',
- 'b2588' => 'Geologów (nż)',
- 'b1172' => 'Giebułtów',
- 'b1177' => 'Giebułtów Morgi',
- 'b1176' => 'Giebułtów Plac Zabaw (nż)',
- 'b2877' => 'Giebułtów Trojadyn (nż)',
- 'b2876' => 'Giebułtów Trojadyn Trafo (nż)',
- 'b1352' => 'Giebułtów Zbiornik (nż)',
- 'b3174' => 'Giedroycia (nż)',
- 'b3178' => 'Giedroycia ZTPO (nż)',
- 'b2766' => 'Giełda Balicka P+R (nż)',
- 'b276' => 'Glinnik (nż)',
- 'b2751' => 'Glogera (nż)',
- 'b2752' => 'Glogera Granica Miasta (nż)',
- 'b2993' => 'Gnieźnieńska (nż)',
- 'b2909' => 'Godlewskiego',
- 'b3059' => 'Golkowice Kościół',
- 'b3146' => 'Golkowice Pętla',
- 'b3144' => 'Golkowice Sklep',
- 'b22' => 'Gospodarska',
-# 'b2760' => 'Goszcza', # nowa nazwa # 'b3289' => 'Goszcza Dworek',
- 'b2763' => 'Goszcza Cmentarz (nż)',
- 'b3289' => 'Goszcza Dworek',
-# 'b955' => 'Goszyce (nż)', # nowa nazwa # 'b3291' => 'Goszyce Pod Lasem (nż)',
- 'b3291' => 'Goszyce Pod Lasem (nż)',
- 'b954' => 'Goszyce Remiza (nż)',
- 'b1090' => 'Gołuchowice',
- 'b1091' => 'Gołuchowice Jurczyce',
- 'b1092' => 'Gołuchowice Sklep (nż)',
-# 'b2493' => 'Grabie', # nowa nazwa # 'b3333' => 'Grabie Pętla',
- 'b1293' => 'Grabie Dom Kultury (nż)',
- 'b1295' => 'Grabie Kościół',
- 'b2492' => 'Grabie Kuźnia (nż)',
- 'b1094' => 'Grabie Polanka (nż)',
- 'b3333' => 'Grabie Pętla',
- 'b1292' => 'Grabie Szczurów (nż)',
- 'b3339' => 'Grabowa',
- 'b3145' => 'Grabówki Pętla',
- 'b560' => 'Gromadzka',
- 'b2687' => 'Grota-Roweckiego',
- 'b76' => 'Grottgera',
- 'b3186' => 'Grzegorza z Sanoka (nż)',
- 'b443' => 'Grębałów (nż)',
- 'b2974' => 'Grębynice (nż)',
- 'b1150' => 'Grębynice Mogiełki (nż)',
- 'b2973' => 'Grębynice OSP (nż)',
- 'b455' => 'Gwarecka (nż)',
- 'b749' => 'Góra Borkowska (nż)',
- 'b35' => 'Górka Narodowa',
- 'b2797' => 'Górka Narodowa Wschód',
- 'b2567' => 'Górka Pychowicka (nż)',
-# 'b170' => 'Górna Wieś', # nowa nazwa # 'b3342' => 'Górna Wieś Pętla',
- 'b3342' => 'Górna Wieś Pętla',
- 'b1049' => 'Głowackiego',
-# 'b876' => 'Głęboka', # nowa nazwa # 'b3281' => 'Głęboka Staw',
- 'b2996' => 'Głęboka Kolonia (nż)',
- 'b3281' => 'Głęboka Staw',
- 'b3046' => 'Głęboka Zakręt (nż)',
- 'b552' => 'Habina (nż)',
- 'b2991' => 'Hala Sportowa Piaski Wielkie (nż)',
- 'b363' => 'Hala Targowa',
- 'b2583' => 'Hallera (nż)',
- 'b741' => 'Halszki',
- 'b2642' => 'Hektary (nż)',
- 'b931' => 'Herberta (nż)',
- 'b315' => 'Hofmana',
- 'b3157' => 'Husarska (nż)', # nieczynny - przebudowa ul. Wrobela
- 'b510' => 'Igołomska (nż)',
- 'b38' => 'Imbramowska',
-# 'b685' => 'Instytut Pediatrii', # nowa nazwa # 'b3383' => 'Szpital Uniwersytecki / Instytut Pediatrii',
- 'b317' => 'Instytut Reumatologii',
- 'b840' => 'Isep (nż)',
-# 'b933' => 'Iwanowice', # nowa nazwa # 'b3353' => 'Iwanowice Dworskie Pętla',
- 'b3353' => 'Iwanowice Dworskie Pętla',
-# 'b3243' => 'Jadwigi z Łobzowa', # tymczasowy - przebudowa linii do Bronowic
- 'b2626' => 'Jana Kazimierza',
- 'b1062' => 'Janasówka (nż)',
- 'b185' => 'Januszowice',
- 'b506' => 'Janówka (nż)',
- 'b668' => 'Jasieńskiego (nż)',
- 'b832' => 'Jasnogórska (nż)',
- 'b1110' => 'Jaśkowice (nż)',
- 'b1111' => 'Jaśkowice PKP (nż)',
- 'b2586' => 'Jerzmanowskiego',
- 'b3228' => 'Jeziorzany Górskie Domy (nż)',
- 'b2904' => 'Jeziorzany Pętla',
- 'b2903' => 'Jeziorzany Rondo (nż)',
- 'b655' => 'Jeżowa',
- 'b2617' => 'Jordanowska (nż)',
- 'b319' => 'Jubilat',
- 'b758' => 'Judyma',
- 'b2792' => 'Judyma Szkoła',
- 'b742' => 'Jugowicka',
- 'b3190' => 'Jurczaka (nż)',
- 'b2488' => 'Jurczyce Dom Ludowy',
- 'b2490' => 'Jurczyce Podole (nż)',
- 'b2489' => 'Jurczyce Szkoła (nż)',
- 'b3234' => 'Jędrzejczyka (nż)',
- 'b624' => 'Kabel',
-# 'b1222' => 'Kamień Dół (nż)', # nowa nazwa # 'b3404' => 'Kamień Remiza (nż)',
- 'b3404' => 'Kamień Remiza (nż)',
- 'b3279' => 'Kamień Szkoła',
- 'b620' => 'Kamieńskiego',
- 'b619' => 'Kamieńskiego Wiadukt (nż)',
- 'b2690' => 'Kampus UJ',
- 'b445' => 'Kantorowice',
- 'b576' => 'Kapelanka',
- 'b3206' => 'Karniowice Górki (nż)',
- 'b3205' => 'Karniowice Pętla',
-# 'b877' => 'Karniów', # nowa nazwa # 'b3282' => 'Karniów Szkoła',
- 'b3282' => 'Karniów Szkoła',
- 'b546' => 'Karowa (nż)',
- 'b717' => 'Karpińskiego',
- 'b147' => 'Kasztanowa',
- 'b283' => 'Kaszów',
- 'b282' => 'Kaszów II (nż)',
- 'b3303' => 'Kaszów Szkoła nr 2 (nż)',
- 'b284' => 'Kaszów Tyrałówka (nż)',
- 'b3304' => 'Kaszów Wielka Droga (nż)',
- 'b2886' => 'Kaszów Wyźrał (nż)',
- 'b285' => 'Kaszów Łysa Góra (nż)',
- 'b13' => 'Katowicka',
- 'b82' => 'Kawiory',
- 'b945' => 'Kenara (nż)',
- 'b427' => 'Klasztor Cystersów',
- 'b429' => 'Klasztorna',
- 'b382' => 'Kleeberga',
-# 'b1054' => 'Kleszczów', # nowa nazwa # 'b3423' => 'Kleszczów Centrum',
- 'b3423' => 'Kleszczów Centrum',
- 'b2864' => 'Kleszczów Pod Lipką (nż)',
- 'b946' => 'Klimeckiego',
- 'b935' => 'Kliny Zacisze',
- 'b768' => 'Kobierzyn',
- 'b584' => 'Kobierzyńska',
- 'b3207' => 'Kobylany Dworska (nż)',
- 'b3204' => 'Kobylany Kwiatowa',
- 'b1065' => 'Kobylany Remiza (nż)',
- 'b215' => 'Kochanów',
- 'b214' => 'Kochanów I (nż)',
-# 'b3042' => 'Kocmyrzów', # nowa nazwa # 'b3292' => 'Kocmyrzów-Luborzyca Urząd Gminy',
- 'b3001' => 'Kocmyrzów Biblioteka',
- 'b1257' => 'Kocmyrzów Krzyżówka (nż)',
- 'b3000' => 'Kocmyrzów Rondo',
- 'b3005' => 'Kocmyrzów Sodfiny (nż)',
- 'b3292' => 'Kocmyrzów-Luborzyca Urząd Gminy',
- 'b1158' => 'Kokotów I (nż)',
- 'b1162' => 'Kokotów II (nż)',
- 'b457' => 'Koksochemia (nż)',
- 'b2563' => 'Kolna (nż)',
- 'b459' => 'Kombinat',
- 'b313' => 'Komorowskiego',
- 'b830' => 'Komuny Paryskiej',
-# 'b799' => 'Konary', # nowa nazwa # 'b3364' => 'Konary Pętla',
- 'b3312' => 'Konary Królowej Polski (nż)',
- 'b3052' => 'Konary Pod Sosenką (nż)',
- 'b3364' => 'Konary Pętla',
- 'b1347' => 'Konary Sęk (nż)',
-# 'b805' => 'Konary Włosań (nż)', # nowa nazwa # 'b3312' => 'Konary Królowej Polski (nż)',
- 'b326' => 'Konopnickiej',
- 'b148' => 'Kopalina (nż)',
- 'b2932' => 'Kopanka Druga (nż)',
- 'b2484' => 'Kopanka Kapliczka (nż)',
- 'b2813' => 'Kopanka Kościół (nż)',
- 'b3451' => 'Kopanka Ofiar Katynia',
- 'b2931' => 'Kopanka Pętla',
- 'b2485' => 'Kopanka Szkoła',
- 'b242' => 'Kopiec Kościuszki',
- 'b571' => 'Korona',
- 'b2970' => 'Korzkiew Botoja (nż)',
- 'b2971' => 'Korzkiew Zamek (nż)',
- 'b156' => 'Kosmowskiej (nż)',
- 'b706' => 'Kosocice',
- 'b2585' => 'Kosocicka (nż)',
- 'b601' => 'Kostrze',
- 'b597' => 'Kostrze Kapliczka (nż)',
- 'b599' => 'Kostrze OSP',
- 'b605' => 'Kostrze Szkoła',
- 'b2559' => 'Koszykarska',
- 'b3063' => 'Kozienicka',
-# 'b342' => 'Kozierów Skrzyżowanie (nż)', # nowa nazwa # 'b3348' => 'Narama Graniczna Sklep (nż)',
- 'b1139' => 'Kończyce',
- 'b2644' => 'Kościelniki',
- 'b2861' => 'Kraków Airport',
-# 'b2975' => 'Krasieniec Pod Lipą', # nowa nazwa # 'b3359' => 'Krasieniec Zakupny Pod Lipą',
-# 'b346' => 'Krasieniec Remiza (nż)', # nowa nazwa # 'b3352' => 'Krasieniec Zakupny Remiza (nż)',
-# 'b345' => 'Krasieniec Stary (nż)', # nowa nazwa # 'b3351' => 'Krasieniec Stary Kopalina (nż)',
- 'b3351' => 'Krasieniec Stary Kopalina (nż)',
- 'b3350' => 'Krasieniec Stary Skrzyżowanie (nż)',
-# 'b934' => 'Krasieniec Zakupny', # nowa nazwa # 'b3354' => 'Krasieniec Zakupny Kapliczka',
- 'b3354' => 'Krasieniec Zakupny Kapliczka',
- 'b3359' => 'Krasieniec Zakupny Pod Lipą',
- 'b3352' => 'Krasieniec Zakupny Remiza (nż)',
- 'b998' => 'Krasnowolskiego (nż)',
- 'b62' => 'Krowoderskich Zuchów',
- 'b63' => 'Krowodrza Górka',
- 'b2601' => 'Krowodrza Urzędy Skarbowe',
- 'b381' => 'Kruszwicka',
- 'b258' => 'Kryspinów',
- 'b257' => 'Kryspinów Sanka (nż)',
-# 'b2895' => 'Kryspinów Stopień Wodny (nż)', # nowa nazwa # 'b3371' => 'Kryspinów Stopień Wodny (nż)',
- 'b3371' => 'Kryspinów Stopień Wodny (nż)',
- 'b702' => 'Krzemieniecka (nż)',
- 'b3250' => 'Krzeszowice Dworzec Autobusowy',
- 'b2923' => 'Krzeszowice Krakowska Muzeum (nż)',
- 'b1044' => 'Krzeszowice Witaminka (nż)',
- 'b3134' => 'Krzesławice Młyn (nż)',
- 'b1192' => 'Krzyszkowice Kasztanowa I (nż)',
- 'b1193' => 'Krzyszkowice Kasztanowa II (nż)',
- 'b1191' => 'Krzyszkowice Kościół (nż)',
- 'b2817' => 'Krzyszkowice Krzyszkowicka',
- 'b1194' => 'Krzyszkowice Modrzewiowa (nż)',
- 'b2740' => 'Krzyszkowice Os.Szymanowskiego (nż)',
- 'b1195' => 'Krzyszkowice Różana (nż)',
- 'b1248' => 'Krzysztoforzyce Góra (nż)',
- 'b3230' => 'Krzysztoforzyce Pętla',
- 'b3043' => 'Krzysztoforzyce Sklep (nż)',
- 'b1256' => 'Krzysztoforzyce przy Dworze (nż)',
- 'b1169' => 'Krzęcin Cmentarz (nż)',
-# 'b1357' => 'Krzęcin Częsna (nż)', # nowa nazwa # 'b3332' => 'Krzęcin Szczęsna (nż)',
- 'b1098' => 'Krzęcin Kapliczka (nż)',
- 'b1096' => 'Krzęcin Kościół',
- 'b2928' => 'Krzęcin Pętla',
- 'b1095' => 'Krzęcin Sklep',
- 'b3332' => 'Krzęcin Szczęsna (nż)',
- 'b1099' => 'Krzęcin Szkoła',
-# 'b150' => 'Królowej Jadwigi', # nowa nazwa # 'b3339' => 'Grabowa',
- 'b2739' => 'Ks.Targosza (nż)',
- 'b675' => 'Ks.Łaczka (nż)',
-# 'b1140' => 'Książniczki Boisko (nż)', # nowa nazwa # 'b3377' => 'Książniczki Paszczykówka (nż)',
- 'b1142' => 'Książniczki Centrum',
- 'b1143' => 'Książniczki Las (nż)',
- 'b3377' => 'Książniczki Paszczykówka (nż)',
- 'b544' => 'Kujawy',
- 'b567' => 'Kuklińskiego',
- 'b884' => 'Kulerzów (nż)',
- 'b885' => 'Kulerzów Wąwóz (nż)',
- 'b387' => 'Kupały',
- 'b3176' => 'Kurdwanów P+R',
- 'b709' => 'Kurdwanów Szkoła',
- 'b3136' => 'Kurzei',
- 'b98' => 'Kuźnicy Kołłątajowskiej',
- 'b527' => 'Kąkolowa (nż)',
- 'b759' => 'Kąpielowa (nż)',
- 'b3180' => 'Kępa (nż)',
-# 'b1220' => 'Kłokoczyn (nż)', # nowa nazwa # 'b3306' => 'Kłokoczyn Szkoła (nż)',
- 'b3309' => 'Kłokoczyn Machaczki (nż)',
- 'b3306' => 'Kłokoczyn Szkoła (nż)',
- 'b3074' => 'Kłuszyńska',
- 'b140' => 'Lajkonika (nż)',
- 'b694' => 'Landaua',
- 'b750' => 'Las Borkowski',
- 'b2557' => 'Lasek Mogilski',
- 'b2790' => 'Lasek Łęgowski (nż)',
-# 'b337' => 'Laskowiec (nż)', # nowa nazwa # 'b3346' => 'Michałowice Laskowiec (nż)',
- 'b3217' => 'Lednica Górna (nż)',
- 'b3216' => 'Lednica Górna Chorągwica (nż)',
- 'b65' => 'Lekarska',
- 'b554' => 'Lesisko',
- 'b3363' => 'Leszczynowa (nż)',
- 'b2619' => 'Leszka Białego',
- 'b157' => 'Leśmiana',
- 'b3071' => 'Libertowska (nż)',
- 'b2706' => 'Libertów',
- 'b2638' => 'Libertów Dolny (nż)',
- 'b2925' => 'Libertów Droga do Sidziny (nż)',
- 'b2711' => 'Libertów Działy (nż)',
- 'b2710' => 'Libertów Krzyżówka',
- 'b2707' => 'Libertów Szkoła',
- 'b2772' => 'Libertów Zgodna (nż)',
- 'b3373' => 'Libertów Świetlista',
- 'b2524' => 'Lindego (nż)',
- 'b2686' => 'Lipińskiego',
- 'b837' => 'Lipowskiego (nż)',
- 'b561' => 'Lipska',
- 'b289' => 'Liszki I (nż)',
- 'b286' => 'Liszki Krzyżówka',
- 'b2899' => 'Liszki Tyniecka (nż)',
- 'b287' => 'Liszki UG',
- 'b2887' => 'Liszki Wołowska Droga (nż)',
- 'b126' => 'Lubicz',
- 'b94' => 'Lublańska',
- 'b468' => 'Lubocza Bugaj (nż)',
- 'b467' => 'Lubocza PKP (nż)',
- 'b469' => 'Lubocza Przychodnia',
- 'b470' => 'Lubocza Szkoła',
- 'b471' => 'Lubocza Trafo (nż)',
- 'b472' => 'Luborzyca',
- 'b3002' => 'Luborzyca Szkoła',
- 'b937' => 'Lubostroń (nż)',
- 'b2808' => 'Ludwinów',
-# 'b2905' => 'Lusina (nż)', # nowa nazwa # 'b3326' => 'Lusina Krakowska (nż)',
- 'b2936' => 'Lusina Dobrzyczany (nż)',
- 'b722' => 'Lusina Dolna (nż)',
- 'b1003' => 'Lusina Dwór',
-# 'b2637' => 'Lusina Granica', # nowa nazwa # 'b3373' => 'Libertów Świetlista',
- 'b801' => 'Lusina Górka (nż)',
- 'b3326' => 'Lusina Krakowska (nż)',
- 'b3301' => 'Lusina Krakówka (nż)',
-# 'b3184' => 'Lusina Krakówkaa (nż)', # błąd # 'b3301' => 'Lusina Krakówka (nż)',
- 'b2937' => 'Lusina Kraśnik (nż)',
- 'b1000' => 'Lusina Pętla',
- 'b1002' => 'Lusina Spacerowa',
- 'b1001' => 'Lusina Szkoła',
- 'b2938' => 'Lusina Zagrody (nż)',
- 'b2935' => 'Lusina Zielona',
- 'b1196' => 'Lusina Łany (nż)',
- 'b930' => 'M1 Al. Pokoju',
- 'b2736' => 'M1 Nowohucka',
- 'b1269' => 'Maciejowice Góra (nż)',
- 'b3159' => 'Maciejowice Pętla',
- 'b3168' => 'Maciejowice Skrzyżowanie (nż)',
- 'b37' => 'Mackiewicza',
- 'b3123' => 'Magazynowa (nż)',
- 'b96' => 'Majora',
- 'b626' => 'Makowa',
- 'b56' => 'Makowskiego',
- 'b2542' => 'Makuszyńskiego (nż)',
- 'b625' => 'Malborska',
- 'b880' => 'Malborska Szkoła',
- 'b310' => 'Malczewskiego (nż)',
- 'b2589' => 'Malinowskiego (nż)',
- 'b1130' => 'Marchołta',
- 'b3004' => 'Marszowice (nż)',
- 'b3003' => 'Marszowice Centrum (nż)',
- 'b1319' => 'Marszowice Góry (nż)',
- 'b2983' => 'Maszyce (nż)',
- 'b1174' => 'Maszyce Remiza (nż)',
- 'b1152' => 'Maszyce Skrzyżowanie (nż)',
-# 'b2982' => 'Masłomiąca (nż)', # nowa nazwa # 'b3378' => 'Masłomiąca Długa (nż)',
- 'b3378' => 'Masłomiąca Długa (nż)',
- 'b3374' => 'Masłomiąca Koźlica (nż)',
- 'b2981' => 'Masłomiąca Staw (nż)',
- 'b90' => 'Mazowiecka',
- 'b941' => 'Mała Góra (nż)',
- 'b2496' => 'Mała Wieś (nż)',
-# 'b1263' => 'Mały Płaszów', # nowa nazwa # 'b3310' => 'Mały Płaszów P+R',
- 'b3310' => 'Mały Płaszów P+R',
- 'b406' => 'Medweckiego',
- 'b3109' => 'Mehoffera',
- 'b995' => 'Meissnera',
- 'b3130' => 'Merkuriusza Polskiego',
- 'b85' => 'Miasteczko Studenckie AGH',
- 'b331' => 'Michałowice (nż)',
- 'b1058' => 'Michałowice Banasiówka (nż)',
- 'b2967' => 'Michałowice Brzozowa (nż)',
- 'b2963' => 'Michałowice Gościniec (nż)',
- 'b2964' => 'Michałowice Górna (nż)',
- 'b333' => 'Michałowice I',
- 'b336' => 'Michałowice II (nż)',
- 'b3355' => 'Michałowice Jana Pawła II (nż)',
- 'b332' => 'Michałowice Komora (nż)',
-# 'b905' => 'Michałowice Koźlica (nż)', # nowa nazwa # 'b3374' => 'Masłomiąca Koźlica (nż)',
- 'b2506' => 'Michałowice Kwiaty Polne (nż)',
- 'b3356' => 'Michałowice Las Michałowski',
-# 'b2507' => 'Michałowice Las Michałowski (nż)', # nowa nazwa # 'b3355' => 'Michałowice Jana Pawła II (nż)',
- 'b3346' => 'Michałowice Laskowiec (nż)',
- 'b335' => 'Michałowice Lecznica (nż)',
- 'b2965' => 'Michałowice Michałówka (nż)',
- 'b1145' => 'Michałowice Ogrodowa (nż)',
- 'b2729' => 'Michałowice Ośrodek Zdrowia',
- 'b1055' => 'Michałowice Ujęcie Wody (nż)',
- 'b3347' => 'Michałowice Warszawka (nż)',
- 'b104' => 'Miechowity',
- 'b3384' => 'Miejskie Centrum Opieki',
- 'b362' => 'Miodowa',
- 'b375' => 'Mistrzejowice',
- 'b2538' => 'Miśnieńska',
-# 'b2882' => 'Mników Droga do Kaszowa (nż)', # nowa nazwa # 'b3297' => 'Mników Sklep (nż)',
- 'b3232' => 'Mników Granica (nż)',
- 'b2714' => 'Mników Pańska Góra (nż)',
- 'b3296' => 'Mników Remiza (nż)',
- 'b2715' => 'Mników Skały',
-# 'b248' => 'Mników Sklep (nż)', # nowa nazwa # 'b3296' => 'Mników Remiza (nż)',
- 'b3297' => 'Mników Sklep (nż)',
- 'b3104' => 'Mników Zarynnie (nż)',
- 'b2516' => 'Mobilis',
- 'b2694' => 'Mochnaniec (nż)',
- 'b986' => 'Modlnica',
- 'b968' => 'Modlnica I Kolonia (nż)',
- 'b969' => 'Modlnica II (nż)',
- 'b985' => 'Modlnica Skrzyżowanie (nż)',
- 'b2875' => 'Modlnica Trojadyn Szydło (nż)',
- 'b984' => 'Modlniczka',
- 'b983' => 'Modlniczka I (nż)',
- 'b3251' => 'Modlniczka Leroy Merlin (nż)',
- 'b197' => 'Modlniczka Mała',
- 'b1353' => 'Modlniczka Poligon (nż)',
- 'b1046' => 'Modlniczka Trzcie (nż)',
- 'b2499' => 'Mogilany Cicha (nż)',
- 'b888' => 'Mogilany Cmentarz (nż)',
- 'b2953' => 'Mogilany Kopce (nż)',
- 'b3313' => 'Mogilany Krótka (nż)',
- 'b793' => 'Mogilany Ośrodek Zdrowia (nż)',
- 'b792' => 'Mogilany Rynek',
- 'b794' => 'Mogilany Wiadukt (nż)',
-# 'b806' => 'Mogilany Włosań (nż)', # nowa nazwa # 'b3313' => 'Mogilany Krótka (nż)',
-# 'b233' => 'Morawica', # nowa nazwa # 'b3386' => 'Morawica Centrum',
- 'b3386' => 'Morawica Centrum',
-# 'b234' => 'Morawica Cmentarz (nż)', # nowa nazwa # 'b3387' => 'Morawica Szkoła (nż)',
- 'b232' => 'Morawica Krzyżówka',
- 'b231' => 'Morawica Mostek (nż)',
- 'b3105' => 'Morawica Rudki (nż)',
- 'b3387' => 'Morawica Szkoła (nż)',
- 'b3119' => 'Morcinka (nż)',
- 'b1239' => 'Most Kotlarski (nż)',
- 'b565' => 'Motyla',
- 'b460' => 'Mrozowa (nż)',
- 'b974' => 'Murownia (nż)',
- 'b3060' => 'Murownia Pętla',
- 'b1015' => 'Muzeum Armii Krajowej (nż)',
- 'b3141' => 'Muzeum Narodowe',
- 'b8' => 'Mydlniki',
- 'b2525' => 'Mydlniki Granica Miasta (nż)',
- 'b9' => 'Mydlniki Stawy (nż)',
- 'b740' => 'Myślenicka (nż)',
-# 'b3262' => 'Młodej Polski (nż)', # tymczasowy - przebudowa linii do Bronowic
- 'b1144' => 'Młodziejowice Młyn (nż)',
- 'b1141' => 'Młodziejowice Park',
- 'b636' => 'Młodzieży (nż)', # nieczynny - przebudowa ul. Bieżanowskiej
- 'b1040' => 'Młynka (nż)',
- 'b218' => 'Młynka I (nż)',
- 'b1' => 'Młynka Pętla',
- 'b2908' => 'Młynówka SKA (nż)',
- 'b2616' => 'Na Budzyniu',
- 'b273' => 'Na Krępaku (nż)',
- 'b550' => 'Na Załęczu',
-# 'b549' => 'Na Załęczu Szkoła (nż)', # nowa nazwa # 'b3337' => 'Archiwum UMK (nż)',
- 'b645' => 'Nad Drwiną',
- 'b2541' => 'Nad Dłubnią',
- 'b2656' => 'Nadbrzezie (nż)',
- 'b3348' => 'Narama Graniczna Sklep (nż)',
- 'b3349' => 'Narama Księża (nż)',
- 'b2966' => 'Narama Remiza',
- 'b121' => 'Narzymskiego',
- 'b2606' => 'Natansona',
- 'b1042' => 'Nawojowa Góra I (nż)',
- 'b1043' => 'Nawojowa Góra II (nż)',
- 'b2775' => 'Nałkowskiej',
- 'b2594' => 'Niebieska Autostrada (nż)',
- 'b3278' => 'Niebyła (nż)',
- 'b1327' => 'Niedźwiedź Felix (nż)',
- 'b1326' => 'Niedźwiedź PKP (nż)',
-# 'b1187' => 'Nielepice', # nowa nazwa # 'b3424' => 'Nielepice Pętla',
- 'b3424' => 'Nielepice Pętla',
- 'b1235' => 'Nielepice Stadnina (nż)',
- 'b1278' => 'Niepołomice Batorego (nż)',
- 'b1279' => 'Niepołomice Batorego II (nż)',
- 'b1306' => 'Niepołomice Boryczów (nż)',
- 'b1300' => 'Niepołomice Diesla (nż)',
- 'b1276' => 'Niepołomice Dworzec',
- 'b1289' => 'Niepołomice Jazy (nż)',
- 'b1290' => 'Niepołomice Jazy II (nż)',
- 'b964' => 'Niepołomice Kolejowa (nż)',
- 'b1303' => 'Niepołomice Kościuszki (nż)',
- 'b1298' => 'Niepołomice Kątek (nż)',
-# 'b1275' => 'Niepołomice Moczydło (nż)', # nowa nazwa # 'b1276' => 'Niepołomice Dworzec',
- 'b1297' => 'Niepołomice Pasternik (nż)',
- 'b1296' => 'Niepołomice Podgrabie (nż)',
- 'b1299' => 'Niepołomice Poręby (nż)',
- 'b1302' => 'Niepołomice Płaszowska I (nż)',
- 'b1277' => 'Niepołomice Rynek',
- 'b1307' => 'Niepołomice Wielicka (nż)',
- 'b1301' => 'Niepołomice Wodna (nż)',
- 'b2688' => 'Norymberska',
-# 'b280' => 'Nowa Wieś (nż)', # nowa nazwa # 'b3392' => 'Nowa Wieś Szlachecka Sklep (nż)',
-# 'b1197' => 'Nowa Wieś Jesionka (nż)', # nowa nazwa # 'b3398' => 'Nowa Wieś Szlachecka Jesionka (nż)',
-# 'b281' => 'Nowa Wieś Kapliczka (nż)', # nowa nazwa # 'b3393' => 'Nowa Wieś Szlachecka Kapliczka (nż)',
-# 'b279' => 'Nowa Wieś Kościół (nż)', # nowa nazwa # 'b3391' => 'Nowa Wieś Szlachecka Kościół (nż)',
-# 'b278' => 'Nowa Wieś Szlachecka', # nowa nazwa # 'b3390' => 'Nowa Wieś Szlachecka Pętla',
- 'b3398' => 'Nowa Wieś Szlachecka Jesionka (nż)',
- 'b3393' => 'Nowa Wieś Szlachecka Kapliczka (nż)',
- 'b3391' => 'Nowa Wieś Szlachecka Kościół (nż)',
- 'b3390' => 'Nowa Wieś Szlachecka Pętla',
- 'b3392' => 'Nowa Wieś Szlachecka Sklep (nż)',
- 'b395' => 'Nowolipki (nż)',
- 'b715' => 'Nowosądecka',
- 'b3175' => 'Nowy Bieżanów P+R',
- 'b2581' => 'Nowy Bieżanów Południe',
- 'b71' => 'Nowy Kleparz',
- 'b2582' => 'Nowy Prokocim',
- 'b3068' => 'Obserwatorium (nż)',
- 'b1313' => 'Ochmanów Oknoplast (nż)',
- 'b2727' => 'Ochmanów Otaczarnia (nż)',
-# 'b1171' => 'Ochodza', # nowa nazwa # 'b3331' => 'Ochodza Dwór',
- 'b1329' => 'Ochodza Dom Ludowy (nż)',
- 'b3331' => 'Ochodza Dwór',
- 'b1331' => 'Ochodza Odwiśle',
- 'b1330' => 'Ochodza Staw (nż)',
- 'b2951' => 'Ochojno Dąbrówki',
- 'b863' => 'Ochojno Kamieniec',
- 'b861' => 'Ochojno Remiza',
- 'b860' => 'Ochojno Skrzyżowanie',
- 'b2655' => 'Oczyszczalnia Ścieków \'Kujawy\' (nż)',
- 'b553' => 'Odmętowa',
- 'b369' => 'Ofiar Dąbia',
- 'b18' => 'Ojcowska',
- 'b16' => 'Ojcowska Dworek',
- 'b17' => 'Ojcowska Wągroda',
- 'b103' => 'Olsza II',
- 'b161' => 'Olszanica Bory',
- 'b158' => 'Olszanica Kapliczka (nż)',
- 'b2534' => 'Olszanica Ogródki Działkowe (nż)',
- 'b102' => 'Olszecka',
- 'b761' => 'Opatkowice',
- 'b760' => 'Opatkowice Wiadukt (nż)',
- 'b2634' => 'Opatkowice Zadworze',
- 'b92' => 'Opolska Estakada',
- 'b48' => 'Opolska Kładka',
- 'b431' => 'Orkana',
- 'b3064' => 'Orszy-Broniewskiego',
-# 'b361' => 'Orzeszkowej', # tymczasowy - przebudowa ul. Krakowskiej
- 'b3187' => 'Orłowskiego (nż)',
- 'b3114' => 'Os. Akademickie PK',
- 'b111' => 'Os. Dywizjonu 303',
- 'b421' => 'Os. Górali',
- 'b402' => 'Os. Jagiellońskie',
- 'b386' => 'Os. Kalinowe',
- 'b756' => 'Os. Kliny',
- 'b413' => 'Os. Kolorowe',
- 'b3445' => 'Os. Kościuszkowskie',
- 'b710' => 'Os. Kurdwanów',
- 'b28' => 'Os. Marszowiec',
- 'b2737' => 'Os. Mistrzejowice Nowe',
- 'b391' => 'Os. Na Lotnisku',
- 'b424' => 'Os. Na Skarpie',
- 'b939' => 'Os. Na Stoku',
- 'b436' => 'Os. Na Stoku Szkoła',
- 'b108' => 'Os. Oświecenia',
- 'b378' => 'Os. Piastów',
- 'b2812' => 'Os. Podwawelskie',
- 'b582' => 'Os. Robotnicze',
- 'b390' => 'Os. Strusia',
- 'b428' => 'Os. Wandy',
- 'b430' => 'Os. Willowe',
- 'b418' => 'Os. Zgody',
- 'b422' => 'Os. Zielone',
- 'b377' => 'Os. Złotego Wieku',
-# 'b404' => 'Os.Kościuszkowskie', # nowa nazwa # 'b3445' => 'Os. Kościuszkowskie',
- 'b1243' => 'Os. Łokietka', # poprawione # 'b1243' => 'Os.Łokietka',
- 'b2643' => 'Ostafina',
- 'b2969' => 'Owczary (nż)',
-# 'b2631' => 'Owczary Długa (nż)', # nowa nazwa # 'b3357' => 'Owczary Spacerowa (nż)',
- 'b2632' => 'Owczary Gajowa (nż)',
- 'b2630' => 'Owczary Górna (nż)',
- 'b2968' => 'Owczary Pętla',
- 'b3357' => 'Owczary Spacerowa (nż)',
- 'b817' => 'PB',
- 'b3135' => 'PCK',
- 'b819' => 'PP',
- 'b818' => 'PW',
- 'b2526' => 'Pachońskiego',
- 'b963' => 'Panieńskich Skał',
- 'b2560' => 'Park \'Skały Twardowskiego\' (nż)',
- 'b143' => 'Park Decjusza',
- 'b1004' => 'Park Wodny',
- 'b3149' => 'Park Zdrojowy',
- 'b15' => 'Pasternik (nż)',
- 'b2776' => 'Petrażyckiego (nż)',
- 'b3070' => 'Petrażyckiego Osiedle (nż)',
- 'b3191' => 'Petőfiego (nż)',
- 'b716' => 'Piaski Nowe',
- 'b687' => 'Piaski Wielkie',
- 'b3177' => 'Piaskowa (nż)',
- 'b379' => 'Piasta Kołodzieja',
- 'b2529' => 'Piaszczysta',
-# 'b270' => 'Piekary', # nowa nazwa # 'b3389' => 'Piekary Centrum',
- 'b2898' => 'Piekary Borki (nż)',
- 'b3389' => 'Piekary Centrum',
- 'b2900' => 'Piekary Dół (nż)',
- 'b868' => 'Piekary Górne',
- 'b2897' => 'Piekary Korea (nż)',
- 'b2896' => 'Piekary Na Brzegu (nż)',
- 'b1189' => 'Piekary Pałac (nż)',
- 'b269' => 'Piekary Sklep (nż)',
-# 'b2985' => 'Pielgrzymowice (nż)', # nowa nazwa # 'b3379' => 'Pielgrzymowice Wierzbowa (nż)',
- 'b2986' => 'Pielgrzymowice Granica (nż)',
- 'b2984' => 'Pielgrzymowice Pętla',
- 'b3379' => 'Pielgrzymowice Wierzbowa (nż)',
- 'b3035' => 'Pielęgniarek',
- 'b119' => 'Pilotów',
-# 'b1036' => 'Pisary (nż)', # nowa nazwa # 'b3420' => 'Pisary Spacerowa (nż)',
- 'b3421' => 'Pisary Akacjowa (nż)',
- 'b1236' => 'Pisary Dwór (nż)',
- 'b2860' => 'Pisary Kasztanowa (nż)',
-# 'b1037' => 'Pisary Kiosk (nż)', # nowa nazwa # 'b3421' => 'Pisary Akacjowa (nż)',
-# 'b1038' => 'Pisary Mleczarnia (nż)', # nowa nazwa # 'b3422' => 'Pisary Mleczna (nż)',
- 'b3422' => 'Pisary Mleczna (nż)',
- 'b1041' => 'Pisary Skrzyżowanie (nż)',
- 'b3420' => 'Pisary Spacerowa (nż)',
-# 'b3263' => 'Plac Axentowicza', # tymczasowy - przebudowa linii do Bronowic
- 'b570' => 'Plac Bohaterów Getta',
- 'b2744' => 'Plac Centralny im. R.Reagana',
- 'b79' => 'Plac Inwalidów',
- 'b360' => 'Plac Wolnica', # nieczynny - przebudowa ul. Krakowskiej
- 'b1360' => 'Plac Wszystkich Świętych',
- 'b47' => 'Pleszowska',
- 'b458' => 'Pleszów',
- 'b357' => 'Poczta Główna',
- 'b944' => 'Pod Fortem',
- 'b1014' => 'Pod Lipą (nż)',
- 'b812' => 'Podgaje',
- 'b603' => 'Podgórki Tynieckie',
- 'b3158' => 'Podgórze SKA',
- 'b517' => 'Podstawie (nż)',
- 'b644' => 'Podwierzbie', # nieczynny - przebudowa ul. Wrobela
- 'b1311' => 'Podłęże Balachówka (nż)',
- 'b1309' => 'Podłęże Centrum (nż)',
- 'b2728' => 'Podłęże Przedszkole (nż)',
- 'b1310' => 'Podłęże Straż (nż)',
- 'b956' => 'Polana Żywiecka (nż)',
- 'b1093' => 'Polanka Hallera Dwór',
-# 'b1318' => 'Polanowice (nż)', # nowa nazwa # 'b3288' => 'Polanowice Boisko (nż)',
- 'b3288' => 'Polanowice Boisko (nż)',
- 'b1323' => 'Polanowice Kolonia (nż)',
- 'b73' => 'Politechnika',
- 'b380' => 'Popielidów',
- 'b833' => 'Poronińska (nż)',
- 'b97' => 'Powstańców',
- 'b1155' => 'Powstańców Garaże',
- 'b3195' => 'Powstańców Magazyny',
- 'b2806' => 'Poziomkowa',
- 'b580' => 'Praska (nż)',
- 'b3010' => 'Prawocheńskiego (nż)',
- 'b2746' => 'Prokocim Rynek',
- 'b682' => 'Prokocim Szpital',
- 'b684' => 'Prokocim UJ',
- 'b633' => 'Prosta',
-# 'b479' => 'Prussy', # błąd # 'b3300' => 'Prusy',
- 'b3300' => 'Prusy',
- 'b478' => 'Prusy Szkoła (nż)',
- 'b477' => 'Prusy WSR (nż)',
- 'b671' => 'Pruszyńskiego',
- 'b3219' => 'Przebieczany',
- 'b1214' => 'Przeginia Duchowna (nż)',
-# 'b1228' => 'Przeginia Duchowna Bar (nż)', # nowa nazwa # 'b3407' => 'Przeginia Duchowna Kościół (nż)',
-# 'b1199' => 'Przeginia Duchowna Centrum', # nowa nazwa # 'b3399' => 'Przeginia Duchowna Remiza',
- 'b3407' => 'Przeginia Duchowna Kościół (nż)',
- 'b3399' => 'Przeginia Duchowna Remiza',
- 'b1198' => 'Przeginia Duchowna Szkoła (nż)',
-# 'b1227' => 'Przeginia Narodowa (nż)', # nowa nazwa # 'b3406' => 'Przeginia Narodowa Bunar (nż)',
-# 'b2906' => 'Przeginia Narodowa Bonar (nż)', # nowa nazwa # 'b3400' => 'Przeginia Narodowa Dwór (nż)',
- 'b3406' => 'Przeginia Narodowa Bunar (nż)',
- 'b3400' => 'Przeginia Narodowa Dwór (nż)',
- 'b316' => 'Przegon',
- 'b275' => 'Przegorzały',
- 'b3182' => 'Przegorzały Obwodnica (nż)',
- 'b641' => 'Przewóz',
- 'b904' => 'Przy Kuźni (nż)',
- 'b2530' => 'Przybyszewskiego',
- 'b190' => 'Przybysławice I (nż)',
- 'b191' => 'Przybysławice II',
- 'b1084' => 'Przybysławice III (nż)',
- 'b745' => 'Przykopy (nż)',
- 'b532' => 'Przylasek Rusiecki',
- 'b543' => 'Przylasek Wyciąski (nż)',
- 'b2527' => 'Prądnik Biały',
- 'b870' => 'Prądnik Biały Zachód',
- 'b100' => 'Prądnik Czerwony',
- 'b1164' => 'Pszona',
- 'b1253' => 'Puszkarska',
- 'b2569' => 'Pychowice',
- 'b730' => 'Pytlasińskiego',
- 'b3124' => 'Półłanki',
- 'b72' => 'Pędzichów',
- 'b2703' => 'Pękowice',
- 'b2873' => 'Płaszowska',
- 'b564' => 'Płaszów Szkoła',
- 'b660' => 'Płk. Dąbka',
- 'b354' => 'Raciborowice',
- 'b1138' => 'Raciborowice Centrum',
- 'b2988' => 'Raciborowice Granica (nż)',
- 'b154' => 'Raczkiewicza (nż)',
- 'b1033' => 'Radwanowice I (nż)',
- 'b3208' => 'Radwanowice Krzeszowicka (nż)',
- 'b1032' => 'Radwanowice Pętla',
- 'b132' => 'Radzikowskiego',
- 'b1376' => 'Radzikowskiego Osiedle',
- 'b788' => 'Radziszów Centrum',
- 'b2774' => 'Radziszów Cmentarz (nż)',
- 'b789' => 'Radziszów Kamionna (nż)',
- 'b1182' => 'Radziszów Kładka (nż)',
- 'b797' => 'Radziszów Leśniczówka (nż)',
- 'b1186' => 'Radziszów PKP',
- 'b798' => 'Radziszów Podlesie (nż)',
- 'b3233' => 'Radziszów Podlesie Las (nż)',
- 'b1184' => 'Radziszów Podwale (nż)',
- 'b2477' => 'Radziszów Stare Sanatorium (nż)',
- 'b3075' => 'Radziszów Szpital',
- 'b786' => 'Radziszów Włosanka (nż)',
- 'b2491' => 'Radziszów Za Mogiłką (nż)',
- 'b1183' => 'Radziszów Zacisze (nż)',
- 'b787' => 'Radziszów Zadworze (nż)',
- 'b1185' => 'Radziszów Zawodzie (nż)',
- 'b695' => 'Rajsko',
- 'b1325' => 'Ratajów Skrzyżowanie (nż)',
- 'b3192' => 'Reduta (nż)',
- 'b502' => 'Resztówka',
- 'b2568' => 'Rodzinna',
- 'b3041' => 'Rondo 308. Dywizjonu',
- 'b1066' => 'Rondo Barei',
- 'b408' => 'Rondo Czyżyńskie',
- 'b3338' => 'Rondo Grunwaldzkie',
- 'b365' => 'Rondo Grzegórzeckie',
- 'b2539' => 'Rondo Hipokratesa',
- 'b2745' => 'Rondo Kocmyrzowskie im. Ks. Gorzelanego',
- 'b610' => 'Rondo Matecznego',
- 'b125' => 'Rondo Mogilskie',
- 'b118' => 'Rondo Młyńskie',
- 'b12' => 'Rondo Ofiar Katynia',
- 'b383' => 'Rondo Piastowskie',
- 'b2689' => 'Rostworowskiego',
- 'b589' => 'Ruczaj',
- 'b217' => 'Rudawa (nż)',
-# 'b1030' => 'Rudawa Bloki (nż)', # nowa nazwa # 'b3418' => 'Rudawa Osiedle (nż)',
-# 'b1031' => 'Rudawa Kościół', # nowa nazwa # 'b3419' => 'Rudawa Rynek',
- 'b1064' => 'Rudawa Młyn (nż)',
- 'b3418' => 'Rudawa Osiedle (nż)',
- 'b1059' => 'Rudawa PKP',
- 'b3419' => 'Rudawa Rynek',
- 'b2924' => 'Rudawa Stadion (nż)',
- 'b1039' => 'Rudawa Szkoła',
-# 'b2894' => 'Rusocice Droga do Kościoła (nż)', # nowa nazwa # 'b3308' => 'Rusocice Na Brzegu (nż)',
- 'b3405' => 'Rusocice Granica (nż)',
- 'b1260' => 'Rusocice Jałowce (nż)',
- 'b3308' => 'Rusocice Na Brzegu (nż)',
- 'b1229' => 'Rusocice Skład (nż)',
-# 'b2893' => 'Rusocice Stacja Benzynowa (nż)', # nowa nazwa # 'b3307' => 'Rusocice Stacja Paliw (nż)',
-# 'b3307' => 'Rusocice Stacja Paliw (nż)', # nowa nazwa # 'b3405' => 'Rusocice Granica (nż)',
- 'b1230' => 'Rusocice Wieś',
- 'b1261' => 'Rusocice Załęg (nż)',
- 'b1225' => 'Rusocice Łęg (nż)',
- 'b520' => 'Ruszcza',
- 'b653' => 'Rybitwy Dom Kultury',
- 'b652' => 'Rybitwy Rozjazd (nż)',
- 'b654' => 'Rybitwy Sklep (nż)',
-# 'b1209' => 'Rybna', # nowa nazwa # 'b3299' => 'Rybna Kościół',
- 'b1367' => 'Rybna Dolna',
- 'b3103' => 'Rybna Droga do Sanki (nż)', # powinno być # 'b3103' => 'Sanka Skrzyżowanie',
- 'b1213' => 'Rybna Dół (nż)',
- 'b1368' => 'Rybna Granica (nż)',
- 'b3299' => 'Rybna Kościół',
- 'b1208' => 'Rybna Nowy Świat',
- 'b2884' => 'Rybna Nowy Świat Góra (nż)',
- 'b1212' => 'Rybna Ośrodek Zdrowia (nż)',
- 'b2885' => 'Rybna Szkoła (nż)',
- 'b1341' => 'Rybna Zagórze (nż)',
- 'b579' => 'Rynek Dębnicki',
- 'b616' => 'Rynek Fałęcki',
- 'b1262' => 'Rzebika',
- 'b611' => 'Rzemieślnicza',
- 'b3009' => 'Rzepakowa (nż)',
- 'b2654' => 'Rzepakowa Świetlica (nż)',
- 'b153' => 'Rzepichy (nż)',
-# 'b855' => 'Rzeszotary', # nowa nazwa # 'b3321' => 'Rzeszotary Dworska',
- 'b3321' => 'Rzeszotary Dworska',
-# 'b859' => 'Rzeszotary Górne (nż)', # nowa nazwa # 'b3322' => 'Rzeszotary Remiza (nż)',
- 'b2940' => 'Rzeszotary Panciawa (nż)',
- 'b2939' => 'Rzeszotary Panciawa Pętla',
- 'b2778' => 'Rzeszotary Pod Dębiną (nż)',
- 'b858' => 'Rzeszotary Polanki (nż)',
- 'b3322' => 'Rzeszotary Remiza (nż)',
- 'b857' => 'Rzeszotary Szkoła (nż)',
- 'b2732' => 'Rzeszotary Tempo (nż)',
- 'b856' => 'Rzeszotary Trafo (nż)',
- 'b842' => 'Rzeszotary Zalesie (nż)',
- 'b1087' => 'Rzozów Baseny (nż)',
- 'b1088' => 'Rzozów I (nż)',
- 'b1180' => 'Rzozów PKP (nż)',
- 'b1179' => 'Rzozów Skotnica (nż)',
- 'b1089' => 'Rzozów Szkoła',
- 'b1181' => 'Rzozów Zagonnie (nż)',
- 'b196' => 'Rząska Autostrada (nż)',
- 'b193' => 'Rząska Jednostka Wojskowa (nż)',
- 'b3199' => 'Rząska Szkoła',
- 'b194' => 'Rząska UR (nż)',
- 'b55' => 'Różyckiego',
-# 'b3061' => 'Rączna Bażanty (nż)', # nowa nazwa # 'b3408' => 'Rączna Gołębiec (nż)',
- 'b3395' => 'Rączna Bażanty (nż)',
- 'b2902' => 'Rączna Boisko (nż)',
- 'b1217' => 'Rączna Dzikowiec (nż)',
- 'b3408' => 'Rączna Gołębiec (nż)',
- 'b296' => 'Rączna Kapliczka (nż)',
- 'b1370' => 'Rączna Kościół (nż)',
-# 'b2901' => 'Rączna OSP (nż)', # nowa nazwa # 'b3396' => 'Rączna Remiza (nż)',
- 'b306' => 'Rączna Osiedle (nż)',
- 'b1216' => 'Rączna Podlas (nż)',
- 'b3396' => 'Rączna Remiza (nż)',
- 'b3044' => 'Rżąka',
-# 'b2762' => 'Sadowie (nż)', # nowa nazwa # 'b3290' => 'Sadowie Wiadukt (nż)',
- 'b3290' => 'Sadowie Wiadukt (nż)',
- 'b311' => 'Salwator',
- 'b3152' => 'Sapalskiego (nż)',
- 'b559' => 'Saska',
- 'b3128' => 'Sawiczewskich',
-# 'b3261' => 'Sewera (nż)', # tymczasowy - przebudowa linii do Bronowic
- 'b772' => 'Sidzina',
- 'b943' => 'Sieborowice (nż)',
- 'b542' => 'Siejówka (nż)',
- 'b142' => 'Sielanka',
- 'b2547' => 'Sieroszewskiego (nż)',
- 'b32' => 'Siewna',
- 'b33' => 'Siewna Wiadukt',
- 'b1166' => 'Sikorki',
- 'b2556' => 'Siwka (nż)',
- 'b264' => 'Skalna (nż)',
- 'b2731' => 'Skarżyńskiego',
- 'b779' => 'Skawina',
- 'b1133' => 'Skawina 29 Listopada',
- 'b2473' => 'Skawina Ajka',
- 'b2854' => 'Skawina Bukowska (nż)',
- 'b2863' => 'Skawina Centrum Sportowe',
- 'b2475' => 'Skawina Cmentarz',
- 'b1137' => 'Skawina Cmentarz Komunalny',
- 'b1104' => 'Skawina Elektrownia (nż)',
- 'b2487' => 'Skawina Energetyków (nż)',
- 'b3008' => 'Skawina Energetyków Przejazd PKP (nż)',
- 'b2853' => 'Skawina Graniczna (nż)',
- 'b1086' => 'Skawina Koncentraty',
- 'b2930' => 'Skawina Kopernika (nż)',
- 'b1101' => 'Skawina Korabnicka (nż)',
- 'b1102' => 'Skawina Korabnicka Szkoła (nż)',
- 'b2481' => 'Skawina Korabniki',
- 'b2494' => 'Skawina Nad Potokiem (nż)',
-# 'b2868' => 'Skawina Ofiar Katynia', # nowa nazwa # 'b3451' => 'Kopanka Ofiar Katynia',
- 'b2929' => 'Skawina Ogrody (nż)',
- 'b2471' => 'Skawina Os.Radziszowskie (nż)',
- 'b3336' => 'Skawina Piastowska (nż)',
- 'b2867' => 'Skawina Pileckiego',
- 'b1103' => 'Skawina Piłsudskiego',
- 'b1107' => 'Skawina Podbory (nż)',
- 'b3327' => 'Skawina Podgórki',
-# 'b2927' => 'Skawina Podgórki Skawińskie', # nowa nazwa # 'b3327' => 'Skawina Podgórki',
- 'b2476' => 'Skawina Podlipki',
- 'b2474' => 'Skawina Popiełuszki',
- 'b2472' => 'Skawina Radziszowska (nż)',
- 'b2486' => 'Skawina Robotnicza',
- 'b781' => 'Skawina Rynek',
- 'b785' => 'Skawina Rzepnik',
- 'b3441' => 'Skawina SCK',
- 'b2480' => 'Skawina Samborek Most',
- 'b1134' => 'Skawina Starostwo Powiatowe',
- 'b1007' => 'Skawina Szkoła',
- 'b1008' => 'Skawina Sąd',
- 'b2479' => 'Skawina Tyniecka',
- 'b2478' => 'Skawina Tyniecka Osiedle',
- 'b3173' => 'Skawina Tyniecka Rzepnik (nż)',
- 'b1011' => 'Skawina Wojska Polskiego',
- 'b1100' => 'Skawina Wyspiańskiego',
- 'b2820' => 'Skawina Wyspiańskiego Szkoła (nż)',
- 'b1105' => 'Skawina Zachodnia (nż)',
- 'b3334' => 'Skawina Żwirowa (nż)',
- 'b3335' => 'Skawina Żwirownia (nż)',
- 'b219' => 'Skała Kmity (nż)',
- 'b766' => 'Skotniki',
- 'b3181' => 'Skotniki Kościół',
- 'b604' => 'Skotniki Szkoła',
- 'b752' => 'Skośna',
- 'b42' => 'Skrajna (nż)',
-# 'b953' => 'Skrzeszowice', # nowa nazwa # 'b3286' => 'Skrzeszowice OSP Boisko',
- 'b3286' => 'Skrzeszowice OSP Boisko',
- 'b967' => 'Skrzyżowanie do Podchruścia (nż)',
- 'b1153' => 'Smardzowice',
- 'b2972' => 'Smardzowice Wołówka (nż)',
- 'b816' => 'Smoleńskiego',
- 'b572' => 'Smolki',
- 'b699' => 'Soboniowice',
- 'b746' => 'Solvay',
- 'b2544' => 'Sołtysowska (nż)',
- 'b2546' => 'Sołtysowska Osiedle',
- 'b2545' => 'Sołtysowska Zakłady',
- 'b116' => 'Spadochroniarzy',
- 'b3276' => 'Spławy',
- 'b57' => 'Stachiewicza',
- 'b1308' => 'Staniątki Wiadukt (nż)',
- 'b144' => 'Stara Wola',
- 'b2558' => 'Stare Wiślisko',
- 'b358' => 'Starowiślna',
- 'b3032' => 'Stary Kleparz',
- 'b2791' => 'Stawowa',
- 'b112' => 'Stella-Sawickiego',
- 'b558' => 'Stoczniowców',
- 'b711' => 'Stojałowskiego',
- 'b359' => 'Stradom',
- 'b423' => 'Struga',
- 'b2874' => 'Strycharska',
- 'b101' => 'Strzelców',
- 'b141' => 'Strzelnica',
- 'b618' => 'Sucha',
- 'b666' => 'Sucharskiego (nż)',
- 'b456' => 'Suchy Jar (nż)',
- 'b2602' => 'Sudolska',
- 'b476' => 'Sulechów (nż)',
- 'b2570' => 'Surzyckiego',
- 'b2571' => 'Sułkowskiego',
- 'b2497' => 'Sułków (nż)',
- 'b739' => 'Swoszowice Autostrada (nż)',
- 'b732' => 'Swoszowice Poczta',
- 'b3129' => 'Swoszowice Szkoła',
- 'b869' => 'Szafrańska',
- 'b562' => 'Szczecińska',
- 'b2593' => 'Szczegów',
- 'b220' => 'Szczyglice',
- 'b3045' => 'Szczyglice Autostrada',
- 'b871' => 'Szczyglice Dom Kultury',
- 'b224' => 'Szczyglice Most (nż)',
- 'b2910' => 'Szczyglice Podkamycze',
- 'b651' => 'Szparagowa',
- 'b3203' => 'Szpital Jana Pawła II',
- 'b3036' => 'Szpital Narutowicza',
- 'b2759' => 'Szpital Okulistyczny',
- 'b827' => 'Szpital Rydygiera',
- 'b3383' => 'Szpital Uniwersytecki / Instytut Pediatrii', # poprawione # 'b3383' => 'Szpital Uniwersytecki / Instytut Pediatr',
- 'b425' => 'Szpital Żeromskiego',
- 'b575' => 'Szwedzka',
- 'b971' => 'Szyce I (nż)',
- 'b970' => 'Szyce II (nż)',
- 'b2646' => 'Szymańskiego (nż)',
- 'b628' => 'Sławka (nż)',
- 'b2607' => 'Słomczyńskiego',
- 'b577' => 'Słomiana',
- 'b2733' => 'Słomniki Kościuszki',
- 'b1315' => 'Słomniki Osiedle',
- 'b1316' => 'Słomniki Rynek',
- 'b1317' => 'Słomniki Zagłoby (nż)',
- 'b2584' => 'Słona Woda',
- 'b3138' => 'Słoneckiego',
- 'b314' => 'Słonecznikowa',
-# 'b3293' => 'Słowiańska', # tymczasowy - przebudowa linii do Bronowic
- 'b2872' => 'TAURON Arena Kraków',
- 'b2871' => 'TAURON Arena Kraków Al. Pokoju (nż)',
- 'b3040' => 'TAURON Arena Kraków Wieczysta',
- 'b2724' => 'TR',
- 'b3172' => 'Taklińskiego (nż)',
- 'b77' => 'Teatr Bagatela',
- 'b420' => 'Teatr Ludowy',
- 'b3242' => 'Teatr Słowackiego',
- 'b681' => 'Teligi',
- 'b919' => 'Tischnera',
- 'b3218' => 'Tomaszkowice',
- 'b989' => 'Tomaszowice',
- 'b2697' => 'Tomaszowice Gliniki (nż)',
- 'b988' => 'Tomaszowice I (nż)',
- 'b3167' => 'Tomaszowice Kolberga (nż)',
- 'b987' => 'Tomaszowice Wedonka (nż)',
- 'b139' => 'Tondosa (nż)',
- 'b21' => 'Tonie',
- 'b990' => 'Tonie Gliniki (nż)',
- 'b25' => 'Tonie Kąty (nż)',
- 'b23' => 'Tonie Skrzyżowanie',
- 'b966' => 'Tor Kajakowy',
- 'b936' => 'Torfowa',
- 'b3450' => 'Tretówka', # tymczasowy - przebudowa ul. Wrony
- 'b994' => 'Trojadyn Skrzyżowanie (nż)',
- 'b184' => 'Trojanowice',
- 'b2977' => 'Trojanowice Krakowska (nż)',
- 'b178' => 'Trojanowice Pętla',
- 'b183' => 'Trojanowice Strugi (nż)',
- 'b2650' => 'Truskawkowa (nż)',
-# 'b2720' => 'Trzecia Góra (nż)', # nowa nazwa # 'b3341' => 'Węgrzce Trzecia Góra (nż)',
- 'b3222' => 'Trąbki I (nż)',
- 'b3223' => 'Trąbki OSP',
- 'b3245' => 'Trąbki P+R',
- 'b714' => 'Tuchowska',
- 'b999' => 'Turowicza (nż)',
- 'b593' => 'Tyniec',
- 'b591' => 'Tyniec Kamieniołom',
- 'b2562' => 'Tyniecka Autostrada (nż)',
- 'b3140' => 'UR Aleja 29 Listopada',
- 'b5' => 'UR Balicka',
- 'b115' => 'Ugorek',
- 'b1017' => 'Ujazd Pętla',
- 'b723' => 'Ukraina (nż)',
- 'b127' => 'Uniwersytet Ekonomiczny',
- 'b321' => 'Uniwersytet Jagielloński',
- 'b88' => 'Uniwersytet Pedagogiczny',
- 'b67' => 'Urząd Marszałkowski',
- 'b957' => 'Urząd Skarbowy Nowa Huta',
- 'b83' => 'Urzędnicza',
- 'b486' => 'Wadowska (nż)',
- 'b485' => 'Wadów',
- 'b492' => 'Wadów Działki (nż)',
- 'b2554' => 'Wadów Glinik (nż)',
- 'b2738' => 'Wadów Os.Kolejowe',
- 'b483' => 'Wadów Osiedle (nż)',
- 'b484' => 'Wadów Szkoła',
- 'b463' => 'Walcownia',
- 'b2599' => 'Warchałowskiego',
-# 'b3264' => 'Warmijska', # tymczasowy - przebudowa linii do Bronowic
- 'b3131' => 'Warszewicza (nż)',
-# 'b338' => 'Warszówka (nż)', # nowa nazwa # 'b3347' => 'Michałowice Warszawka (nż)',
- 'b2564' => 'Wały Wiślane (nż)',
- 'b2543' => 'Wańkowicza',
- 'b2639' => 'Ważewskiego',
- 'b2578' => 'Weigla',
- 'b133' => 'Wesele',
- 'b434' => 'Wiadukty (nż)',
- 'b3382' => 'Widłakowa (nż)',
- 'b2722' => 'Wielicka Granica Miasta',
- 'b3380' => 'Wieliczka Centrum',
- 'b898' => 'Wieliczka Cmentarz',
- 'b3246' => 'Wieliczka Gdowska',
- 'b2852' => 'Wieliczka Goliana',
-# 'b2862' => 'Wieliczka Kampus', # nowa nazwa # 'b3429' => 'Wieliczka Miasto',
- 'b3430' => 'Wieliczka Klasztor',
- 'b2814' => 'Wieliczka Klaśnieńska (nż)',
- 'b1167' => 'Wieliczka Kopalnia Soli',
-# 'b911' => 'Wieliczka Kościół', # nowa nazwa # 'b3430' => 'Wieliczka Klasztor'
- 'b3431' => 'Wieliczka Mediateka',
- 'b3429' => 'Wieliczka Miasto',
- 'b2730' => 'Wieliczka Niepołomska (nż)',
- 'b3006' => 'Wieliczka Os.Asnyka',
- 'b2503' => 'Wieliczka Park',
- 'b3247' => 'Wieliczka Polna (nż)',
-# 'b1168' => 'Wieliczka Rynek', # nowa nazwa # 'b3431' => 'Wieliczka Mediateka',
- 'b2816' => 'Wieliczka Solne Miasto',
- 'b3235' => 'Wieliczka Stacja Paliw',
- 'b2815' => 'Wieliczka Sąd',
- 'b972' => 'Wielka Wieś (nż)',
- 'b1364' => 'Wielkie Drogi (nż)',
- 'b1232' => 'Wielkie Drogi Ośrodek Zdrowia (nż)',
- 'b1113' => 'Wielkie Drogi PKP (nż)',
- 'b1233' => 'Wielkie Drogi Szkoła (nż)',
- 'b1112' => 'Wielkie Drogi Trzebol (nż)',
- 'b866' => 'Wiklinowa (nż)',
- 'b1267' => 'Wiktorowice Centrum (nż)',
- 'b1264' => 'Wiktorowice Granica (nż)',
- 'b3189' => 'Wiktorowice Rozlewnia Wód (nż)',
- 'b1266' => 'Wiktorowice Skrzyżowanie (nż)',
- 'b2515' => 'Wileńska',
- 'b737' => 'Wilga (nż)',
- 'b1372' => 'Winnicka (nż)',
- 'b29' => 'Witkowice',
- 'b30' => 'Witkowice Nowe',
- 'b718' => 'Witosa',
-# 'b1025' => 'Więckowice (nż)', # nowa nazwa # 'b3416' => 'Więckowice Ogrodowa (nż)',
- 'b2921' => 'Więckowice Lipka (nż)',
- 'b3416' => 'Więckowice Ogrodowa (nż)',
-# 'b348' => 'Więcławice Stare (nż)', # nowa nazwa # 'b3372' => 'Więcławice Stare Centrum (nż)',
- 'b3372' => 'Więcławice Stare Centrum (nż)',
- 'b2987' => 'Więcławice Stare Wysyłek (nż)',
- 'b110' => 'Wiślicka',
- 'b634' => 'Wlotowa',
- 'b263' => 'Wodociągi (nż)',
- 'b3115' => 'Wodociągowa (nż)',
- 'b1284' => 'Wola Batorska Borek (nż)',
- 'b1283' => 'Wola Batorska Cmentarz (nż)',
- 'b1282' => 'Wola Batorska Kościół (nż)',
- 'b1285' => 'Wola Batorska Mikoniowiec (nż)',
- 'b1280' => 'Wola Batorska Ruskie (nż)',
- 'b1286' => 'Wola Batorska Zamoglice (nż)',
- 'b1281' => 'Wola Batorska Żwirownia (nż)',
- 'b629' => 'Wola Duchacka',
-# 'b949' => 'Wola Luborzycka (nż)', # nowa nazwa # 'b3284' => 'Wola Luborzycka Skrzyżowanie (nż)',
- 'b1332' => 'Wola Luborzycka Działki (nż)',
- 'b950' => 'Wola Luborzycka Las (nż)',
- 'b3284' => 'Wola Luborzycka Skrzyżowanie (nż)',
-# 'b1128' => 'Wola Radziszowska', # nowa nazwa # 'b3330' => 'Wola Radziszowska Pętla',
- 'b1127' => 'Wola Radziszowska Centrum',
- 'b1129' => 'Wola Radziszowska Chorzyny (nż)',
-# 'b3185' => 'Wola Radziszowska Kapelanka (nż)', # nowa nazwa # 'b3362' => 'Wola Radziszowska Kapelanka (nż)',
- 'b3362' => 'Wola Radziszowska Kapelanka (nż)',
- 'b1126' => 'Wola Radziszowska Lipki (nż)',
- 'b1124' => 'Wola Radziszowska Mała Ostra Góra (nż)',
- 'b1125' => 'Wola Radziszowska Most (nż)',
- 'b1336' => 'Wola Radziszowska Podgaźle (nż)',
- 'b3330' => 'Wola Radziszowska Pętla',
-# 'b1337' => 'Wola Radziszowska Łęg (nż)', # dawny
- 'b1291' => 'Wola Zabierzowska (nż)',
-# 'b172' => 'Wola Zachariaszowska', # nowa nazwa # 'b3343' => 'Wola Zachariaszowska Szkoła',
-# 'b2702' => 'Wola Zachariaszowska Kresy', # nowa nazwa # 'b3356' => 'Michałowice Las Michałowski',
- 'b3343' => 'Wola Zachariaszowska Szkoła',
- 'b3360' => 'Wola Zachariaszowska Słoneczna',
-# 'b2976' => 'Wola Zachariaszowska Zakońce', # nowa nazwa # 'b3360' => 'Wola Zachariaszowska Słoneczna',
- 'b539' => 'Wolica (nż)',
- 'b538' => 'Wolica Kościół (nż)',
- 'b537' => 'Wolica Las',
- 'b536' => 'Wolica Most',
-# 'b540' => 'Wolica Sklep (nż)', # nowa nazwa # 'b3427' => 'Wolica Szkoła (nż)',
- 'b3427' => 'Wolica Szkoła (nż)',
-# 'b894' => 'Wołowice (nż)', # nowa nazwa # 'b3397' => 'Wołowice Remiza (nż)',
- 'b3231' => 'Wołowice Grotowa (nż)',
- 'b3227' => 'Wołowice Grotowa Skrzyżowanie (nż)',
- 'b909' => 'Wołowice Kapliczka',
-# 'b1207' => 'Wołowice Niwa (nż)', # nowa nazwa # 'b3403' => 'Wołowice Niwka (nż)',
- 'b3403' => 'Wołowice Niwka (nż)',
- 'b2907' => 'Wołowice Pichonówka (nż)',
- 'b3397' => 'Wołowice Remiza (nż)',
- 'b1205' => 'Wołowice Sklep (nż)',
- 'b3401' => 'Wołowice Skrzyżowanie (nż)',
- 'b893' => 'Wołowice Szkoła',
- 'b3229' => 'Wołowice Zawierzbie (nż)',
- 'b643' => 'Wrobela', # nieczynny - przebudowa ul. Wrobela
- 'b68' => 'Wrocławska',
- 'b2598' => 'Wrony',
-# 'b2948' => 'Wrząsowice (nż)', # nowa nazwa # 'b3319' => 'Wrząsowice Bonifraterska (nż)',
- 'b3426' => 'Wrząsowice Bonifraterska (nż)',
-# 'b3319' => 'Wrząsowice Bonifraterska (nż)', # nowa nazwa # 'b3426' => 'Wrząsowice Bonifraterska (nż)',
- 'b2946' => 'Wrząsowice Centrum',
- 'b1234' => 'Wrząsowice Kowaleca (nż)',
- 'b2950' => 'Wrząsowice Nad Wilgą',
- 'b2947' => 'Wrząsowice Pileckiego (nż)',
- 'b2952' => 'Wrząsowice Pod Skałą (nż)',
- 'b3212' => 'Wrząsowice Rondo',
- 'b2945' => 'Wrząsowice Wrzosowa (nż)',
- 'b2944' => 'Wrząsowice Zielona (nż)',
- 'b3148' => 'Wróblowice',
- 'b729' => 'Wróblowice Szkoła', # nieczynny - przebudowa ul. Myślenickiej
- 'b499' => 'Wróżenice',
- 'b2641' => 'Wróżenice Górka (nż)',
- 'b2640' => 'Wróżenicka (nż)',
- 'b60' => 'Wybickiego',
- 'b2647' => 'Wyciąska (nż)',
- 'b508' => 'Wyciąże (nż)',
- 'b515' => 'Wyciąże Sklep (nż)',
- 'b521' => 'Wyciąże Wiadukt (nż)',
- 'b2645' => 'Wyciąże Zachód (nż)',
- 'b683' => 'Wydział Farmaceutyczny UJ',
- 'b43' => 'Wyki',
- 'b2998' => 'Wysiołek Luborzycki (nż)',
- 'b2999' => 'Wysiołek Luborzycki Kapkazy (nż)',
- 'b1320' => 'Wysiołek Luborzycki Radwany (nż)',
- 'b2997' => 'Wysiołek Luborzycki Skrzyżowanie (nż)',
- 'b1259' => 'Wysłouchów',
-# 'b292' => 'Wyźrał Szkoła (nż)', # nowa nazwa # 'b3303' => 'Kaszów Szkoła nr 2 (nż)',
-# 'b293' => 'Wyźrał Wielka Droga (nż)', # nowa nazwa # 'b3304' => 'Kaszów Wielka Droga (nż)',
- 'b442' => 'Wzgórza Krzesławickie',
- 'b328' => 'Węgrzce',
- 'b3442' => 'Węgrzce B1 (nż)',
- 'b3443' => 'Węgrzce B4 (nż)',
-# 'b2980' => 'Węgrzce Bosutów (nż)', # nowa nazwa # 'b3444' => 'Węgrzce Sudół (nż)',
-# 'b2979' => 'Węgrzce Bosutów Sudół (nż)', # nowa nazwa # 'b3443' => 'Węgrzce B4 (nż)',
- 'b1079' => 'Węgrzce Błonie',
- 'b165' => 'Węgrzce Centrum',
- 'b1074' => 'Węgrzce Centrum Medyczne (nż)',
- 'b1073' => 'Węgrzce Magiczne Wzgórze (nż)',
- 'b1080' => 'Węgrzce Pętla',
- 'b327' => 'Węgrzce Starostwo Powiatowe',
- 'b3444' => 'Węgrzce Sudół (nż)',
- 'b3341' => 'Węgrzce Trzecia Góra (nż)',
- 'b1163' => 'Węgrzce Wielkie II (nż)',
- 'b1161' => 'Węgrzce Wielkie III (nż)',
- 'b3270' => 'Węgrzce Wielkie Pętla',
- 'b487' => 'Węgrzynowice',
- 'b488' => 'Węgrzynowice Centrum (nż)',
- 'b2552' => 'Węgrzynowice Dół (nż)',
- 'b3277' => 'Węgrzynowicka (nż)',
- 'b3127' => 'Węzeł Wielicki (nż)',
- 'b3118' => 'Władysława Jagiełły',
- 'b3110' => 'Władysława Łokietka',
-# 'b807' => 'Włosań', # nowa nazwa # 'b3314' => 'Włosań Centrum',
- 'b3314' => 'Włosań Centrum',
- 'b3053' => 'Włosań Dział Wschodni (nż)',
- 'b809' => 'Włosań Kopań (nż)',
- 'b808' => 'Włosań Krzyżówka (nż)',
- 'b146' => 'ZOO',
- 'b2495' => 'Zabawa (nż)',
- 'b2510' => 'Zabawa I (nż)',
- 'b199' => 'Zabierzów',
- 'b1287' => 'Zabierzów Bocheński Centrum (nż)',
- 'b198' => 'Zabierzów Działki (nż)',
- 'b3248' => 'Zabierzów Eximius Park',
- 'b202' => 'Zabierzów I',
- 'b961' => 'Zabierzów Młyn',
- 'b213' => 'Zabierzów Ośrodek Zdrowia',
- 'b204' => 'Zabierzów PKP',
- 'b203' => 'Zabierzów Piaski (nż)',
- 'b201' => 'Zabierzów Piekarnia',
- 'b3249' => 'Zabierzów Rynek',
- 'b200' => 'Zabierzów Sklep',
- 'b503' => 'Zabłocie Kościelnickie (nż)',
- 'b590' => 'Zachodnia',
-# 'b2888' => 'Zagacie (nż)', # nowa nazwa # 'b3305' => 'Zagacie Górka (nż)',
- 'b3305' => 'Zagacie Górka (nż)',
- 'b2889' => 'Zagacie Witkówki (nż)',
-# 'b916' => 'Zagórzyce Dworskie', # nowa nazwa # 'b3375' => 'Zagórzyce Dworskie Remiza',
- 'b3375' => 'Zagórzyce Dworskie Remiza',
-# 'b917' => 'Zagórzyce Stare (nż)', # nowa nazwa # 'b3376' => 'Zagórzyce Stare Owocowa (nż)',
- 'b3376' => 'Zagórzyce Stare Owocowa (nż)',
- 'b397' => 'Zajezdnia Bieńczyce',
- 'b465' => 'Zajezdnia Nowa Huta',
- 'b2576' => 'Zajezdnia Płaszów',
- 'b1254' => 'Zajezdnia Wola Duchacka',
- 'b155' => 'Zakamycze',
- 'b3179' => 'Zakarnie (nż)',
- 'b7' => 'Zakliki (nż)',
- 'b2789' => 'Zakole',
- 'b1305' => 'Zakrzów (nż)',
- 'b2649' => 'Zakępie (nż)',
- 'b511' => 'Zakład Przeróbki (nż)',
- 'b137' => 'Zarzecze',
- 'b274' => 'Zaskale (nż)',
- 'b356' => 'Zastów',
- 'b1265' => 'Zastów Działki (nż)',
- 'b839' => 'Zatyka (nż)',
- 'b755' => 'Zawiszy',
- 'b751' => 'Zawiła (nż)',
- 'b721' => 'Zbydniowice',
- 'b3147' => 'Zbydniowicka',
- 'b1116' => 'Zelczyna I (nż)',
- 'b1115' => 'Zelczyna Sklep',
- 'b1170' => 'Zelczyna Szkoła (nż)',
- 'b3200' => 'Zelków Kościuszki (nż)',
- 'b3198' => 'Zelków Pętla',
- 'b2918' => 'Zelków Spławy (nż)',
- 'b210' => 'Zelków Staw',
- 'b209' => 'Zelków Wola (nż)',
- 'b447' => 'Zesławice',
- 'b2621' => 'Zesławice Ogródki Działkowe (nż)',
- 'b581' => 'Zielińskiego (nż)',
- 'b2784' => 'Zielonki Galicyjska (nż)',
- 'b3358' => 'Zielonki Jaskinia Zielonkowska (nż)',
- 'b2978' => 'Zielonki Marszowiec Pętla',
- 'b177' => 'Zielonki Rozjazd',
- 'b182' => 'Zielonki Skrzyżowanie',
- 'b180' => 'Zielonki Transformator',
- 'b181' => 'Zielonki UG',
- 'b149' => 'Zielony Dół',
- 'b2577' => 'Złocieniowa',
- 'b811' => 'Złocień',
- 'b679' => 'Ćwiklińskiej',
- 'b922' => 'Łagiewniki',
- 'b563' => 'Łanowa',
- 'b3069' => 'Łobzów SKA',
-# 'b951' => 'Łososkowice', # nowa nazwa # 'b3285' => 'Łososkowice Remiza',
- 'b3285' => 'Łososkowice Remiza',
- 'b952' => 'Łososkowice Szkoła (nż)',
- 'b480' => 'Łuczanowice',
- 'b482' => 'Łuczanowice Skrzyżowanie',
- 'b3066' => 'Łuczanowicka (nż)',
-# 'b1121' => 'Łuczyce', # nowa nazwa # 'b3287' => 'Łuczyce Kosynierów',
- 'b3287' => 'Łuczyce Kosynierów',
- 'b1120' => 'Łuczyce Las (nż)',
- 'b1231' => 'Łuczyce Zjawienie (nż)',
- 'b2761' => 'Łuczyce Zwierzyniec (nż)',
- 'b2604' => 'Łuczyńskiego (nż)',
- 'b120' => 'Łukasiewicza',
- 'b640' => 'Łutnia',
- 'b2596' => 'Łużycka (nż)',
- 'b384' => 'Łęczycka',
-# 'b301' => 'Ściejowice Granica (nż)', # nowa nazwa # 'b3395' => 'Rączna Bażanty (nż)',
- 'b3226' => 'Ściejowice Kościel (nż)',
- 'b1246' => 'Ściejowice Na Bagnach (nż)',
- 'b3225' => 'Ściejowice Remiza (nż)',
- 'b2610' => 'Ślaskiego (nż)',
- 'b1374' => 'Śliwiaka (nż)',
- 'b2517' => 'Śliwiaka Zakłady',
- 'b903' => 'Ślósarczyka',
- 'b2742' => 'Św.Wawrzyńca',
- 'b2605' => 'Świdzińskiego (nż)',
-# 'b2942' => 'Świątniki Bielowicza Szkoła', # nowa nazwa # 'b3316' => 'Świątniki Górne Bielowicza Szkoła',
-# 'b2949' => 'Świątniki Buk (nż)', # nowa nazwa # 'b3320' => 'Świątniki Górne Buk (nż)',
-# 'b847' => 'Świątniki Centrum', # nowa nazwa # 'b3317' => 'Świątniki Górne Centrum',
- 'b3316' => 'Świątniki Górne Bielowicza Szkoła',
- 'b3320' => 'Świątniki Górne Buk (nż)',
- 'b3317' => 'Świątniki Górne Centrum',
- 'b3325' => 'Świątniki Górne Krakowska (nż)',
- 'b3051' => 'Świątniki Górne Piasna Górka (nż)',
- 'b3315' => 'Świątniki Górne Skrzyżowanie (nż)',
- 'b3318' => 'Świątniki Górne Urząd Miasta i Gminy',
-# 'b2768' => 'Świątniki Krakowska (nż)', # nowa nazwa # 'b3325' => 'Świątniki Górne Krakowska (nż)',
-# 'b845' => 'Świątniki Skrzyżowanie (nż)', # nowa nazwa # 'b3315' => 'Świątniki Górne Skrzyżowanie (nż)',
-# 'b2943' => 'Świątniki Urząd Miasta i Gminy', # nowa nazwa # 'b3318' => 'Świątniki Górne Urząd Miasta i Gminy',
- 'b2592' => 'Żelazowskiego (nż)',
-# 'b343' => 'Żerkowice Kolonia (nż)', # nowa nazwa # 'b3349' => 'Narama Księża (nż)',
-# 'b344' => 'Żerkowice Skrzyżowanie (nż)', # nowa nazwa # 'b3350' => 'Krasieniec Stary Skrzyżowanie (nż)',
- 'b417' => 'Żeromskiego',
- 'b534' => 'Żwirownia',
- 'b748' => 'Żywiecka',
- 'b834' => 'Żyzna (nż)',
-);
--
Gitblit v1.9.1