From 69ddf5fb8d8ba832876bcced2d89372e92c192dc Mon Sep 17 00:00:00 2001 From: Jannis R Date: Thu, 28 Oct 2021 12:41:36 +0200 Subject: [PATCH] =?UTF-8?q?BVG:=20parse=20occupancy=20=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- p/bvg/index.js | 67 +- test/bvg-arrivals.js | 31 + test/bvg-trip-with-occupancy.js | 29 + test/fixtures/bvg-arrivals.js | 1367 ++++++ test/fixtures/bvg-arrivals.json | 4332 ++++++++++++++++++++ test/fixtures/bvg-trip-with-occupancy.js | 1937 +++++++++ test/fixtures/bvg-trip-with-occupancy.json | 1699 ++++++++ 7 files changed, 9460 insertions(+), 2 deletions(-) create mode 100644 test/bvg-arrivals.js create mode 100644 test/bvg-trip-with-occupancy.js create mode 100644 test/fixtures/bvg-arrivals.js create mode 100644 test/fixtures/bvg-arrivals.json create mode 100644 test/fixtures/bvg-trip-with-occupancy.js create mode 100644 test/fixtures/bvg-trip-with-occupancy.json diff --git a/p/bvg/index.js b/p/bvg/index.js index fb0d9c7c..87c89470 100644 --- a/p/bvg/index.js +++ b/p/bvg/index.js @@ -9,7 +9,9 @@ const {parseHook} = require('../../lib/profile-hooks') const { parseLine: _parseLine, parseLocation: _parseLocation, + parseArrival: _parseArrival, parseDeparture: _parseDeparture, + parseStopover: _parseStopover, parseJourneyLeg: _parseJourneyLeg, formatStation: _formatStation, } = require('../../lib/default-profile') @@ -17,6 +19,29 @@ const { const baseProfile = require('./base.json') const products = require('./products') +const addOccupancy = (item, occupancyCodes) => { + const remIdx = (item.remarks || []) + .findIndex(r => r.code && occupancyCodes.has(r.code)) + if (remIdx < 0) return; + const rem = item.remarks[remIdx] + + item.occupancy = occupancyCodes.get(rem.code) + item.remarks = [ + ...item.remarks.slice(0, remIdx), + ...item.remarks.slice(remIdx + 1), + ] +} +const stopoverOccupancyCodes = new Map([ + ['text.occup.loc.max.11', 'low'], + ['text.occup.loc.max.12', 'medium'], + // todo: high +]) +const journeyLegOccupancyCodes = new Map([ + ['text.occup.jny.max.11', 'low'], + ['text.occup.jny.max.12', 'medium'], + // todo: high +]) + // todo: https://m.tagesspiegel.de/berlin/fahrerlebnis-wie-im-regionalexpress-so-faehrt-es-sich-in-der-neuen-express-s-bahn/25338674.html const parseLineWithMoreDetails = ({parsed}, p) => { parsed.name = p.name.replace(/^(bus|tram)\s+/i, '') @@ -56,6 +81,27 @@ const parseDepartureRenameRingbahn = ({parsed}, dep) => { } return parsed } +const parseArrivalRenameRingbahn = ({parsed}, arr) => { + if (parsed.line && parsed.line.product === 'suburban') { + const p = parsed.provenance && parsed.provenance.trim() + if (ringbahnClockwise.test(p)) { + parsed.provenance = 'Ringbahn S41 ⟳' + } else if (ringbahnAnticlockwise.test(p)) { + parsed.provenance = 'Ringbahn S42 ⟲' + } + } + return parsed +} + +const parseArrDepWithOccupancy = ({parsed}, d) => { + addOccupancy(parsed, stopoverOccupancyCodes) + return parsed +} + +const parseStopoverWithOccupancy = ({parsed}, st, date) => { + addOccupancy(parsed, stopoverOccupancyCodes) + return parsed +} const parseJourneyLegWithBerlkönig = (ctx, leg, date) => { if (leg.type === 'KISS') { @@ -86,6 +132,12 @@ const parseJourneyLegWithBerlkönig = (ctx, leg, date) => { } return _parseJourneyLeg(ctx, leg, date) } +const parseJourneyLegWithOccupancy = ({parsed}, leg, date) => { + if (leg.type === 'JNY') { + addOccupancy(parsed, journeyLegOccupancyCodes) + } + return parsed +} const validIBNR = /^\d+$/ const formatStation = (id) => { @@ -126,8 +178,19 @@ const bvgProfile = { parseLine: parseHook(_parseLine, parseLineWithMoreDetails), parseLocation: parseHook(_parseLocation, parseLocation), parseStationName: (ctx, name) => shorten(name), - parseDeparture: parseHook(_parseDeparture, parseDepartureRenameRingbahn), - parseJourneyLeg: parseJourneyLegWithBerlkönig, + parseArrival: parseHook( + parseHook(_parseArrival, parseArrivalRenameRingbahn), + parseArrDepWithOccupancy, + ), + parseDeparture: parseHook( + parseHook(_parseDeparture, parseDepartureRenameRingbahn), + parseArrDepWithOccupancy, + ), + parseStopover: parseHook(_parseStopover, parseStopoverWithOccupancy), + parseJourneyLeg: parseHook( + parseJourneyLegWithBerlkönig, + parseJourneyLegWithOccupancy, + ), formatStation, diff --git a/test/bvg-arrivals.js b/test/bvg-arrivals.js new file mode 100644 index 00000000..0ee83c0f --- /dev/null +++ b/test/bvg-arrivals.js @@ -0,0 +1,31 @@ +'use strict' + +const tap = require('tap') + +const createClient = require('..') +const rawProfile = require('../p/bvg') +const res = require('./fixtures/bvg-arrivals.json') +const expected = require('./fixtures/bvg-arrivals.js') + +const client = createClient(rawProfile, 'public-transport/hafas-client:test') +const {profile} = client + +const opt = { + direction: null, + duration: 10, + linesOfStops: true, + remarks: true, + stopovers: true, + includeRelatedStations: true, + when: '2021-10-28T10:35:00+02:00', + products: {} +} + +tap.test('parses an arrival correctly (BVG)', (t) => { + const common = profile.parseCommon({profile, opt, res}) + const ctx = {profile, opt, common, res} + const arrivals = res.jnyL.map(d => profile.parseArrival(ctx, d)) + + t.same(arrivals, expected) + t.end() +}) diff --git a/test/bvg-trip-with-occupancy.js b/test/bvg-trip-with-occupancy.js new file mode 100644 index 00000000..1c109541 --- /dev/null +++ b/test/bvg-trip-with-occupancy.js @@ -0,0 +1,29 @@ +'use strict' + +const tap = require('tap') + +const createClient = require('..') +const rawProfile = require('../p/bvg') +const res = require('./fixtures/bvg-trip-with-occupancy.json') +const expected = require('./fixtures/bvg-trip-with-occupancy.js') + +const client = createClient(rawProfile, 'public-transport/hafas-client:test') +const {profile} = client + +const opt = { + stopovers: true, + polyline: true, + subStops: false, + entrances: true, + remarks: true, + when: '2021-10-28T09:28:00+02:00', +} + +tap.test('parses an trip with occupancy correctly (BVG)', (t) => { + const common = profile.parseCommon({profile, opt, res}) + const ctx = {profile, opt, common, res} + const trip = profile.parseTrip(ctx, res.journey) + + t.same(trip, expected) + t.end() +}) diff --git a/test/fixtures/bvg-arrivals.js b/test/fixtures/bvg-arrivals.js new file mode 100644 index 00000000..44870b0b --- /dev/null +++ b/test/fixtures/bvg-arrivals.js @@ -0,0 +1,1367 @@ +'use strict' + +const sLandsbergerAllee = { + type: 'stop', + id: '900000110004', + name: 'S Landsberger Allee', + location: { + type: 'location', + id: '900110004', + latitude: 52.528771, + longitude: 13.455944, + }, + products: { + suburban: true, + subway: false, + tram: true, + bus: true, + ferry: false, + express: false, + regional: false, + }, + lines: [{ + type: 'line', + id: 's8', + fahrtNr: null, + name: 'S8', + public: true, + productName: 'S', + mode: 'train', + product: 'suburban', + symbol: 'S', + nr: 8, + metro: false, + express: false, + night: false, + }, { + type: 'line', + id: 's41', + fahrtNr: null, + name: 'S41', + public: true, + productName: 'S', + mode: 'train', + product: 'suburban', + symbol: 'S', + nr: 41, + metro: false, + express: false, + night: false, + }, { + type: 'line', + id: 's42', + fahrtNr: null, + name: 'S42', + public: true, + productName: 'S', + mode: 'train', + product: 'suburban', + symbol: 'S', + nr: 42, + metro: false, + express: false, + night: false, + }, { + type: 'line', + id: 's85', + fahrtNr: null, + name: 'S85', + public: true, + productName: 'S', + mode: 'train', + product: 'suburban', + symbol: 'S', + nr: 85, + metro: false, + express: false, + night: false, + }, { + type: 'line', + id: '56', + fahrtNr: null, + name: '56', + public: true, + productName: 'Tram', + mode: 'train', + product: 'tram', + symbol: null, + nr: 56, + metro: false, + express: false, + night: false, + }, { + type: 'line', + id: 'm2', + fahrtNr: null, + name: 'M2', + public: true, + productName: 'Tram', + mode: 'train', + product: 'tram', + symbol: 'M', + nr: 2, + metro: true, + express: false, + night: false, + }, { + type: 'line', + id: 'm5', + fahrtNr: null, + name: 'M5', + public: true, + productName: 'Tram', + mode: 'train', + product: 'tram', + symbol: 'M', + nr: 5, + metro: true, + express: false, + night: false, + }, { + type: 'line', + id: 'm6', + fahrtNr: null, + name: 'M6', + public: true, + productName: 'Tram', + mode: 'train', + product: 'tram', + symbol: 'M', + nr: 6, + metro: true, + express: false, + night: false, + }, { + type: 'line', + id: 'm8', + fahrtNr: null, + name: 'M8', + public: true, + productName: 'Tram', + mode: 'train', + product: 'tram', + symbol: 'M', + nr: 8, + metro: true, + express: false, + night: false, + }, { + type: 'line', + id: 'm10', + fahrtNr: null, + name: 'M10', + public: true, + productName: 'Tram', + mode: 'train', + product: 'tram', + symbol: 'M', + nr: 10, + metro: true, + express: false, + night: false, + }, { + type: 'line', + id: '156', + fahrtNr: null, + name: '156', + public: true, + productName: 'Bus', + mode: 'bus', + product: 'bus', + symbol: null, + nr: 156, + metro: false, + express: false, + night: false, + }, { + type: 'line', + id: 'm6', + fahrtNr: null, + name: 'M6', + public: true, + productName: 'Bus', + mode: 'bus', + product: 'bus', + symbol: 'M', + nr: 6, + metro: true, + express: false, + night: false, + }, { + type: 'line', + id: 's41', + fahrtNr: null, + name: 'S41', + public: true, + productName: 'Bus', + mode: 'bus', + product: 'bus', + symbol: 'S', + nr: 41, + metro: false, + express: false, + night: false, + }, { + type: 'line', + id: 's42', + fahrtNr: null, + name: 'S42', + public: true, + productName: 'Bus', + mode: 'bus', + product: 'bus', + symbol: 'S', + nr: 42, + metro: false, + express: false, + night: false, + }], +} + +const achtungFalscheFahrplanauskünfte = { + id: '140812', + type: 'warning', + summary: 'Achtung! Falsche Fahrplanauskünfte für S41, S42 für Do (28.10.)', + text: 'Informationen zum Fahrplan finden Sie hier:\n' + + 'sbahn.berlin', + icon: {type: 'HIM2', title: null}, + priority: 100, + products: { + suburban: true, + subway: true, + tram: true, + bus: true, + ferry: true, + express: true, + regional: true + }, + company: 'VBB', + categories: [2], + validFrom: '2021-10-27T18:10:00+02:00', + validUntil: '2021-10-29T02:00:00+02:00', + modified: '2021-10-28T08:50:03+02:00', +} + +const gemeinsamSicherUnterwegs = { + id: '118634', + type: 'warning', + summary: 'Gemeinsam sicher unterwegs - mit Abstand und medizinischer Maske (in Berlin: FFP2)!', + text: 'An Haltestellen und Bahnhöfen sowie in Fahrzeugen. Maskenmuffel riskieren mindestens 50 Euro.\n' + + 'Weitere Informationen', + icon: {type: 'HIM0', title: null}, + priority: 100, + products: { + suburban: true, + subway: true, + tram: true, + bus: true, + ferry: true, + express: true, + regional: true + }, + company: 'VBB', + categories: [0], + validFrom: '2021-04-24T00:00:00+02:00', + validUntil: '2022-12-31T00:00:00+01:00', + modified: '2021-06-12T07:43:36+02:00', +} + +const ausfallS8 = { + id: '140655', + type: 'warning', + summary: 'Ausfall S8 zwischen Frankfurter Allee und Greifswalder Straße.', + text: 'Bauzeitverlängerung: Weiterhin durchgehend bis zum 29.10.(Do), ca. 1:30 Uhr kein Zugverkehr zwischen Greifswalder Str. und Frankfurter Allee. Zwischen Greifswalder Straße und Ostkreuz ist Ersatzverkehr mit Bussen eingerichtet. Bitte steigen Sie zwischen der S-Bahn und dem Ersatzverkehr am Bahnhof Ostkreuz um, am Bahnhof Frankfurter Allee beträgt der Fußweg zwischen S-Bahnhof und der Haltestelle des Ersatzverkehrs in der Gürtelstraße ca. 300 Meter. Achtung eingeschränkte Fahrradmitnahme! Bitte informieren Sie sich frühzeitig über Ihre Fahrmöglichkeiten. Wir bitten um Entschuldigung.\n' + + 'S-Bahn Berlin', + icon: {type: 'HIM1', title: null}, + priority: 100, + products: { + suburban: true, + subway: true, + tram: true, + bus: true, + ferry: true, + express: true, + regional: true + }, + company: 'S-Bahn Berlin', + categories: [1], + validFrom: '2021-10-28T02:00:00+02:00', + validUntil: '2021-10-29T02:00:00+02:00', + modified: '2021-10-27T09:58:25+02:00', +} + +const ersatzlinieWegenBauarbeiten = { + id: '140433', + type: 'warning', + summary: '.Ersatzlinie wegen Bauarbeiten', + text: 'Tram 56: fährt als Ersatz für M6 Riesaer Str. - S Hackescher Markt, umgeleitet zwischen Blumberger Damm/Landsberger Allee - Hohenschönhauser Str. über Allee der Kosmonauten - S Springpfuhl - Herzbergstr. - Roederplatz - Weißenseer Weg. Die Züge M6 fahren Riesaer Str. - S Marzahn, Busse als Ersatzverkehr fahren über Landsberger Allee zwischen S Marzahn und Hohenschönhauser Str. bzw. im Nachtverkehr bis Landsberger Allee/Petersburger Str..', + icon: {type: 'HIM1', title: null}, + priority: 100, + products: { + suburban: true, + subway: true, + tram: true, + bus: true, + ferry: true, + express: true, + regional: true + }, + company: 'BVG', + categories: [1], + validFrom: '2021-10-25T02:00:00+02:00', + validUntil: '2021-11-22T03:00:00+01:00', + modified: '2021-10-22T23:39:21+02:00', +} + +const fehlerImITSysem = { + id: '140805', + type: 'warning', + summary: 'Information.', + text: 'Aufgrund eines Fehlers in den IT-Systemen sind die Daten in der Fahrplanauskunft für die Fahrten der Linien S41 und S42 am Donnerstag, den 28.10.2021 fehlerhaft. Die Züge der Linien S41 und S42 fahren wie folgt: S41 - Frankfurter Allee > Ostkreuz > Südkreuz > Westkreuz > Gesundbrunnen > Greifswalder Straße im 10-Minuten-Takt, zusätzliche Verstärkerzüge fahren Frankfurter Allee > Ostkreuz > Südkreuz > Westkreuz > Gesundbrunnen im 20-Minuten-Takt (von ca. 5 bis 21 Uhr); S42 - Greifswalder Straße > Gesundbrunnen > Westkreuz > Südkreuz > Ostkreuz > Frankfurter Allee im 10-Minuten-Takt, zusätzliche Verstärkerzüge fahren Gesundbrunnen > Westkreuz > Südkreuz > Ostkreuz > Frankfurter Allee im 20-Minuten-Takt (von ca. 5 bis 21 Uhr)', + icon: {type: 'HIM0', title: null}, + priority: 50, + products: { + suburban: true, + subway: true, + tram: true, + bus: true, + ferry: true, + express: true, + regional: true + }, + company: 'VBB', + categories: [0], + validFrom: '2021-10-27T17:10:00+02:00', + validUntil: '2021-10-29T02:00:00+02:00', + modified: '2021-10-27T17:39:54+02:00', +} + +const bauzeitverlängerung = { + id: '140558', + type: 'warning', + summary: 'Bauarbeiten.', + text: 'Bauzeitverlängerung: Weiterhin durchgehend bis zum 29.10.(Fr), ca. 1:30 Uhr kein Zugverkehr zwischen Greifswalder Str. und Frankfurter Allee. Zwischen Greifswalder Straße und Ostkreuz ist Ersatzverkehr mit Bussen eingerichtet. Bitte steigen Sie zwischen der S-Bahn und dem Ersatzverkehr am Bahnhof Ostkreuz um, am Bahnhof Frankfurter Allee beträgt der Fußweg zwischen S-Bahnhof und der Haltestelle des Ersatzverkehrs in der Gürtelstraße ca. 300 Meter. Achtung eingeschränkte Fahrradmitnahme! Bitte informieren Sie sich frühzeitig über Ihre Fahrmöglichkeiten. Wir bitten um Entschuldigung.\n' + + 'Infos Bauzeitverlängerung', + icon: {type: 'HIM1', title: null}, + priority: 1, + products: { + suburban: true, + subway: true, + tram: true, + bus: true, + ferry: true, + express: true, + regional: true + }, + company: 'VBB', + categories: [1], + validFrom: '2021-10-28T02:00:00+02:00', + validUntil: '2021-10-29T01:30:00+02:00', + modified: '2021-10-27T17:00:45+02:00', +} + +module.exports = [ + { + tripId: '1|18731|26|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:34:00+02:00', + plannedWhen: '2021-10-28T10:30:00+02:00', + delay: 240, + platform: null, + plannedPlatform: null, + direction: null, + provenance: 'Clara-Jaschke-Str.', + line: { + type: 'line', + id: 'm5', + fahrtNr: '2780', + name: 'M5', + public: true, + adminCode: 'BVT', + productName: 'Tram', + mode: 'train', + product: 'tram', + operator: { + type: 'operator', + id: 'berliner-verkehrsbetriebe', + name: 'Berliner Verkehrsbetriebe' + }, + symbol: 'M', + nr: 5, + metro: true, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.529859, longitude: 13.460987} + }, + { + tripId: '1|19013|5|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:34:00+02:00', + plannedWhen: '2021-10-28T10:33:00+02:00', + delay: 60, + platform: null, + plannedPlatform: null, + direction: null, + provenance: 'Ahrensfelde/Stadtgrenze', + line: { + type: 'line', + id: 'm8', + fahrtNr: '3085', + name: 'M8', + public: true, + adminCode: 'BVT', + productName: 'Tram', + mode: 'train', + product: 'tram', + operator: { + type: 'operator', + id: 'berliner-verkehrsbetriebe', + name: 'Berliner Verkehrsbetriebe' + }, + symbol: 'M', + nr: 8, + metro: true, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.527639, longitude: 13.452159} + }, + { + tripId: '1|19067|24|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:37:00+02:00', + plannedWhen: '2021-10-28T10:33:00+02:00', + delay: 240, + platform: null, + plannedPlatform: null, + direction: null, + provenance: 'Clara-Jaschke-Str.', + line: { + type: 'line', + id: 'm8', + fahrtNr: '3151', + name: 'M8', + public: true, + adminCode: 'BVT', + productName: 'Tram', + mode: 'train', + product: 'tram', + operator: { + type: 'operator', + id: 'berliner-verkehrsbetriebe', + name: 'Berliner Verkehrsbetriebe' + }, + symbol: 'M', + nr: 8, + metro: true, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.525949, longitude: 13.446262} + }, + { + tripId: '1|17032|5|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:31:00+02:00', + plannedWhen: '2021-10-28T10:34:00+02:00', + delay: -180, + platform: null, + plannedPlatform: null, + direction: null, + provenance: 'Riesaer Str.', + line: { + type: 'line', + id: '56', + fahrtNr: '3255', + name: '56', + public: true, + adminCode: 'BVT', + productName: 'Tram', + mode: 'train', + product: 'tram', + operator: { + type: 'operator', + id: 'berliner-verkehrsbetriebe', + name: 'Berliner Verkehrsbetriebe' + }, + symbol: null, + nr: 56, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + ersatzlinieWegenBauarbeiten, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.524088, longitude: 13.439943} + }, + { + tripId: '1|24512|0|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:34:00+02:00', + plannedWhen: '2021-10-28T10:34:00+02:00', + delay: 0, + platform: '2', + plannedPlatform: '2', + direction: null, + provenance: 'S Grünau', + line: { + type: 'line', + id: 's8', + fahrtNr: '25595', + name: 'S8', + public: true, + adminCode: 'DBS', + productName: 'S', + mode: 'train', + product: 'suburban', + operator: { + type: 'operator', + id: 's-bahn-berlin-gmbh', + name: 'S-Bahn Berlin GmbH' + }, + symbol: 'S', + nr: 8, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + ausfallS8, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.528915, longitude: 13.45536} + }, + { + tripId: '1|52562|17|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:34:00+02:00', + plannedWhen: '2021-10-28T10:34:00+02:00', + delay: 0, + platform: '1', + plannedPlatform: '1', + direction: null, + provenance: 'S Südkreuz', + line: { + type: 'line', + id: 's41', + fahrtNr: '893', + name: 'S41', + public: true, + adminCode: 'DBS', + productName: 'S', + mode: 'train', + product: 'suburban', + operator: { + type: 'operator', + id: 's-bahn-berlin-gmbh', + name: 'S-Bahn Berlin GmbH' + }, + symbol: 'S', + nr: 41, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + fehlerImITSysem, + bauzeitverlängerung, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.52638, longitude: 13.458002} + }, + { + tripId: '1|53738|6|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:35:00+02:00', + plannedWhen: '2021-10-28T10:35:00+02:00', + delay: null, + platform: '2', + plannedPlatform: '2', + direction: null, + provenance: 'S Südkreuz', + line: { + type: 'line', + id: 's42', + fahrtNr: '1710', + name: 'S42', + public: true, + adminCode: 'DBS', + productName: 'S', + mode: 'train', + product: 'suburban', + operator: { + type: 'operator', + id: 's-bahn-berlin-gmbh', + name: 'S-Bahn Berlin GmbH' + }, + symbol: 'S', + nr: 42, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + fehlerImITSysem, + bauzeitverlängerung, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.493426, longitude: 13.461283} + }, + { + tripId: '1|17078|26|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:37:00+02:00', + plannedWhen: '2021-10-28T10:36:00+02:00', + delay: 60, + platform: null, + plannedPlatform: null, + direction: null, + provenance: 'S Hackescher Markt', + line: { + type: 'line', + id: '56', + fahrtNr: '3304', + name: '56', + public: true, + adminCode: 'BVT', + productName: 'Tram', + mode: 'train', + product: 'tram', + operator: { + type: 'operator', + id: 'berliner-verkehrsbetriebe', + name: 'Berliner Verkehrsbetriebe' + }, + symbol: null, + nr: 56, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + ersatzlinieWegenBauarbeiten, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.525949, longitude: 13.446262} + }, + { + tripId: '1|53354|9|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:36:00+02:00', + plannedWhen: '2021-10-28T10:36:00+02:00', + delay: 0, + platform: '2', + plannedPlatform: '2', + direction: null, + provenance: 'S Südkreuz', + line: { + type: 'line', + id: 's42', + fahrtNr: '1344', + name: 'S42', + public: true, + adminCode: 'DBS', + productName: 'S', + mode: 'train', + product: 'suburban', + operator: { + type: 'operator', + id: 's-bahn-berlin-gmbh', + name: 'S-Bahn Berlin GmbH' + }, + symbol: 'S', + nr: 42, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + fehlerImITSysem, + bauzeitverlängerung, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.523513, longitude: 13.466003} + }, + { + tripId: '1|18606|6|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:38:00+02:00', + plannedWhen: '2021-10-28T10:38:00+02:00', + delay: 0, + platform: null, + plannedPlatform: null, + direction: null, + provenance: 'Scharnweberstr./Weichselstr.', + line: { + type: 'line', + id: 'm5', + fahrtNr: '2643', + name: 'M5', + public: true, + adminCode: 'BVT', + productName: 'Tram', + mode: 'train', + product: 'tram', + operator: { + type: 'operator', + id: 'berliner-verkehrsbetriebe', + name: 'Berliner Verkehrsbetriebe' + }, + symbol: 'M', + nr: 5, + metro: true, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.530803, longitude: 13.461661} + }, + { + tripId: '1|52010|0|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:39:00+02:00', + plannedWhen: '2021-10-28T10:39:00+02:00', + delay: 0, + platform: '1', + plannedPlatform: '1', + direction: null, + provenance: 'S Südkreuz', + line: { + type: 'line', + id: 's41', + fahrtNr: '654', + name: 'S41', + public: true, + adminCode: 'DBS', + productName: 'S', + mode: 'train', + product: 'suburban', + operator: { + type: 'operator', + id: 's-bahn-berlin-gmbh', + name: 'S-Bahn Berlin GmbH' + }, + symbol: 'S', + nr: 41, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.54479, longitude: 13.425884} + }, + { + tripId: '1|53328|1|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:40:00+02:00', + plannedWhen: '2021-10-28T10:40:00+02:00', + delay: null, + platform: '2', + plannedPlatform: '2', + direction: null, + provenance: 'S Südkreuz', + line: { + type: 'line', + id: 's42', + fahrtNr: '1357', + name: 'S42', + public: true, + adminCode: 'DBS', + productName: 'S', + mode: 'train', + product: 'suburban', + operator: { + type: 'operator', + id: 's-bahn-berlin-gmbh', + name: 'S-Bahn Berlin GmbH' + }, + symbol: 'S', + nr: 42, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.492473, longitude: 13.460636} + }, + { + tripId: '1|18731|27|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:39:00+02:00', + plannedWhen: '2021-10-28T10:40:00+02:00', + delay: -60, + platform: null, + plannedPlatform: null, + direction: null, + provenance: 'Clara-Jaschke-Str.', + line: { + type: 'line', + id: 'm5', + fahrtNr: '2780', + name: 'M5', + public: true, + adminCode: 'BVT', + productName: 'Tram', + mode: 'train', + product: 'tram', + operator: { + type: 'operator', + id: 'berliner-verkehrsbetriebe', + name: 'Berliner Verkehrsbetriebe' + }, + symbol: 'M', + nr: 5, + metro: true, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.524016, longitude: 13.439745} + }, + { + tripId: '1|24642|3|86|28102021', + stop: sLandsbergerAllee, + when: null, + plannedWhen: '2021-10-28T10:41:00+02:00', + prognosedWhen: null, + delay: null, + platform: null, + plannedPlatform: null, + prognosedPlatform: null, + direction: null, + provenance: 'S Birkenwerder', + line: { + type: 'line', + id: 's8', + fahrtNr: '25467', + name: 'S8', + public: true, + adminCode: 'DBS', + productName: 'S', + mode: 'train', + product: 'suburban', + operator: { + type: 'operator', + id: 's-bahn-berlin-gmbh', + name: 'S-Bahn Berlin GmbH' + }, + symbol: 'S', + nr: 8, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + ausfallS8, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs, + { + type: 'status', + code: 'text.realtime.journey.cancelled', + text: 'S8: Fällt aus' + }, + { + type: 'status', + code: 'text.realtime.stop.cancelled', + text: 'Halt entfällt' + } + ], + cancelled: true + }, + { + tripId: '1|19013|6|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:46:00+02:00', + plannedWhen: '2021-10-28T10:43:00+02:00', + delay: 180, + platform: null, + plannedPlatform: null, + direction: null, + provenance: 'Ahrensfelde/Stadtgrenze', + line: { + type: 'line', + id: 'm8', + fahrtNr: '3085', + name: 'M8', + public: true, + adminCode: 'BVT', + productName: 'Tram', + mode: 'train', + product: 'tram', + operator: { + type: 'operator', + id: 'berliner-verkehrsbetriebe', + name: 'Berliner Verkehrsbetriebe' + }, + symbol: 'M', + nr: 8, + metro: true, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.525499, longitude: 13.509529} + }, + { + tripId: '1|19067|25|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:42:00+02:00', + plannedWhen: '2021-10-28T10:43:00+02:00', + delay: -60, + platform: null, + plannedPlatform: null, + direction: null, + provenance: 'Clara-Jaschke-Str.', + line: { + type: 'line', + id: 'm8', + fahrtNr: '3151', + name: 'M8', + public: true, + adminCode: 'BVT', + productName: 'Tram', + mode: 'train', + product: 'tram', + operator: { + type: 'operator', + id: 'berliner-verkehrsbetriebe', + name: 'Berliner Verkehrsbetriebe' + }, + symbol: 'M', + nr: 8, + metro: true, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.524385, longitude: 13.421965} + }, + { + tripId: '1|17032|6|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:47:00+02:00', + plannedWhen: '2021-10-28T10:44:00+02:00', + delay: 180, + platform: null, + plannedPlatform: null, + direction: null, + provenance: 'Riesaer Str.', + line: { + type: 'line', + id: '56', + fahrtNr: '3255', + name: '56', + public: true, + adminCode: 'BVT', + productName: 'Tram', + mode: 'train', + product: 'tram', + operator: { + type: 'operator', + id: 'berliner-verkehrsbetriebe', + name: 'Berliner Verkehrsbetriebe' + }, + symbol: null, + nr: 56, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + ersatzlinieWegenBauarbeiten, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.526749, longitude: 13.482327} + }, + { + tripId: '1|24781|1|86|28102021', + stop: sLandsbergerAllee, + when: null, + plannedWhen: '2021-10-28T10:44:00+02:00', + prognosedWhen: null, + delay: null, + platform: null, + plannedPlatform: null, + prognosedPlatform: null, + direction: null, + provenance: 'S Grünau', + line: { + type: 'line', + id: 's85', + fahrtNr: '26542', + name: 'S85', + public: true, + adminCode: 'DBS', + productName: 'S', + mode: 'train', + product: 'suburban', + operator: { + type: 'operator', + id: 's-bahn-berlin-gmbh', + name: 'S-Bahn Berlin GmbH' + }, + symbol: 'S', + nr: 85, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + { + id: '140567', + type: 'warning', + summary: 'Bauarbeiten.', + text: 'Diese Fahrt fällt heute leider aus, bitte auf die Linie S8 ausweichen. Wegen Bauzeitverlängerung fahren keine Züge zwischen Frankfurter Allee und Greifswalder Straße, hier fahren Busse. Wir bitten um Entschuldigung\n' + + 'Infos Bauzeitverlängerung', + icon: {type: 'HIM1', title: null}, + priority: 50, + products: { + suburban: true, + subway: true, + tram: true, + bus: true, + ferry: true, + express: true, + regional: true + }, + company: 'VBB', + categories: [1], + validFrom: '2021-10-26T06:17:00+02:00', + validUntil: '2021-10-29T02:00:00+02:00', + modified: '2021-10-27T13:00:52+02:00' + }, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs, + { + type: 'status', + code: 'text.realtime.journey.cancelled', + text: 'S85: Fällt aus' + }, + { + type: 'status', + code: 'text.realtime.stop.cancelled', + text: 'Halt entfällt' + } + ], + cancelled: true + }, + { + tripId: '1|52562|18|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:44:00+02:00', + plannedWhen: '2021-10-28T10:44:00+02:00', + delay: 0, + platform: '1', + plannedPlatform: '1', + direction: null, + provenance: 'S Südkreuz', + line: { + type: 'line', + id: 's41', + fahrtNr: '889', + name: 'S41', + public: true, + adminCode: 'DBS', + productName: 'S', + mode: 'train', + product: 'suburban', + operator: { + type: 'operator', + id: 's-bahn-berlin-gmbh', + name: 'S-Bahn Berlin GmbH' + }, + symbol: 'S', + nr: 41, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + fehlerImITSysem, + bauzeitverlängerung, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.548898, longitude: 13.386934} + }, + { + tripId: '1|53738|8|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T10:55:00+02:00', + plannedWhen: '2021-10-28T10:55:00+02:00', + delay: null, + platform: '2', + plannedPlatform: '2', + direction: null, + provenance: 'S Südkreuz', + line: { + type: 'line', + id: 's42', + fahrtNr: '1706', + name: 'S42', + public: true, + adminCode: 'DBS', + productName: 'S', + mode: 'train', + product: 'suburban', + operator: { + type: 'operator', + id: 's-bahn-berlin-gmbh', + name: 'S-Bahn Berlin GmbH' + }, + symbol: 'S', + nr: 42, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + fehlerImITSysem, + bauzeitverlängerung, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.48752, longitude: 13.459063} + }, + { + tripId: '1|53738|9|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T11:10:00+02:00', + plannedWhen: '2021-10-28T11:10:00+02:00', + delay: null, + platform: '2', + plannedPlatform: '2', + direction: null, + provenance: 'S Südkreuz', + line: { + type: 'line', + id: 's42', + fahrtNr: '1704', + name: 'S42', + public: true, + adminCode: 'DBS', + productName: 'S', + mode: 'train', + product: 'suburban', + operator: { + type: 'operator', + id: 's-bahn-berlin-gmbh', + name: 'S-Bahn Berlin GmbH' + }, + symbol: 'S', + nr: 42, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + fehlerImITSysem, + bauzeitverlängerung, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.471834, longitude: 13.37905} + }, + { + tripId: '1|53738|10|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T11:15:00+02:00', + plannedWhen: '2021-10-28T11:15:00+02:00', + delay: null, + platform: '2', + plannedPlatform: '2', + direction: null, + provenance: 'S Südkreuz', + line: { + type: 'line', + id: 's42', + fahrtNr: '1702', + name: 'S42', + public: true, + adminCode: 'DBS', + productName: 'S', + mode: 'train', + product: 'suburban', + operator: { + type: 'operator', + id: 's-bahn-berlin-gmbh', + name: 'S-Bahn Berlin GmbH' + }, + symbol: 'S', + nr: 42, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + fehlerImITSysem, + bauzeitverlängerung, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.480652, longitude: 13.45785} + }, + { + tripId: '1|53738|11|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T11:25:00+02:00', + plannedWhen: '2021-10-28T11:25:00+02:00', + delay: null, + platform: '2', + plannedPlatform: '2', + direction: null, + provenance: 'S Südkreuz', + line: { + type: 'line', + id: 's42', + fahrtNr: '1700', + name: 'S42', + public: true, + adminCode: 'DBS', + productName: 'S', + mode: 'train', + product: 'suburban', + operator: { + type: 'operator', + id: 's-bahn-berlin-gmbh', + name: 'S-Bahn Berlin GmbH' + }, + symbol: 'S', + nr: 42, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + fehlerImITSysem, + bauzeitverlängerung, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.477227, longitude: 13.457068} + }, + { + tripId: '1|53738|12|86|28102021', + stop: sLandsbergerAllee, + when: '2021-10-28T11:35:00+02:00', + plannedWhen: '2021-10-28T11:35:00+02:00', + delay: null, + platform: '2', + plannedPlatform: '2', + direction: null, + provenance: 'S Südkreuz', + line: { + type: 'line', + id: 's42', + fahrtNr: '1698', + name: 'S42', + public: true, + adminCode: 'DBS', + productName: 'S', + mode: 'train', + product: 'suburban', + operator: { + type: 'operator', + id: 's-bahn-berlin-gmbh', + name: 'S-Bahn Berlin GmbH' + }, + symbol: 'S', + nr: 42, + metro: false, + express: false, + night: false + }, + remarks: [ + {type: 'hint', code: 'bf', text: 'barrierefrei'}, + {type: 'hint', code: 'FB', text: 'Fahrradmitnahme möglich'}, + fehlerImITSysem, + bauzeitverlängerung, + achtungFalscheFahrplanauskünfte, + gemeinsamSicherUnterwegs + ], + currentTripPosition: {type: 'location', latitude: 52.473811, longitude: 13.456142}, + }, +] diff --git a/test/fixtures/bvg-arrivals.json b/test/fixtures/bvg-arrivals.json new file mode 100644 index 00000000..0b63472a --- /dev/null +++ b/test/fixtures/bvg-arrivals.json @@ -0,0 +1,4332 @@ +{ + "common": { + "locL": [ + { + "lid": "A=1@O=S Landsberger Allee (Berlin)@X=13455944@Y=52528771@U=86@L=900110004@", + "type": "S", + "name": "S Landsberger Allee (Berlin)", + "icoX": 0, + "extId": "900110004", + "state": "F", + "crd": { + "x": 13455944, + "y": 52528771, + "floor": 0 + }, + "pCls": 13, + "pRefL": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ], + "gidL": [ + "A×de:11000:900110004" + ], + "chgTime": "000300" + }, + { + "lid": "A=1@O=S Südkreuz Bhf (Berlin)@X=13365575@Y=52475465@U=86@L=900058101@", + "type": "S", + "name": "S Südkreuz Bhf (Berlin)", + "icoX": 0, + "extId": "900058101", + "state": "F", + "crd": { + "x": 13365575, + "y": 52475465, + "floor": 0 + }, + "pCls": 105, + "pRefL": [ + 15, + 16, + 17, + 2, + 3, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 + ], + "gidL": [ + "A×de:11000:900058101" + ], + "chgTime": "001000" + }, + { + "lid": "A=1@O=Clara-Jaschke-Str. (Berlin)@X=13366052@Y=52524924@U=86@L=900003255@", + "type": "S", + "name": "Clara-Jaschke-Str. (Berlin)", + "icoX": 2, + "extId": "900003255", + "state": "F", + "crd": { + "x": 13366393, + "y": 52524933, + "floor": 0 + }, + "pCls": 4, + "pRefL": [ + 7, + 9, + 10 + ], + "gidL": [ + "A×de:11000:900003255" + ], + "chgTime": "000300" + }, + { + "lid": "A=1@O=Ahrensfelde/Stadtgrenze (Berlin)@X=13574673@Y=52572837@U=86@L=900170006@", + "type": "S", + "name": "Ahrensfelde/Stadtgrenze (Berlin)", + "icoX": 2, + "extId": "900170006", + "state": "F", + "crd": { + "x": 13574673, + "y": 52572837, + "floor": 0 + }, + "pCls": 4, + "pRefL": [ + 37, + 9 + ], + "gidL": [ + "A×de:11000:900170006" + ], + "chgTime": "000300" + }, + { + "lid": "A=1@O=Riesaer Str. (Berlin)@X=13624186@Y=52529401@U=86@L=900175013@", + "type": "S", + "name": "Riesaer Str. (Berlin)", + "icoX": 2, + "extId": "900175013", + "state": "F", + "crd": { + "x": 13624186, + "y": 52529401, + "floor": 0 + }, + "pCls": 12, + "pRefL": [ + 40, + 5, + 8, + 41, + 42, + 43 + ], + "gidL": [ + "A×de:11000:900175013" + ], + "chgTime": "000300" + }, + { + "lid": "A=1@O=S Grünau (Berlin)@X=13574017@Y=52412712@U=86@L=900186001@", + "type": "S", + "name": "S Grünau (Berlin)", + "icoX": 0, + "extId": "900186001", + "state": "F", + "crd": { + "x": 13573469, + "y": 52413026, + "floor": 0 + }, + "pCls": 13, + "pRefL": [ + 45, + 18, + 19, + 4 + ], + "gidL": [ + "A×de:11000:900186001" + ], + "chgTime": "000300" + }, + { + "lid": "A=1@O=S+U Frankfurter Allee (Berlin)@X=13475846@Y=52513580@U=86@L=900120001@", + "type": "S", + "name": "S+U Frankfurter Allee (Berlin)", + "icoX": 0, + "extId": "900120001", + "state": "F", + "crd": { + "x": 13475846, + "y": 52513580, + "floor": 0 + }, + "pCls": 15, + "pRefL": [ + 1, + 2, + 3, + 4, + 46, + 37, + 7, + 47, + 42, + 13, + 14 + ], + "gidL": [ + "A×de:11000:900120001" + ], + "chgTime": "000300" + }, + { + "lid": "A=1@O=S Greifswalder Str. (Berlin)@X=13438352@Y=52540727@U=86@L=900110003@", + "type": "S", + "name": "S Greifswalder Str. (Berlin)", + "icoX": 0, + "extId": "900110003", + "state": "F", + "crd": { + "x": 13438352, + "y": 52540727, + "floor": 0 + }, + "pCls": 13, + "pRefL": [ + 1, + 2, + 3, + 4, + 48, + 49, + 6, + 50, + 13 + ], + "gidL": [ + "A×de:11000:900110003" + ], + "chgTime": "000300" + }, + { + "lid": "A=1@O=S Hackescher Markt (Berlin)@X=13402359@Y=52522605@U=86@L=900100002@", + "type": "S", + "name": "S Hackescher Markt (Berlin)", + "icoX": 0, + "extId": "900100002", + "state": "F", + "crd": { + "x": 13402359, + "y": 52522605, + "floor": 0 + }, + "pCls": 13, + "pRefL": [ + 53, + 54, + 55, + 56, + 57, + 48, + 5, + 49, + 50, + 7, + 8, + 58, + 59 + ], + "gidL": [ + "A×de:11000:900100002" + ], + "chgTime": "000300" + }, + { + "lid": "A=1@O=Scharnweberstr./Weichselstr. (Berlin)@X=13470174@Y=52512339@U=86@L=900120540@", + "type": "S", + "name": "Scharnweberstr./Weichselstr. (Berlin)", + "icoX": 2, + "extId": "900120540", + "state": "F", + "crd": { + "x": 13470174, + "y": 52512339, + "floor": 0 + }, + "pCls": 4, + "pRefL": [ + 37, + 7, + 47 + ], + "gidL": [ + "A×de:11000:900120540" + ], + "chgTime": "000300" + }, + { + "lid": "A=1@O=S Birkenwerder Bhf@X=13288736@Y=52688573@U=86@L=900200008@", + "type": "S", + "name": "S Birkenwerder Bhf", + "icoX": 0, + "extId": "900200008", + "state": "F", + "crd": { + "x": 13288736, + "y": 52688573, + "floor": 0 + }, + "pCls": 73, + "pRefL": [ + 64, + 1, + 65, + 66 + ], + "gidL": [ + "A×de:12065:900200008" + ], + "chgTime": "000300" + } + ], + "prodL": [ + { + "pid": "L::0::S::B1090519025::S_1090519025_S42::*", + "name": "S42", + "nameS": "S42", + "number": "S42", + "icoX": 0, + "cls": 1, + "oprX": 0, + "prodCtx": { + "name": " S42", + "num": "1710", + "line": "S42", + "matchId": "42071", + "catOut": "S ", + "catOutS": "S-3", + "catOutL": "S ", + "catIn": "S-3", + "catCode": "0", + "admin": "DBS---" + }, + "himIdL": [ + "HIM_FREETEXT_140805", + "HIM_FREETEXT_140558", + "HIM_FREETEXT_138697" + ] + }, + { + "name": "S8", + "nameS": "S8", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S8", + "line": "S8", + "lineId": "S8", + "catOut": "S ", + "catOutS": "S-8", + "catOutL": "S " + } + }, + { + "name": "S41", + "nameS": "S41", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S41", + "line": "S41", + "lineId": "S41", + "catOut": "S ", + "catOutS": "S-3", + "catOutL": "S " + } + }, + { + "name": "S42", + "nameS": "S42", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S42", + "line": "S42", + "lineId": "S42", + "catOut": "S ", + "catOutS": "S-3", + "catOutL": "S " + } + }, + { + "name": "S85", + "nameS": "S85", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S85", + "line": "S85", + "lineId": "S85", + "catOut": "S ", + "catOutS": "S12", + "catOutL": "S " + } + }, + { + "name": "56", + "nameS": "56", + "icoX": 2, + "cls": 4, + "prodCtx": { + "name": "56", + "line": "56", + "lineId": "56", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram " + } + }, + { + "name": "M2", + "nameS": "M2", + "icoX": 2, + "cls": 4, + "prodCtx": { + "name": "M2", + "line": "M2", + "lineId": "M2", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram " + } + }, + { + "name": "M5", + "nameS": "M5", + "icoX": 2, + "cls": 4, + "prodCtx": { + "name": "M5", + "line": "M5", + "lineId": "M5", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram " + } + }, + { + "name": "M6", + "nameS": "M6", + "icoX": 2, + "cls": 4, + "prodCtx": { + "name": "M6", + "line": "M6", + "lineId": "M6", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram " + } + }, + { + "name": "M8", + "nameS": "M8", + "icoX": 2, + "cls": 4, + "prodCtx": { + "name": "M8", + "line": "M8", + "lineId": "M8", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram " + } + }, + { + "name": "M10", + "nameS": "M10", + "icoX": 2, + "cls": 4, + "prodCtx": { + "name": "M10", + "line": "M10", + "lineId": "M10", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram " + } + }, + { + "name": "156", + "nameS": "156", + "icoX": 3, + "cls": 8, + "prodCtx": { + "name": "156", + "line": "156", + "lineId": "156", + "catOut": "Bus ", + "catOutS": "B", + "catOutL": "Bus " + } + }, + { + "name": "M6", + "nameS": "M6", + "icoX": 3, + "cls": 8, + "prodCtx": { + "name": "M6", + "line": "M6", + "lineId": "M6", + "catOut": "Bus ", + "catOutS": "B", + "catOutL": "Bus " + } + }, + { + "name": "S41", + "nameS": "S41", + "icoX": 3, + "cls": 8, + "prodCtx": { + "name": "S41", + "line": "S41", + "lineId": "S41", + "catOut": "Bus ", + "catOutS": "Bus", + "catOutL": "Bus " + } + }, + { + "name": "S42", + "nameS": "S42", + "icoX": 3, + "cls": 8, + "prodCtx": { + "name": "S42", + "line": "S42", + "lineId": "S42", + "catOut": "Bus ", + "catOutS": "Bus", + "catOutL": "Bus " + } + }, + { + "name": "S2", + "nameS": "S2", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S2", + "line": "S2", + "lineId": "S2", + "catOut": "S ", + "catOutS": "S-7", + "catOutL": "S " + } + }, + { + "name": "S25", + "nameS": "S25", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S25", + "line": "S25", + "lineId": "S25", + "catOut": "S ", + "catOutS": "S-6", + "catOutL": "S " + } + }, + { + "name": "S26", + "nameS": "S26", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S26", + "line": "S26", + "lineId": "S26", + "catOut": "S ", + "catOutS": "S-5", + "catOutL": "S " + } + }, + { + "name": "S45", + "nameS": "S45", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S45", + "line": "S45", + "lineId": "S45", + "catOut": "S ", + "catOutS": "S-6", + "catOutL": "S " + } + }, + { + "name": "S46", + "nameS": "S46", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S46", + "line": "S46", + "lineId": "S46", + "catOut": "S ", + "catOutS": "S-9", + "catOutL": "S " + } + }, + { + "name": "S47", + "nameS": "S47", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S47", + "line": "S47", + "lineId": "S47", + "catOut": "S ", + "catOutS": "S-3", + "catOutL": "S " + } + }, + { + "name": "106", + "nameS": "106", + "icoX": 3, + "cls": 8, + "prodCtx": { + "name": "106", + "line": "106", + "lineId": "106", + "catOut": "Bus ", + "catOutS": "B", + "catOutL": "Bus " + } + }, + { + "name": "204", + "nameS": "204", + "icoX": 3, + "cls": 8, + "prodCtx": { + "name": "204", + "line": "204", + "lineId": "204", + "catOut": "Bus ", + "catOutS": "B", + "catOutL": "Bus " + } + }, + { + "name": "M46", + "nameS": "M46", + "icoX": 3, + "cls": 8, + "prodCtx": { + "name": "M46", + "line": "M46", + "lineId": "M46", + "catOut": "Bus ", + "catOutS": "B", + "catOutL": "Bus " + } + }, + { + "name": "", + "icoX": 5, + "cls": 32, + "prodCtx": { + "name": "" + } + }, + { + "name": "RB10", + "nameS": "RB10", + "icoX": 6, + "cls": 64, + "prodCtx": { + "name": "RB10", + "line": "RB10", + "lineId": "RB10", + "catOut": "RB ", + "catOutS": "RB", + "catOutL": "RB " + } + }, + { + "name": "RE2", + "nameS": "RE2", + "icoX": 6, + "cls": 64, + "prodCtx": { + "name": "RE2", + "line": "RE2", + "lineId": "RE2", + "catOut": "RE ", + "catOutS": "RE", + "catOutL": "RE " + } + }, + { + "name": "RE3", + "nameS": "RE3", + "icoX": 6, + "cls": 64, + "prodCtx": { + "name": "RE3", + "line": "RE3", + "lineId": "RE3", + "catOut": "RE ", + "catOutS": "RE", + "catOutL": "RE " + } + }, + { + "name": "RE4", + "nameS": "RE4", + "icoX": 6, + "cls": 64, + "prodCtx": { + "name": "RE4", + "line": "RE4", + "lineId": "RE4", + "catOut": "RE ", + "catOutS": "RE", + "catOutL": "RE " + } + }, + { + "name": "RE5", + "nameS": "RE5", + "icoX": 6, + "cls": 64, + "prodCtx": { + "name": "RE5", + "line": "RE5", + "lineId": "RE5", + "catOut": "RE ", + "catOutS": "RE", + "catOutL": "RE " + } + }, + { + "pid": "L::0::S::B1090519025::S_1090519025_S42::*", + "name": "S42", + "nameS": "S42", + "number": "S42", + "icoX": 0, + "cls": 1, + "oprX": 0, + "prodCtx": { + "name": " S42", + "num": "1357", + "line": "S42", + "matchId": "42565", + "catOut": "S ", + "catOutS": "S-3", + "catOutL": "S ", + "catIn": "S-3", + "catCode": "0", + "admin": "DBS---" + }, + "himIdL": [ + "HIM_FREETEXT_140805", + "HIM_FREETEXT_140558", + "HIM_FREETEXT_138697" + ] + }, + { + "pid": "L::0::S::B1090519025::S_1090519025_S42::*", + "name": "S42", + "nameS": "S42", + "number": "S42", + "icoX": 0, + "cls": 1, + "oprX": 0, + "prodCtx": { + "name": " S42", + "num": "1706", + "line": "S42", + "matchId": "42075", + "catOut": "S ", + "catOutS": "S-3", + "catOutL": "S ", + "catIn": "S-3", + "catCode": "0", + "admin": "DBS---" + }, + "himIdL": [ + "HIM_FREETEXT_140805", + "HIM_FREETEXT_140558", + "HIM_FREETEXT_138697" + ] + }, + { + "pid": "L::0::S::B1090519025::S_1090519025_S42::*", + "name": "S42", + "nameS": "S42", + "number": "S42", + "icoX": 0, + "cls": 1, + "oprX": 0, + "prodCtx": { + "name": " S42", + "num": "1704", + "line": "S42", + "matchId": "42077", + "catOut": "S ", + "catOutS": "S-3", + "catOutL": "S ", + "catIn": "S-3", + "catCode": "0", + "admin": "DBS---" + }, + "himIdL": [ + "HIM_FREETEXT_140805", + "HIM_FREETEXT_140558", + "HIM_FREETEXT_138697" + ] + }, + { + "pid": "L::0::S::B1090519025::S_1090519025_S42::*", + "name": "S42", + "nameS": "S42", + "number": "S42", + "icoX": 0, + "cls": 1, + "oprX": 0, + "prodCtx": { + "name": " S42", + "num": "1702", + "line": "S42", + "matchId": "42079", + "catOut": "S ", + "catOutS": "S-3", + "catOutL": "S ", + "catIn": "S-3", + "catCode": "0", + "admin": "DBS---" + }, + "himIdL": [ + "HIM_FREETEXT_140805", + "HIM_FREETEXT_140558", + "HIM_FREETEXT_138697" + ] + }, + { + "pid": "L::2::Tram::B3041857784::Tram_3041857784_M5::*", + "name": "M5", + "nameS": "M5", + "number": "M5", + "icoX": 2, + "cls": 4, + "oprX": 1, + "prodCtx": { + "name": " M5", + "num": "2780", + "line": "M5", + "matchId": "M5", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram ", + "catIn": "T", + "catCode": "2", + "admin": "BVT---" + } + }, + { + "pid": "L::0::S::B1090519025::S_1090519025_S42::*", + "name": "S42", + "nameS": "S42", + "number": "S42", + "icoX": 0, + "cls": 1, + "oprX": 0, + "prodCtx": { + "name": " S42", + "num": "1700", + "line": "S42", + "matchId": "42081", + "catOut": "S ", + "catOutS": "S-3", + "catOutL": "S ", + "catIn": "S-3", + "catCode": "0", + "admin": "DBS---" + }, + "himIdL": [ + "HIM_FREETEXT_140805", + "HIM_FREETEXT_140558", + "HIM_FREETEXT_138697" + ] + }, + { + "pid": "L::2::Tram::B3041857784::Tram_3041857784_M8::*", + "name": "M8", + "nameS": "M8", + "number": "M8", + "icoX": 2, + "cls": 4, + "oprX": 1, + "prodCtx": { + "name": " M8", + "num": "3085", + "line": "M8", + "matchId": "M8", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram ", + "catIn": "T", + "catCode": "2", + "admin": "BVT---" + } + }, + { + "name": "16", + "nameS": "16", + "icoX": 2, + "cls": 4, + "prodCtx": { + "name": "16", + "line": "16", + "lineId": "16", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram " + } + }, + { + "pid": "L::2::Tram::B3041857784::Tram_3041857784_M8::*", + "name": "M8", + "nameS": "M8", + "number": "M8", + "icoX": 2, + "cls": 4, + "oprX": 1, + "prodCtx": { + "name": " M8", + "num": "3151", + "line": "M8", + "matchId": "M8", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram ", + "catIn": "T", + "catCode": "2", + "admin": "BVT---" + } + }, + { + "pid": "L::2::Tram::B3041857784::Tram_3041857784_56::*", + "name": "56", + "nameS": "56", + "number": "56", + "icoX": 2, + "cls": 4, + "oprX": 1, + "prodCtx": { + "name": " 56", + "num": "3255", + "line": "56", + "matchId": "56", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram ", + "catIn": "T", + "catCode": "2", + "admin": "BVT---" + }, + "himIdL": [ + "HIM_FREETEXT_140433" + ] + }, + { + "name": "18", + "nameS": "18", + "icoX": 2, + "cls": 4, + "prodCtx": { + "name": "18", + "line": "18", + "lineId": "18", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram " + } + }, + { + "name": "395", + "nameS": "395", + "icoX": 3, + "cls": 8, + "prodCtx": { + "name": "395", + "line": "395", + "lineId": "395", + "catOut": "Bus ", + "catOutS": "B", + "catOutL": "Bus " + } + }, + { + "name": "N5", + "nameS": "N5", + "icoX": 3, + "cls": 8, + "prodCtx": { + "name": "N5", + "line": "N5", + "lineId": "N5", + "catOut": "Bus ", + "catOutS": "B", + "catOutL": "Bus " + } + }, + { + "name": "N95", + "nameS": "N95", + "icoX": 3, + "cls": 8, + "prodCtx": { + "name": "N95", + "line": "N95", + "lineId": "N95", + "catOut": "Bus ", + "catOutS": "B", + "catOutL": "Bus " + } + }, + { + "pid": "L::0::S::B1090519025::S_1090519025_S8::*", + "name": "S8", + "nameS": "S8", + "number": "S8", + "icoX": 0, + "cls": 1, + "oprX": 0, + "prodCtx": { + "name": " S8", + "num": "25595", + "line": "S8", + "matchId": "8074", + "catOut": "S ", + "catOutS": "S-8", + "catOutL": "S ", + "catIn": "S-8", + "catCode": "0", + "admin": "DBS---" + }, + "himIdL": [ + "HIM_FREETEXT_138781", + "HIM_FREETEXT_140318", + "HIM_FREETEXT_140320", + "HIM_FREETEXT_140056", + "HIM_FREETEXT_140112", + "HIM_FREETEXT_140114", + "HIM_FREETEXT_140655", + "HIM_FREETEXT_138697" + ] + }, + { + "name": "S8", + "nameS": "S8", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S8", + "line": "S8", + "lineId": "S8", + "catOut": "S ", + "catOutS": "S12", + "catOutL": "S " + } + }, + { + "name": "U5", + "nameS": "U5", + "icoX": 14, + "cls": 2, + "prodCtx": { + "name": "U5", + "line": "U5", + "lineId": "U5", + "catOut": "U ", + "catOutS": "U", + "catOutL": "U " + } + }, + { + "name": "M13", + "nameS": "M13", + "icoX": 2, + "cls": 4, + "prodCtx": { + "name": "M13", + "line": "M13", + "lineId": "M13", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram " + } + }, + { + "name": "50", + "nameS": "50", + "icoX": 2, + "cls": 4, + "prodCtx": { + "name": "50", + "line": "50", + "lineId": "50", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram " + } + }, + { + "name": "M1", + "nameS": "M1", + "icoX": 2, + "cls": 4, + "prodCtx": { + "name": "M1", + "line": "M1", + "lineId": "M1", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram " + } + }, + { + "name": "M4", + "nameS": "M4", + "icoX": 2, + "cls": 4, + "prodCtx": { + "name": "M4", + "line": "M4", + "lineId": "M4", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram " + } + }, + { + "pid": "L::0::S::B1090519025::S_1090519025_S41::*", + "name": "S41", + "nameS": "S41", + "number": "S41", + "icoX": 0, + "cls": 1, + "oprX": 0, + "prodCtx": { + "name": " S41", + "num": "893", + "line": "S41", + "matchId": "41078", + "catOut": "S ", + "catOutS": "S-3", + "catOutL": "S ", + "catIn": "S-3", + "catCode": "0", + "admin": "DBS---" + }, + "himIdL": [ + "HIM_FREETEXT_140805", + "HIM_FREETEXT_140558", + "HIM_FREETEXT_138697" + ] + }, + { + "pid": "L::2::Tram::B3041857784::Tram_3041857784_56::*", + "name": "56", + "nameS": "56", + "number": "56", + "icoX": 2, + "cls": 4, + "oprX": 1, + "prodCtx": { + "name": " 56", + "num": "3304", + "line": "56", + "matchId": "56", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram ", + "catIn": "T", + "catCode": "2", + "admin": "BVT---" + }, + "himIdL": [ + "HIM_FREETEXT_140433" + ] + }, + { + "name": "S3", + "nameS": "S3", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S3", + "line": "S3", + "lineId": "S3", + "catOut": "S ", + "catOutS": "S-7", + "catOutL": "S " + } + }, + { + "name": "S5", + "nameS": "S5", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S5", + "line": "S5", + "lineId": "S5", + "catOut": "S ", + "catOutS": "S-7", + "catOutL": "S " + } + }, + { + "name": "S7", + "nameS": "S7", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S7", + "line": "S7", + "lineId": "S7", + "catOut": "S ", + "catOutS": "S-7", + "catOutL": "S " + } + }, + { + "name": "S9", + "nameS": "S9", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S9", + "line": "S9", + "lineId": "S9", + "catOut": "S ", + "catOutS": "S-7", + "catOutL": "S " + } + }, + { + "name": "12", + "nameS": "12", + "icoX": 2, + "cls": 4, + "prodCtx": { + "name": "12", + "line": "12", + "lineId": "12", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram " + } + }, + { + "name": "M1", + "nameS": "M1", + "icoX": 3, + "cls": 8, + "prodCtx": { + "name": "M1", + "line": "M1", + "lineId": "M1", + "catOut": "Bus ", + "catOutS": "B", + "catOutL": "Bus " + } + }, + { + "name": "N42", + "nameS": "N42", + "icoX": 3, + "cls": 8, + "prodCtx": { + "name": "N42", + "line": "N42", + "lineId": "N42", + "catOut": "Bus ", + "catOutS": "B", + "catOutL": "Bus " + } + }, + { + "pid": "L::0::S::B1090519025::S_1090519025_S42::*", + "name": "S42", + "nameS": "S42", + "number": "S42", + "icoX": 0, + "cls": 1, + "oprX": 0, + "prodCtx": { + "name": " S42", + "num": "1344", + "line": "S42", + "matchId": "42587", + "catOut": "S ", + "catOutS": "S-3", + "catOutL": "S ", + "catIn": "S-3", + "catCode": "0", + "admin": "DBS---" + }, + "himIdL": [ + "HIM_FREETEXT_140805", + "HIM_FREETEXT_140558", + "HIM_FREETEXT_138697" + ] + }, + { + "pid": "L::2::Tram::B3041857784::Tram_3041857784_M5::*", + "name": "M5", + "nameS": "M5", + "number": "M5", + "icoX": 2, + "cls": 4, + "oprX": 1, + "prodCtx": { + "name": " M5", + "num": "2643", + "line": "M5", + "matchId": "M5", + "catOut": "Tram ", + "catOutS": "T", + "catOutL": "Tram ", + "catIn": "T", + "catCode": "2", + "admin": "BVT---" + } + }, + { + "pid": "L::0::S::B1090519025::S_1090519025_S41::*", + "name": "S41", + "nameS": "S41", + "number": "S41", + "icoX": 0, + "cls": 1, + "oprX": 0, + "prodCtx": { + "name": " S41", + "num": "654", + "line": "S41", + "matchId": "41562", + "catOut": "S ", + "catOutS": "S-3", + "catOutL": "S ", + "catIn": "S-3", + "catCode": "0", + "admin": "DBS---" + }, + "himIdL": [ + "HIM_FREETEXT_140805", + "HIM_FREETEXT_140558", + "HIM_FREETEXT_138697" + ] + }, + { + "pid": "L::0::S::B1090519025::S_1090519025_S8::*", + "name": "S8", + "nameS": "S8", + "number": "S8", + "icoX": 0, + "cls": 1, + "oprX": 0, + "prodCtx": { + "name": " S8", + "num": "25467", + "line": "S8", + "matchId": "8075", + "catOut": "S ", + "catOutS": "S-8", + "catOutL": "S ", + "catIn": "S-8", + "catCode": "0", + "admin": "DBS---" + }, + "himIdL": [ + "HIM_FREETEXT_138781", + "HIM_FREETEXT_140318", + "HIM_FREETEXT_140320", + "HIM_FREETEXT_140056", + "HIM_FREETEXT_140112", + "HIM_FREETEXT_140114", + "HIM_FREETEXT_140655", + "HIM_FREETEXT_138697" + ] + }, + { + "name": "S1", + "nameS": "S1", + "icoX": 0, + "cls": 1, + "prodCtx": { + "name": "S1", + "line": "S1", + "lineId": "S1", + "catOut": "S ", + "catOutS": "S-7", + "catOutL": "S " + } + }, + { + "name": "809", + "nameS": "809", + "icoX": 3, + "cls": 8, + "prodCtx": { + "name": "809", + "line": "809", + "lineId": "809", + "catOut": "Bus ", + "catOutS": "HVN", + "catOutL": "Bus " + } + }, + { + "name": "RB20", + "nameS": "RB20", + "icoX": 6, + "cls": 64, + "prodCtx": { + "name": "RB20", + "line": "RB20", + "lineId": "RB20", + "catOut": "RB ", + "catOutS": "RB", + "catOutL": "RB " + } + }, + { + "pid": "L::0::S::B1090519025::S_1090519025_S42::*", + "name": "S42", + "nameS": "S42", + "number": "S42", + "icoX": 0, + "cls": 1, + "oprX": 0, + "prodCtx": { + "name": " S42", + "num": "1698", + "line": "S42", + "matchId": "42083", + "catOut": "S ", + "catOutS": "S-3", + "catOutL": "S ", + "catIn": "S-3", + "catCode": "0", + "admin": "DBS---" + }, + "himIdL": [ + "HIM_FREETEXT_140805", + "HIM_FREETEXT_140558", + "HIM_FREETEXT_138697" + ] + }, + { + "pid": "L::0::S::B1090519025::S_1090519025_S85::*", + "name": "S85", + "nameS": "S85", + "number": "S85", + "icoX": 0, + "cls": 1, + "oprX": 0, + "prodCtx": { + "name": " S85", + "num": "26542", + "line": "S85", + "matchId": "85542", + "catOut": "S ", + "catOutS": "S12", + "catOutL": "S ", + "catIn": "S12", + "catCode": "0", + "admin": "DBS---" + }, + "himIdL": [ + "HIM_FREETEXT_138781", + "HIM_FREETEXT_140567", + "HIM_FREETEXT_138697" + ] + }, + { + "pid": "L::0::S::B1090519025::S_1090519025_S41::*", + "name": "S41", + "nameS": "S41", + "number": "S41", + "icoX": 0, + "cls": 1, + "oprX": 0, + "prodCtx": { + "name": " S41", + "num": "889", + "line": "S41", + "matchId": "41080", + "catOut": "S ", + "catOutS": "S-3", + "catOutL": "S ", + "catIn": "S-3", + "catCode": "0", + "admin": "DBS---" + }, + "himIdL": [ + "HIM_FREETEXT_140805", + "HIM_FREETEXT_140558", + "HIM_FREETEXT_138697" + ] + } + ], + "opL": [ + { + "name": "S-Bahn Berlin GmbH", + "url": "https://sbahn.berlin/", + "icoX": 1, + "id": "1" + }, + { + "name": "Berliner Verkehrsbetriebe", + "url": "https://www.bvg.de/", + "icoX": 11, + "id": "796" + } + ], + "remL": [ + { + "type": "A", + "code": "bf", + "prio": 2, + "icoX": 4, + "txtN": "barrierefrei" + }, + { + "type": "A", + "code": "FB", + "prio": 10, + "icoX": 7, + "txtN": "Fahrradmitnahme möglich" + }, + { + "type": "R", + "code": "text.realtime.stop.cancelled", + "icoX": 15, + "txtN": "Halt entfällt" + }, + { + "type": "R", + "code": "text.realtime.journey.cancelled", + "icoX": 16, + "txtN": "S8: Fällt aus" + }, + { + "type": "R", + "code": "text.realtime.journey.cancelled", + "icoX": 16, + "txtN": "S85: Fällt aus" + } + ], + "himL": [ + { + "hid": "140805", + "act": true, + "head": "Information.", + "lead": "Daten in der Fahrplanauskunft Linien S41, S42 am 28.10.2021 fehlerhaft", + "text": "Aufgrund eines Fehlers in den IT-Systemen sind die Daten in der Fahrplanauskunft für die Fahrten der Linien S41 und S42 am Donnerstag, den 28.10.2021 fehlerhaft. Die Züge der Linien S41 und S42 fahren wie folgt: S41 - Frankfurter Allee > Ostkreuz > Südkreuz > Westkreuz > Gesundbrunnen > Greifswalder Straße im 10-Minuten-Takt, zusätzliche Verstärkerzüge fahren Frankfurter Allee > Ostkreuz > Südkreuz > Westkreuz > Gesundbrunnen im 20-Minuten-Takt (von ca. 5 bis 21 Uhr); S42 - Greifswalder Straße > Gesundbrunnen > Westkreuz > Südkreuz > Ostkreuz > Frankfurter Allee im 10-Minuten-Takt, zusätzliche Verstärkerzüge fahren Gesundbrunnen > Westkreuz > Südkreuz > Ostkreuz > Frankfurter Allee im 20-Minuten-Takt (von ca. 5 bis 21 Uhr)", + "icoX": 8, + "prio": 50, + "prod": 65535, + "src": 50, + "lModDate": "20211027", + "lModTime": "173954", + "sDate": "20211027", + "sTime": "171000", + "eDate": "20211029", + "eTime": "020000", + "sDaily": "000000", + "eDaily": "235900", + "comp": "VBB", + "catRefL": [ + 0 + ], + "pubChL": [ + { + "name": "TIMETABLE", + "fDate": "20211027", + "fTime": "171000", + "tDate": "20211029", + "tTime": "020000" + } + ] + }, + { + "hid": "140558", + "act": true, + "head": "Bauarbeiten.", + "lead": "Kein Zugverkehr zwischen Greifswalder Str. und Frankfurter Allee - Als Ersatz fahren Busse.", + "text": "Bauzeitverlängerung: Weiterhin durchgehend bis zum 29.10.(Fr), ca. 1:30 Uhr kein Zugverkehr zwischen Greifswalder Str. und Frankfurter Allee. Zwischen Greifswalder Straße und Ostkreuz ist Ersatzverkehr mit Bussen eingerichtet. Bitte steigen Sie zwischen der S-Bahn und dem Ersatzverkehr am Bahnhof Ostkreuz um, am Bahnhof Frankfurter Allee beträgt der Fußweg zwischen S-Bahnhof und der Haltestelle des Ersatzverkehrs in der Gürtelstraße ca. 300 Meter. Achtung eingeschränkte Fahrradmitnahme! Bitte informieren Sie sich frühzeitig über Ihre Fahrmöglichkeiten. Wir bitten um Entschuldigung.
Infos Bauzeitverlängerung", + "icoX": 9, + "prio": 1, + "prod": 65535, + "src": 50, + "lModDate": "20211027", + "lModTime": "170045", + "sDate": "20211028", + "sTime": "020000", + "eDate": "20211029", + "eTime": "013000", + "sDaily": "000000", + "eDaily": "235900", + "comp": "VBB", + "catRefL": [ + 1 + ], + "pubChL": [ + { + "name": "TIMETABLE", + "fDate": "20211025", + "fTime": "150000", + "tDate": "20211029", + "tTime": "013000" + } + ] + }, + { + "hid": "140812", + "act": true, + "head": "Achtung! Falsche Fahrplanauskünfte für S41, S42 für Do (28.10.)", + "text": "Informationen zum Fahrplan finden Sie hier:
sbahn.berlin", + "icoX": 10, + "prio": 100, + "prod": 65535, + "src": 50, + "lModDate": "20211028", + "lModTime": "085003", + "sDate": "20211027", + "sTime": "181000", + "eDate": "20211029", + "eTime": "020000", + "sDaily": "000000", + "eDaily": "235900", + "comp": "VBB", + "catRefL": [ + 2 + ], + "pubChL": [ + { + "name": "TIMETABLE", + "fDate": "20211027", + "fTime": "181000", + "tDate": "20211029", + "tTime": "020000" + } + ] + }, + { + "hid": "118634", + "act": true, + "head": "Gemeinsam sicher unterwegs - mit Abstand und medizinischer Maske (in Berlin: FFP2)!", + "text": "An Haltestellen und Bahnhöfen sowie in Fahrzeugen. Maskenmuffel riskieren mindestens 50 Euro.
Weitere Informationen", + "icoX": 8, + "prio": 100, + "prod": 65535, + "src": 50, + "lModDate": "20210612", + "lModTime": "074336", + "sDate": "20210424", + "sTime": "000000", + "eDate": "20221231", + "eTime": "000000", + "sDaily": "000000", + "eDaily": "235900", + "comp": "VBB", + "catRefL": [ + 0 + ], + "pubChL": [ + { + "name": "TIMETABLE", + "fDate": "20210423", + "fTime": "134200", + "tDate": "20221231", + "tTime": "000000" + } + ] + }, + { + "hid": "140433", + "act": true, + "head": ".Ersatzlinie wegen Bauarbeiten", + "text": "Tram 56: fährt als Ersatz für M6 Riesaer Str. - S Hackescher Markt, umgeleitet zwischen Blumberger Damm/Landsberger Allee - Hohenschönhauser Str. über Allee der Kosmonauten - S Springpfuhl - Herzbergstr. - Roederplatz - Weißenseer Weg. Die Züge M6 fahren Riesaer Str. - S Marzahn, Busse als Ersatzverkehr fahren über Landsberger Allee zwischen S Marzahn und Hohenschönhauser Str. bzw. im Nachtverkehr bis Landsberger Allee/Petersburger Str..", + "icoX": 9, + "prio": 100, + "prod": 65535, + "src": 50, + "lModDate": "20211022", + "lModTime": "233921", + "sDate": "20211025", + "sTime": "020000", + "eDate": "20211122", + "eTime": "030000", + "sDaily": "000000", + "eDaily": "235900", + "comp": "BVG", + "catRefL": [ + 1 + ], + "pubChL": [ + { + "name": "TIMETABLE", + "fDate": "20211022", + "fTime": "233100", + "tDate": "20211122", + "tTime": "030000" + } + ] + }, + { + "hid": "140655", + "act": true, + "head": "Ausfall S8 zwischen Frankfurter Allee und Greifswalder Straße.", + "text": "Bauzeitverlängerung: Weiterhin durchgehend bis zum 29.10.(Do), ca. 1:30 Uhr kein Zugverkehr zwischen Greifswalder Str. und Frankfurter Allee. Zwischen Greifswalder Straße und Ostkreuz ist Ersatzverkehr mit Bussen eingerichtet. Bitte steigen Sie zwischen der S-Bahn und dem Ersatzverkehr am Bahnhof Ostkreuz um, am Bahnhof Frankfurter Allee beträgt der Fußweg zwischen S-Bahnhof und der Haltestelle des Ersatzverkehrs in der Gürtelstraße ca. 300 Meter. Achtung eingeschränkte Fahrradmitnahme! Bitte informieren Sie sich frühzeitig über Ihre Fahrmöglichkeiten. Wir bitten um Entschuldigung.
S-Bahn Berlin", + "icoX": 9, + "prio": 100, + "fLocX": 6, + "tLocX": 7, + "prod": 65535, + "src": 50, + "lModDate": "20211027", + "lModTime": "095825", + "sDate": "20211028", + "sTime": "020000", + "eDate": "20211029", + "eTime": "020000", + "sDaily": "000000", + "eDaily": "235900", + "comp": "S-Bahn Berlin", + "catRefL": [ + 1 + ], + "pubChL": [ + { + "name": "TIMETABLE", + "fDate": "20211027", + "fTime": "080000", + "tDate": "20211029", + "tTime": "020000" + } + ] + }, + { + "hid": "140567", + "act": true, + "head": "Bauarbeiten.", + "lead": "Bauzeitverlängerung, Ausfall S85", + "text": "Diese Fahrt fällt heute leider aus, bitte auf die Linie S8 ausweichen. Wegen Bauzeitverlängerung fahren keine Züge zwischen Frankfurter Allee und Greifswalder Straße, hier fahren Busse. Wir bitten um Entschuldigung
Infos Bauzeitverlängerung", + "icoX": 9, + "prio": 50, + "prod": 65535, + "src": 50, + "lModDate": "20211027", + "lModTime": "130052", + "sDate": "20211026", + "sTime": "061700", + "eDate": "20211029", + "eTime": "020000", + "sDaily": "000000", + "eDaily": "235900", + "comp": "VBB", + "catRefL": [ + 1 + ], + "pubChL": [ + { + "name": "TIMETABLE", + "fDate": "20211026", + "fTime": "061700", + "tDate": "20211029", + "tTime": "020000" + } + ] + } + ], + "icoL": [ + { + "res": "prod_comm_t", + "fg": { + "r": 255, + "g": 255, + "b": 255 + }, + "bg": { + "r": 55, + "g": 135, + "b": 74 + } + }, + { + "res": "DBS", + "txt": "S-Bahn Berlin GmbH" + }, + { + "res": "prod_tram_t", + "fg": { + "r": 255, + "g": 255, + "b": 255 + }, + "bg": { + "r": 204, + "g": 0, + "b": 0 + } + }, + { + "res": "prod_bus_t", + "fg": { + "r": 255, + "g": 255, + "b": 255 + }, + "bg": { + "r": 153, + "g": 51, + "b": 153 + } + }, + { + "res": "attr_info" + }, + { + "res": "prod_ic", + "fg": { + "r": 255, + "g": 255, + "b": 255 + }, + "bg": { + "r": 125, + "g": 129, + "b": 133 + } + }, + { + "res": "prod_reg", + "fg": { + "r": 255, + "g": 255, + "b": 255 + }, + "bg": { + "r": 226, + "g": 0, + "b": 25 + } + }, + { + "res": "attr_bike" + }, + { + "res": "HIM0" + }, + { + "res": "HIM1" + }, + { + "res": "HIM2" + }, + { + "res": "BVG", + "txt": "Berliner Verkehrsbetriebe" + }, + { + "res": "rt_cnf" + }, + { + "res": "rt_ont", + "txtA": "pünktlich" + }, + { + "res": "prod_sub_t", + "fg": { + "r": 255, + "g": 255, + "b": 255 + }, + "bg": { + "r": 0, + "g": 51, + "b": 153 + } + }, + { + "res": "rt_scancel" + }, + { + "res": "rt_cancel" + } + ], + "himMsgCatL": [ + { + "id": 0 + }, + { + "id": 1 + }, + { + "id": 2 + } + ], + "lDrawStyleL": [ + { + "sIcoX": 0, + "type": "SOLID", + "bg": { + "r": 55, + "g": 135, + "b": 74 + } + }, + { + "type": "SOLID", + "bg": { + "r": 55, + "g": 135, + "b": 74 + } + }, + { + "sIcoX": 2, + "type": "SOLID", + "bg": { + "r": 204, + "g": 0, + "b": 0 + } + }, + { + "type": "SOLID", + "bg": { + "r": 204, + "g": 0, + "b": 0 + } + } + ], + "rtSrcL": [ + { + "name": "", + "type": "DEFAULT", + "freeTextIdCount": 0 + } + ], + "timeStyleL": [ + { + "mode": "ABS" + }, + { + "mode": "CNT" + }, + { + "mode": "DLT", + "fg": { + "r": 212, + "g": 12, + "b": 66 + } + }, + { + "mode": "CNT", + "icoX": 12 + }, + { + "mode": "ABS", + "fg": { + "r": 212, + "g": 12, + "b": 66 + } + }, + { + "mode": "HIDE" + }, + { + "mode": "ABS", + "icoX": 13 + }, + { + "mode": "ABS", + "fg": { + "r": 212, + "g": 12, + "b": 66 + }, + "strikeOut": true + } + ] + }, + "type": "ARR", + "jnyL": [ + { + "jid": "1|18731|26|86|28102021", + "date": "20211028", + "prodX": 34, + "dirTxt": "Clara-Jaschke-Str. (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 16, + "aProdX": 34, + "aTimeS": "103000", + "aTimeR": "103400", + "aTimeFS": { + "styleX": 0 + }, + "aTimeFR": { + "styleX": 2, + "txtA": "4 Minuten später" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "PROGNOSED", + "type": "N" + }, + "pos": { + "x": 13460987, + "y": 52529859 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 2, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 2, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 2, + "tLocX": 2, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 2, + "tLocX": 2, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 3, + "trainStartDate": "20211028" + }, + { + "jid": "1|19013|5|86|28102021", + "date": "20211028", + "prodX": 36, + "dirTxt": "Ahrensfelde/Stadtgrenze (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 22, + "aProdX": 36, + "aTimeS": "103300", + "aTimeR": "103400", + "aTimeFS": { + "styleX": 0 + }, + "aTimeFR": { + "styleX": 2, + "txtA": "1 Minuten später" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "CALCULATED", + "type": "N" + }, + "pos": { + "x": 13452159, + "y": 52527639 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 3, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 3, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 3, + "tLocX": 3, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 3, + "tLocX": 3, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 3, + "trainStartDate": "20211028" + }, + { + "jid": "1|19067|24|86|28102021", + "date": "20211028", + "prodX": 38, + "dirTxt": "Clara-Jaschke-Str. (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 15, + "aProdX": 38, + "aTimeS": "103300", + "aTimeR": "103700", + "aTimeFS": { + "styleX": 0 + }, + "aTimeFR": { + "styleX": 2, + "txtA": "4 Minuten später" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "CALCULATED", + "type": "N" + }, + "pos": { + "x": 13446262, + "y": 52525949 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 2, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 2, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 2, + "tLocX": 2, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 2, + "tLocX": 2, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 3, + "trainStartDate": "20211028" + }, + { + "jid": "1|17032|5|86|28102021", + "date": "20211028", + "prodX": 39, + "dirTxt": "Riesaer Str. (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 32, + "aProdX": 39, + "aTimeS": "103400", + "aTimeR": "103100", + "aTimeFS": { + "styleX": 0, + "txtA": "Ankunft 10 34 ist verfrüht" + }, + "aTimeFR": { + "styleX": 4, + "txtA": ", neue Ankunft 10 31 bestätigt" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "PROGNOSED", + "type": "N" + }, + "pos": { + "x": 13439943, + "y": 52524088 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 4, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "HIM", + "himX": 4, + "sty": "M", + "fLocX": 4, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 373363637 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 4, + "tLocX": 4, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 4, + "tLocX": 4, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 3, + "trainStartDate": "20211028" + }, + { + "jid": "1|24512|0|86|28102021", + "date": "20211028", + "prodX": 44, + "dirTxt": "S Grünau (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 10, + "aProdX": 44, + "aPltfS": { + "type": "PL", + "txt": "2" + }, + "aPltfR": { + "type": "PL", + "txt": "2" + }, + "aTimeS": "103400", + "aTimeR": "103400", + "aTimeFS": { + "styleX": 5 + }, + "aTimeFR": { + "styleX": 6, + "txtA": "10 34 pünktlich" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "PROGNOSED", + "type": "N" + }, + "pos": { + "x": 13455360, + "y": 52528915 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 5, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 5, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 5, + "sty": "M", + "fLocX": 6, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 373357258 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 5, + "tLocX": 5, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 5, + "tLocX": 5, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "trainStartDate": "20211028" + }, + { + "jid": "1|52562|17|86|28102021", + "date": "20211028", + "prodX": 51, + "dirTxt": "S Südkreuz Bhf (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 45, + "aProdX": 51, + "aPltfS": { + "type": "PL", + "txt": "1" + }, + "aPltfR": { + "type": "PL", + "txt": "1" + }, + "aTimeS": "103400", + "aTimeR": "103400", + "aTimeFS": { + "styleX": 5 + }, + "aTimeFR": { + "styleX": 6, + "txtA": "10 34 pünktlich" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "PROGNOSED", + "type": "N" + }, + "pos": { + "x": 13458002, + "y": 52526380 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 0, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 320927997 + }, + { + "type": "HIM", + "himX": 1, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 269547812 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "trainStartDate": "20211028" + }, + { + "jid": "1|53738|6|86|28102021", + "date": "20211028", + "prodX": 0, + "dirTxt": "S Südkreuz Bhf (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 36, + "aProdX": 0, + "aPltfS": { + "type": "PL", + "txt": "2" + }, + "aPltfR": { + "type": "PL", + "txt": "2" + }, + "aTimeS": "103500", + "aTimeFS": { + "styleX": 0 + }, + "aTimeFC": { + "styleX": 1 + }, + "aProgType": "CORRECTED", + "type": "N" + }, + "pos": { + "x": 13461283, + "y": 52493426 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 0, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 320927997 + }, + { + "type": "HIM", + "himX": 1, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 269547812 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "trainStartDate": "20211028" + }, + { + "jid": "1|17078|26|86|28102021", + "date": "20211028", + "prodX": 52, + "dirTxt": "S Hackescher Markt (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 9, + "aProdX": 52, + "aTimeS": "103600", + "aTimeR": "103700", + "aTimeFS": { + "styleX": 0 + }, + "aTimeFR": { + "styleX": 2, + "txtA": "1 Minuten später" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "PROGNOSED", + "type": "N" + }, + "pos": { + "x": 13446262, + "y": 52525949 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 8, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "HIM", + "himX": 4, + "sty": "M", + "fLocX": 8, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 373363637 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 8, + "tLocX": 8, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 8, + "tLocX": 8, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 3, + "trainStartDate": "20211028" + }, + { + "jid": "1|53354|9|86|28102021", + "date": "20211028", + "prodX": 60, + "dirTxt": "S Südkreuz Bhf (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 36, + "aProdX": 60, + "aPltfS": { + "type": "PL", + "txt": "2" + }, + "aPltfR": { + "type": "PL", + "txt": "2" + }, + "aTimeS": "103600", + "aTimeR": "103600", + "aTimeFS": { + "styleX": 5 + }, + "aTimeFR": { + "styleX": 6, + "txtA": "10 36 pünktlich" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "PROGNOSED", + "type": "N" + }, + "pos": { + "x": 13466003, + "y": 52523513 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 0, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 320927997 + }, + { + "type": "HIM", + "himX": 1, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 269547812 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "trainStartDate": "20211028" + }, + { + "jid": "1|18606|6|86|28102021", + "date": "20211028", + "prodX": 61, + "dirTxt": "Scharnweberstr./Weichselstr. (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 11, + "aProdX": 61, + "aTimeS": "103800", + "aTimeR": "103800", + "aTimeFS": { + "styleX": 5 + }, + "aTimeFR": { + "styleX": 6, + "txtA": "10 38 pünktlich" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "CALCULATED", + "type": "N" + }, + "pos": { + "x": 13461661, + "y": 52530803 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 9, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 9, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 9, + "tLocX": 9, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 9, + "tLocX": 9, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 3, + "trainStartDate": "20211028" + }, + { + "jid": "1|52010|0|86|28102021", + "date": "20211028", + "prodX": 62, + "dirTxt": "S Südkreuz Bhf (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 72, + "aProdX": 62, + "aPltfS": { + "type": "PL", + "txt": "1" + }, + "aPltfR": { + "type": "PL", + "txt": "1" + }, + "aTimeS": "103900", + "aTimeR": "103900", + "aTimeFS": { + "styleX": 5 + }, + "aTimeFR": { + "styleX": 6, + "txtA": "10 39 pünktlich" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "PROGNOSED", + "type": "N" + }, + "pos": { + "x": 13425884, + "y": 52544790 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "trainStartDate": "20211028" + }, + { + "jid": "1|53328|1|86|28102021", + "date": "20211028", + "prodX": 30, + "dirTxt": "S Südkreuz Bhf (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 63, + "aProdX": 30, + "aPltfS": { + "type": "PL", + "txt": "2" + }, + "aPltfR": { + "type": "PL", + "txt": "2" + }, + "aTimeS": "104000", + "aTimeFS": { + "styleX": 0 + }, + "aTimeFC": { + "styleX": 1 + }, + "aProgType": "CORRECTED", + "type": "N" + }, + "pos": { + "x": 13460636, + "y": 52492473 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "trainStartDate": "20211028" + }, + { + "jid": "1|18731|27|86|28102021", + "date": "20211028", + "prodX": 34, + "dirTxt": "Clara-Jaschke-Str. (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 16, + "aProdX": 34, + "aTimeS": "104000", + "aTimeR": "103900", + "aTimeFS": { + "styleX": 0, + "txtA": "Ankunft 10 40 ist verfrüht" + }, + "aTimeFR": { + "styleX": 4, + "txtA": ", neue Ankunft 10 39 bestätigt" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "CALCULATED", + "type": "N" + }, + "pos": { + "x": 13439745, + "y": 52524016 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 2, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 2, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 2, + "tLocX": 2, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 2, + "tLocX": 2, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 3, + "trainStartDate": "20211028" + }, + { + "jid": "1|24642|3|86|28102021", + "date": "20211028", + "prodX": 63, + "dirTxt": "S Birkenwerder Bhf", + "status": "P", + "isCncl": true, + "isRchbl": false, + "stbStop": { + "locX": 0, + "idx": 12, + "aProdX": 63, + "aOutR": false, + "aTimeS": "104100", + "aTimeFS": { + "styleX": 7, + "txtA": "fällt aus" + }, + "aTimeFC": { + "styleX": 3 + }, + "aCncl": true, + "msgL": [ + { + "type": "REM", + "remX": 2, + "sty": "M", + "tagL": [ + "RES_LOC_H3" + ], + "sort": 13107200, + "persist": false + } + ], + "type": "N", + "aCnclRtSrcX": 0 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 10, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 10, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 5, + "sty": "M", + "fLocX": 7, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 373357258 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 10, + "tLocX": 10, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 10, + "tLocX": 10, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + }, + { + "type": "REM", + "remX": 3, + "sty": "M", + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 13107200, + "persist": false + } + ], + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "trainStartDate": "20211028" + }, + { + "jid": "1|19013|6|86|28102021", + "date": "20211028", + "prodX": 36, + "dirTxt": "Ahrensfelde/Stadtgrenze (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 22, + "aProdX": 36, + "aTimeS": "104300", + "aTimeR": "104600", + "aTimeFS": { + "styleX": 0 + }, + "aTimeFR": { + "styleX": 2, + "txtA": "3 Minuten später" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "CALCULATED", + "type": "N" + }, + "pos": { + "x": 13509529, + "y": 52525499 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 3, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 3, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 3, + "tLocX": 3, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 3, + "tLocX": 3, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 3, + "trainStartDate": "20211028" + }, + { + "jid": "1|19067|25|86|28102021", + "date": "20211028", + "prodX": 38, + "dirTxt": "Clara-Jaschke-Str. (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 15, + "aProdX": 38, + "aTimeS": "104300", + "aTimeR": "104200", + "aTimeFS": { + "styleX": 0, + "txtA": "Ankunft 10 43 ist verfrüht" + }, + "aTimeFR": { + "styleX": 4, + "txtA": ", neue Ankunft 10 42 bestätigt" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "CALCULATED", + "type": "N" + }, + "pos": { + "x": 13421965, + "y": 52524385 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 2, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 2, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 2, + "tLocX": 2, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 2, + "tLocX": 2, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 3, + "trainStartDate": "20211028" + }, + { + "jid": "1|17032|6|86|28102021", + "date": "20211028", + "prodX": 39, + "dirTxt": "Riesaer Str. (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 32, + "aProdX": 39, + "aTimeS": "104400", + "aTimeR": "104700", + "aTimeFS": { + "styleX": 0 + }, + "aTimeFR": { + "styleX": 2, + "txtA": "3 Minuten später" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "CALCULATED", + "type": "N" + }, + "pos": { + "x": 13482327, + "y": 52526749 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 4, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "HIM", + "himX": 4, + "sty": "M", + "fLocX": 4, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 373363637 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 4, + "tLocX": 4, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 4, + "tLocX": 4, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 3, + "trainStartDate": "20211028" + }, + { + "jid": "1|24781|1|86|28102021", + "date": "20211028", + "prodX": 68, + "dirTxt": "S Grünau (Berlin)", + "status": "P", + "isCncl": true, + "isRchbl": false, + "stbStop": { + "locX": 0, + "idx": 10, + "aProdX": 68, + "aOutR": false, + "aTimeS": "104400", + "aTimeFS": { + "styleX": 7, + "txtA": "fällt aus" + }, + "aTimeFC": { + "styleX": 3 + }, + "aCncl": true, + "msgL": [ + { + "type": "REM", + "remX": 2, + "sty": "M", + "tagL": [ + "RES_LOC_H3" + ], + "sort": 13107200, + "persist": false + } + ], + "type": "N", + "aCnclRtSrcX": 0 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 5, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 5, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 6, + "sty": "M", + "fLocX": 5, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 320928276 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 5, + "tLocX": 5, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 5, + "tLocX": 5, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + }, + { + "type": "REM", + "remX": 4, + "sty": "M", + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 13107200, + "persist": false + } + ], + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "trainStartDate": "20211028" + }, + { + "jid": "1|52562|18|86|28102021", + "date": "20211028", + "prodX": 69, + "dirTxt": "S Südkreuz Bhf (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 45, + "aProdX": 69, + "aPltfS": { + "type": "PL", + "txt": "1" + }, + "aPltfR": { + "type": "PL", + "txt": "1" + }, + "aTimeS": "104400", + "aTimeR": "104400", + "aTimeFS": { + "styleX": 5 + }, + "aTimeFR": { + "styleX": 6, + "txtA": "10 44 pünktlich" + }, + "aTimeFC": { + "styleX": 3 + }, + "aProgType": "PROGNOSED", + "type": "N" + }, + "pos": { + "x": 13386934, + "y": 52548898 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 0, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 320927997 + }, + { + "type": "HIM", + "himX": 1, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 269547812 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "trainStartDate": "20211028" + }, + { + "jid": "1|53738|8|86|28102021", + "date": "20211028", + "prodX": 31, + "dirTxt": "S Südkreuz Bhf (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 36, + "aProdX": 31, + "aPltfS": { + "type": "PL", + "txt": "2" + }, + "aPltfR": { + "type": "PL", + "txt": "2" + }, + "aTimeS": "105500", + "aTimeFS": { + "styleX": 0 + }, + "aTimeFC": { + "styleX": 1 + }, + "aProgType": "CORRECTED", + "type": "N" + }, + "pos": { + "x": 13459063, + "y": 52487520 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 0, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 320927997 + }, + { + "type": "HIM", + "himX": 1, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 269547812 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "trainStartDate": "20211028" + }, + { + "jid": "1|53738|9|86|28102021", + "date": "20211028", + "prodX": 32, + "dirTxt": "S Südkreuz Bhf (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 36, + "aProdX": 32, + "aPltfS": { + "type": "PL", + "txt": "2" + }, + "aPltfR": { + "type": "PL", + "txt": "2" + }, + "aTimeS": "111000", + "aTimeFS": { + "styleX": 0 + }, + "aTimeFC": { + "styleX": 1 + }, + "aProgType": "CORRECTED", + "type": "N" + }, + "pos": { + "x": 13379050, + "y": 52471834 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 0, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 320927997 + }, + { + "type": "HIM", + "himX": 1, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 269547812 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "trainStartDate": "20211028" + }, + { + "jid": "1|53738|10|86|28102021", + "date": "20211028", + "prodX": 33, + "dirTxt": "S Südkreuz Bhf (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 36, + "aProdX": 33, + "aPltfS": { + "type": "PL", + "txt": "2" + }, + "aPltfR": { + "type": "PL", + "txt": "2" + }, + "aTimeS": "111500", + "aTimeFS": { + "styleX": 0 + }, + "aTimeFC": { + "styleX": 1 + }, + "aProgType": "CORRECTED", + "type": "N" + }, + "pos": { + "x": 13457850, + "y": 52480652 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 0, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 320927997 + }, + { + "type": "HIM", + "himX": 1, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 269547812 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "trainStartDate": "20211028" + }, + { + "jid": "1|53738|11|86|28102021", + "date": "20211028", + "prodX": 35, + "dirTxt": "S Südkreuz Bhf (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 36, + "aProdX": 35, + "aPltfS": { + "type": "PL", + "txt": "2" + }, + "aPltfR": { + "type": "PL", + "txt": "2" + }, + "aTimeS": "112500", + "aTimeFS": { + "styleX": 0 + }, + "aTimeFC": { + "styleX": 1 + }, + "aProgType": "CORRECTED", + "type": "N" + }, + "pos": { + "x": 13457068, + "y": 52477227 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 0, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 320927997 + }, + { + "type": "HIM", + "himX": 1, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 269547812 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "trainStartDate": "20211028" + }, + { + "jid": "1|53738|12|86|28102021", + "date": "20211028", + "prodX": 67, + "dirTxt": "S Südkreuz Bhf (Berlin)", + "status": "P", + "isRchbl": true, + "stbStop": { + "locX": 0, + "idx": 36, + "aProdX": 67, + "aPltfS": { + "type": "PL", + "txt": "2" + }, + "aPltfR": { + "type": "PL", + "txt": "2" + }, + "aTimeS": "113500", + "aTimeFS": { + "styleX": 0 + }, + "aTimeFC": { + "styleX": 1 + }, + "aProgType": "CORRECTED", + "type": "N" + }, + "pos": { + "x": 13456142, + "y": 52473811 + }, + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "sort": 402915328 + }, + { + "type": "REM", + "remX": 1, + "sty": "I", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_DTL_H2" + ], + "sort": 538181632 + }, + { + "type": "HIM", + "himX": 0, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 320927997 + }, + { + "type": "HIM", + "himX": 1, + "sty": "M", + "fLocX": 1, + "tLocX": 0, + "tagL": [ + "RES_JNY_H1" + ], + "sort": 269547812 + }, + { + "type": "HIM", + "himX": 2, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373355886 + }, + { + "type": "HIM", + "himX": 3, + "sty": "M", + "fLocX": 1, + "tLocX": 1, + "tagL": [ + "RES_GLB_HDR_H3", + "SUM_GLB_HDR_H3" + ], + "sort": 373554673 + } + ], + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "trainStartDate": "20211028" + } + ], + "fpB": "20211022", + "fpE": "20211211", + "planrtTS": "1635410055", + "sD": "20211028", + "sT": "103442", + "locRefL": [ + 0 + ] +} diff --git a/test/fixtures/bvg-trip-with-occupancy.js b/test/fixtures/bvg-trip-with-occupancy.js new file mode 100644 index 00000000..6e48bd44 --- /dev/null +++ b/test/fixtures/bvg-trip-with-occupancy.js @@ -0,0 +1,1937 @@ +'use strict' + +module.exports = { + id: '1|6849|3|86|1112021', + direction: 'S Ostbahnhof via S+U Wedding', + reachable: true, + line: { + type: 'line', + id: '147', + fahrtNr: '7070', + name: '147', + public: true, + adminCode: 'BVB', + productName: 'Bus', + mode: 'bus', + product: 'bus', + operator: { + type: 'operator', + id: 'berliner-verkehrsbetriebe', + name: 'Berliner Verkehrsbetriebe' + }, + symbol: null, + nr: 147, + metro: false, + express: false, + night: false + }, + remarks: [ + { type: 'hint', code: 'bf', text: 'barrier-free' }, + { + type: 'hint', + code: 'text.journeystop.product.or.direction.changes.journey.message', + text: 'From S+U Wedding (Berlin) as 147 heading towards S Ostbahnhof via S+U Hauptbahnhof' + }, + { + type: 'hint', + code: 'text.journeystop.product.or.direction.changes.journey.message', + text: 'From S+U Berlin Hauptbahnhof as 147 heading towards S Ostbahnhof via Friedrichstr.' + }, + { + type: 'hint', + code: 'text.journeystop.product.or.direction.changes.journey.message', + text: 'From S+U Friedrichstr. Bhf (Berlin) as 147 heading towards S Ostbahnhof' + } + ], + occupancy: 'medium', + realtimeDataUpdatedAt: 1635406146, + + origin: { + type: 'stop', + id: '900000009102', + name: 'U Leopoldplatz', + location: { + type: 'location', + id: '900009102', + latitude: 52.546489, + longitude: 13.359391 + }, + products: { + suburban: false, + subway: true, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + departure: '2021-11-01T07:18:00+01:00', + plannedDeparture: '2021-11-01T07:18:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + + destination: { + type: 'stop', + id: '900000120005', + name: 'S Ostbahnhof', + location: { + type: 'location', + id: '900120005', + latitude: 52.510335, + longitude: 13.435089 + }, + products: { + suburban: true, + subway: false, + tram: false, + bus: true, + ferry: false, + express: true, + regional: true + } + }, + arrival: '2021-11-01T07:59:00+01:00', + plannedArrival: '2021-11-01T07:59:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + + polyline: { + type: 'FeatureCollection', + features: [ + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000009102', + name: 'U Leopoldplatz', + location: { + type: 'location', + id: '900009102', + latitude: 52.546489, + longitude: 13.359391 + }, + products: { + suburban: false, + subway: true, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.35954, 52.54606 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000009151', + name: 'Gerichtstr.', + location: { + type: 'location', + id: '900009151', + latitude: 52.544476, + longitude: 13.362663 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.36199, 52.54468 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000009104', + name: 'S+U Wedding', + location: { + type: 'location', + id: '900009104', + latitude: 52.542732, + longitude: 13.366061 + }, + products: { + suburban: true, + subway: true, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.36525, 52.54283 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36811, 52.54121 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36814, 52.54108 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000008104', + name: 'U Reinickendorfer Str./Fennstr.', + location: { + type: 'location', + id: '900008104', + latitude: 52.541195, + longitude: 13.368713 + }, + products: { + suburban: false, + subway: true, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.36785, 52.54092 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000001202', + name: 'Am Nordhafen', + location: { + type: 'location', + id: '900001202', + latitude: 52.538848, + longitude: 13.363607 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.36308, 52.53868 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36057, 52.53751 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36036, 52.53723 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36077, 52.53685 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36246, 52.5361 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36311, 52.53556 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000001252', + name: 'Friedrich-Krause-Ufer', + location: { + type: 'location', + id: '900001252', + latitude: 52.536736, + longitude: 13.361216 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.36167, 52.53653 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36539, 52.53325 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000001206', + name: 'Heidestr.', + location: { + type: 'location', + id: '900001206', + latitude: 52.53332, + longitude: 13.365512 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.36544, 52.53332 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36603, 52.5326 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000001203', + name: 'Döberitzer Str.', + location: { + type: 'location', + id: '900001203', + latitude: 52.530668, + longitude: 13.36811 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.36783, 52.5309 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36882, 52.52984 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36937, 52.52903 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36932, 52.5289 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36834, 52.52845 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36768, 52.52788 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36751, 52.5275 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.3674, 52.52633 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36762, 52.52592 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.36782, 52.52587 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000003201', + name: 'S+U Berlin Hauptbahnhof', + location: { + type: 'location', + id: '900003201', + latitude: 52.525607, + longitude: 13.369072 + }, + products: { + suburban: true, + subway: true, + tram: true, + bus: true, + ferry: false, + express: true, + regional: true + } + }, + geometry: { type: 'Point', coordinates: [ 13.36915, 52.52623 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.37048, 52.52664 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.3711, 52.52694 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100503', + name: 'Invalidenpark', + location: { + type: 'location', + id: '900100503', + latitude: 52.528762, + longitude: 13.376929 + }, + products: { + suburban: false, + subway: false, + tram: true, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.37714, 52.52876 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.37833, 52.52912 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.3785, 52.52905 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100542', + name: 'Charité - Campus Mitte', + location: { + type: 'location', + id: '900100542', + latitude: 52.52576, + longitude: 13.379086 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.37905, 52.52581 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100033', + name: 'Schumannstr.', + location: { + type: 'location', + id: '900100033', + latitude: 52.524052, + longitude: 13.379392 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.37942, 52.52361 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.37965, 52.52258 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100509', + name: 'Deutsches Theater', + location: { + type: 'location', + id: '900100509', + latitude: 52.523126, + longitude: 13.383266 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.38345, 52.52317 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100047', + name: 'Friedrichstr./Reinhardtstr.', + location: { + type: 'location', + id: '900100047', + latitude: 52.523711, + longitude: 13.386835 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.3867, 52.5237 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.38745, 52.52382 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.38761, 52.52376 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100001', + name: 'S+U Friedrichstr.', + location: { + type: 'location', + id: '900100001', + latitude: 52.520519, + longitude: 13.386448 + }, + products: { + suburban: true, + subway: true, + tram: true, + bus: true, + ferry: false, + express: false, + regional: true + } + }, + geometry: { type: 'Point', coordinates: [ 13.38818, 52.52058 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.38833, 52.51913 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100513', + name: 'U Unter den Linden', + location: { + type: 'location', + id: '900100513', + latitude: 52.516996, + longitude: 13.388875 + }, + products: { + suburban: false, + subway: true, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.38889, 52.51663 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.38872, 52.51723 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.38914, 52.51479 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100027', + name: 'Französische Str.', + location: { + type: 'location', + id: '900100027', + latitude: 52.514766, + longitude: 13.389208 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.38959, 52.51475 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100530', + name: 'Werderscher Markt', + location: { + type: 'location', + id: '900100530', + latitude: 52.515306, + longitude: 13.397334 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.3971, 52.51524 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.39995, 52.51587 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.40046, 52.51582 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100052', + name: 'Berliner Schloss', + location: { + type: 'location', + id: '900100052', + latitude: 52.516124, + longitude: 13.401676 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.40196, 52.51628 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.40251, 52.51634 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100531', + name: 'Neumannsgasse', + location: { + type: 'location', + id: '900100531', + latitude: 52.515189, + longitude: 13.403995 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.40414, 52.51521 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100726', + name: 'Fischerinsel.', + location: { + type: 'location', + id: '900100726', + latitude: 52.513571, + longitude: 13.406449 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.4063, 52.51363 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.40867, 52.51202 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100014', + name: 'U Märkisches Museum', + location: { + type: 'location', + id: '900100014', + latitude: 52.512007, + longitude: 13.408768 + }, + products: { + suburban: false, + subway: true, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.40938, 52.51132 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.41117, 52.5096 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100032', + name: 'Heinrich-Heine-Str./Annenstr.', + location: { + type: 'location', + id: '900100032', + latitude: 52.508285, + longitude: 13.413749 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.41383, 52.50815 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.41531, 52.50736 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100544', + name: 'Heinrich-Heine-Platz', + location: { + type: 'location', + id: '900100544', + latitude: 52.506595, + longitude: 13.417857 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.41761, 52.50662 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.41951, 52.50609 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.41935, 52.50579 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.41947, 52.50569 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.42159, 52.50512 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000100546', + name: 'Adalbertstr.', + location: { + type: 'location', + id: '900100546', + latitude: 52.505283, + longitude: 13.422144 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.42233, 52.50507 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.42443, 52.50514 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.42561, 52.50542 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.42639, 52.5057 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.42708, 52.50612 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.4279, 52.5068 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000014107', + name: 'Bethaniendamm', + location: { + type: 'location', + id: '900014107', + latitude: 52.507215, + longitude: 13.428437 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + geometry: { type: 'Point', coordinates: [ 13.42813, 52.50712 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.42845, 52.5082 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.43015, 52.51009 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.43482, 52.50851 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.43507, 52.5086 ] } + }, + { + type: 'Feature', + properties: {}, + geometry: { type: 'Point', coordinates: [ 13.4355, 52.50904 ] } + }, + { + type: 'Feature', + properties: { + type: 'stop', + id: '900000120005', + name: 'S Ostbahnhof', + location: { + type: 'location', + id: '900120005', + latitude: 52.510335, + longitude: 13.435089 + }, + products: { + suburban: true, + subway: false, + tram: false, + bus: true, + ferry: false, + express: true, + regional: true + } + }, + geometry: { type: 'Point', coordinates: [ 13.43447, 52.50953 ] } + } + ] + }, + + stopovers: [ + { + stop: { + type: 'stop', + id: '900000009102', + name: 'U Leopoldplatz', + location: { + type: 'location', + id: '900009102', + latitude: 52.546489, + longitude: 13.359391 + }, + products: { + suburban: false, + subway: true, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: null, + plannedArrival: null, + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:18:00+01:00', + plannedDeparture: '2021-11-01T07:18:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [ + { + type: 'hint', + code: 'text.journeystop.product.or.direction.changes.stop.message', + text: 'As 147 heading towards S Ostbahnhof via S+U Wedding from here' + } + ], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000009151', + name: 'Gerichtstr.', + location: { + type: 'location', + id: '900009151', + latitude: 52.544476, + longitude: 13.362663 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:20:00+01:00', + plannedArrival: '2021-11-01T07:20:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:20:00+01:00', + plannedDeparture: '2021-11-01T07:20:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000009104', + name: 'S+U Wedding', + location: { + type: 'location', + id: '900009104', + latitude: 52.542732, + longitude: 13.366061 + }, + products: { + suburban: true, + subway: true, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:21:00+01:00', + plannedArrival: '2021-11-01T07:21:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:21:00+01:00', + plannedDeparture: '2021-11-01T07:21:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [ + { + type: 'hint', + code: 'text.journeystop.product.or.direction.changes.stop.message', + text: 'As 147 heading towards S Ostbahnhof via S+U Hauptbahnhof from here' + } + ], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000008104', + name: 'U Reinickendorfer Str./Fennstr.', + location: { + type: 'location', + id: '900008104', + latitude: 52.541195, + longitude: 13.368713 + }, + products: { + suburban: false, + subway: true, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:22:00+01:00', + plannedArrival: '2021-11-01T07:22:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:22:00+01:00', + plannedDeparture: '2021-11-01T07:22:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000001202', + name: 'Am Nordhafen', + location: { + type: 'location', + id: '900001202', + latitude: 52.538848, + longitude: 13.363607 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:24:00+01:00', + plannedArrival: '2021-11-01T07:24:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:24:00+01:00', + plannedDeparture: '2021-11-01T07:24:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000001252', + name: 'Friedrich-Krause-Ufer', + location: { + type: 'location', + id: '900001252', + latitude: 52.536736, + longitude: 13.361216 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:26:00+01:00', + plannedArrival: '2021-11-01T07:26:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:26:00+01:00', + plannedDeparture: '2021-11-01T07:26:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000001206', + name: 'Heidestr.', + location: { + type: 'location', + id: '900001206', + latitude: 52.53332, + longitude: 13.365512 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:27:00+01:00', + plannedArrival: '2021-11-01T07:27:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:27:00+01:00', + plannedDeparture: '2021-11-01T07:27:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000001203', + name: 'Döberitzer Str.', + location: { + type: 'location', + id: '900001203', + latitude: 52.530668, + longitude: 13.36811 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:28:00+01:00', + plannedArrival: '2021-11-01T07:28:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:28:00+01:00', + plannedDeparture: '2021-11-01T07:28:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000003201', + name: 'S+U Berlin Hauptbahnhof', + location: { + type: 'location', + id: '900003201', + latitude: 52.525607, + longitude: 13.369072 + }, + products: { + suburban: true, + subway: true, + tram: true, + bus: true, + ferry: false, + express: true, + regional: true + } + }, + arrival: '2021-11-01T07:31:00+01:00', + plannedArrival: '2021-11-01T07:31:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:31:00+01:00', + plannedDeparture: '2021-11-01T07:31:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [ + { + type: 'hint', + code: 'text.journeystop.product.or.direction.changes.stop.message', + text: 'As 147 heading towards S Ostbahnhof via Friedrichstr. from here' + } + ], + occupancy: 'medium' + }, + { + stop: { + type: 'stop', + id: '900000100503', + name: 'Invalidenpark', + location: { + type: 'location', + id: '900100503', + latitude: 52.528762, + longitude: 13.376929 + }, + products: { + suburban: false, + subway: false, + tram: true, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:33:00+01:00', + plannedArrival: '2021-11-01T07:33:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:33:00+01:00', + plannedDeparture: '2021-11-01T07:33:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'medium' + }, + { + stop: { + type: 'stop', + id: '900000100542', + name: 'Charité - Campus Mitte', + location: { + type: 'location', + id: '900100542', + latitude: 52.52576, + longitude: 13.379086 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:35:00+01:00', + plannedArrival: '2021-11-01T07:35:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:35:00+01:00', + plannedDeparture: '2021-11-01T07:35:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000100033', + name: 'Schumannstr.', + location: { + type: 'location', + id: '900100033', + latitude: 52.524052, + longitude: 13.379392 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:36:00+01:00', + plannedArrival: '2021-11-01T07:36:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:36:00+01:00', + plannedDeparture: '2021-11-01T07:36:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000100509', + name: 'Deutsches Theater', + location: { + type: 'location', + id: '900100509', + latitude: 52.523126, + longitude: 13.383266 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:38:00+01:00', + plannedArrival: '2021-11-01T07:38:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:38:00+01:00', + plannedDeparture: '2021-11-01T07:38:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000100047', + name: 'Friedrichstr./Reinhardtstr.', + location: { + type: 'location', + id: '900100047', + latitude: 52.523711, + longitude: 13.386835 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:39:00+01:00', + plannedArrival: '2021-11-01T07:39:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:39:00+01:00', + plannedDeparture: '2021-11-01T07:39:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000100001', + name: 'S+U Friedrichstr.', + location: { + type: 'location', + id: '900100001', + latitude: 52.520519, + longitude: 13.386448 + }, + products: { + suburban: true, + subway: true, + tram: true, + bus: true, + ferry: false, + express: false, + regional: true + } + }, + arrival: '2021-11-01T07:41:00+01:00', + plannedArrival: '2021-11-01T07:41:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:41:00+01:00', + plannedDeparture: '2021-11-01T07:41:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [ + { + type: 'hint', + code: 'text.journeystop.product.or.direction.changes.stop.message', + text: 'As 147 heading towards S Ostbahnhof from here' + } + ], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000100513', + name: 'U Unter den Linden', + location: { + type: 'location', + id: '900100513', + latitude: 52.516996, + longitude: 13.388875 + }, + products: { + suburban: false, + subway: true, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:44:00+01:00', + plannedArrival: '2021-11-01T07:44:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:44:00+01:00', + plannedDeparture: '2021-11-01T07:44:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000100027', + name: 'Französische Str.', + location: { + type: 'location', + id: '900100027', + latitude: 52.514766, + longitude: 13.389208 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:45:00+01:00', + plannedArrival: '2021-11-01T07:45:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:45:00+01:00', + plannedDeparture: '2021-11-01T07:45:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000100530', + name: 'Werderscher Markt', + location: { + type: 'location', + id: '900100530', + latitude: 52.515306, + longitude: 13.397334 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:47:00+01:00', + plannedArrival: '2021-11-01T07:47:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:47:00+01:00', + plannedDeparture: '2021-11-01T07:47:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000100052', + name: 'Berliner Schloss', + location: { + type: 'location', + id: '900100052', + latitude: 52.516124, + longitude: 13.401676 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:47:00+01:00', + plannedArrival: '2021-11-01T07:47:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:47:00+01:00', + plannedDeparture: '2021-11-01T07:47:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000100531', + name: 'Neumannsgasse', + location: { + type: 'location', + id: '900100531', + latitude: 52.515189, + longitude: 13.403995 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:48:00+01:00', + plannedArrival: '2021-11-01T07:48:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:48:00+01:00', + plannedDeparture: '2021-11-01T07:48:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000100726', + name: 'Fischerinsel.', + location: { + type: 'location', + id: '900100726', + latitude: 52.513571, + longitude: 13.406449 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:49:00+01:00', + plannedArrival: '2021-11-01T07:49:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:49:00+01:00', + plannedDeparture: '2021-11-01T07:49:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000100014', + name: 'U Märkisches Museum', + location: { + type: 'location', + id: '900100014', + latitude: 52.512007, + longitude: 13.408768 + }, + products: { + suburban: false, + subway: true, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:50:00+01:00', + plannedArrival: '2021-11-01T07:50:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:50:00+01:00', + plannedDeparture: '2021-11-01T07:50:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000100032', + name: 'Heinrich-Heine-Str./Annenstr.', + location: { + type: 'location', + id: '900100032', + latitude: 52.508285, + longitude: 13.413749 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:51:00+01:00', + plannedArrival: '2021-11-01T07:51:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:51:00+01:00', + plannedDeparture: '2021-11-01T07:51:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000100544', + name: 'Heinrich-Heine-Platz', + location: { + type: 'location', + id: '900100544', + latitude: 52.506595, + longitude: 13.417857 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:52:00+01:00', + plannedArrival: '2021-11-01T07:52:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:52:00+01:00', + plannedDeparture: '2021-11-01T07:52:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000100546', + name: 'Adalbertstr.', + location: { + type: 'location', + id: '900100546', + latitude: 52.505283, + longitude: 13.422144 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:53:00+01:00', + plannedArrival: '2021-11-01T07:53:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:53:00+01:00', + plannedDeparture: '2021-11-01T07:53:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000014107', + name: 'Bethaniendamm', + location: { + type: 'location', + id: '900014107', + latitude: 52.507215, + longitude: 13.428437 + }, + products: { + suburban: false, + subway: false, + tram: false, + bus: true, + ferry: false, + express: false, + regional: false + } + }, + arrival: '2021-11-01T07:55:00+01:00', + plannedArrival: '2021-11-01T07:55:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: '2021-11-01T07:55:00+01:00', + plannedDeparture: '2021-11-01T07:55:00+01:00', + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null, + remarks: [], + occupancy: 'low' + }, + { + stop: { + type: 'stop', + id: '900000120005', + name: 'S Ostbahnhof', + location: { + type: 'location', + id: '900120005', + latitude: 52.510335, + longitude: 13.435089 + }, + products: { + suburban: true, + subway: false, + tram: false, + bus: true, + ferry: false, + express: true, + regional: true + } + }, + arrival: '2021-11-01T07:59:00+01:00', + plannedArrival: '2021-11-01T07:59:00+01:00', + arrivalDelay: null, + arrivalPlatform: null, + plannedArrivalPlatform: null, + departure: null, + plannedDeparture: null, + departureDelay: null, + departurePlatform: null, + plannedDeparturePlatform: null + } + ], +} diff --git a/test/fixtures/bvg-trip-with-occupancy.json b/test/fixtures/bvg-trip-with-occupancy.json new file mode 100644 index 00000000..68331180 --- /dev/null +++ b/test/fixtures/bvg-trip-with-occupancy.json @@ -0,0 +1,1699 @@ +{ + "common": { + "crdSysL": [ + { + "id": "standard", + "index": 0, + "type": "WGS84" + } + ], + "dirL": [ + { + "flg": "2", + "txt": "S Ostbahnhof via S+U Wedding" + }, + { + "flg": "2", + "txt": "S Ostbahnhof via S+U Hauptbahnhof" + }, + { + "flg": "2", + "txt": "S Ostbahnhof via Friedrichstr." + }, + { + "flg": "2", + "txt": "S Ostbahnhof" + } + ], + "icoL": [ + { + "bg": { + "b": 153, + "g": 51, + "r": 153 + }, + "fg": { + "b": 255, + "g": 255, + "r": 255 + }, + "res": "prod_bus_t" + }, + { + "res": "BVG", + "txt": "Berliner Verkehrsbetriebe" + }, + { + "bg": { + "b": 153, + "g": 51, + "r": 0 + }, + "fg": { + "b": 255, + "g": 255, + "r": 255 + }, + "res": "prod_sub_t" + }, + { + "bg": { + "b": 74, + "g": 135, + "r": 55 + }, + "fg": { + "b": 255, + "g": 255, + "r": 255 + }, + "res": "prod_comm_t" + }, + { + "res": "occup_fig_low" + }, + { + "res": "occup_fig_mid" + }, + { + "bg": { + "b": 0, + "g": 0, + "r": 204 + }, + "fg": { + "b": 255, + "g": 255, + "r": 255 + }, + "res": "prod_tram_t" + }, + { + "res": "attr_info" + } + ], + "lDrawStyleL": [ + { + "bg": { + "b": 153, + "g": 51, + "r": 153 + }, + "sIcoX": 0, + "type": "SOLID" + }, + { + "bg": { + "b": 153, + "g": 51, + "r": 153 + }, + "type": "SOLID" + } + ], + "layerL": [ + { + "annoCnt": 0, + "id": "standard", + "index": 0, + "name": "standard" + } + ], + "locL": [ + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13359391, + "y": 52546489 + }, + "extId": "900009102", + "icoX": 2, + "lid": "A=1@O=U Leopoldplatz (Berlin)@X=13359391@Y=52546489@U=86@L=900009102@", + "name": "U Leopoldplatz (Berlin)", + "pCls": 10, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13366061, + "y": 52542732 + }, + "extId": "900009104", + "icoX": 3, + "lid": "A=1@O=S+U Wedding (Berlin)@X=13366061@Y=52542732@U=86@L=900009104@", + "name": "S+U Wedding (Berlin)", + "pCls": 11, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13369072, + "y": 52525607 + }, + "extId": "900003201", + "icoX": 3, + "lid": "A=1@O=S+U Berlin Hauptbahnhof@X=13369072@Y=52525607@U=86@L=900003201@", + "name": "S+U Berlin Hauptbahnhof", + "pCls": 111, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13386448, + "y": 52520519 + }, + "extId": "900100001", + "icoX": 3, + "lid": "A=1@O=S+U Friedrichstr. Bhf (Berlin)@X=13386448@Y=52520519@U=86@L=900100001@", + "name": "S+U Friedrichstr. Bhf (Berlin)", + "pCls": 79, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13435089, + "y": 52510335 + }, + "extId": "900120005", + "icoX": 3, + "lid": "A=1@O=S Ostbahnhof (Berlin)@X=13435089@Y=52510335@U=86@L=900120005@", + "name": "S Ostbahnhof (Berlin)", + "pCls": 105, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13362663, + "y": 52544476 + }, + "extId": "900009151", + "icoX": 0, + "lid": "A=1@O=Gerichtstr. (Berlin)@X=13362663@Y=52544476@U=86@L=900009151@", + "name": "Gerichtstr. (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13368713, + "y": 52541195 + }, + "extId": "900008104", + "icoX": 0, + "lid": "A=1@O=U Reinickendorfer Str./Fennstr. (Berlin)@X=13368713@Y=52541195@U=86@L=900008104@", + "name": "U Reinickendorfer Str./Fennstr. (Berlin)", + "pCls": 10, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13363607, + "y": 52538848 + }, + "extId": "900001202", + "icoX": 0, + "lid": "A=1@O=Am Nordhafen (Berlin)@X=13363607@Y=52538848@U=86@L=900001202@", + "name": "Am Nordhafen (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13361216, + "y": 52536736 + }, + "extId": "900001252", + "icoX": 0, + "lid": "A=1@O=Friedrich-Krause-Ufer (Berlin)@X=13361216@Y=52536736@U=86@L=900001252@", + "name": "Friedrich-Krause-Ufer (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13365512, + "y": 52533320 + }, + "extId": "900001206", + "icoX": 0, + "lid": "A=1@O=Heidestr. (Berlin)@X=13365512@Y=52533320@U=86@L=900001206@", + "name": "Heidestr. (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13368110, + "y": 52530668 + }, + "extId": "900001203", + "icoX": 0, + "lid": "A=1@O=Döberitzer Str. (Berlin)@X=13368110@Y=52530668@U=86@L=900001203@", + "name": "Döberitzer Str. (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13376929, + "y": 52528762 + }, + "extId": "900100503", + "icoX": 6, + "lid": "A=1@O=Invalidenpark (Berlin)@X=13376929@Y=52528762@U=86@L=900100503@", + "name": "Invalidenpark (Berlin)", + "pCls": 12, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13379086, + "y": 52525760 + }, + "extId": "900100542", + "icoX": 0, + "lid": "A=1@O=Charité - Campus Mitte (Berlin)@X=13379086@Y=52525760@U=86@L=900100542@", + "name": "Charité - Campus Mitte (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13379392, + "y": 52524052 + }, + "extId": "900100033", + "icoX": 0, + "lid": "A=1@O=Schumannstr. (Berlin)@X=13379392@Y=52524052@U=86@L=900100033@", + "name": "Schumannstr. (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13383266, + "y": 52523126 + }, + "extId": "900100509", + "icoX": 0, + "lid": "A=1@O=Deutsches Theater (Berlin)@X=13383266@Y=52523126@U=86@L=900100509@", + "name": "Deutsches Theater (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13386835, + "y": 52523711 + }, + "extId": "900100047", + "icoX": 0, + "lid": "A=1@O=Friedrichstr./Reinhardtstr. (Berlin)@X=13386835@Y=52523711@U=86@L=900100047@", + "name": "Friedrichstr./Reinhardtstr. (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13388875, + "y": 52516996 + }, + "extId": "900100513", + "icoX": 2, + "lid": "A=1@O=U Unter den Linden (Berlin)@X=13388875@Y=52516996@U=86@L=900100513@", + "name": "U Unter den Linden (Berlin)", + "pCls": 10, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13389208, + "y": 52514766 + }, + "extId": "900100027", + "icoX": 0, + "lid": "A=1@O=Französische Str. (Berlin)@X=13389208@Y=52514766@U=86@L=900100027@", + "name": "Französische Str. (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13397334, + "y": 52515306 + }, + "extId": "900100530", + "icoX": 0, + "lid": "A=1@O=Werderscher Markt (Berlin)@X=13397334@Y=52515306@U=86@L=900100530@", + "name": "Werderscher Markt (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13401676, + "y": 52516124 + }, + "extId": "900100052", + "icoX": 0, + "lid": "A=1@O=Berliner Schloss (Berlin)@X=13401676@Y=52516124@U=86@L=900100052@", + "name": "Berliner Schloss (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13403995, + "y": 52515189 + }, + "extId": "900100531", + "icoX": 0, + "lid": "A=1@O=Neumannsgasse (Berlin)@X=13403995@Y=52515189@U=86@L=900100531@", + "name": "Neumannsgasse (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13406449, + "y": 52513571 + }, + "extId": "900100726", + "icoX": 0, + "lid": "A=1@O=Fischerinsel. (Berlin)@X=13406449@Y=52513571@U=86@L=900100726@", + "name": "Fischerinsel. (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13408768, + "y": 52512007 + }, + "extId": "900100014", + "icoX": 2, + "lid": "A=1@O=U Märkisches Museum (Berlin)@X=13408768@Y=52512007@U=86@L=900100014@", + "name": "U Märkisches Museum (Berlin)", + "pCls": 10, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13413749, + "y": 52508285 + }, + "extId": "900100032", + "icoX": 0, + "lid": "A=1@O=Heinrich-Heine-Str./Annenstr. (Berlin)@X=13413749@Y=52508285@U=86@L=900100032@", + "name": "Heinrich-Heine-Str./Annenstr. (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13417857, + "y": 52506595 + }, + "extId": "900100544", + "icoX": 0, + "lid": "A=1@O=Heinrich-Heine-Platz (Berlin)@X=13417857@Y=52506595@U=86@L=900100544@", + "name": "Heinrich-Heine-Platz (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13422144, + "y": 52505283 + }, + "extId": "900100546", + "icoX": 0, + "lid": "A=1@O=Adalbertstr. (Berlin)@X=13422144@Y=52505283@U=86@L=900100546@", + "name": "Adalbertstr. (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + }, + { + "crd": { + "crdSysX": 0, + "layerX": 0, + "x": 13428437, + "y": 52507215 + }, + "extId": "900014107", + "icoX": 0, + "lid": "A=1@O=Bethaniendamm (Berlin)@X=13428437@Y=52507215@U=86@L=900014107@", + "name": "Bethaniendamm (Berlin)", + "pCls": 8, + "state": "F", + "type": "S" + } + ], + "opL": [ + { + "icoX": 1, + "id": "796", + "name": "Berliner Verkehrsbetriebe", + "url": "https://www.bvg.de/" + } + ], + "polyL": [ + { + "crdEncF": "????????????????????????????????????????????????????????????????????????????????????????????????????", + "crdEncS": "NNNNNNLNNNNMNMMNNNLNNKNNKNKLNKNLNNNKLNNMNNNNNNNNNNLNNNKNNNNNNNNMMNNNNNNNMNNNNNNNNNLNMNNMNKNKNNNNNKNN", + "crdEncYX": "{{u_IchppArGiN??pJkS??bI{PXE^x@??~Lx\\??hFtNv@h@jAqAtCqIjBaCaE~G??nSgVMI??nCuBrIgJ??rEeE`DmBXHxAbEpBbCjA`@hFTpAk@Hg@gAiG??qAiG{@{BkJwd@??gAmFLa@fSmB??vLiA??lEm@uBwV??iBiS??WuCJ_@zRqB??`H]rNoB??wB`@fNsAFyA??aB}m@??}ByPHeB{AkH??KmB`FeI??zHoL??`IyMjCmC??vIeJ`HsO??|CgHrCkM??hB{Jz@^RWpBgLHsC??McLw@kFw@{CsAiCgCcD_Am@??wE_AyJsIzHe\\Qq@wAuAaBlE", + "delta": true, + "dim": 2, + "lDrawStyleX": 0, + "ppLocRefL": [ + { + "locX": 0, + "ppIdx": 0 + }, + { + "locX": 5, + "ppIdx": 1 + }, + { + "locX": 1, + "ppIdx": 3 + }, + { + "locX": 6, + "ppIdx": 7 + }, + { + "locX": 7, + "ppIdx": 9 + }, + { + "locX": 8, + "ppIdx": 16 + }, + { + "locX": 9, + "ppIdx": 19 + }, + { + "locX": 10, + "ppIdx": 22 + }, + { + "locX": 2, + "ppIdx": 33 + }, + { + "locX": 11, + "ppIdx": 37 + }, + { + "locX": 12, + "ppIdx": 41 + }, + { + "locX": 13, + "ppIdx": 43 + }, + { + "locX": 14, + "ppIdx": 46 + }, + { + "locX": 15, + "ppIdx": 48 + }, + { + "locX": 3, + "ppIdx": 52 + }, + { + "locX": 16, + "ppIdx": 55 + }, + { + "locX": 17, + "ppIdx": 59 + }, + { + "locX": 18, + "ppIdx": 61 + }, + { + "locX": 19, + "ppIdx": 65 + }, + { + "locX": 20, + "ppIdx": 68 + }, + { + "locX": 21, + "ppIdx": 70 + }, + { + "locX": 22, + "ppIdx": 73 + }, + { + "locX": 23, + "ppIdx": 76 + }, + { + "locX": 24, + "ppIdx": 79 + }, + { + "locX": 25, + "ppIdx": 85 + }, + { + "locX": 26, + "ppIdx": 92 + }, + { + "locX": 4, + "ppIdx": 99 + } + ] + } + ], + "prodL": [ + { + "cls": 8, + "icoX": 0, + "name": "147", + "nameS": "147", + "number": "147", + "oprX": 0, + "pid": "L::3::Bus::B3041857784::Bus_3041857784_147::*", + "prodCtx": { + "admin": "BVB---", + "catCode": "3", + "catIn": "B", + "catOut": "Bus ", + "catOutL": "Bus ", + "catOutS": "B", + "line": "147", + "matchId": "147", + "name": " 147", + "num": "7070" + } + } + ], + "remL": [ + { + "code": "text.occup.loc.max.11", + "icoX": 4, + "txtN": "low occupancy expected", + "type": "A" + }, + { + "code": "text.occup.loc.max.12", + "icoX": 5, + "txtN": "medium occupancy expected", + "type": "A" + }, + { + "code": "bf", + "icoX": 7, + "prio": 2, + "txtN": "barrier-free", + "type": "A" + }, + { + "code": "text.journeystop.product.or.direction.changes.stop.message", + "icoX": 7, + "txtN": "As 147 heading towards S Ostbahnhof via S+U Wedding from here", + "type": "A" + }, + { + "code": "text.journeystop.product.or.direction.changes.stop.message", + "icoX": 7, + "txtN": "As 147 heading towards S Ostbahnhof via S+U Hauptbahnhof from here", + "type": "A" + }, + { + "code": "text.journeystop.product.or.direction.changes.journey.message", + "icoX": 7, + "txtN": "From S+U Wedding (Berlin) as 147 heading towards S Ostbahnhof via S+U Hauptbahnhof", + "type": "A" + }, + { + "code": "text.journeystop.product.or.direction.changes.stop.message", + "icoX": 7, + "txtN": "As 147 heading towards S Ostbahnhof via Friedrichstr. from here", + "type": "A" + }, + { + "code": "text.journeystop.product.or.direction.changes.journey.message", + "icoX": 7, + "txtN": "From S+U Berlin Hauptbahnhof as 147 heading towards S Ostbahnhof via Friedrichstr.", + "type": "A" + }, + { + "code": "text.journeystop.product.or.direction.changes.stop.message", + "icoX": 7, + "txtN": "As 147 heading towards S Ostbahnhof from here", + "type": "A" + }, + { + "code": "text.journeystop.product.or.direction.changes.journey.message", + "icoX": 7, + "txtN": "From S+U Friedrichstr. Bhf (Berlin) as 147 heading towards S Ostbahnhof", + "type": "A" + }, + { + "code": "text.occup.jny.max.12", + "icoX": 5, + "txtN": "medium occupancy expected", + "type": "A" + } + ], + "tcocL": [ + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + }, + { + "c": "SECOND" + } + ] + }, + "fpB": "20211022", + "fpE": "20211211", + "journey": { + "date": "20211101", + "dirFlg": "2", + "dirL": [ + { + "dirX": 0, + "fIdx": 0, + "fLocX": 0, + "tIdx": 2, + "tLocX": 1 + }, + { + "dirX": 1, + "fIdx": 2, + "fLocX": 1, + "tIdx": 8, + "tLocX": 2 + }, + { + "dirX": 2, + "fIdx": 8, + "fLocX": 2, + "tIdx": 14, + "tLocX": 3 + }, + { + "dirX": 3, + "fIdx": 14, + "fLocX": 3, + "tIdx": 26, + "tLocX": 4 + } + ], + "dirTxt": "S Ostbahnhof via S+U Wedding", + "isRchbl": true, + "jid": "1|6849|3|86|1112021", + "msgL": [ + { + "fLocX": 0, + "remX": 2, + "sort": 402915328, + "sty": "I", + "tLocX": 4, + "tagL": [ + "RES_JNY_DTL_H3" + ], + "type": "REM" + }, + { + "remX": 5, + "sort": 684195840, + "sty": "I", + "tagL": [ + "SUM_JNY_H3" + ], + "type": "REM" + }, + { + "remX": 7, + "sort": 684195840, + "sty": "I", + "tagL": [ + "SUM_JNY_H3" + ], + "type": "REM" + }, + { + "remX": 9, + "sort": 684195840, + "sty": "I", + "tagL": [ + "SUM_JNY_H3" + ], + "type": "REM" + }, + { + "dspl": "U", + "remX": 10, + "sort": 684195840, + "sty": "I", + "tagL": [ + "SUM_CON_HDR_H3", + "RES_CON_HDR_H3" + ], + "type": "REM" + } + ], + "polyG": { + "crdSysX": 0, + "layerX": 0, + "polyXL": [ + 0 + ] + }, + "prodL": [ + { + "fIdx": 0, + "fLocX": 0, + "prodX": 0, + "tIdx": 2, + "tLocX": 1 + }, + { + "fIdx": 2, + "fLocX": 1, + "prodX": 0, + "tIdx": 8, + "tLocX": 2 + }, + { + "fIdx": 8, + "fLocX": 2, + "prodX": 0, + "tIdx": 14, + "tLocX": 3 + }, + { + "fIdx": 14, + "fLocX": 3, + "prodX": 0, + "tIdx": 26, + "tLocX": 4 + } + ], + "prodX": 0, + "resLDrawStyleX": 1, + "sDaysL": [ + { + "fLocIdx": 0, + "fLocX": 0, + "sDaysB": "9F3E7CF9F3E7C0", + "sDaysR": "Mo - Fr", + "tLocIdx": 26, + "tLocX": 4 + } + ], + "status": "P", + "stopL": [ + { + "dDirFlg": "2", + "dDirTxt": "S Ostbahnhof via S+U Wedding", + "dProdX": 0, + "dProgType": "PROGNOSED", + "dTimeS": "071800", + "dTrnCmpSX": { + "tcocX": [ + 0 + ] + }, + "idx": 0, + "locX": 0, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + }, + { + "remX": 3, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "072000", + "dProdX": 0, + "dTimeS": "072000", + "dTrnCmpSX": { + "tcocX": [ + 1 + ] + }, + "idx": 1, + "locX": 5, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "072100", + "dDirTxt": "S Ostbahnhof via S+U Hauptbahnhof", + "dProdX": 0, + "dTimeS": "072100", + "dTrnCmpSX": { + "tcocX": [ + 2 + ] + }, + "idx": 2, + "locX": 1, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + }, + { + "remX": 4, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "072200", + "dProdX": 0, + "dTimeS": "072200", + "dTrnCmpSX": { + "tcocX": [ + 3 + ] + }, + "idx": 3, + "locX": 6, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "072400", + "dProdX": 0, + "dTimeS": "072400", + "dTrnCmpSX": { + "tcocX": [ + 4 + ] + }, + "idx": 4, + "locX": 7, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "072600", + "dProdX": 0, + "dTimeS": "072600", + "dTrnCmpSX": { + "tcocX": [ + 5 + ] + }, + "idx": 5, + "locX": 8, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "072700", + "dProdX": 0, + "dTimeS": "072700", + "dTrnCmpSX": { + "tcocX": [ + 6 + ] + }, + "idx": 6, + "locX": 9, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "072800", + "dProdX": 0, + "dTimeS": "072800", + "dTrnCmpSX": { + "tcocX": [ + 7 + ] + }, + "idx": 7, + "locX": 10, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "073100", + "dDirTxt": "S Ostbahnhof via Friedrichstr.", + "dProdX": 0, + "dTimeS": "073100", + "dTrnCmpSX": { + "tcocX": [ + 8 + ] + }, + "idx": 8, + "locX": 2, + "msgL": [ + { + "dspl": "U", + "remX": 1, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + }, + { + "remX": 6, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "073300", + "dProdX": 0, + "dTimeS": "073300", + "dTrnCmpSX": { + "tcocX": [ + 9 + ] + }, + "idx": 9, + "locX": 11, + "msgL": [ + { + "dspl": "U", + "remX": 1, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "073500", + "dProdX": 0, + "dTimeS": "073500", + "dTrnCmpSX": { + "tcocX": [ + 10 + ] + }, + "idx": 10, + "locX": 12, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "073600", + "dProdX": 0, + "dTimeS": "073600", + "dTrnCmpSX": { + "tcocX": [ + 11 + ] + }, + "idx": 11, + "locX": 13, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "073800", + "dProdX": 0, + "dTimeS": "073800", + "dTrnCmpSX": { + "tcocX": [ + 12 + ] + }, + "idx": 12, + "locX": 14, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "073900", + "dProdX": 0, + "dTimeS": "073900", + "dTrnCmpSX": { + "tcocX": [ + 13 + ] + }, + "idx": 13, + "locX": 15, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "074100", + "dDirTxt": "S Ostbahnhof", + "dProdX": 0, + "dTimeS": "074100", + "dTrnCmpSX": { + "tcocX": [ + 14 + ] + }, + "idx": 14, + "locX": 3, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + }, + { + "remX": 8, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "074400", + "dProdX": 0, + "dTimeS": "074400", + "dTrnCmpSX": { + "tcocX": [ + 15 + ] + }, + "idx": 15, + "locX": 16, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "074500", + "dProdX": 0, + "dTimeS": "074500", + "dTrnCmpSX": { + "tcocX": [ + 16 + ] + }, + "idx": 16, + "locX": 17, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "074700", + "dProdX": 0, + "dTimeS": "074700", + "dTrnCmpSX": { + "tcocX": [ + 17 + ] + }, + "idx": 17, + "locX": 18, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "074700", + "dProdX": 0, + "dTimeS": "074700", + "dTrnCmpSX": { + "tcocX": [ + 18 + ] + }, + "idx": 18, + "locX": 19, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "074800", + "dProdX": 0, + "dTimeS": "074800", + "dTrnCmpSX": { + "tcocX": [ + 19 + ] + }, + "idx": 19, + "locX": 20, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "074900", + "dProdX": 0, + "dTimeS": "074900", + "dTrnCmpSX": { + "tcocX": [ + 20 + ] + }, + "idx": 20, + "locX": 21, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "075000", + "dProdX": 0, + "dTimeS": "075000", + "dTrnCmpSX": { + "tcocX": [ + 21 + ] + }, + "idx": 21, + "locX": 22, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "075100", + "dProdX": 0, + "dTimeS": "075100", + "dTrnCmpSX": { + "tcocX": [ + 22 + ] + }, + "idx": 22, + "locX": 23, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "075200", + "dProdX": 0, + "dTimeS": "075200", + "dTrnCmpSX": { + "tcocX": [ + 23 + ] + }, + "idx": 23, + "locX": 24, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "075300", + "dProdX": 0, + "dTimeS": "075300", + "dTrnCmpSX": { + "tcocX": [ + 24 + ] + }, + "idx": 24, + "locX": 25, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aTimeS": "075500", + "dProdX": 0, + "dTimeS": "075500", + "dTrnCmpSX": { + "tcocX": [ + 25 + ] + }, + "idx": 25, + "locX": 26, + "msgL": [ + { + "dspl": "U", + "remX": 0, + "sort": 684195840, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "type": "REM" + } + ], + "type": "N" + }, + { + "aProdX": 0, + "aProgType": "PROGNOSED", + "aTimeS": "075900", + "idx": 26, + "locX": 4, + "type": "N" + } + ], + "subscr": "F", + "sumLDrawStyleX": 0 + }, + "planrtTS": "1635406146" +} \ No newline at end of file