From 3d43e4ad2c482c98171e3a76525247d74911a658 Mon Sep 17 00:00:00 2001 From: Tom <65157178+t0mbrn@users.noreply.github.com> Date: Fri, 25 Jul 2025 20:07:21 +0200 Subject: [PATCH 01/12] Add new data structures for EFA JSON API --- .../project.pbxproj | 24 +++++++++++ .../DepartureView/Views/DepartureView.swift | 3 +- .../Shared Models/StopEvent.swift | 9 ++-- .../SingleTripView/Views/SingleTripView.swift | 5 +-- .../TripFinder/Models/Journey.swift | 38 ++++++++++++++++ .../TripFinder/Models/TripLeg.swift | 43 +++++++++++++++++++ 6 files changed, 112 insertions(+), 10 deletions(-) create mode 100644 Haltestellenmonitor1-DD/TripFinder/Models/Journey.swift create mode 100644 Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift diff --git a/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj b/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj index 066b7ba..7db528f 100644 --- a/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj +++ b/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj @@ -204,6 +204,16 @@ F1B8C04C2D70DD5C00F77CE4 /* Location.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1B8C04A2D70DD5900F77CE4 /* Location.swift */; }; F1B8C04D2D70DD5C00F77CE4 /* Location.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1B8C04A2D70DD5900F77CE4 /* Location.swift */; }; F1B8C04E2D70DD5C00F77CE4 /* Location.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1B8C04A2D70DD5900F77CE4 /* Location.swift */; }; + F1C036F52E33F543000E49BE /* Journey.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1C036F42E33F53A000E49BE /* Journey.swift */; }; + F1C036F62E33F543000E49BE /* Journey.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1C036F42E33F53A000E49BE /* Journey.swift */; }; + F1C036F72E33F543000E49BE /* Journey.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1C036F42E33F53A000E49BE /* Journey.swift */; }; + F1C036F82E33F543000E49BE /* Journey.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1C036F42E33F53A000E49BE /* Journey.swift */; }; + F1C036F92E33F543000E49BE /* Journey.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1C036F42E33F53A000E49BE /* Journey.swift */; }; + F1C036FB2E33F649000E49BE /* TripLeg.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1C036FA2E33F641000E49BE /* TripLeg.swift */; }; + F1C036FC2E33F649000E49BE /* TripLeg.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1C036FA2E33F641000E49BE /* TripLeg.swift */; }; + F1C036FD2E33F649000E49BE /* TripLeg.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1C036FA2E33F641000E49BE /* TripLeg.swift */; }; + F1C036FE2E33F649000E49BE /* TripLeg.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1C036FA2E33F641000E49BE /* TripLeg.swift */; }; + F1C036FF2E33F649000E49BE /* TripLeg.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1C036FA2E33F641000E49BE /* TripLeg.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -371,6 +381,8 @@ F1A7E7CA2AEA988C00E1910F /* TripSectionViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripSectionViewModel.swift; sourceTree = ""; }; F1B8C03B2D6BC02500F77CE4 /* DepartureRequestSingle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DepartureRequestSingle.swift; sourceTree = ""; }; F1B8C04A2D70DD5900F77CE4 /* Location.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Location.swift; sourceTree = ""; }; + F1C036F42E33F53A000E49BE /* Journey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Journey.swift; sourceTree = ""; }; + F1C036FA2E33F641000E49BE /* TripLeg.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripLeg.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -719,6 +731,8 @@ F15FE0EA2DE0ECC30096C79E /* Models */ = { isa = PBXGroup; children = ( + F1C036F42E33F53A000E49BE /* Journey.swift */, + F1C036FA2E33F641000E49BE /* TripLeg.swift */, D0BD66D329F02576004E574C /* ConnectionFilter.swift */, D0142C482A10F73900646C94 /* ConnectionStop.swift */, F19FC6ED2AE9974C00F65316 /* CustomGray.swift */, @@ -1078,7 +1092,9 @@ buildActionMask = 2147483647; files = ( D011F0932C523DE4000BAB5C /* Mot.swift in Sources */, + F1C036F52E33F543000E49BE /* Journey.swift in Sources */, D011F08E2C523DC0000BAB5C /* RegularStop.swift in Sources */, + F1C036FB2E33F649000E49BE /* TripLeg.swift in Sources */, D011F08A2C523DB6000BAB5C /* PartialRoute.swift in Sources */, F15FE0EC2DE0F01C0096C79E /* Point.swift in Sources */, D011F0862C523DA7000BAB5C /* Route.swift in Sources */, @@ -1111,6 +1127,7 @@ D0C1ECE029F325CC001D214D /* MapView.swift in Sources */, D0C1ECCC29F2B165001D214D /* ActivityRequest.swift in Sources */, D040EC2B29EEFA3E002DFEBF /* FavoriteStop.swift in Sources */, + F1C036FF2E33F649000E49BE /* TripLeg.swift in Sources */, D0C1ECD429F2EF9B001D214D /* DepartureFilter.swift in Sources */, D0BD66FB29F04D28004E574C /* MonitorWidget.intentdefinition in Sources */, D011F07E2C523C97000BAB5C /* DeparturePlatform.swift in Sources */, @@ -1125,6 +1142,7 @@ D03A269629EEB9A7005B0600 /* StopRow.swift in Sources */, F13960572DCA7F1F004AC9AA /* SingleTripRowSkeleton.swift in Sources */, F13960532DCA73E5004AC9AA /* DepartureRowSkeleton.swift in Sources */, + F1C036F72E33F543000E49BE /* Journey.swift in Sources */, F13960512DCA6B16004AC9AA /* LoadingSkeleton.swift in Sources */, D040EC2229EED774002DFEBF /* DateParser.swift in Sources */, F15FE1022DE0FB1F0096C79E /* StringSection.swift in Sources */, @@ -1176,6 +1194,7 @@ D0BD66CE29EFFAFF004E574C /* MonitorWidgetRow.swift in Sources */, D0142C602A112CBC00646C94 /* StopCoordinate.swift in Sources */, D011F0872C523DB4000BAB5C /* PartialRoute.swift in Sources */, + F1C036FD2E33F649000E49BE /* TripLeg.swift in Sources */, D011F08B2C523DBF000BAB5C /* RegularStop.swift in Sources */, D0C1ECCD29F2B165001D214D /* ActivityRequest.swift in Sources */, D0BD668A29EFE0AA004E574C /* MonitorWidgetLiveActivity.swift in Sources */, @@ -1194,6 +1213,7 @@ D0BD66CA29EFF64D004E574C /* MonitorEntry.swift in Sources */, D0BD668C29EFE0AA004E574C /* MonitorWidget.swift in Sources */, D0C1ECD129F2B6C0001D214D /* PushTokenHistory.swift in Sources */, + F1C036F62E33F543000E49BE /* Journey.swift in Sources */, D0142C4A2A10FB1000646C94 /* ConnectionStop.swift in Sources */, F18557FB2DF8BD9D0082EDB5 /* LiveActivityBannerSmall.swift in Sources */, D09A505C2C4FBF43006CB5D6 /* DepartureRequest.swift in Sources */, @@ -1214,6 +1234,7 @@ D0BD66F429F03C15004E574C /* Mot.swift in Sources */, F1B8C03F2D6BC03B00F77CE4 /* DepartureRequestSingle.swift in Sources */, D011F0842C523DA6000BAB5C /* Route.swift in Sources */, + F1C036FE2E33F649000E49BE /* TripLeg.swift in Sources */, D0142C612A112CBD00646C94 /* StopCoordinate.swift in Sources */, D0BD66D029EFFFC5004E574C /* FavoriteStop.swift in Sources */, D09A505D2C4FBF43006CB5D6 /* DepartureRequest.swift in Sources */, @@ -1228,6 +1249,7 @@ D0C1ECD229F2B6C0001D214D /* PushTokenHistory.swift in Sources */, F17FF4C72DB4D83B00F553D1 /* DateManager.swift in Sources */, F17FF4C92DB4E14400F553D1 /* MOTTypes.swift in Sources */, + F1C036F92E33F543000E49BE /* Journey.swift in Sources */, D0142C3C2A0F90AB00646C94 /* DepartureBinding.swift in Sources */, F1B8C04B2D70DD5C00F77CE4 /* Location.swift in Sources */, D0BD66FD29F04D28004E574C /* MonitorWidget.intentdefinition in Sources */, @@ -1259,11 +1281,13 @@ D09A50512C4FA249006CB5D6 /* StopEvent.swift in Sources */, D011F0852C523DA6000BAB5C /* Route.swift in Sources */, D0D1997B29F40B9C00946D87 /* TripStandardSettings.swift in Sources */, + F1C036F82E33F543000E49BE /* Journey.swift in Sources */, D0142C622A112CBF00646C94 /* StopCoordinate.swift in Sources */, D011F0912C523DC6000BAB5C /* DeparturePlatform.swift in Sources */, D0D1996F29F40B9C00946D87 /* Mot.swift in Sources */, D0142C4C2A10FB1100646C94 /* ConnectionStop.swift in Sources */, F15FE0ED2DE0F01C0096C79E /* Point.swift in Sources */, + F1C036FC2E33F649000E49BE /* TripLeg.swift in Sources */, D0142C512A110F9F00646C94 /* GaussKrueger.swift in Sources */, F1B8C04C2D70DD5C00F77CE4 /* Location.swift in Sources */, F17FF4C42DB4D83B00F553D1 /* DateManager.swift in Sources */, diff --git a/Haltestellenmonitor1-DD/DepartureMonitor/DepartureView/Views/DepartureView.swift b/Haltestellenmonitor1-DD/DepartureMonitor/DepartureView/Views/DepartureView.swift index 28813fa..71362cb 100644 --- a/Haltestellenmonitor1-DD/DepartureMonitor/DepartureView/Views/DepartureView.swift +++ b/Haltestellenmonitor1-DD/DepartureMonitor/DepartureView/Views/DepartureView.swift @@ -205,8 +205,7 @@ struct DepartureView: View { self.stopEvents = stopEventContainer.stopEvents ?? [] self.isLoaded = true } - } - catch { + } catch { if let jsonString = String(data: content, encoding: .utf8) { print("DepartureMonitor JSON DECODE error: \(error)\n\n\(jsonString)") } diff --git a/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/StopEvent.swift b/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/StopEvent.swift index 29a46ab..2e24a7c 100644 --- a/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/StopEvent.swift +++ b/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/StopEvent.swift @@ -66,23 +66,22 @@ struct Transportation: Hashable, Codable { // var origin: Place? var properties: T_Properties var destination: Place - - + // prevent optional enum CodingKeys: String, CodingKey { case id, number, product, properties, destination } - + init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) - + id = try container.decode(String.self, forKey: .id) number = try container.decodeIfPresent(String.self, forKey: .number) ?? "N/A" product = try container.decode(Product.self, forKey: .product) properties = try container.decode(T_Properties.self, forKey: .properties) destination = try container.decode(Place.self, forKey: .destination) } - + // Manual initializer for previews and manual creation init(id: String, number: String = "N/A", diff --git a/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Views/SingleTripView.swift b/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Views/SingleTripView.swift index b267023..5d605f1 100644 --- a/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Views/SingleTripView.swift +++ b/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Views/SingleTripView.swift @@ -163,15 +163,14 @@ struct SingleTripView: View { do { let stopSequenceContainer = try JSONDecoder().decode(StopSequenceContainer.self, from: content) let stopEvents = stopSequenceContainer.leg.stopSequence ?? [] - + await MainActor.run { if stopEvents.count > 0 { self.stopSequence = stopEvents } self.isLoaded = true } - } - catch { + } catch { if let jsonString = String(data: content, encoding: .utf8) { print("SingleTrip JSON DECODE error: \(error)\n\n\(jsonString)") diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/Journey.swift b/Haltestellenmonitor1-DD/TripFinder/Models/Journey.swift new file mode 100644 index 0000000..272fcdb --- /dev/null +++ b/Haltestellenmonitor1-DD/TripFinder/Models/Journey.swift @@ -0,0 +1,38 @@ +// +// Journey.swift +// Haltestellenmonitor1-DD +// +// Created by Tom Braune on 25.07.25. +// + +struct Journey: Hashable, Codable { + struct TripFare: Hashable, Codable { + struct Ticket: Hashable, Codable { + let name: String + let currency: String + let priceBrutto: Double + let priceLevel: Int + let priceLevelUnit: String + let fromLeg: Int + let toLeg: Int + let person: String + } + + let tickets: [Ticket] + } + let interchanges: Int + let legs: [TripLeg] + let fare: TripFare + + var tripFareString: String { + return "\(fare.tickets.first!.priceBrutto) \(fare.tickets.first!.currency)" + } + + var tripFareDetails: String { + return "\(fare.tickets.first!.name), \(fare.tickets.first!.priceLevelUnit) \(fare.tickets.first!.priceLevel)" + } + + var tripFareIsForFullTrip: Bool { + return (fare.tickets.first!.fromLeg == 0 && fare.tickets.first!.toLeg == legs.count - 1) + } +} diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift b/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift new file mode 100644 index 0000000..d49fa0f --- /dev/null +++ b/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift @@ -0,0 +1,43 @@ +// +// TripLeg.swift +// Haltestellenmonitor1-DD +// +// Created by Tom Braune on 25.07.25. +// + +struct TripLeg: Hashable, Codable { + let duration: Int + let origin: Place + let destination: Place + let transportation: Transportation + // let hints: [Hint]? + let stopSequence: [StopEvent] + let infos: [Info]? + + let coords: [[Double]] // [(x,y)] + struct PathDescription: Hashable, Codable { + let name: String + let coord: [Double] // x, y + } + let pathDescription: PathDescription? + + struct Interchange: Hashable, Codable { + let desc: String + let coords: [[Double]] // [(x,y)] + } + let interchange: Interchange? + + struct FootPathInfo: Hashable, Codable { + let position: String + let duration: Int + + struct FootPathElement: Hashable, Codable { + let type: String + let level: Int + } + let footPahtElem: [FootPathElement] + } + let footPathInfo: FootPathInfo? + let footPathInfoRedundant: Bool? + +} From 8937c6d6a0b4c97dbfe52a484763c37c3a8743c4 Mon Sep 17 00:00:00 2001 From: Tom <65157178+t0mbrn@users.noreply.github.com> Date: Sat, 26 Jul 2025 23:30:54 +0200 Subject: [PATCH 02/12] API Call Working, Displaying Data WIP --- .../SingleTripView/Models/StopSequence.swift | 32 ++++ .../Shared/Models/MOTTypes.swift | 4 + .../TripFinder/Models/ConnectionStop.swift | 1 + .../TripFinder/Models/Journey.swift | 34 +++- .../TripFinder/Models/Trip.swift | 3 +- .../TripFinder/Models/TripLeg.swift | 149 +++++++++++++++++- .../TripFinder/Models/TripRequest.swift | 46 ++++++ .../Models/TripSectionViewModel.swift | 129 +++++++-------- .../TripFinder/Views/ConnectionView.swift | 111 ++++++------- .../TripFinder/Views/PartialRouteRow.swift | 89 +++++------ .../TripFinder/Views/RegularStopRow.swift | 42 ++--- .../TripFinder/Views/TripSection.swift | 55 +++---- 12 files changed, 468 insertions(+), 227 deletions(-) diff --git a/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift b/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift index 4ab487b..2179307 100644 --- a/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift +++ b/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift @@ -53,6 +53,20 @@ struct StopSequenceItem: Hashable, Codable { return "" } + func getArrivalTime() -> String { + if arrivalTimePlanned == nil && arrivalTimeEstimated == nil { + return "" + } + return getTimeStamp(date: getISO8601Date(dateString: self.arrivalTimePlanned)) + } + + func getRealArrivalTime() -> String { + if arrivalTimePlanned == nil && arrivalTimeEstimated == nil { + return "" + } + return getTimeStamp(date: getISO8601Date(dateString: self.arrivalTimeEstimated ?? self.arrivalTimePlanned)) + } + func getScheduledTime() -> String { let date = getISO8601Date(dateString: self.getTimetabledTime()) @@ -84,6 +98,24 @@ struct StopSequenceItem: Hashable, Codable { return calendar.dateComponents([.minute], from: scheduledTimeComponents, to: realtimeComponents).minute! } + func getTimeDifferenceArrival() -> Int { + if self.getEstimatedTime() == "" { + return 0 + } + if arrivalTimePlanned == nil && arrivalTimeEstimated == nil { + return 0 + } + let realtimeDate = getISO8601Date(dateString: arrivalTimeEstimated) + let scheduledTimeDate = getISO8601Date(dateString: arrivalTimePlanned) + + let calendar = Calendar.current + + let realtimeComponents = calendar.dateComponents([.year, .month, .day, .hour, .minute], from: realtimeDate) + let scheduledTimeComponents = calendar.dateComponents([.year, .month, .day, .hour, .minute], from: scheduledTimeDate) + + return calendar.dateComponents([.minute], from: scheduledTimeComponents, to: realtimeComponents).minute! + } + func getPlatform() -> String { if self.properties.plannedPlatformName == nil && self.properties.platfromName == nil { return "" diff --git a/Haltestellenmonitor1-DD/Shared/Models/MOTTypes.swift b/Haltestellenmonitor1-DD/Shared/Models/MOTTypes.swift index 450bdfd..3e3b8ba 100644 --- a/Haltestellenmonitor1-DD/Shared/Models/MOTTypes.swift +++ b/Haltestellenmonitor1-DD/Shared/Models/MOTTypes.swift @@ -48,6 +48,8 @@ func getAccessibilityLabelEFA(iconId: Int) -> String { return getAccessibilityLabelStandard(motType: .CableCar) case 10: return getAccessibilityLabelStandard(motType: .Boat) + case -1: + return getAccessibilityLabelStandard(motType: .Walking) default: return getAccessibilityLabelStandard(motType: .Default) } @@ -175,6 +177,8 @@ func getColorEFA(iconId: Int) -> Color { return getColorStandard(motType: .CableCar) case 10: return getColorStandard(motType: .Boat) + case -1: + return getColorStandard(motType: .Walking) default: return getColorStandard(motType: .Default) } diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/ConnectionStop.swift b/Haltestellenmonitor1-DD/TripFinder/Models/ConnectionStop.swift index c4baccd..183b442 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/ConnectionStop.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/ConnectionStop.swift @@ -26,6 +26,7 @@ struct ConnectionStop: Hashable, Codable { return "0" } + // TODO EFA? let url = URL(string: "https://webapi.vvo-online.de/tr/pointfinder?limit=0&assignedstops=false&stopsOnly=false&provider=dvb&showlines=false&query=coord%3A\(Int(coordinate!.x))%3A\(Int(coordinate!.y))&format=json")! let request = URLRequest(url: url, timeoutInterval: 20) diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/Journey.swift b/Haltestellenmonitor1-DD/TripFinder/Models/Journey.swift index 272fcdb..9edfa6f 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/Journey.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/Journey.swift @@ -4,14 +4,14 @@ // // Created by Tom Braune on 25.07.25. // - +import Foundation struct Journey: Hashable, Codable { struct TripFare: Hashable, Codable { struct Ticket: Hashable, Codable { let name: String let currency: String let priceBrutto: Double - let priceLevel: Int + let priceLevel: String let priceLevelUnit: String let fromLeg: Int let toLeg: Int @@ -35,4 +35,34 @@ struct Journey: Hashable, Codable { var tripFareIsForFullTrip: Bool { return (fare.tickets.first!.fromLeg == 0 && fare.tickets.first!.toLeg == legs.count - 1) } + + /// Duration in Minutes + var duration: Int { + var totalDuration: Int = 0 + for leg in legs { + totalDuration += leg.duration + } + return totalDuration / 60 + } + + func getStartTimeString() -> String { + if legs.isEmpty { + return "" + } + + let date = getISO8601Date(dateString: legs.first!.origin.departureTimeEstimated ?? legs.first!.origin.departureTimePlanned) + + return getTimeStamp(date: date) + } + + func getEndTimeString() -> String { + if legs.isEmpty { + return "" + } + + // Include Possible Walking Distances etc + let date = legs.last!.getEndTimeWithInterchange() ?? getISO8601Date(dateString: legs.last!.destination.arrivalTimeEstimated ?? legs.last!.destination.arrivalTimePlanned) + + return getTimeStamp(date: date) + } } diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/Trip.swift b/Haltestellenmonitor1-DD/TripFinder/Models/Trip.swift index d6f503f..3c67a37 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/Trip.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/Trip.swift @@ -8,6 +8,5 @@ import Foundation struct Trip: Hashable, Codable { - var SessionId: String - var Routes: [Route] + var journeys: [Journey] } diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift b/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift index d49fa0f..4ce8759 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift @@ -4,14 +4,47 @@ // // Created by Tom Braune on 25.07.25. // +import Foundation +import SwiftUI struct TripLeg: Hashable, Codable { + struct TripOrigin: Hashable, Codable { + let id: String + let name: String + let coord: [Double] + let niveau: Int? + let departureTimePlanned: String + let departureTimeEstimated: String? + let disassebledName: String? // Platform + } + struct TripDestination: Hashable, Codable { + let id: String + let name: String + let coord: [Double] + let niveau: Int? + let arrivalTimePlanned: String + let arrivalTimeEstimated: String? + let disassebledName: String? // Platform + } + + struct TripTransportation: Hashable, Codable { + var id: String? + // var name: String + // var disassembledName: String? + var number: String? + var product: Product + // var `operator`: Operator? + // var origin: Place? + var properties: T_Properties + // var destination: Place? + } + let duration: Int - let origin: Place - let destination: Place - let transportation: Transportation + let origin: TripOrigin + let destination: TripDestination + let transportation: TripTransportation // let hints: [Hint]? - let stopSequence: [StopEvent] + let stopSequence: [StopSequenceItem]? let infos: [Info]? let coords: [[Double]] // [(x,y)] @@ -33,11 +66,113 @@ struct TripLeg: Hashable, Codable { struct FootPathElement: Hashable, Codable { let type: String - let level: Int + let level: String } - let footPahtElem: [FootPathElement] + let footPathElem: [FootPathElement] } - let footPathInfo: FootPathInfo? + let footPathInfo: [FootPathInfo]? let footPathInfoRedundant: Bool? + func getStartTime() -> Date? { + DateParser.extractTimestamp(time: origin.departureTimeEstimated ?? origin.departureTimePlanned) + } + func getEndTime() -> Date? { + DateParser.extractTimestamp(time: destination.arrivalTimeEstimated ?? destination.arrivalTimePlanned) + } + + func getStartTimeString() -> String { + getTimeStamp(date: getStartTime()!) + } + + func getEndTimeString() -> String { + getTimeStamp(date: getEndTime()!) + } + + func getIconText() -> Text { + if transportation.product.iconId == -1 { + return Text(Image(systemName: "figure.walk")) + } + return Text(getIconEFA(iconId: transportation.product.iconId)) + } + + func getEndTimeWithInterchange() -> Date? { + let endTimeWithoutInterchange = getEndTime() + if endTimeWithoutInterchange == nil { + return nil + } + + if let footPathInfo = footPathInfo { + return Calendar.current.date(byAdding: .second, value: footPathInfo.first!.duration, to: endTimeWithoutInterchange!) + } + return endTimeWithoutInterchange + } + + func getNameShort() -> String { + if transportation.product.name == "InsertedWaiting" { + return "🕝" + } +// if self.Mot.type == "Footpath" { +// return hasNoTime() ? "🕝" : "đŸš¶" +// } +// /* if (self.Mot.type == "MobilityStairsUp") { +// return "↑" +// } +// if (self.Mot.type == "MobilityStairsDown") { +// return "↓" +// }*/ +// if self.Mot.Name != nil && self.Mot.Direction == nil { +// return self.Mot.Name! +// } +// if self.Mot.Name == nil && self.Mot.Direction != nil { +// return self.Mot.Direction! +// } +// if self.Mot.Name == nil && self.Mot.Direction == nil { +// return "Unbekannt" +// } + return getAccessibilityLabelEFA(iconId: transportation.product.iconId) + } + + func getColor() -> Color { + getColorEFA(iconId: transportation.product.iconId) + } + + func getName() -> String { + getAccessibilityLabelEFA(iconId: transportation.product.iconId) + } + + func getAccessibilityLabel() -> String { + getAccessibilityLabelEFA(iconId: transportation.product.iconId) + } + + func isInsertedWaiting() -> Bool { + transportation.product.iconId == -1 + } + + func getFirstPlatform() -> String { + if stopSequence != nil { + return "" + } + return stopSequence!.first!.getPlatform() + } + + func getLastPlatform() -> String? { + if stopSequence != nil { + return "" + } + return stopSequence!.last!.getPlatform() + } + + func getLastStopName() -> String { + if stopSequence != nil { + return "" + } + return stopSequence!.last!.name + } +} + +func createWaitingLeg(duration: Int, startTime: String, endTime: String) -> TripLeg { + let startEvent = StopSequenceItem(id: "", name: "Wait", parent: Location(name: "", type: ""), properties: StopSequenceItem.properties(), departureTimePlanned: startTime, departureTimeEstimated: startTime) + let endEvent = StopSequenceItem(id: "", name: "Wait", parent: Location(name: "", type: ""), properties: StopSequenceItem.properties(), arrivalTimePlanned: endTime, arrivalTimeEstimated: endTime) + + return TripLeg(duration: duration, origin: TripLeg.TripOrigin(id: "", name: "", coord: [], niveau: 0, departureTimePlanned: startTime, departureTimeEstimated: startTime, disassebledName: ""), destination: TripLeg.TripDestination(id: "", name: "", coord: [], niveau: 0, arrivalTimePlanned: endTime, arrivalTimeEstimated: endTime, disassebledName: ""), transportation: TripLeg.TripTransportation(id: "", product: Product(name: "InsertedWaiting", iconId: -1), properties: T_Properties()), stopSequence: [startEvent, endEvent], infos: [], coords: [], pathDescription: TripLeg.PathDescription(name: "", coord: []), interchange: TripLeg.Interchange(desc: "", coords: []), footPathInfo: [], footPathInfoRedundant: false) } diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift b/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift index ab58fb1..1252651 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift @@ -20,3 +20,49 @@ struct TripRequest: Hashable, Codable { var sessionId: String? var format: String = "json" } + +enum IndividualTransportType: String, Codable { + case walking = "100" + case bike_and_ride = "101" + case bike_takealong = "102" +} + +struct TripRequestJSON: Hashable, Codable { + var itdTime: String + var itdDate: String + var origin: String + var via: String? + var destination: String + var individualTransport: IndividualTransportType + var excludeTransports: TripStandardSettings? // could be MOTType + var isarrivaltime: Bool? = false + var numberOfTrips: Int = 5 + + func createTripRequestString() -> String { + // &coordOutputFormat=WGS84[dd.dddddd] + var requestString = "mode=direct&outputFormat=rapidJSON&locationServerActive=1&genMaps=0&useRealtime=1&useUT=1&itdTime=\(itdTime)&itdDate=\(itdDate)&type_origin=any&name_origin=\(origin)&type_destination=any&name_destination=\(destination)&calcNumberOfTrips=\(numberOfTrips)" + if let via = via { + requestString += "&type_via=any&name_via=\(via)" + } + requestString += "&destination=\(destination)&individualTransport=\(individualTransport.rawValue)" + if let excludeTransports = excludeTransports { + if !excludeTransports.mot.isEmpty { + requestString += "&excludedMeans=checkbox" + } + for transportType in excludeTransports.mot { + requestString += "&exclMOT\(transportType)" + } + } + if individualTransport != .walking { + requestString += "&itOptionsActive=1&trITMOT=\(individualTransport.rawValue)" + } + + if isarrivaltime ?? false { + requestString += "&itdTripDateTimeDepArr=arr" + } + + // todo: change speed + + return requestString + } +} diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/TripSectionViewModel.swift b/Haltestellenmonitor1-DD/TripFinder/Models/TripSectionViewModel.swift index 26b756a..f805955 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/TripSectionViewModel.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/TripSectionViewModel.swift @@ -24,37 +24,41 @@ struct TripSectionViewData { } class TripSectionViewModel: ObservableObject { - @Published var route: Route - @Published var routesWithWaitingTimeUnder2Min: [PartialRoute] = [] + @Published var journey: Journey + @Published var routesWithWaitingTimeUnder2Min: [TripLeg] = [] - init(route: Route) { - self.route = route + init(journey: Journey) { + self.journey = journey insertWaitingTimePartialRoute() } func getTime() -> String { - "\(route.getTimeDifference()) Min" + var totalDuration: Int = 0 + journey.legs.forEach { + totalDuration += $0.duration + } + return "\(totalDuration / 60) Min" } - func getDuration(_ partialRoute: PartialRoute) -> (Int, String) { - if partialRoute.Mot.type == "Footpath" && partialRoute.hasNoTime() { - return getWaitingTime(partialRoute, routes: route.PartialRoutes) - } - return (partialRoute.getDuration(), "") + func getDuration(_ leg: TripLeg) -> (Int, String) { +// if partialRoute.Mot.type == "Footpath" && partialRoute.hasNoTime() { +// return getWaitingTime(partialRoute, routes: route.PartialRoutes) +// } // TODO Debug Later! + return (leg.duration / 60, "") } func getAccessibilityInterchangesString() -> String { - route.Interchanges == 1 ? "1 Umstieg" : "\(route.Interchanges) Umstiege" + journey.interchanges == 1 ? "1 Umstieg" : "\(journey.interchanges) Umstiege" } - func getWaitingTime(_ e: PartialRoute, routes: [PartialRoute]) -> (Int, String) { + func getWaitingTime(_ e: TripLeg, legs: [TripLeg]) -> (Int, String) { var value = 0 var str = "Wartezeit" - routes.forEach { f in + legs.forEach { f in if e == f { - guard let index = routes.firstIndex(of: e) else { return } - if index - 1 < 0 || index + 1 >= routes.count { + guard let index = legs.firstIndex(of: e) else { return } + if index - 1 < 0 || index + 1 >= legs.count { return } @@ -64,28 +68,28 @@ class TripSectionViewModel: ObservableObject { var beforeIndex = index - 1 var afterIndex = index + 1 - while routes[beforeIndex].getDuration() == 0 && beforeIndex > 0 { - let item = routes[beforeIndex] - if item.Mot.type == "MobilityStairsUp" { - str += " | Treppe ↑" - } else if item.Mot.type == "MobilityStairsDown" { - str += " | Treppe ↓" - } - beforeIndex -= 1 - } - - while routes[afterIndex].getDuration() == 0 && afterIndex <= routes.count { - let item = routes[afterIndex] - if item.Mot.type == "MobilityStairsUp" { - str += " | Treppe ↑" - } else if item.Mot.type == "MobilityStairsDown" { - str += " | Treppe ↓" - } - afterIndex += 1 - } - - date1 = routes[beforeIndex].getEndTime() ?? defaultDate - date2 = routes[afterIndex].getStartTime() ?? defaultDate +// while legs[beforeIndex].duration == 0 && beforeIndex > 0 { +// let item = legs[beforeIndex] +// if item.Mot.type == "MobilityStairsUp" { +// str += " | Treppe ↑" +// } else if item.Mot.type == "MobilityStairsDown" { +// str += " | Treppe ↓" +// } +// beforeIndex -= 1 +// } +// +// while legs[afterIndex].getDuration() == 0 && afterIndex <= legs.count { +// let item = legs[afterIndex] +// if item.Mot.type == "MobilityStairsUp" { +// str += " | Treppe ↑" +// } else if item.Mot.type == "MobilityStairsDown" { +// str += " | Treppe ↓" +// } +// afterIndex += 1 +// } + + date1 = legs[beforeIndex].getEndTimeWithInterchange() ?? defaultDate + date2 = legs[afterIndex].getStartTime() ?? defaultDate let difference = Calendar.current.dateComponents([.minute], from: date1, to: date2).minute @@ -103,42 +107,39 @@ class TripSectionViewModel: ObservableObject { func insertWaitingTimePartialRoute() { routesWithWaitingTimeUnder2Min = [] - var arr: [PartialRoute] = [] + var arr: [TripLeg] = [] - for i in 0..= 1 ? arr.last : nil + for leg in journey.legs { // TODO maybe replace for if not working + let before: TripLeg? = arr.count >= 1 ? arr.last : nil - // Wartezeit 1 - if partialRoute.getStartTime() == nil || partialRoute.getEndTime() == nil { + let start = leg.getStartTime() + let end = leg.getEndTime() + + if start == nil || end == nil { + // Wartezeit 1 continue } - let start = partialRoute.getStartTime() ?? Date() - let end = partialRoute.getEndTime() ?? Date() - // Insert Wartezeit if before != nil { if before!.getEndTime() != start { - guard let insertedStart = before?.getEndTime() else { + guard let insertedStart = before?.getEndTimeWithInterchange() else { continue } - guard let insertedEnd = partialRoute.getStartTime() else { + guard let insertedEnd = leg.getStartTime() else { continue } let startTime = "/Date(\(Int(insertedStart.timeIntervalSince1970)*1000)-0000)/" - let endime = "/Date(\(Int(insertedEnd.timeIntervalSince1970)*1000)-0000)/" + let endTime = "/Date(\(Int(insertedEnd.timeIntervalSince1970)*1000)-0000)/" + + let duration = getMinuteDifference(insertedStart, insertedEnd) * 60 - let x = PartialRoute(Mot: Mot(type: "InsertedWaiting"), RegularStops: [ - RegularStop(ArrivalTime: startTime, DepartureTime: startTime, Place: "", Name: "x", type: "", Latitude: -1, Longitude: -1, DataId: "-1"), - RegularStop(ArrivalTime: endime, DepartureTime: endime, Place: "", Name: "x", type: "", Latitude: -1, Longitude: -1, DataId: "-1") - ]) - arr.append(x) + arr.append(createWaitingLeg(duration: duration, startTime: startTime, endTime: endTime)) } } // Add current element if start != end { - arr.append(partialRoute) + arr.append(leg) } } routesWithWaitingTimeUnder2Min = arr @@ -157,13 +158,13 @@ class TripSectionViewModel: ObservableObject { var arr2: [TripSectionViewData] = [] var index = 0 - for i in 0..= 1 ? endDates.last : nil // Wartezeit - if partialRoute.getStartTime() == nil || partialRoute.getEndTime() == nil { - if getDuration(partialRoute).0 == 0 { + if leg.getStartTime() == nil || leg.getEndTime() == nil { + if getDuration(leg).0 == 0 { continue } @@ -171,7 +172,7 @@ class TripSectionViewModel: ObservableObject { continue } - let date = before.addingTimeInterval(TimeInterval(Double(getDuration(partialRoute).0) * 60.0)) + let date = before.addingTimeInterval(TimeInterval(Double(getDuration(leg).0) * 60.0)) let difference = getMinuteDifference(before, date) @@ -183,8 +184,8 @@ class TripSectionViewModel: ObservableObject { continue } - let start = partialRoute.getStartTime() ?? Date() - let end = partialRoute.getEndTime() ?? Date() + let start = leg.getStartTime() ?? Date() + let end = leg.getEndTime() ?? Date() index = index + 1 // index for current element let newElementIndex = index @@ -206,11 +207,11 @@ class TripSectionViewModel: ObservableObject { if start != end { let difference = getMinuteDifference(start, end) if difference > 0 { - arr2.append(TripSectionViewData(width: 0.0, name: partialRoute.getNameShort(), color: partialRoute.getColor(), difference: difference, nr: newElementIndex)) + arr2.append(TripSectionViewData(width: 0.0, name: leg.getNameShort(), color: leg.getColor(), difference: difference, nr: newElementIndex)) endDates.append(end) } } } - let maxTime: CGFloat = CGFloat(route.getTimeDifference()) + let maxTime: CGFloat = CGFloat(journey.duration) return adjustToMinWidth(maxWidth, arr2, maxTime) } diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift b/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift index 5447758..a65e967 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift @@ -19,10 +19,10 @@ struct ConnectionView: View { @State var showingAlertEqual = false @State var showingSaveAlert = false @State var dateTime = Date.now - @State var isArrivalTime = 0 // false + @State var isArrivalTime = false // false @State var trip: Trip? @State var isLoading = false - @State private var requestData: TripRequest? + @State private var requestData: TripRequestJSON? @State private var numbernext = 0 @State private var favoriteName = "" @StateObject var filter: ConnectionFilter = ConnectionFilter() @@ -41,9 +41,10 @@ struct ConnectionView: View { ConnectionStopSelectionView() }) } else { - listView() .sheet(isPresented: $showingSheet, content: { - ConnectionStopSelectionView() - }) + listView() + .sheet(isPresented: $showingSheet, content: { + ConnectionStopSelectionView() + }) } } .navigationTitle("đŸ˜ïž Verbindungen") @@ -214,9 +215,9 @@ struct ConnectionView: View { } } Picker("", selection: $isArrivalTime) { - Text("Abfahrt").tag(0) + Text("Abfahrt").tag(false) .accessibilityHint("Die gewĂ€hlte Zeit ist der Abfahrtszeitpunkt") - Text("Ankunft").tag(1) + Text("Ankunft").tag(true) .accessibilityHint("Die gewĂ€hlte Zeit ist der Ankunftszeitpunkt") } .pickerStyle(.segmented) @@ -272,7 +273,7 @@ struct ConnectionView: View { .listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0)) // remove padding }.listRowBackground(Color.clear) - if trip?.Routes != nil { + if trip?.journeys != nil { /*Button { if isLoading || requestData == nil || self.trip == nil { return @@ -292,8 +293,8 @@ struct ConnectionView: View { } .frame(maxWidth: .infinity)*/ - ForEach(trip?.Routes ?? [], id: \.self) { route in - TripSection(vm: TripSectionViewModel(route: route)) + ForEach(trip?.journeys ?? [], id: \.self) { journey in + TripSection(vm: TripSectionViewModel(journey: journey)) } Button { @@ -303,9 +304,8 @@ struct ConnectionView: View { isLoading = true numbernext = numbernext + 1 - requestData!.sessionId = self.trip!.SessionId - requestData!.numberprev = 0 - requestData!.numbernext = numbernext +// requestData!.numberprev = 0 +// requestData!.numbernext = numbernext Task { await getTripData(isNext: true) @@ -337,7 +337,7 @@ struct ConnectionView: View { let startStr = await startStrPromise let endStr = await endStrPromise - requestData = TripRequest(time: dateTime.ISO8601Format(), isarrivaltime: isArrivalTime == 1, origin: startStr, destination: endStr, standardSettings: standardSettings) + requestData = TripRequestJSON(itdTime: getTimeStampURL(date: dateTime), itdDate: getDateStampURL(date: dateTime), origin: startStr, destination: endStr, individualTransport: .walking, excludeTransports: standardSettings, isarrivaltime: isArrivalTime) } func getTripData(isNext: Bool = false) async { @@ -350,22 +350,32 @@ struct ConnectionView: View { return } - var url = URL(string: "https://webapi.vvo-online.de/tr/trips")! - if isNext { - url = URL(string: "https://webapi.vvo-online.de/tr/prevnext")! - } + var url = URL(string: "https://efa.vvo-online.de/std3/trias/XML_TRIP_REQUEST2")! +// if isNext { +// url = URL(string: "https://webapi.vvo-online.de/tr/prevnext")! +// } var request = URLRequest(url: url, timeoutInterval: 20) request.httpMethod = "POST" - request.httpBody = try? JSONEncoder().encode(requestData) - request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpBody = requestData?.createTripRequestString().data(using: .utf8) + request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") + request.setValue("application/json", forHTTPHeaderField: "Accept") request.setValue("Haltestellenmonitor Dresden v2", forHTTPHeaderField: "User-Agent") do { let (content, _) = try await URLSession.shared.data(for: request) - let decoder = JSONDecoder() numbernext = 0 - self.trip = try decoder.decode(Trip.self, from: content) + do { + let t = try JSONDecoder().decode(Trip.self, from: content) + await MainActor.run { + self.trip = t + isLoading = false + } + } catch { + if let jsonString = String(data: content, encoding: .utf8) { + print("Trip Finder JSON DECODE error: \(error)\n\n\(jsonString)") + } + } isLoading = false } catch { @@ -381,28 +391,25 @@ struct ConnectionView: View { func getStandardSettings() -> TripStandardSettings { var mot: [String] = [] if departureFilter.tram { - mot.append("Tram") + mot.append("4") } if departureFilter.bus { - mot.append("CityBus") - mot.append("IntercityBus") - mot.append("PlusBus") + mot.append("5") + mot.append("6") } if departureFilter.suburbanRailway { - mot.append("SuburbanRailway") + mot.append("3") + // TODO Maybe add more here? } if departureFilter.train { - mot.append("Train") + mot.append("0") } if departureFilter.cableway { - mot.append("Cableway") + mot.append("8") } if departureFilter.ferry { - mot.append("Ferry") + mot.append("9") } -// if (departureFilter.taxi) { -// mot.append("HailedSharedTaxi") -// } return TripStandardSettings(mot: mot) } @@ -435,32 +442,26 @@ struct ConnectionView: View { departureFilter.train = false departureFilter.cableway = false departureFilter.ferry = false -// departureFilter.taxi = false let mots = favorite.standardSettings?.mot ?? [] for mot in mots { switch mot { - case "Tram": - departureFilter.tram = true - case "CityBus": - departureFilter.bus = true - case "IntercityBus": - departureFilter.bus = true - case "PlusBus": - departureFilter.bus = true - case "SuburbanRailway": - departureFilter.suburbanRailway = true - case "Train": - departureFilter.train = true - case "Cableway": - departureFilter.cableway = true - case "Ferry": - departureFilter.ferry = true -// case "HailedSharedTaxi": -// departureFilter.taxi = true -// break - default: - break + case "4": + departureFilter.tram = true + case "5": + departureFilter.bus = true + case "6": + departureFilter.bus = true + case "3": + departureFilter.suburbanRailway = true + case "0": + departureFilter.train = true + case "8": + departureFilter.cableway = true + case "9": + departureFilter.ferry = true + default: + break } } diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift b/Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift index 16ce200..1fdb42a 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift @@ -10,33 +10,31 @@ import SwiftUI private var timeFrameWidth: CGFloat = 60 struct PartialRouteRow: View { - var partialRoute: PartialRoute + var tripLeg: TripLeg var body: some View { VStack(spacing: 0) { HStack { - if partialRoute.getStartTimeString() != nil { - Text("\(partialRoute.getStartTimeString()!)") - .frame(width: timeFrameWidth, alignment: .leading) - .foregroundColor(.gray) - .font(.subheadline.monospacedDigit()) - .accessibilityLabel("Abfahrt \(partialRoute.getStartTimeString()!)") - .accessibilitySortPriority(4) - } + Text("\(tripLeg.getStartTimeString())") + .frame(width: timeFrameWidth, alignment: .leading) + .foregroundColor(.gray) + .font(.subheadline.monospacedDigit()) + .accessibilityLabel("Abfahrt \(tripLeg.getStartTimeString())") + .accessibilitySortPriority(4) HStack { - partialRoute.getIconText() + tripLeg.getIconText() .frame(width: 20.0, alignment: .center) - .accessibilityLabel(partialRoute.getAccessibilityLabel()) + .accessibilityLabel(tripLeg.getAccessibilityLabel()) .accessibilitySortPriority(5) - Text(partialRoute.getName()) + Text(tripLeg.getName()) .font(.headline) .lineLimit(1) .frame(maxWidth: .infinity, alignment: .leading) .accessibilitySortPriority(5) } Spacer() - Text(partialRoute.getFirstPlatform() ?? "") + Text(tripLeg.getFirstPlatform()) .foregroundColor(.gray) .font(.footnote) .frame(width: 45, alignment: .trailing) @@ -44,38 +42,31 @@ struct PartialRouteRow: View { } HStack { - if partialRoute.getStartTimeString() != nil || partialRoute.getEndTimeString() != nil { - Text("|") - .frame(width: timeFrameWidth, alignment: .leading) - .foregroundColor(.gray) - .font(.subheadline) - .padding(.leading, 18.5) - .accessibilityHidden(true) - - Spacer() + Text("|") + .frame(width: timeFrameWidth, alignment: .leading) + .foregroundColor(.gray) + .font(.subheadline) + .padding(.leading, 18.5) + .accessibilityHidden(true) - } + Spacer() } HStack { - if partialRoute.getEndTimeString() != nil { - Text("\(partialRoute.getEndTimeString()!)") - .frame(width: timeFrameWidth, alignment: .leading) - .foregroundColor(.gray) - .font(.subheadline.monospacedDigit()) - .accessibilitySortPriority(2) - .accessibilityLabel("Ankunft \(partialRoute.getEndTimeString()!)") + Text("\(tripLeg.getEndTimeString())") + .frame(width: timeFrameWidth, alignment: .leading) + .foregroundColor(.gray) + .font(.subheadline.monospacedDigit()) + .accessibilitySortPriority(2) + .accessibilityLabel("Ankunft \(tripLeg.getEndTimeString())") - } - if partialRoute.getEndTimeString() != nil { - Text(partialRoute.getLastStation() ?? "") - .font(.subheadline) - .accessibilityLabel("Bis \(partialRoute.getLastStation() ?? "")") - .accessibilityHint("Ausstieg") - .accessibilitySortPriority(3) - } + Text(tripLeg.getLastStopName()) + .font(.subheadline) + .accessibilityLabel("Bis \(tripLeg.getLastStopName())") + .accessibilityHint("Ausstieg") + .accessibilitySortPriority(3) Spacer() - Text(partialRoute.getLastPlatform() ?? "") + Text(tripLeg.getLastPlatform() ?? "") .foregroundColor(.gray) .font(.footnote) .frame(width: 45, alignment: .trailing) @@ -85,16 +76,16 @@ struct PartialRouteRow: View { }.padding(.leading, -25) } } - -struct PartialRouteRow_Previews: PreviewProvider { - static var previews: some View { - VStack { - PartialRouteRow(partialRoute: tripTmp.Routes[0].PartialRoutes[0]) - .previewLayout(.fixed(width: 500, height: 100)) - .padding() - } .padding() - } -} +// +// struct PartialRouteRow_Previews: PreviewProvider { +// static var previews: some View { +// VStack { +// PartialRouteRow(partialRoute: tripTmp.Routes[0].PartialRoutes[0]) +// .previewLayout(.fixed(width: 500, height: 100)) +// .padding() +// } .padding() +// } +// } struct PartialRouteRowWaitingTime: View { var time: Int diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift b/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift index 439bdd7..290337a 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift @@ -8,49 +8,49 @@ import SwiftUI struct RegularStopRow: View { - var regularStop: RegularStop + var stop: StopSequenceItem var isFirst: Bool var body: some View { VStack(alignment: .leading) { HStack { - Text(regularStop.Name) - .accessibilityLabel("Haltestelle \(regularStop.Name)") + Text(stop.name) + .accessibilityLabel("Haltestelle \(stop.name)") Spacer() - if regularStop.getPlatform() != nil { - Text(regularStop.getPlatform() ?? "") + if stop.getPlatform() != "" { + Text(stop.getPlatform()) .font(.footnote) .foregroundColor(.gray) .accessibilitySortPriority(-1) } } HStack { - Text("\(isFirst ? regularStop.getDepartureTime() : regularStop.getArrivalTime()) Uhr") - .accessibilityLabel("Geplante \(isFirst ? "Abfahrt " + regularStop.getDepartureTime() : "Ankunft " + regularStop.getArrivalTime()) Uhr") + Text("\(isFirst ? stop.getRealTime() : stop.getArrivalTime()) Uhr") + .accessibilityLabel("Geplante \(isFirst ? "Abfahrt " + stop.getRealTime() : "Ankunft " + stop.getArrivalTime()) Uhr") if isFirst { - if regularStop.getTimeDifferenceDeparture() > 0 { - Text("+\(regularStop.getTimeDifferenceDeparture())") + if stop.getTimeDifference() > 0 { + Text("+\(stop.getTimeDifference())") .foregroundColor(Color.red) - .accessibilityLabel("\(regularStop.getTimeDifferenceDeparture()) \(regularStop.getTimeDifferenceDeparture() == 1 ? "Minute" : "Minuten") VerspĂ€tung") - } else if regularStop.getTimeDifferenceDeparture() < 0 { - Text("\(regularStop.getTimeDifferenceDeparture())") + .accessibilityLabel("\(stop.getTimeDifference()) \(stop.getTimeDifference() == 1 ? "Minute" : "Minuten") VerspĂ€tung") + } else if stop.getTimeDifference() < 0 { + Text("\(stop.getTimeDifference())") .foregroundColor(Color.green) - .accessibilityLabel("\(abs(regularStop.getTimeDifferenceDeparture())) \(regularStop.getTimeDifferenceDeparture() == -1 ? "Minute" : "Minuten") frĂŒher") + .accessibilityLabel("\(abs(stop.getTimeDifference())) \(stop.getTimeDifference() == -1 ? "Minute" : "Minuten") frĂŒher") } } else { - if regularStop.getTimeDifference() > 0 { - Text("+\(regularStop.getTimeDifference())") + if stop.getTimeDifferenceArrival() > 0 { + Text("+\(stop.getTimeDifferenceArrival())") .foregroundColor(Color.red) - .accessibilityLabel("\(regularStop.getTimeDifferenceDeparture()) \(regularStop.getTimeDifferenceDeparture() == 1 ? "Minute" : "Minuten") VerspĂ€tung") - } else if regularStop.getTimeDifference() < 0 { - Text("\(regularStop.getTimeDifference())") + .accessibilityLabel("\(stop.getTimeDifferenceArrival()) \(stop.getTimeDifferenceArrival() == 1 ? "Minute" : "Minuten") VerspĂ€tung") + } else if stop.getTimeDifference() < 0 { + Text("\(stop.getTimeDifferenceArrival())") .foregroundColor(Color.green) - .accessibilityLabel("\(abs(regularStop.getTimeDifferenceDeparture())) \(regularStop.getTimeDifferenceDeparture() == -1 ? "Minute" : "Minuten") frĂŒher") + .accessibilityLabel("\(abs(stop.getTimeDifferenceArrival())) \(stop.getTimeDifferenceArrival() == -1 ? "Minute" : "Minuten") frĂŒher") } } Spacer() - Text("\(isFirst ? regularStop.getRealDepartureTime() : regularStop.getRealArrivalTime()) Uhr") - .accessibilityLabel("Voraussichtliche \(isFirst ? "Abfahrt " + regularStop.getRealDepartureTime() : "Ankunft " + regularStop.getRealArrivalTime()) Uhr") + Text("\(isFirst ? stop.getRealTime() : stop.getRealArrivalTime()) Uhr") + .accessibilityLabel("Voraussichtliche \(isFirst ? "Abfahrt " + stop.getRealTime() : "Ankunft " + stop.getRealArrivalTime()) Uhr") } } diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift b/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift index 6452b56..0629882 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift @@ -13,12 +13,12 @@ struct TripSection: View { var body: some View { Section { HStack { - Text("\(vm.route.getStartTimeString()) Uhr") - .accessibilityLabel("Abfahrt \(vm.route.getStartTimeString()) Uhr") + Text("\(vm.journey.getStartTimeString()) Uhr") + .accessibilityLabel("Abfahrt \(vm.journey.getStartTimeString()) Uhr") Image(systemName: "arrow.forward") .accessibilityHidden(true) - Text("\(vm.route.getEndTimeString()) Uhr") - .accessibilityLabel(Text("Ankunft \(vm.route.getEndTimeString()) Uhr")) + Text("\(vm.journey.getEndTimeString()) Uhr") + .accessibilityLabel(Text("Ankunft \(vm.journey.getEndTimeString()) Uhr")) Spacer() @@ -26,8 +26,8 @@ struct TripSection: View { .foregroundColor(.gray) .accessibilityLabel("Dauer: \(vm.getTime())") - if vm.route.Interchanges > 0 { - Text("| \(vm.route.Interchanges)") + if vm.journey.interchanges > 0 { + Text("| \(vm.journey.interchanges)") .foregroundColor(.gray) .accessibilityLabel(vm.getAccessibilityInterchangesString()) Image(systemName: "shuffle") @@ -40,37 +40,38 @@ struct TripSection: View { .accessibilityElement(children: .combine) DisclosureGroup { - ForEach(vm.routesWithWaitingTimeUnder2Min, id: \.self) { partialRoute in - if partialRoute.Mot.type == "InsertedWaiting" && partialRoute.getDuration() > 0 { - PartialRouteRowWaitingTime(time: partialRoute.getDuration(), text: partialRoute.getName()) + ForEach(vm.routesWithWaitingTimeUnder2Min, id: \.self) { tripLeg in + if tripLeg.isInsertedWaiting() && tripLeg.duration > 0 { + PartialRouteRowWaitingTime(time: tripLeg.duration / 60, text: tripLeg.getName()) } - if partialRoute.RegularStops == nil { - if partialRoute.getDuration() == 0 { - let tup = vm.getDuration(partialRoute) + if tripLeg.stopSequence == nil { + if tripLeg.duration == 0 { + let tup = vm.getDuration(tripLeg) if tup.0 > 0 { PartialRouteRowWaitingTime(time: tup.0, text: tup.1) } } else { - PartialRouteRow(partialRoute: partialRoute) + PartialRouteRow(tripLeg: tripLeg) } } else { - if partialRoute.Mot.type != "InsertedWaiting" { + if !tripLeg.isInsertedWaiting() { // actual tram/bus etc parts DisclosureGroup { - ForEach(partialRoute.RegularStops ?? [], id: \.self) { regularStop in + ForEach(tripLeg.stopSequence!, id: \.self) { stopSequenceItem in ZStack { - NavigationLink(value: regularStop.getStop() ?? stops[0]) { + NavigationLink(value: stopSequenceItem.getStop() ?? stops[0]) { EmptyView() } .opacity(0.0) .buttonStyle(.plain) - RegularStopRow(regularStop: regularStop, isFirst: partialRoute.RegularStops?.first?.DataId == regularStop.DataId) + RegularStopRow(stop: stopSequenceItem, isFirst: tripLeg.stopSequence?.first?.id == stopSequenceItem.id) } } } label: { - PartialRouteRow(partialRoute: partialRoute) - }} + PartialRouteRow(tripLeg: tripLeg) + } + } } } } @@ -109,14 +110,14 @@ struct TripSection: View { } } } - -struct TripSection_Previews: PreviewProvider { - static var previews: some View { - Form { - TripSection(vm: TripSectionViewModel(route: tripTmp.Routes[0])) - } - } -} +// +// struct TripSection_Previews: PreviewProvider { +// static var previews: some View { +// Form { +// TripSection(vm: TripSectionViewModel(route: tripTmp.Routes[0])) +// } +// } +// } struct Line: Shape { var y2: CGFloat = 0.0 From bab7334eb94941b7fc986a7a6252f91c781f7dc7 Mon Sep 17 00:00:00 2001 From: Tom <65157178+t0mbrn@users.noreply.github.com> Date: Wed, 30 Jul 2025 14:29:43 +0200 Subject: [PATCH 03/12] Add Previews --- .../TripFinder/Views/RegularStopRow.swift | 9 ++++++--- .../TripFinder/Views/TripSection.swift | 19 +++++++++++-------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift b/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift index 290337a..b62418a 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift @@ -59,8 +59,11 @@ struct RegularStopRow: View { } } -/*struct RegularStopRow_Previews: PreviewProvider { +struct RegularStopRow_Previews: PreviewProvider { static var previews: some View { - RegularStopRow(regularStop: tripTmp.Routes[0].PartialRoutes[0].RegularStops![0], isFirst: true) + RegularStopRow(stop: StopSequenceItem(id: "1", + name: "HBF", + parent: Location(id: "de:14612:28", name: "HBF DD", disassembledName: "", type: "stop", coord: [], properties: Stop_Property(stopId: "de:14612:28")), + properties: StopSequenceItem.properties(platfromName: "1", plannedPlatformName: "")), isFirst: true) } -}*/ +} diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift b/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift index 0629882..9ad6713 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift @@ -110,14 +110,17 @@ struct TripSection: View { } } } -// -// struct TripSection_Previews: PreviewProvider { -// static var previews: some View { -// Form { -// TripSection(vm: TripSectionViewModel(route: tripTmp.Routes[0])) -// } -// } -// } + + struct TripSection_Previews: PreviewProvider { + static var previews: some View { + TripSection(vm: TripSectionViewModel(journey: Journey(interchanges: 1, + legs: [TripLeg(duration: 60, origin: TripLeg.TripOrigin(id: "123", name: "Hauptbahnhof", coord: [1.0, 2.0], niveau: 0, departureTimePlanned: "2025-03-26T06:00:00Z", departureTimeEstimated: "2025-03-26T06:00:00Z", disassebledName: ""), destination: TripLeg.TripDestination(id: "456", name: "Postplatz", coord: [3.0, 4.0], niveau: 0, arrivalTimePlanned: "2025-03-26T06:05:00Z", arrivalTimeEstimated: "2025-03-26T06:06:00Z", disassebledName: ""), + transportation: TripLeg.TripTransportation(product: Product(name: "Tram", iconId: 4), properties: T_Properties()), + stopSequence: [StopSequenceItem(id: "xyz", name: "Hauptbahnhof", parent: Location(name: "Hauptbahnhof", type: ""), properties: StopSequenceItem.properties(platfromName: "1"))], + infos: [], coords: [], pathDescription: nil, interchange: nil, footPathInfo: [], footPathInfoRedundant: true)], + fare: Journey.TripFare(tickets: [Journey.TripFare.Ticket(name: "Einzelfahrt", currency: "EUR", priceBrutto: 4.1, priceLevel: "1", priceLevelUnit: "Preisstufe", fromLeg: 0, toLeg: 1, person: "Adult")])))) + } + } struct Line: Shape { var y2: CGFloat = 0.0 From 70c0f216282177aed3d5c37ab72da1eba3f36bc6 Mon Sep 17 00:00:00 2001 From: Tom <65157178+t0mbrn@users.noreply.github.com> Date: Thu, 31 Jul 2025 23:52:24 +0200 Subject: [PATCH 04/12] Fix Usage of DateParser Method to use the correct one --- .../TripFinder/Models/TripLeg.swift | 20 +++++++-------- .../Models/TripSectionViewModel.swift | 13 +++++----- .../TripFinder/Views/ConnectionView.swift | 16 ++++++------ .../TripFinder/Views/PartialRouteRow.swift | 25 +++++++++++-------- 4 files changed, 39 insertions(+), 35 deletions(-) diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift b/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift index 4ce8759..ff32434 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift @@ -73,19 +73,19 @@ struct TripLeg: Hashable, Codable { let footPathInfo: [FootPathInfo]? let footPathInfoRedundant: Bool? - func getStartTime() -> Date? { - DateParser.extractTimestamp(time: origin.departureTimeEstimated ?? origin.departureTimePlanned) + func getStartTime() -> Date { + getISO8601Date(dateString: origin.departureTimeEstimated ?? origin.departureTimePlanned) } - func getEndTime() -> Date? { - DateParser.extractTimestamp(time: destination.arrivalTimeEstimated ?? destination.arrivalTimePlanned) + func getEndTime() -> Date { + getISO8601Date(dateString: destination.arrivalTimeEstimated ?? destination.arrivalTimePlanned) } func getStartTimeString() -> String { - getTimeStamp(date: getStartTime()!) + getTimeStamp(date: getStartTime()) } func getEndTimeString() -> String { - getTimeStamp(date: getEndTime()!) + getTimeStamp(date: getEndTime()) } func getIconText() -> Text { @@ -97,12 +97,10 @@ struct TripLeg: Hashable, Codable { func getEndTimeWithInterchange() -> Date? { let endTimeWithoutInterchange = getEndTime() - if endTimeWithoutInterchange == nil { - return nil - } - if let footPathInfo = footPathInfo { - return Calendar.current.date(byAdding: .second, value: footPathInfo.first!.duration, to: endTimeWithoutInterchange!) + if let footPathInformation = footPathInfo.first { + return Calendar.current.date(byAdding: .second, value: footPathInformation.duration, to: endTimeWithoutInterchange) + } } return endTimeWithoutInterchange } diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/TripSectionViewModel.swift b/Haltestellenmonitor1-DD/TripFinder/Models/TripSectionViewModel.swift index f805955..81ad659 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/TripSectionViewModel.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/TripSectionViewModel.swift @@ -89,7 +89,7 @@ class TripSectionViewModel: ObservableObject { // } date1 = legs[beforeIndex].getEndTimeWithInterchange() ?? defaultDate - date2 = legs[afterIndex].getStartTime() ?? defaultDate + date2 = legs[afterIndex].getStartTime() let difference = Calendar.current.dateComponents([.minute], from: date1, to: date2).minute @@ -115,7 +115,7 @@ class TripSectionViewModel: ObservableObject { let start = leg.getStartTime() let end = leg.getEndTime() - if start == nil || end == nil { + if start == Date() || end == Date() { // Wartezeit 1 continue } @@ -126,7 +126,8 @@ class TripSectionViewModel: ObservableObject { guard let insertedStart = before?.getEndTimeWithInterchange() else { continue } - guard let insertedEnd = leg.getStartTime() else { + let insertedEnd = leg.getStartTime() + if insertedEnd == Date() { continue } let startTime = "/Date(\(Int(insertedStart.timeIntervalSince1970)*1000)-0000)/" @@ -163,7 +164,7 @@ class TripSectionViewModel: ObservableObject { let before: Date? = endDates.count >= 1 ? endDates.last : nil // Wartezeit - if leg.getStartTime() == nil || leg.getEndTime() == nil { + if leg.getStartTime() == Date() || leg.getEndTime() == Date() { if getDuration(leg).0 == 0 { continue } @@ -184,8 +185,8 @@ class TripSectionViewModel: ObservableObject { continue } - let start = leg.getStartTime() ?? Date() - let end = leg.getEndTime() ?? Date() + let start = leg.getStartTime() + let end = leg.getEndTime() index = index + 1 // index for current element let newElementIndex = index diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift b/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift index a65e967..1c316b5 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift @@ -477,11 +477,11 @@ struct ConnectionView: View { } } } - -struct ConnectionView_Previews: PreviewProvider { - static var previews: some View { - ConnectionView(trip: tripTmp) - .environmentObject(LocationManager()) - .environmentObject(StopManager()) - } -} +// +// struct ConnectionView_Previews: PreviewProvider { +// static var previews: some View { +// ConnectionView(trip: tripTmp) +// .environmentObject(LocationManager()) +// .environmentObject(StopManager()) +// } +// } diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift b/Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift index 1fdb42a..f92e74d 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift @@ -76,16 +76,21 @@ struct PartialRouteRow: View { }.padding(.leading, -25) } } -// -// struct PartialRouteRow_Previews: PreviewProvider { -// static var previews: some View { -// VStack { -// PartialRouteRow(partialRoute: tripTmp.Routes[0].PartialRoutes[0]) -// .previewLayout(.fixed(width: 500, height: 100)) -// .padding() -// } .padding() -// } -// } + + struct PartialRouteRow_Previews: PreviewProvider { + static var previews: some View { + VStack { + PartialRouteRow(tripLeg: TripLeg(duration: 60, + origin: TripLeg.TripOrigin(id: "123", name: "Hauptbahnhof", coord: [1.0, 2.0], niveau: 0, departureTimePlanned: "2025-03-26T06:00:00Z", departureTimeEstimated: "2025-03-26T06:00:00Z", disassebledName: ""), + destination: TripLeg.TripDestination(id: "456", name: "Postplatz", coord: [3.0, 4.0], niveau: 0, arrivalTimePlanned: "2025-03-26T06:05:00Z", arrivalTimeEstimated: "2025-03-26T06:06:00Z", disassebledName: ""), + transportation: TripLeg.TripTransportation(id: "", number: "7", product: Product(name: "Tram", iconId: 4), properties: T_Properties(trainName: "", trainType: "", trainNumber: "7", tripCode: 0, globalId: "", specialFares: "")), + stopSequence: [StopSequenceItem(id: "xyz", name: "Hauptbahnhof", parent: Location(name: "Hauptbahnhof", type: ""), properties: StopSequenceItem.properties(platfromName: "1"))], + infos: [], coords: [], pathDescription: TripLeg.PathDescription(name: "TODO", coord: []), interchange: TripLeg.Interchange(desc: "TODO", coords: []), footPathInfo: [], footPathInfoRedundant: true)) + .previewLayout(.fixed(width: 500, height: 100)) + .padding() + } .padding() + } + } struct PartialRouteRowWaitingTime: View { var time: Int From a687f1ea127187c995050a42d0935f5e1e4c30a3 Mon Sep 17 00:00:00 2001 From: Tom <65157178+t0mbrn@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:49:37 +0200 Subject: [PATCH 05/12] Replace Preview JSON for TripFinder --- Data/trip.json | 31486 +++++++++++++++- .../Shared/Models/Coordinate.swift | 0 2 files changed, 31027 insertions(+), 459 deletions(-) create mode 100644 Haltestellenmonitor1-DD/Shared/Models/Coordinate.swift diff --git a/Data/trip.json b/Data/trip.json index ecbc274..46a3701 100644 --- a/Data/trip.json +++ b/Data/trip.json @@ -1,480 +1,31048 @@ { - "SessionId": "2385177703:efa1", - "Status": { - "Code": "Ok" - }, - "Routes": [ + "journeys": [ { - "Price": "3,00", - "ShortDistance": true, - "Net": "voe", - "Duration": 1, - "Interchanges": 0, - "MotChain": [ + "rating": 0, + "isAdditional": false, + "interchanges": 2, + "legs": [ { - "DlId": "de:vvo:11-8", - "StatelessId": "voe:11008: :R:j23", - "Type": "Tram", - "Name": "8", - "Direction": "Hellerau", - "Changes": [], - "Diva": { - "Number": "11008", - "Network": "voe" - }, - "TransportationCompany": "DVB", - "OperatorCode": "16", - "ProductName": "Straßenbahn", - "TrainNumber": "805" + "duration": 3240, + "origin": { + "isGlobalId": true, + "id": "de:14628:1790:3:2", + "name": "Kurort Kipsdorf Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.80591, + 13.676123 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1790", + "name": "Kurort Kipsdorf Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628010:60", + "name": "Kipsdorf Kurort", + "type": "locality" + }, + "properties": { + "stopId": "33001790" + }, + "coord": [ + 50.806852, + 13.676832 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "departureTimeBaseTimetable": "2025-07-28T04:55:00Z", + "departureTimePlanned": "2025-07-28T04:55:00Z", + "departureTimeEstimated": "2025-07-28T04:55:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1790:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "destination": { + "isGlobalId": true, + "id": "de:14612:28:19:5", + "name": "Dresden Hauptbahnhof", + "disassembledName": "5", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.03993, + 13.73419 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:28", + "name": "Dresden Hauptbahnhof", + "disassembledName": "Hauptbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000028" + }, + "coord": [ + 51.03993, + 13.732932 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "arrivalTimeBaseTimetable": "2025-07-28T05:49:00Z", + "arrivalTimePlanned": "2025-07-28T05:49:00Z", + "arrivalTimeEstimated": "2025-07-28T05:49:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "5", + "areaGid": "de:14612:28:19", + "area": "19", + "platform": "5", + "platformName": "5", + "plannedPlatformName": "5", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "transportation": { + "id": "voe:23360: :R:j25", + "name": "PlusBus 360", + "disassembledName": "360", + "number": "360", + "description": "Zinnwald - Altenberg - Kurort Kipsdorf - Dippoldiswalde - Dresden", + "product": { + "id": 11, + "class": 6, + "name": "PlusBus", + "iconId": 3 + }, + "operator": { + "code": "RVSOE", + "id": "3", + "name": "RVSOE" + }, + "destination": { + "id": "33000034", + "name": "Dresden Ammonstra\u00dfe / Budapester Stra\u00dfe", + "type": "stop" + }, + "properties": { + "isSTT": true, + "tripCode": 44, + "timetablePeriod": "Jahresfahrplan 2025 - G\u00fcltig ab 15. Dezember 2024", + "mtSubcode": "321", + "lineDisplay": "LINE", + "globalId": "de:vvo:23-360", + "OperatorURL": "http://www.rvsoe.de" + } + }, + "stopSequence": [ + { + "isGlobalId": true, + "id": "de:14628:1790:3:2", + "name": "Kurort Kipsdorf Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.80591, + 13.676123 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1790", + "name": "Kurort Kipsdorf Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628010:60", + "name": "Kipsdorf Kurort", + "type": "locality" + }, + "properties": { + "stopId": "33001790" + }, + "coord": [ + 50.806852, + 13.676832 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1790:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:636" + }, + "departureTimePlanned": "2025-07-28T04:55:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1535:3:2", + "name": "Schmiedeberg Buschm\u00fchle", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.8267, + 13.689966 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1535", + "name": "Schmiedeberg Buschm\u00fchle", + "disassembledName": "Buschm\u00fchle", + "type": "stop", + "parent": { + "id": "placeID:14628060:190", + "name": "Schmiedeberg (Dippoldiswalde)", + "type": "locality" + }, + "properties": { + "stopId": "33001535" + }, + "coord": [ + 50.826501, + 13.689948 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1535:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605|636" + }, + "arrivalTimePlanned": "2025-07-28T04:58:00Z", + "departureTimePlanned": "2025-07-28T04:58:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1534:0:2", + "name": "Schmiedeberg Ziegengasse", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.833049, + 13.681378 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1534", + "name": "Schmiedeberg Ziegengasse", + "disassembledName": "Ziegengasse", + "type": "stop", + "parent": { + "id": "placeID:14628060:190", + "name": "Schmiedeberg (Dippoldiswalde)", + "type": "locality" + }, + "properties": { + "stopId": "33001534" + }, + "coord": [ + 50.833123, + 13.681252 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1534", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T04:59:00Z", + "departureTimePlanned": "2025-07-28T04:59:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1533:0:2", + "name": "Schmiedeberg Mitte", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.838688, + 13.674793 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1533", + "name": "Schmiedeberg Mitte", + "disassembledName": "Mitte", + "type": "stop", + "parent": { + "id": "placeID:14628060:190", + "name": "Schmiedeberg (Dippoldiswalde)", + "type": "locality" + }, + "properties": { + "stopId": "33001533" + }, + "coord": [ + 50.838047, + 13.675485 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1533", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "vms:;voe:605" + }, + "arrivalTimePlanned": "2025-07-28T05:01:00Z", + "departureTimePlanned": "2025-07-28T05:01:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1532:0:2", + "name": "Schmiedeberg Naundorf Stadion", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.844038, + 13.669637 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1532", + "name": "Schmiedeberg Naundorf Stadion", + "disassembledName": "Naundorf Stadion", + "type": "stop", + "parent": { + "id": "placeID:14628060:190", + "name": "Schmiedeberg (Dippoldiswalde)", + "type": "locality" + }, + "properties": { + "stopId": "33001532" + }, + "coord": [ + 50.843969, + 13.669574 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1532", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T05:03:00Z", + "departureTimePlanned": "2025-07-28T05:03:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1501:0:2", + "name": "Obercarsdorf Bahnbr\u00fccke", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.850418, + 13.666187 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1501", + "name": "Obercarsdorf Bahnbr\u00fccke", + "disassembledName": "Bahnbr\u00fccke", + "type": "stop", + "parent": { + "id": "placeID:14628060:160", + "name": "Obercarsdorf", + "type": "locality" + }, + "properties": { + "stopId": "33001501" + }, + "coord": [ + 50.850055, + 13.666142 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1501", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T05:04:00Z", + "departureTimePlanned": "2025-07-28T05:04:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1500:3:2", + "name": "Obercarsdorf Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.862378, + 13.666026 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1500", + "name": "Obercarsdorf Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628060:160", + "name": "Obercarsdorf", + "type": "locality" + }, + "properties": { + "stopId": "33001500" + }, + "coord": [ + 50.860388, + 13.665415 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1500:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T05:06:00Z", + "departureTimePlanned": "2025-07-28T05:06:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1473:3:2", + "name": "Ulberndorf Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.87387, + 13.671883 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1473", + "name": "Ulberndorf Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628060:110", + "name": "Ulberndorf", + "type": "locality" + }, + "properties": { + "stopId": "33001473" + }, + "coord": [ + 50.874006, + 13.671784 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1473:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T05:08:00Z", + "departureTimePlanned": "2025-07-28T05:08:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1469:1:2", + "name": "Ulberndorf An der Niederm\u00fchle", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.881459, + 13.676302 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1469", + "name": "Ulberndorf An der Niederm\u00fchle", + "disassembledName": "An der Niederm\u00fchle", + "type": "stop", + "parent": { + "id": "placeID:14628060:110", + "name": "Ulberndorf", + "type": "locality" + }, + "properties": { + "stopId": "33001469" + }, + "coord": [ + 50.881397, + 13.676212 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1469:1", + "area": "1", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605|609" + }, + "arrivalTimePlanned": "2025-07-28T05:09:00Z", + "departureTimePlanned": "2025-07-28T05:09:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1408:0:2", + "name": "Dippoldiswalde Wolframsdorfer Stra\u00dfe", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.885976, + 13.672727 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1408", + "name": "Dippoldiswalde Wolframsdorfer Stra\u00dfe", + "disassembledName": "Wolframsdorfer Stra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14628060:20", + "name": "Dippoldiswalde", + "type": "locality" + }, + "properties": { + "stopId": "33001408" + }, + "coord": [ + 50.885942, + 13.672538 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1408", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605|609" + }, + "arrivalTimePlanned": "2025-07-28T05:10:00Z", + "departureTimePlanned": "2025-07-28T05:10:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1400:0:1", + "name": "Dippoldiswalde Busbahnhof", + "disassembledName": "1", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.895162, + 13.668649 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1400", + "name": "Dippoldiswalde Busbahnhof", + "disassembledName": "Busbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628060:20", + "name": "Dippoldiswalde", + "type": "locality" + }, + "properties": { + "stopId": "33001400" + }, + "coord": [ + 50.895026, + 13.668487 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14628:1400", + "area": "0", + "platform": "1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605|609" + }, + "arrivalTimePlanned": "2025-07-28T05:13:00Z", + "departureTimePlanned": "2025-07-28T05:15:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1451:0:2", + "name": "Oberh\u00e4slich Gasthof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.909314, + 13.696523 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1451", + "name": "Oberh\u00e4slich Gasthof", + "disassembledName": "Gasthof", + "type": "stop", + "parent": { + "id": "placeID:14628060:50", + "name": "Oberh\u00e4slich", + "type": "locality" + }, + "properties": { + "stopId": "33001451" + }, + "coord": [ + 50.909274, + 13.696299 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1451", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:609|615" + }, + "arrivalTimePlanned": "2025-07-28T05:19:00Z", + "departureTimePlanned": "2025-07-28T05:19:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1452:0:2", + "name": "Oberh\u00e4slich Abzweig Reinberg", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.929067, + 13.705749 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1452", + "name": "Oberh\u00e4slich Abzweig Reinberg", + "disassembledName": "Abzweig Reinberg", + "type": "stop", + "parent": { + "id": "placeID:14628060:50", + "name": "Oberh\u00e4slich", + "type": "locality" + }, + "properties": { + "stopId": "33001452" + }, + "coord": [ + 50.929095, + 13.705677 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1452", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:609|615" + }, + "arrivalTimePlanned": "2025-07-28T05:21:00Z", + "departureTimePlanned": "2025-07-28T05:21:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1286:0:2", + "name": "Karsdorf B 170", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.944334, + 13.70123 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1286", + "name": "Karsdorf B 170", + "disassembledName": "B 170", + "type": "stop", + "parent": { + "id": "placeID:14628300:10", + "name": "Karsdorf (bei Freital)", + "type": "locality" + }, + "properties": { + "stopId": "33001286" + }, + "coord": [ + 50.943649, + 13.701293 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1286", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:615" + }, + "arrivalTimePlanned": "2025-07-28T05:23:00Z", + "departureTimePlanned": "2025-07-28T05:23:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1050:0:2", + "name": "Possendorf Rundteil", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.955172, + 13.700575 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1050", + "name": "Possendorf Rundteil", + "disassembledName": "Rundteil", + "type": "stop", + "parent": { + "id": "placeID:14628050:90", + "name": "Possendorf (Bannewitz)", + "type": "locality" + }, + "properties": { + "stopId": "33001050" + }, + "coord": [ + 50.955415, + 13.700638 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1050", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:615" + }, + "arrivalTimePlanned": "2025-07-28T05:25:00Z", + "departureTimePlanned": "2025-07-28T05:25:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1030:0:2", + "name": "Possendorf Kastanienallee", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.968151, + 13.712468 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1030", + "name": "Possendorf Kastanienallee", + "disassembledName": "Kastanienallee", + "type": "stop", + "parent": { + "id": "placeID:14628050:90", + "name": "Possendorf (Bannewitz)", + "type": "locality" + }, + "properties": { + "stopId": "33001030" + }, + "coord": [ + 50.96801, + 13.712486 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1030", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:615" + }, + "arrivalTimePlanned": "2025-07-28T05:27:00Z", + "departureTimePlanned": "2025-07-28T05:28:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1059:0:2", + "name": "H\u00e4nichen Am K\u00e4ferberg", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.975856, + 13.715451 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1059", + "name": "H\u00e4nichen Am K\u00e4ferberg", + "disassembledName": "Am K\u00e4ferberg", + "type": "stop", + "parent": { + "id": "placeID:14628050:80", + "name": "H\u00e4nichen", + "type": "locality" + }, + "properties": { + "stopId": "33001059" + }, + "coord": [ + 50.975562, + 13.715038 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1059", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T05:30:00Z", + "departureTimePlanned": "2025-07-28T05:30:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1061:0:2", + "name": "H\u00e4nichen Pulverweg", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.979266, + 13.71767 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1061", + "name": "H\u00e4nichen Pulverweg", + "disassembledName": "Pulverweg", + "type": "stop", + "parent": { + "id": "placeID:14628050:80", + "name": "H\u00e4nichen", + "type": "locality" + }, + "properties": { + "stopId": "33001061" + }, + "coord": [ + 50.97908, + 13.717571 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1061:1", + "area": "1", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T05:31:00Z", + "departureTimePlanned": "2025-07-28T05:31:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1074:0:2", + "name": "Bannewitz Welschhufe", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.983519, + 13.714822 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1074", + "name": "Bannewitz Welschhufe", + "disassembledName": "Welschhufe", + "type": "stop", + "parent": { + "id": "placeID:14628050:10", + "name": "Bannewitz", + "type": "locality" + }, + "properties": { + "stopId": "33001074" + }, + "coord": [ + 50.983881, + 13.714606 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1074", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T05:32:00Z", + "departureTimePlanned": "2025-07-28T05:32:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1076:0:2", + "name": "Bannewitz Windbergstra\u00dfe", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.993975, + 13.717804 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1076", + "name": "Bannewitz Windbergstra\u00dfe", + "disassembledName": "Windbergstra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14628050:10", + "name": "Bannewitz", + "type": "locality" + }, + "properties": { + "stopId": "33001076" + }, + "coord": [ + 50.993862, + 13.717625 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1076", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T05:35:00Z", + "departureTimePlanned": "2025-07-28T05:35:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1070:0:2", + "name": "Bannewitz Boderitzer Stra\u00dfe", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.998385, + 13.719978 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1070", + "name": "Bannewitz Boderitzer Stra\u00dfe", + "disassembledName": "Boderitzer Stra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14628050:10", + "name": "Bannewitz", + "type": "locality" + }, + "properties": { + "stopId": "33001070" + }, + "coord": [ + 50.998526, + 13.72005 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1070", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T05:36:00Z", + "departureTimePlanned": "2025-07-28T05:36:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1072:0:2", + "name": "Bannewitz N\u00f6thnitz", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.004733, + 13.728692 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1072", + "name": "Bannewitz N\u00f6thnitz", + "disassembledName": "N\u00f6thnitz", + "type": "stop", + "parent": { + "id": "placeID:14628050:10", + "name": "Bannewitz", + "type": "locality" + }, + "properties": { + "stopId": "33001072" + }, + "coord": [ + 51.004315, + 13.727892 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1072", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:103|612" + }, + "arrivalTimePlanned": "2025-07-28T05:38:00Z", + "departureTimePlanned": "2025-07-28T05:38:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:733:1:1", + "name": "Dresden S\u00fcdh\u00f6he", + "disassembledName": "1", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.019931, + 13.729734 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:733", + "name": "Dresden S\u00fcdh\u00f6he", + "disassembledName": "S\u00fcdh\u00f6he", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000733" + }, + "coord": [ + 51.019716, + 13.729599 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6, + 10 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14612:733:1", + "area": "1", + "platform": "1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:103" + }, + "arrivalTimePlanned": "2025-07-28T05:42:00Z", + "departureTimePlanned": "2025-07-28T05:42:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:732:1:1", + "name": "Dresden Mommsenstra\u00dfe", + "disassembledName": "1", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.027615, + 13.731495 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:732", + "name": "Dresden Mommsenstra\u00dfe", + "disassembledName": "Mommsenstra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000732" + }, + "coord": [ + 51.027514, + 13.731378 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14612:732:1", + "area": "1", + "platform": "1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:103" + }, + "arrivalTimePlanned": "2025-07-28T05:44:00Z", + "departureTimePlanned": "2025-07-28T05:44:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:727:1:3", + "name": "Dresden Techn. Universit\u00e4t (Fr.-Foerster-Platz)", + "disassembledName": "3", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.029429, + 13.731073 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:727", + "name": "Dresden Techn. Universit\u00e4t (Fr.-Foerster-Platz)", + "disassembledName": "Technische Universit\u00e4t (Fr.-Foerster-Platz)", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000727" + }, + "coord": [ + 51.029892, + 13.73092 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "3", + "areaGid": "de:14612:727:1", + "area": "1", + "platform": "3", + "platformName": "3", + "plannedPlatformName": "3", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "vms:;voe:103" + }, + "arrivalTimePlanned": "2025-07-28T05:45:00Z", + "departureTimePlanned": "2025-07-28T05:45:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:131:2:3", + "name": "Dresden Reichenbachstra\u00dfe", + "disassembledName": "3", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.034813, + 13.731495 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:131", + "name": "Dresden Reichenbachstra\u00dfe", + "disassembledName": "Reichenbachstra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000131" + }, + "coord": [ + 51.035123, + 13.731387 + ], + "niveau": 0 + }, + "productClasses": [ + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "3", + "areaGid": "de:14612:131:2", + "area": "2", + "platform": "3", + "platformName": "3", + "plannedPlatformName": "3", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:103" + }, + "arrivalTimePlanned": "2025-07-28T05:47:00Z", + "departureTimePlanned": "2025-07-28T05:47:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:28:19:5", + "name": "Dresden Hauptbahnhof", + "disassembledName": "5", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.03993, + 13.73419 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:28", + "name": "Dresden Hauptbahnhof", + "disassembledName": "Hauptbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000028" + }, + "coord": [ + 51.03993, + 13.732932 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "5", + "areaGid": "de:14612:28:19", + "area": "19", + "platform": "5", + "platformName": "5", + "plannedPlatformName": "5", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "vms:;voe:103;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T05:49:00Z" + } + ], + "footPathInfo": [ + { + "position": "AFTER", + "duration": 360, + "footPathElem": [ + { + "description": "", + "type": "LEVEL", + "levelFrom": 0, + "levelTo": 0, + "level": "LEVEL", + "origin": { + "id": "de:14612:28", + "isGlobalId": true, + "type": "stop", + "name": "Hauptbahnhof", + "coord": [ + 51.03993, + 13.73419 + ], + "properties": { + "area": "19", + "georef": "1026791365:12:MRCV:100", + "areaGid": "de:14612:28:19", + "areaType": 113 + } + }, + "destination": { + "id": "de:14612:28", + "isGlobalId": true, + "type": "stop", + "name": "Hauptbahnhof", + "coord": [ + 51.039885, + 13.733148 + ], + "properties": { + "area": "7", + "georef": "1038172568:4:MRCV:100", + "areaGid": "de:14612:28:7", + "areaType": 32 + } + }, + "attributes": { + "duration": 30, + "distance": 0, + "narrowestWidth": -1, + "elevLength": 0, + "elevWidth": 0, + "elevDoorWidth": 0, + "rampLength": 0, + "rampWidth": 0, + "rampInclination": 0, + "numberSteps": 0, + "maxStepHeight": 0 + }, + "openingHours": [] + }, + { + "description": "", + "type": "STAIRS", + "levelFrom": 0, + "levelTo": 1, + "level": "UP", + "origin": { + "id": "de:14612:28", + "isGlobalId": true, + "type": "stop", + "name": "Hauptbahnhof", + "coord": [ + 51.039885, + 13.733148 + ], + "properties": { + "area": "7", + "georef": "1038172568:4:MRCV:100", + "areaGid": "de:14612:28:7", + "areaType": 32 + } + }, + "destination": { + "id": "de:14612:28", + "isGlobalId": true, + "type": "stop", + "name": "Hauptbahnhof", + "coord": [ + 51.0408, + 13.7318 + ], + "properties": { + "area": "8", + "georef": "1010446542:49:MRCV:100", + "areaGid": "de:14612:28:8", + "areaType": 209 + } + }, + "attributes": { + "duration": 30, + "distance": 0, + "narrowestWidth": -1, + "elevLength": 0, + "elevWidth": 0, + "elevDoorWidth": 0, + "rampLength": 0, + "rampWidth": 0, + "rampInclination": 0, + "numberSteps": 0, + "maxStepHeight": 0 + }, + "openingHours": [] + } + ] + } + ], + "infos": [ + { + "priority": "normal", + "id": "23612", + "version": 269026261, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Sperrung der Alte Altenberger Stra\u00dfe in Dippoldiswalde", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23612&seqID=269026261", + "content": "

Ab Montag, den 21. Juli 2025 bis Freitag, den 22. August 2025 kommt es zur Vollsperrung der Alte Altenberger Stra\u00dfe in Dippoldiswalde zwischen dem Schulg\u00e4\u00dfchen und der Gartenstra\u00dfe. 
Der Busbahnhof Dippoldiswalde wird von allen Linienbussen bedient.

", + "subtitle": "Sperrung der Alte Altenberger Stra\u00dfe in Dippoldiswalde", + "title": "Linienaenderung", + "additionalText": "inEFA=\"false\";MeldungTyp=\"Information\"", + "htmlText": "

Ab Montag, den 21. Juli 2025 bis Freitag, den 22. August 2025 kommt es zur Vollsperrung der Alte Altenberger Stra\u00dfe in Dippoldiswalde zwischen dem Schulg\u00e4\u00dfchen und der Gartenstra\u00dfe. 
Der Busbahnhof Dippoldiswalde wird von allen Linienbussen bedient.

" + } + ] + }, + { + "priority": "normal", + "id": "23586", + "version": 268412461, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Teilweise Sperrung des Busbahnhofes in Dippoldiswalde", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23586&seqID=268412461", + "content": "

Am Mittwoch, den 9. Juli 2025 kommt es zur teilweisen Sperrung des Busbahnhofes in Dippoldiswalde, die voraussichtlich bis zum 30. April 2026 erfolgen wird. Die Busse der Linien +360 und 370 befahren den Busbahnhof \u00fcber die Einfahrt von der B170 direkt und bedienen die entsprechenden Abfahrtsst\u00e4nde.

Alle Fahrten vom Bussteig 10 werden an den Bussteig 8 verlegt.

", + "subtitle": "Teilweise Sperrung des Busbahnhofes in Dippoldiswalde", + "title": "Linienaenderung", + "additionalText": "inEFA=\"false\";MeldungTyp=\"Information\"", + "htmlText": "

Am Mittwoch, den 9. Juli 2025 kommt es zur teilweisen Sperrung des Busbahnhofes in Dippoldiswalde, die voraussichtlich bis zum 30. April 2026 erfolgen wird. Die Busse der Linien +360 und 370 befahren den Busbahnhof \u00fcber die Einfahrt von der B170 direkt und bedienen die entsprechenden Abfahrtsst\u00e4nde.

Alle Fahrten vom Bussteig 10 werden an den Bussteig 8 verlegt.

" + } + ] + } + ], + "coords": [ + [ + 50.80587, + 13.676275 + ], + [ + 50.806008, + 13.676362 + ], + [ + 50.806593, + 13.676719 + ], + [ + 50.806692, + 13.676776 + ], + [ + 50.807301, + 13.677014 + ], + [ + 50.808424, + 13.677406 + ], + [ + 50.808627, + 13.677479 + ], + [ + 50.809724, + 13.677849 + ], + [ + 50.809941, + 13.677933 + ], + [ + 50.810141, + 13.678029 + ], + [ + 50.810296, + 13.678129 + ], + [ + 50.810426, + 13.678222 + ], + [ + 50.811132, + 13.678702 + ], + [ + 50.811214, + 13.678754 + ], + [ + 50.811733, + 13.67911 + ], + [ + 50.812904, + 13.67992 + ], + [ + 50.813744, + 13.680497 + ], + [ + 50.813923, + 13.680654 + ], + [ + 50.814094, + 13.680871 + ], + [ + 50.81466, + 13.681788 + ], + [ + 50.815097, + 13.682505 + ], + [ + 50.815814, + 13.683688 + ], + [ + 50.816172, + 13.68428 + ], + [ + 50.816294, + 13.684487 + ], + [ + 50.816992, + 13.685612 + ], + [ + 50.818887, + 13.68872 + ], + [ + 50.819648, + 13.689959 + ], + [ + 50.820067, + 13.690646 + ], + [ + 50.820504, + 13.691378 + ], + [ + 50.820755, + 13.69179 + ], + [ + 50.820892, + 13.691993 + ], + [ + 50.82104, + 13.692173 + ], + [ + 50.821159, + 13.692296 + ], + [ + 50.821678, + 13.692743 + ], + [ + 50.821808, + 13.692846 + ], + [ + 50.821884, + 13.692901 + ], + [ + 50.822118, + 13.692985 + ], + [ + 50.822237, + 13.693001 + ], + [ + 50.822357, + 13.692996 + ], + [ + 50.822522, + 13.692959 + ], + [ + 50.822694, + 13.69291 + ], + [ + 50.822848, + 13.692863 + ], + [ + 50.823002, + 13.692809 + ], + [ + 50.823206, + 13.692748 + ], + [ + 50.823449, + 13.69267 + ], + [ + 50.823589, + 13.692599 + ], + [ + 50.823721, + 13.692505 + ], + [ + 50.823851, + 13.692377 + ], + [ + 50.824833, + 13.691242 + ], + [ + 50.825153, + 13.690882 + ], + [ + 50.825277, + 13.690754 + ], + [ + 50.825474, + 13.690558 + ], + [ + 50.825696, + 13.690421 + ], + [ + 50.826131, + 13.690171 + ], + [ + 50.826298, + 13.690077 + ], + [ + 50.82668, + 13.689874 + ], + [ + 50.826818, + 13.6898 + ], + [ + 50.827326, + 13.689541 + ], + [ + 50.827484, + 13.689441 + ], + [ + 50.82768, + 13.689238 + ], + [ + 50.827948, + 13.688922 + ], + [ + 50.828079, + 13.688756 + ], + [ + 50.828217, + 13.688608 + ], + [ + 50.828445, + 13.688384 + ], + [ + 50.828705, + 13.68818 + ], + [ + 50.828814, + 13.688092 + ], + [ + 50.828941, + 13.68795 + ], + [ + 50.829111, + 13.687601 + ], + [ + 50.829176, + 13.68739 + ], + [ + 50.829304, + 13.6868 + ], + [ + 50.829353, + 13.686547 + ], + [ + 50.829388, + 13.686431 + ], + [ + 50.82942, + 13.686338 + ], + [ + 50.82948, + 13.686206 + ], + [ + 50.829597, + 13.686025 + ], + [ + 50.82997, + 13.685511 + ], + [ + 50.830023, + 13.685441 + ], + [ + 50.830076, + 13.685373 + ], + [ + 50.831127, + 13.68392 + ], + [ + 50.831262, + 13.683746 + ], + [ + 50.831411, + 13.68354 + ], + [ + 50.831466, + 13.683471 + ], + [ + 50.831605, + 13.683274 + ], + [ + 50.831621, + 13.683257 + ], + [ + 50.831773, + 13.683053 + ], + [ + 50.831948, + 13.682794 + ], + [ + 50.83196, + 13.682773 + ], + [ + 50.831989, + 13.682745 + ], + [ + 50.832148, + 13.682544 + ], + [ + 50.83234, + 13.682282 + ], + [ + 50.832381, + 13.682222 + ], + [ + 50.832447, + 13.682131 + ], + [ + 50.83284, + 13.681594 + ], + [ + 50.832853, + 13.68158 + ], + [ + 50.832934, + 13.681466 + ], + [ + 50.832955, + 13.681441 + ], + [ + 50.833024, + 13.681343 + ], + [ + 50.833211, + 13.681089 + ], + [ + 50.833275, + 13.680995 + ], + [ + 50.833899, + 13.680145 + ], + [ + 50.8342, + 13.679745 + ], + [ + 50.834512, + 13.679297 + ], + [ + 50.834563, + 13.679231 + ], + [ + 50.834889, + 13.67878 + ], + [ + 50.834925, + 13.678736 + ], + [ + 50.835135, + 13.678444 + ], + [ + 50.835255, + 13.678242 + ], + [ + 50.835335, + 13.678198 + ], + [ + 50.8354, + 13.678139 + ], + [ + 50.835539, + 13.677954 + ], + [ + 50.835559, + 13.677915 + ], + [ + 50.835581, + 13.67788 + ], + [ + 50.835681, + 13.677687 + ], + [ + 50.835794, + 13.677462 + ], + [ + 50.835923, + 13.677261 + ], + [ + 50.836031, + 13.677125 + ], + [ + 50.836119, + 13.677057 + ], + [ + 50.836248, + 13.676936 + ], + [ + 50.836281, + 13.676928 + ], + [ + 50.836303, + 13.676924 + ], + [ + 50.836382, + 13.676851 + ], + [ + 50.836412, + 13.676807 + ], + [ + 50.836504, + 13.676685 + ], + [ + 50.83655, + 13.676631 + ], + [ + 50.836683, + 13.676349 + ], + [ + 50.83674, + 13.676199 + ], + [ + 50.83679, + 13.676133 + ], + [ + 50.836864, + 13.676098 + ], + [ + 50.8369, + 13.676088 + ], + [ + 50.836906, + 13.675927 + ], + [ + 50.837006, + 13.675929 + ], + [ + 50.83714, + 13.675916 + ], + [ + 50.837484, + 13.675873 + ], + [ + 50.837531, + 13.675862 + ], + [ + 50.837577, + 13.675855 + ], + [ + 50.837692, + 13.67582 + ], + [ + 50.837741, + 13.675794 + ], + [ + 50.837824, + 13.675741 + ], + [ + 50.837862, + 13.6757 + ], + [ + 50.8379, + 13.67567 + ], + [ + 50.838164, + 13.675332 + ], + [ + 50.838658, + 13.674726 + ], + [ + 50.838788, + 13.674566 + ], + [ + 50.839118, + 13.674141 + ], + [ + 50.839347, + 13.673861 + ], + [ + 50.839654, + 13.673476 + ], + [ + 50.839969, + 13.673085 + ], + [ + 50.840239, + 13.672839 + ], + [ + 50.840467, + 13.672741 + ], + [ + 50.840664, + 13.672686 + ], + [ + 50.84086, + 13.672634 + ], + [ + 50.841083, + 13.672523 + ], + [ + 50.841272, + 13.672375 + ], + [ + 50.84151, + 13.67215 + ], + [ + 50.84221, + 13.671317 + ], + [ + 50.842416, + 13.67115 + ], + [ + 50.84276, + 13.670956 + ], + [ + 50.843144, + 13.670745 + ], + [ + 50.843268, + 13.670645 + ], + [ + 50.843335, + 13.670588 + ], + [ + 50.843456, + 13.670433 + ], + [ + 50.843655, + 13.670115 + ], + [ + 50.843791, + 13.669889 + ], + [ + 50.843986, + 13.669554 + ], + [ + 50.844072, + 13.669409 + ], + [ + 50.844161, + 13.669262 + ], + [ + 50.844272, + 13.669108 + ], + [ + 50.844412, + 13.668942 + ], + [ + 50.844668, + 13.668684 + ], + [ + 50.844804, + 13.668566 + ], + [ + 50.84505, + 13.668361 + ], + [ + 50.845269, + 13.668231 + ], + [ + 50.845608, + 13.668093 + ], + [ + 50.846452, + 13.667763 + ], + [ + 50.847365, + 13.667423 + ], + [ + 50.847627, + 13.667314 + ], + [ + 50.847884, + 13.66719 + ], + [ + 50.847911, + 13.667172 + ], + [ + 50.848141, + 13.667047 + ], + [ + 50.848305, + 13.666949 + ], + [ + 50.8488, + 13.666665 + ], + [ + 50.849183, + 13.666442 + ], + [ + 50.84946, + 13.666297 + ], + [ + 50.849536, + 13.666265 + ], + [ + 50.850001, + 13.666154 + ], + [ + 50.850406, + 13.66609 + ], + [ + 50.850623, + 13.666054 + ], + [ + 50.85102, + 13.665982 + ], + [ + 50.852124, + 13.665797 + ], + [ + 50.85232, + 13.665766 + ], + [ + 50.852514, + 13.66573 + ], + [ + 50.852842, + 13.665674 + ], + [ + 50.853676, + 13.665539 + ], + [ + 50.854205, + 13.665496 + ], + [ + 50.854313, + 13.665482 + ], + [ + 50.855234, + 13.66541 + ], + [ + 50.855719, + 13.665365 + ], + [ + 50.85596, + 13.66535 + ], + [ + 50.856211, + 13.665325 + ], + [ + 50.856432, + 13.665306 + ], + [ + 50.857616, + 13.665179 + ], + [ + 50.857842, + 13.665161 + ], + [ + 50.858241, + 13.665142 + ], + [ + 50.858348, + 13.665131 + ], + [ + 50.858578, + 13.665121 + ], + [ + 50.858977, + 13.66509 + ], + [ + 50.859123, + 13.665088 + ], + [ + 50.85922, + 13.665097 + ], + [ + 50.859718, + 13.665216 + ], + [ + 50.860214, + 13.665357 + ], + [ + 50.860884, + 13.665532 + ], + [ + 50.861044, + 13.665578 + ], + [ + 50.861802, + 13.665776 + ], + [ + 50.862227, + 13.665894 + ], + [ + 50.86239, + 13.665935 + ], + [ + 50.862847, + 13.666058 + ], + [ + 50.863003, + 13.666123 + ], + [ + 50.863069, + 13.666166 + ], + [ + 50.863144, + 13.66622 + ], + [ + 50.863271, + 13.666378 + ], + [ + 50.863329, + 13.666491 + ], + [ + 50.863357, + 13.666556 + ], + [ + 50.863394, + 13.666655 + ], + [ + 50.863415, + 13.666726 + ], + [ + 50.863457, + 13.666895 + ], + [ + 50.86351, + 13.667124 + ], + [ + 50.863551, + 13.667232 + ], + [ + 50.863594, + 13.667314 + ], + [ + 50.863604, + 13.66733 + ], + [ + 50.863663, + 13.667405 + ], + [ + 50.863728, + 13.667473 + ], + [ + 50.863792, + 13.667517 + ], + [ + 50.863857, + 13.66755 + ], + [ + 50.864183, + 13.66764 + ], + [ + 50.864399, + 13.667725 + ], + [ + 50.864503, + 13.667775 + ], + [ + 50.864747, + 13.667901 + ], + [ + 50.865373, + 13.668217 + ], + [ + 50.865957, + 13.668518 + ], + [ + 50.866582, + 13.668897 + ], + [ + 50.866934, + 13.669096 + ], + [ + 50.867457, + 13.669386 + ], + [ + 50.867885, + 13.669629 + ], + [ + 50.868336, + 13.669861 + ], + [ + 50.868636, + 13.670029 + ], + [ + 50.868783, + 13.670099 + ], + [ + 50.868888, + 13.670159 + ], + [ + 50.869041, + 13.670256 + ], + [ + 50.869141, + 13.670304 + ], + [ + 50.869244, + 13.670348 + ], + [ + 50.86939, + 13.670386 + ], + [ + 50.869534, + 13.670409 + ], + [ + 50.869662, + 13.670409 + ], + [ + 50.869851, + 13.670373 + ], + [ + 50.869944, + 13.670331 + ], + [ + 50.870101, + 13.670251 + ], + [ + 50.870272, + 13.670149 + ], + [ + 50.870557, + 13.669955 + ], + [ + 50.870803, + 13.669826 + ], + [ + 50.871072, + 13.66975 + ], + [ + 50.871303, + 13.669733 + ], + [ + 50.871491, + 13.669749 + ], + [ + 50.871752, + 13.669789 + ], + [ + 50.872179, + 13.66987 + ], + [ + 50.872441, + 13.669976 + ], + [ + 50.872574, + 13.670056 + ], + [ + 50.872737, + 13.670188 + ], + [ + 50.872846, + 13.670285 + ], + [ + 50.872964, + 13.670413 + ], + [ + 50.873074, + 13.670557 + ], + [ + 50.873165, + 13.670697 + ], + [ + 50.873393, + 13.671067 + ], + [ + 50.873516, + 13.671251 + ], + [ + 50.87365, + 13.671472 + ], + [ + 50.8737, + 13.671548 + ], + [ + 50.873815, + 13.671722 + ], + [ + 50.873898, + 13.671821 + ], + [ + 50.873921, + 13.671848 + ], + [ + 50.874026, + 13.671957 + ], + [ + 50.874137, + 13.672053 + ], + [ + 50.874246, + 13.672138 + ], + [ + 50.874487, + 13.672333 + ], + [ + 50.874542, + 13.672371 + ], + [ + 50.875598, + 13.673183 + ], + [ + 50.875769, + 13.673344 + ], + [ + 50.876006, + 13.673646 + ], + [ + 50.876308, + 13.67409 + ], + [ + 50.87655, + 13.674467 + ], + [ + 50.876866, + 13.674895 + ], + [ + 50.876965, + 13.675034 + ], + [ + 50.877402, + 13.675633 + ], + [ + 50.877623, + 13.675946 + ], + [ + 50.877836, + 13.676256 + ], + [ + 50.878009, + 13.676497 + ], + [ + 50.878144, + 13.676672 + ], + [ + 50.878267, + 13.676809 + ], + [ + 50.878429, + 13.67697 + ], + [ + 50.878551, + 13.677068 + ], + [ + 50.878716, + 13.677169 + ], + [ + 50.878858, + 13.677245 + ], + [ + 50.878989, + 13.677296 + ], + [ + 50.879029, + 13.677302 + ], + [ + 50.879133, + 13.677329 + ], + [ + 50.879329, + 13.67734 + ], + [ + 50.879645, + 13.677299 + ], + [ + 50.879858, + 13.677234 + ], + [ + 50.880299, + 13.677052 + ], + [ + 50.880551, + 13.676916 + ], + [ + 50.880748, + 13.676793 + ], + [ + 50.880983, + 13.676633 + ], + [ + 50.881167, + 13.676484 + ], + [ + 50.881428, + 13.676222 + ], + [ + 50.881527, + 13.676123 + ], + [ + 50.881723, + 13.675917 + ], + [ + 50.881901, + 13.675743 + ], + [ + 50.88204, + 13.675597 + ], + [ + 50.882085, + 13.675554 + ], + [ + 50.882236, + 13.675399 + ], + [ + 50.882445, + 13.675195 + ], + [ + 50.882734, + 13.674971 + ], + [ + 50.883133, + 13.674693 + ], + [ + 50.883349, + 13.674564 + ], + [ + 50.883458, + 13.674505 + ], + [ + 50.884279, + 13.674124 + ], + [ + 50.884604, + 13.673892 + ], + [ + 50.884901, + 13.673618 + ], + [ + 50.885708, + 13.67286 + ], + [ + 50.885913, + 13.672653 + ], + [ + 50.885932, + 13.672631 + ], + [ + 50.886143, + 13.672393 + ], + [ + 50.886597, + 13.671873 + ], + [ + 50.886768, + 13.671692 + ], + [ + 50.88716, + 13.671302 + ], + [ + 50.887267, + 13.671186 + ], + [ + 50.88738, + 13.671044 + ], + [ + 50.887507, + 13.670833 + ], + [ + 50.887853, + 13.670179 + ], + [ + 50.887901, + 13.670109 + ], + [ + 50.888094, + 13.669814 + ], + [ + 50.88836, + 13.6695 + ], + [ + 50.888714, + 13.669131 + ], + [ + 50.888822, + 13.66903 + ], + [ + 50.889093, + 13.668767 + ], + [ + 50.889333, + 13.668648 + ], + [ + 50.889979, + 13.668431 + ], + [ + 50.89035, + 13.668299 + ], + [ + 50.890825, + 13.668222 + ], + [ + 50.89099, + 13.668211 + ], + [ + 50.891064, + 13.668213 + ], + [ + 50.891068, + 13.668075 + ], + [ + 50.891106, + 13.667939 + ], + [ + 50.891182, + 13.667703 + ], + [ + 50.891275, + 13.667422 + ], + [ + 50.891376, + 13.66717 + ], + [ + 50.891445, + 13.667039 + ], + [ + 50.891505, + 13.666982 + ], + [ + 50.89163, + 13.666897 + ], + [ + 50.891721, + 13.666878 + ], + [ + 50.891878, + 13.666913 + ], + [ + 50.89224, + 13.667019 + ], + [ + 50.892296, + 13.666985 + ], + [ + 50.892387, + 13.667097 + ], + [ + 50.89253, + 13.667196 + ], + [ + 50.892681, + 13.667314 + ], + [ + 50.892748, + 13.667354 + ], + [ + 50.892795, + 13.667374 + ], + [ + 50.892852, + 13.667388 + ], + [ + 50.892897, + 13.66739 + ], + [ + 50.892979, + 13.667383 + ], + [ + 50.893059, + 13.667363 + ], + [ + 50.893235, + 13.667291 + ], + [ + 50.893317, + 13.667273 + ], + [ + 50.893395, + 13.667265 + ], + [ + 50.893482, + 13.667264 + ], + [ + 50.89357, + 13.66728 + ], + [ + 50.893642, + 13.667305 + ], + [ + 50.893756, + 13.667376 + ], + [ + 50.894268, + 13.66775 + ], + [ + 50.894537, + 13.667953 + ], + [ + 50.8948, + 13.668172 + ], + [ + 50.894855, + 13.668213 + ], + [ + 50.894901, + 13.668328 + ], + [ + 50.894944, + 13.668406 + ], + [ + 50.894985, + 13.668463 + ], + [ + 50.89513, + 13.668629 + ], + [ + 50.895155, + 13.668654 + ], + [ + 50.895214, + 13.668714 + ], + [ + 50.895249, + 13.668718 + ], + [ + 50.895305, + 13.668697 + ], + [ + 50.895403, + 13.668886 + ], + [ + 50.895558, + 13.669207 + ], + [ + 50.895666, + 13.669448 + ], + [ + 50.895748, + 13.669677 + ], + [ + 50.895788, + 13.669844 + ], + [ + 50.895799, + 13.669981 + ], + [ + 50.895781, + 13.670208 + ], + [ + 50.895726, + 13.670456 + ], + [ + 50.895614, + 13.670922 + ], + [ + 50.895593, + 13.671014 + ], + [ + 50.895503, + 13.671193 + ], + [ + 50.895611, + 13.671322 + ], + [ + 50.895825, + 13.67159 + ], + [ + 50.895967, + 13.671778 + ], + [ + 50.896067, + 13.671903 + ], + [ + 50.896348, + 13.672239 + ], + [ + 50.89642, + 13.672322 + ], + [ + 50.896615, + 13.672528 + ], + [ + 50.896853, + 13.672697 + ], + [ + 50.896892, + 13.67272 + ], + [ + 50.897072, + 13.672815 + ], + [ + 50.897246, + 13.672886 + ], + [ + 50.897397, + 13.672923 + ], + [ + 50.897633, + 13.672988 + ], + [ + 50.897781, + 13.673033 + ], + [ + 50.897985, + 13.673114 + ], + [ + 50.898187, + 13.673224 + ], + [ + 50.898401, + 13.673378 + ], + [ + 50.898594, + 13.673545 + ], + [ + 50.898838, + 13.673807 + ], + [ + 50.899073, + 13.674105 + ], + [ + 50.899395, + 13.67454 + ], + [ + 50.899572, + 13.67482 + ], + [ + 50.899741, + 13.67513 + ], + [ + 50.900106, + 13.675846 + ], + [ + 50.900365, + 13.676392 + ], + [ + 50.900537, + 13.676761 + ], + [ + 50.901462, + 13.678646 + ], + [ + 50.901633, + 13.679012 + ], + [ + 50.902072, + 13.679937 + ], + [ + 50.902146, + 13.680085 + ], + [ + 50.90274, + 13.681321 + ], + [ + 50.903397, + 13.682721 + ], + [ + 50.903598, + 13.683137 + ], + [ + 50.903876, + 13.68374 + ], + [ + 50.904166, + 13.684353 + ], + [ + 50.90442, + 13.684901 + ], + [ + 50.904493, + 13.685048 + ], + [ + 50.905001, + 13.686217 + ], + [ + 50.905969, + 13.688315 + ], + [ + 50.906668, + 13.689797 + ], + [ + 50.907231, + 13.691015 + ], + [ + 50.907565, + 13.691746 + ], + [ + 50.907794, + 13.692283 + ], + [ + 50.907893, + 13.692541 + ], + [ + 50.907983, + 13.692764 + ], + [ + 50.908096, + 13.693054 + ], + [ + 50.908134, + 13.693158 + ], + [ + 50.908312, + 13.693687 + ], + [ + 50.908381, + 13.693925 + ], + [ + 50.908418, + 13.694066 + ], + [ + 50.908537, + 13.694485 + ], + [ + 50.908593, + 13.694648 + ], + [ + 50.908655, + 13.694795 + ], + [ + 50.908748, + 13.69501 + ], + [ + 50.908851, + 13.695229 + ], + [ + 50.908942, + 13.69545 + ], + [ + 50.909025, + 13.695663 + ], + [ + 50.909075, + 13.695798 + ], + [ + 50.909126, + 13.695931 + ], + [ + 50.90918, + 13.696063 + ], + [ + 50.909292, + 13.696361 + ], + [ + 50.909343, + 13.696494 + ], + [ + 50.909483, + 13.696844 + ], + [ + 50.909823, + 13.697733 + ], + [ + 50.909922, + 13.697997 + ], + [ + 50.910059, + 13.698345 + ], + [ + 50.91013, + 13.69852 + ], + [ + 50.910155, + 13.69859 + ], + [ + 50.910226, + 13.69873 + ], + [ + 50.910295, + 13.698805 + ], + [ + 50.910359, + 13.69886 + ], + [ + 50.91042, + 13.698886 + ], + [ + 50.910506, + 13.698906 + ], + [ + 50.910728, + 13.698938 + ], + [ + 50.91101, + 13.698997 + ], + [ + 50.913911, + 13.699723 + ], + [ + 50.915687, + 13.700153 + ], + [ + 50.916501, + 13.700361 + ], + [ + 50.918387, + 13.70083 + ], + [ + 50.919148, + 13.701006 + ], + [ + 50.920027, + 13.701237 + ], + [ + 50.920929, + 13.701464 + ], + [ + 50.921058, + 13.701495 + ], + [ + 50.92189, + 13.701715 + ], + [ + 50.92259, + 13.701896 + ], + [ + 50.922868, + 13.701983 + ], + [ + 50.923061, + 13.702067 + ], + [ + 50.923197, + 13.702154 + ], + [ + 50.923468, + 13.702353 + ], + [ + 50.923554, + 13.702429 + ], + [ + 50.923681, + 13.702545 + ], + [ + 50.923866, + 13.702741 + ], + [ + 50.924185, + 13.70314 + ], + [ + 50.92448, + 13.703538 + ], + [ + 50.924708, + 13.703825 + ], + [ + 50.924855, + 13.703995 + ], + [ + 50.925005, + 13.704153 + ], + [ + 50.925228, + 13.704344 + ], + [ + 50.92547, + 13.704521 + ], + [ + 50.925623, + 13.704603 + ], + [ + 50.925787, + 13.704694 + ], + [ + 50.925931, + 13.704754 + ], + [ + 50.927463, + 13.705206 + ], + [ + 50.928312, + 13.705447 + ], + [ + 50.928482, + 13.705488 + ], + [ + 50.928692, + 13.705558 + ], + [ + 50.929082, + 13.705667 + ], + [ + 50.929569, + 13.705811 + ], + [ + 50.929782, + 13.705865 + ], + [ + 50.929989, + 13.705909 + ], + [ + 50.930129, + 13.705918 + ], + [ + 50.930264, + 13.705919 + ], + [ + 50.930352, + 13.705916 + ], + [ + 50.930533, + 13.705895 + ], + [ + 50.930836, + 13.705819 + ], + [ + 50.931015, + 13.705759 + ], + [ + 50.931693, + 13.705462 + ], + [ + 50.931988, + 13.705327 + ], + [ + 50.932356, + 13.705152 + ], + [ + 50.932645, + 13.705009 + ], + [ + 50.932948, + 13.704863 + ], + [ + 50.933293, + 13.704704 + ], + [ + 50.935622, + 13.703611 + ], + [ + 50.936805, + 13.703051 + ], + [ + 50.937445, + 13.702732 + ], + [ + 50.93867, + 13.702171 + ], + [ + 50.94147, + 13.700852 + ], + [ + 50.941655, + 13.700769 + ], + [ + 50.94177, + 13.700732 + ], + [ + 50.94192, + 13.700735 + ], + [ + 50.942128, + 13.700834 + ], + [ + 50.942334, + 13.700988 + ], + [ + 50.942541, + 13.701198 + ], + [ + 50.942715, + 13.701309 + ], + [ + 50.942883, + 13.701375 + ], + [ + 50.943003, + 13.701395 + ], + [ + 50.943195, + 13.701384 + ], + [ + 50.94331, + 13.701363 + ], + [ + 50.943484, + 13.701322 + ], + [ + 50.943579, + 13.701296 + ], + [ + 50.943978, + 13.701198 + ], + [ + 50.944016, + 13.701187 + ], + [ + 50.944321, + 13.701115 + ], + [ + 50.944496, + 13.70108 + ], + [ + 50.944649, + 13.701061 + ], + [ + 50.944807, + 13.701038 + ], + [ + 50.945214, + 13.70102 + ], + [ + 50.945702, + 13.701014 + ], + [ + 50.946347, + 13.700989 + ], + [ + 50.946899, + 13.700842 + ], + [ + 50.947757, + 13.700528 + ], + [ + 50.949599, + 13.699893 + ], + [ + 50.950119, + 13.699693 + ], + [ + 50.950416, + 13.699583 + ], + [ + 50.951349, + 13.69926 + ], + [ + 50.951722, + 13.699126 + ], + [ + 50.951948, + 13.699081 + ], + [ + 50.952191, + 13.699082 + ], + [ + 50.952293, + 13.699116 + ], + [ + 50.95248, + 13.699191 + ], + [ + 50.952922, + 13.699408 + ], + [ + 50.953505, + 13.699685 + ], + [ + 50.954111, + 13.699982 + ], + [ + 50.955184, + 13.700503 + ], + [ + 50.955359, + 13.700586 + ], + [ + 50.955728, + 13.700773 + ], + [ + 50.956344, + 13.70107 + ], + [ + 50.95698, + 13.70145 + ], + [ + 50.95719, + 13.701561 + ], + [ + 50.957784, + 13.701892 + ], + [ + 50.957997, + 13.702002 + ], + [ + 50.958212, + 13.70209 + ], + [ + 50.958386, + 13.702149 + ], + [ + 50.958674, + 13.702203 + ], + [ + 50.95901, + 13.702223 + ], + [ + 50.959974, + 13.702309 + ], + [ + 50.960229, + 13.702363 + ], + [ + 50.96043, + 13.702447 + ], + [ + 50.960625, + 13.702584 + ], + [ + 50.960822, + 13.702796 + ], + [ + 50.960968, + 13.703017 + ], + [ + 50.961092, + 13.703289 + ], + [ + 50.961206, + 13.703646 + ], + [ + 50.961297, + 13.704017 + ], + [ + 50.961741, + 13.706133 + ], + [ + 50.961832, + 13.706512 + ], + [ + 50.962029, + 13.707145 + ], + [ + 50.962256, + 13.707801 + ], + [ + 50.962446, + 13.7083 + ], + [ + 50.962542, + 13.708534 + ], + [ + 50.962652, + 13.708764 + ], + [ + 50.962795, + 13.709034 + ], + [ + 50.963243, + 13.709746 + ], + [ + 50.963384, + 13.709923 + ], + [ + 50.963472, + 13.710029 + ], + [ + 50.963583, + 13.710117 + ], + [ + 50.963684, + 13.710215 + ], + [ + 50.963947, + 13.710439 + ], + [ + 50.965121, + 13.711432 + ], + [ + 50.965285, + 13.711601 + ], + [ + 50.965448, + 13.711809 + ], + [ + 50.965673, + 13.712171 + ], + [ + 50.965891, + 13.712473 + ], + [ + 50.965986, + 13.712553 + ], + [ + 50.966083, + 13.712574 + ], + [ + 50.966158, + 13.712582 + ], + [ + 50.966923, + 13.71254 + ], + [ + 50.967783, + 13.712462 + ], + [ + 50.968148, + 13.712445 + ], + [ + 50.968491, + 13.712415 + ], + [ + 50.968862, + 13.712375 + ], + [ + 50.969528, + 13.712293 + ], + [ + 50.969894, + 13.712244 + ], + [ + 50.969977, + 13.712221 + ], + [ + 50.970119, + 13.712153 + ], + [ + 50.970352, + 13.711985 + ], + [ + 50.970478, + 13.711828 + ], + [ + 50.970923, + 13.711205 + ], + [ + 50.97108, + 13.711016 + ], + [ + 50.971208, + 13.710887 + ], + [ + 50.971317, + 13.710796 + ], + [ + 50.971606, + 13.710597 + ], + [ + 50.971888, + 13.710435 + ], + [ + 50.972331, + 13.710232 + ], + [ + 50.972495, + 13.710151 + ], + [ + 50.972695, + 13.710103 + ], + [ + 50.972915, + 13.710116 + ], + [ + 50.973139, + 13.710204 + ], + [ + 50.973335, + 13.710311 + ], + [ + 50.9736, + 13.710593 + ], + [ + 50.973825, + 13.710975 + ], + [ + 50.973952, + 13.711384 + ], + [ + 50.974035, + 13.711803 + ], + [ + 50.974125, + 13.712496 + ], + [ + 50.974256, + 13.713188 + ], + [ + 50.974348, + 13.713412 + ], + [ + 50.974529, + 13.713835 + ], + [ + 50.974737, + 13.714197 + ], + [ + 50.97497, + 13.714499 + ], + [ + 50.97543, + 13.714957 + ], + [ + 50.975565, + 13.715083 + ], + [ + 50.975654, + 13.715165 + ], + [ + 50.975888, + 13.715354 + ], + [ + 50.977961, + 13.716963 + ], + [ + 50.978513, + 13.717419 + ], + [ + 50.978689, + 13.717522 + ], + [ + 50.978744, + 13.717539 + ], + [ + 50.978894, + 13.717575 + ], + [ + 50.978996, + 13.717586 + ], + [ + 50.979097, + 13.717593 + ], + [ + 50.979206, + 13.717583 + ], + [ + 50.97926, + 13.717574 + ], + [ + 50.979306, + 13.717567 + ], + [ + 50.979433, + 13.717517 + ], + [ + 50.979707, + 13.717373 + ], + [ + 50.980689, + 13.716808 + ], + [ + 50.9808, + 13.716718 + ], + [ + 50.980885, + 13.716621 + ], + [ + 50.981681, + 13.7153 + ], + [ + 50.981836, + 13.715138 + ], + [ + 50.981883, + 13.715111 + ], + [ + 50.982025, + 13.715064 + ], + [ + 50.982783, + 13.714968 + ], + [ + 50.983329, + 13.71481 + ], + [ + 50.983508, + 13.714747 + ], + [ + 50.984451, + 13.71441 + ], + [ + 50.984607, + 13.714379 + ], + [ + 50.984789, + 13.714393 + ], + [ + 50.985856, + 13.714666 + ], + [ + 50.986884, + 13.715037 + ], + [ + 50.987051, + 13.71507 + ], + [ + 50.987226, + 13.715081 + ], + [ + 50.987429, + 13.715074 + ], + [ + 50.989421, + 13.714891 + ], + [ + 50.989876, + 13.714903 + ], + [ + 50.990324, + 13.714991 + ], + [ + 50.990794, + 13.715235 + ], + [ + 50.9912, + 13.715579 + ], + [ + 50.992457, + 13.716868 + ], + [ + 50.992837, + 13.717168 + ], + [ + 50.993012, + 13.717294 + ], + [ + 50.993213, + 13.717413 + ], + [ + 50.993524, + 13.717543 + ], + [ + 50.993987, + 13.717693 + ], + [ + 50.994121, + 13.717736 + ], + [ + 50.994395, + 13.717831 + ], + [ + 50.996009, + 13.718324 + ], + [ + 50.996469, + 13.718468 + ], + [ + 50.996693, + 13.718544 + ], + [ + 50.996921, + 13.718625 + ], + [ + 50.997261, + 13.7188 + ], + [ + 50.997402, + 13.718895 + ], + [ + 50.997556, + 13.71901 + ], + [ + 50.997779, + 13.719189 + ], + [ + 50.998057, + 13.719474 + ], + [ + 50.998253, + 13.719681 + ], + [ + 50.998424, + 13.719899 + ], + [ + 50.998567, + 13.720081 + ], + [ + 50.998744, + 13.7203 + ], + [ + 50.999782, + 13.721624 + ], + [ + 51.000429, + 13.722356 + ], + [ + 51.001036, + 13.722992 + ], + [ + 51.002502, + 13.724344 + ], + [ + 51.002681, + 13.724512 + ], + [ + 51.002954, + 13.724836 + ], + [ + 51.00321, + 13.725259 + ], + [ + 51.003382, + 13.725679 + ], + [ + 51.003752, + 13.726676 + ], + [ + 51.00407, + 13.72747 + ], + [ + 51.004243, + 13.727806 + ], + [ + 51.00452, + 13.728352 + ], + [ + 51.00475, + 13.728655 + ], + [ + 51.004785, + 13.728702 + ], + [ + 51.005556, + 13.729432 + ], + [ + 51.005701, + 13.729511 + ], + [ + 51.006133, + 13.729737 + ], + [ + 51.006454, + 13.729824 + ], + [ + 51.006656, + 13.729869 + ], + [ + 51.006778, + 13.72989 + ], + [ + 51.007562, + 13.730009 + ], + [ + 51.008144, + 13.730084 + ], + [ + 51.008616, + 13.7302 + ], + [ + 51.009035, + 13.730236 + ], + [ + 51.009363, + 13.730191 + ], + [ + 51.0095, + 13.730156 + ], + [ + 51.009644, + 13.730096 + ], + [ + 51.009805, + 13.730001 + ], + [ + 51.009963, + 13.72989 + ], + [ + 51.010146, + 13.729711 + ], + [ + 51.010327, + 13.729413 + ], + [ + 51.010473, + 13.729126 + ], + [ + 51.010603, + 13.728836 + ], + [ + 51.01067, + 13.728586 + ], + [ + 51.010722, + 13.728374 + ], + [ + 51.0108, + 13.727898 + ], + [ + 51.010877, + 13.726521 + ], + [ + 51.010909, + 13.726256 + ], + [ + 51.010969, + 13.725947 + ], + [ + 51.011054, + 13.725617 + ], + [ + 51.011138, + 13.725381 + ], + [ + 51.011233, + 13.725149 + ], + [ + 51.011417, + 13.724812 + ], + [ + 51.011723, + 13.724394 + ], + [ + 51.012598, + 13.723703 + ], + [ + 51.013103, + 13.723155 + ], + [ + 51.013316, + 13.72297 + ], + [ + 51.013559, + 13.722815 + ], + [ + 51.013727, + 13.722751 + ], + [ + 51.013905, + 13.722721 + ], + [ + 51.014061, + 13.722722 + ], + [ + 51.014205, + 13.722766 + ], + [ + 51.014475, + 13.722853 + ], + [ + 51.01471, + 13.72299 + ], + [ + 51.014868, + 13.723118 + ], + [ + 51.01505, + 13.723328 + ], + [ + 51.015239, + 13.723643 + ], + [ + 51.01536, + 13.723921 + ], + [ + 51.015454, + 13.724226 + ], + [ + 51.015511, + 13.724488 + ], + [ + 51.015565, + 13.724869 + ], + [ + 51.015654, + 13.72609 + ], + [ + 51.015699, + 13.726519 + ], + [ + 51.015757, + 13.726855 + ], + [ + 51.015842, + 13.727239 + ], + [ + 51.015975, + 13.727655 + ], + [ + 51.016151, + 13.728049 + ], + [ + 51.016321, + 13.728352 + ], + [ + 51.016444, + 13.728567 + ], + [ + 51.016613, + 13.728784 + ], + [ + 51.016845, + 13.729016 + ], + [ + 51.017019, + 13.729157 + ], + [ + 51.017199, + 13.729273 + ], + [ + 51.017594, + 13.7295 + ], + [ + 51.017999, + 13.729647 + ], + [ + 51.018153, + 13.729641 + ], + [ + 51.018628, + 13.729591 + ], + [ + 51.019006, + 13.729573 + ], + [ + 51.019375, + 13.72957 + ], + [ + 51.019575, + 13.729619 + ], + [ + 51.019622, + 13.729634 + ], + [ + 51.019729, + 13.729684 + ], + [ + 51.019841, + 13.729708 + ], + [ + 51.01993, + 13.72973 + ], + [ + 51.020457, + 13.729865 + ], + [ + 51.020551, + 13.729893 + ], + [ + 51.02137, + 13.730258 + ], + [ + 51.021759, + 13.730408 + ], + [ + 51.021943, + 13.730436 + ], + [ + 51.022123, + 13.730421 + ], + [ + 51.023534, + 13.730651 + ], + [ + 51.024124, + 13.730781 + ], + [ + 51.024238, + 13.730816 + ], + [ + 51.024362, + 13.730871 + ], + [ + 51.024472, + 13.730925 + ], + [ + 51.024595, + 13.731024 + ], + [ + 51.024681, + 13.731133 + ], + [ + 51.024771, + 13.731263 + ], + [ + 51.024852, + 13.731389 + ], + [ + 51.024897, + 13.73147 + ], + [ + 51.024968, + 13.731579 + ], + [ + 51.025094, + 13.73173 + ], + [ + 51.025213, + 13.731831 + ], + [ + 51.025235, + 13.731846 + ], + [ + 51.025265, + 13.731861 + ], + [ + 51.025399, + 13.731913 + ], + [ + 51.025505, + 13.731926 + ], + [ + 51.025527, + 13.731926 + ], + [ + 51.025601, + 13.731919 + ], + [ + 51.025707, + 13.7319 + ], + [ + 51.025864, + 13.731866 + ], + [ + 51.026318, + 13.731747 + ], + [ + 51.026515, + 13.731708 + ], + [ + 51.027026, + 13.731622 + ], + [ + 51.027052, + 13.731616 + ], + [ + 51.027271, + 13.731563 + ], + [ + 51.027413, + 13.731506 + ], + [ + 51.027589, + 13.731461 + ], + [ + 51.027608, + 13.731453 + ], + [ + 51.028012, + 13.731306 + ], + [ + 51.028468, + 13.731183 + ], + [ + 51.028815, + 13.731104 + ], + [ + 51.029115, + 13.731061 + ], + [ + 51.029457, + 13.730978 + ], + [ + 51.029483, + 13.730991 + ], + [ + 51.02942, + 13.730986 + ], + [ + 51.02983, + 13.730893 + ], + [ + 51.030047, + 13.730852 + ], + [ + 51.030205, + 13.730826 + ], + [ + 51.030433, + 13.73078 + ], + [ + 51.030713, + 13.730703 + ], + [ + 51.030891, + 13.730616 + ], + [ + 51.031068, + 13.730541 + ], + [ + 51.03182, + 13.730346 + ], + [ + 51.032301, + 13.730228 + ], + [ + 51.032373, + 13.730213 + ], + [ + 51.032507, + 13.730204 + ], + [ + 51.032633, + 13.730213 + ], + [ + 51.032741, + 13.730246 + ], + [ + 51.032891, + 13.730335 + ], + [ + 51.033155, + 13.73054 + ], + [ + 51.033531, + 13.730729 + ], + [ + 51.033836, + 13.73089 + ], + [ + 51.034131, + 13.731116 + ], + [ + 51.034212, + 13.731166 + ], + [ + 51.034382, + 13.73125 + ], + [ + 51.034548, + 13.731324 + ], + [ + 51.034816, + 13.731453 + ], + [ + 51.03507, + 13.731553 + ], + [ + 51.035124, + 13.731574 + ], + [ + 51.035302, + 13.731656 + ], + [ + 51.035906, + 13.731938 + ], + [ + 51.037567, + 13.732721 + ], + [ + 51.03817, + 13.73302 + ], + [ + 51.038692, + 13.733263 + ], + [ + 51.038836, + 13.733341 + ], + [ + 51.038988, + 13.733431 + ], + [ + 51.039063, + 13.733482 + ], + [ + 51.0396, + 13.733918 + ], + [ + 51.039708, + 13.73402 + ], + [ + 51.039924, + 13.734201 + ] + ], + "interchange": { + "desc": "Fussweg", + "type": 100, + "coords": [ + [ + 51.039936, + 13.734183 + ], + [ + 51.039925, + 13.734172 + ], + [ + 51.040043, + 13.734271 + ], + [ + 51.039993, + 13.734432 + ], + [ + 51.039981, + 13.734459 + ], + [ + 51.039998, + 13.734477 + ], + [ + 51.039942, + 13.73463 + ], + [ + 51.03993, + 13.734621 + ], + [ + 51.039919, + 13.734648 + ], + [ + 51.039891, + 13.734621 + ], + [ + 51.04032, + 13.733327 + ], + [ + 51.040456, + 13.732905 + ], + [ + 51.040552, + 13.732618 + ], + [ + 51.040817, + 13.7318 + ], + [ + 51.040815, + 13.731815 + ] + ] + }, + "properties": { + "vehicleAccess": [ + { + "height": 0, + "halfWidth": 0, + "doorWidth": 0, + "attributes": 536870912, + "areaToStay": 0, + "areaToMove": 0 + } + ] + } + }, + { + "duration": 2640, + "origin": { + "isGlobalId": true, + "id": "de:14612:28:8:Gleis18", + "name": "Dresden Hauptbahnhof", + "disassembledName": "13", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.0408, + 13.7318 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:28", + "name": "Dresden Hauptbahnhof", + "disassembledName": "Hauptbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000028" + }, + "coord": [ + 51.03993, + 13.732932 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "departureTimeBaseTimetable": "2025-07-28T05:59:00Z", + "departureTimePlanned": "2025-07-28T05:59:00Z", + "departureTimeEstimated": "2025-07-28T05:59:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "13", + "areaGid": "de:14612:28:8", + "area": "8", + "platform": "Gl.13", + "platformName": "13", + "plannedPlatformName": "13", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "destination": { + "isGlobalId": true, + "id": "de:14628:3620:1:Gleis1", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "1", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919503, + 14.137497 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3620", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "Nationalparkbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:10", + "name": "Bad Schandau", + "type": "locality" + }, + "properties": { + "stopId": "33003620" + }, + "coord": [ + 50.91927, + 14.138099 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6, + 9 + ], + "arrivalTimeBaseTimetable": "2025-07-28T06:43:00Z", + "arrivalTimePlanned": "2025-07-28T06:43:00Z", + "arrivalTimeEstimated": "2025-07-28T06:43:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14628:3620:1", + "area": "1", + "platform": "Gl. 1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "transportation": { + "id": "ddb:92D01: :H:j25", + "name": "S-Bahn S1", + "disassembledName": "S1", + "number": "S1", + "product": { + "id": 3, + "class": 1, + "name": "S-Bahn", + "iconId": 2 + }, + "operator": { + "code": "8004", + "id": "8004", + "name": "DB Regio AG S\u00fcdost" + }, + "destination": { + "id": "33003620", + "name": "Bad Schandau Nationalparkbahnhof", + "type": "stop" + }, + "properties": { + "trainName": "S-Bahn", + "trainType": "S", + "trainNumber": "31715", + "tripCode": 81, + "timetablePeriod": "Jahresfahrplan 2025", + "lineDisplay": "LINE", + "globalId": "de:vvo:10-1" + } + }, + "hints": [ + { + "content": "Fahrradmitnahme begrenzt m\u00f6glich", + "providerCode": "G", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + }, + { + "content": "Fahrzeuggebundene Einstiegshilfe am Zugende", + "providerCode": "ZE", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + } + ], + "stopSequence": [ + { + "isGlobalId": true, + "id": "de:14612:28:8:Gleis18", + "name": "Dresden Hauptbahnhof", + "disassembledName": "13", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.0408, + 13.7318 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:28", + "name": "Dresden Hauptbahnhof", + "disassembledName": "Hauptbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000028" + }, + "coord": [ + 51.03993, + 13.732932 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "13", + "areaGid": "de:14612:28:8", + "area": "8", + "platform": "Gl.13", + "platformName": "13", + "plannedPlatformName": "13", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "vms:;voe:103;voe:10000" + }, + "departureTimePlanned": "2025-07-28T05:59:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:757:1:Gleis2", + "name": "Dresden S-Bf. Strehlen", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.030621, + 13.76193 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:757", + "name": "Dresden S-Bf. Strehlen", + "disassembledName": "S-Bf. Strehlen", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000757" + }, + "coord": [ + 51.031022, + 13.761139 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:757:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:100;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:01:00Z", + "departureTimePlanned": "2025-07-28T06:02:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:907:1:Gleis2", + "name": "Dresden S-Bahnhof Reick", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.021095, + 13.790909 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:907", + "name": "Dresden S-Bahnhof Reick", + "disassembledName": "S-Bahnhof Reick", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000907" + }, + "coord": [ + 51.02127, + 13.79064 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:907:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:100;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:04:00Z", + "departureTimePlanned": "2025-07-28T06:04:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:919:1:Gleis2", + "name": "Dresden S-Bahnhof Dobritz", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.011437, + 13.808876 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:919", + "name": "Dresden S-Bahnhof Dobritz", + "disassembledName": "S-Bahnhof Dobritz", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000919" + }, + "coord": [ + 51.011635, + 13.808516 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:919:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:100;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:06:00Z", + "departureTimePlanned": "2025-07-28T06:06:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:98:1:Gleis2", + "name": "Dresden S-Bahnhof Niedersedlitz", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.999538, + 13.828594 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:98", + "name": "Dresden S-Bahnhof Niedersedlitz", + "disassembledName": "S-Bahnhof Niedersedlitz", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000098" + }, + "coord": [ + 50.999459, + 13.828818 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6, + 10 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:98:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:101;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:08:00Z", + "departureTimePlanned": "2025-07-28T06:09:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:910:1:Gleis2", + "name": "Dresden S-Bf. Zschachwitz", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.989813, + 13.844709 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:910", + "name": "Dresden S-Bf. Zschachwitz", + "disassembledName": "S-Bf. Zschachwitz", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000910" + }, + "coord": [ + 50.989649, + 13.845168 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:910:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:101;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:11:00Z", + "departureTimePlanned": "2025-07-28T06:11:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3040:1:Gleis2", + "name": "Heidenau Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.981268, + 13.858849 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3040", + "name": "Heidenau Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628160:1", + "name": "Heidenau (Sachsen)", + "type": "locality" + }, + "properties": { + "stopId": "33003040" + }, + "coord": [ + 50.98081, + 13.859945 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3040:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:709;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:13:00Z", + "departureTimePlanned": "2025-07-28T06:14:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3053:1:Gleis2", + "name": "Heidenau S-Bahnhof S\u00fcd", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.971732, + 13.87456 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3053", + "name": "Heidenau S-Bahnhof S\u00fcd", + "disassembledName": "S-Bahnhof S\u00fcd", + "type": "stop", + "parent": { + "id": "placeID:14628160:1", + "name": "Heidenau (Sachsen)", + "type": "locality" + }, + "properties": { + "stopId": "33003053" + }, + "coord": [ + 50.972371, + 13.874345 + ], + "niveau": 0 + }, + "productClasses": [ + 1, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3053:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:709;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:16:00Z", + "departureTimePlanned": "2025-07-28T06:16:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3065:1:Gleis2", + "name": "Heidenau S-Bf. Gro\u00dfsedlitz", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.960785, + 13.894808 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3065", + "name": "Heidenau S-Bf. Gro\u00dfsedlitz", + "disassembledName": "S-Bf. Gro\u00dfsedlitz", + "type": "stop", + "parent": { + "id": "placeID:14628160:1", + "name": "Heidenau (Sachsen)", + "type": "locality" + }, + "properties": { + "stopId": "33003065" + }, + "coord": [ + 50.960989, + 13.894449 + ], + "niveau": 0 + }, + "productClasses": [ + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3065:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:709;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:18:00Z", + "departureTimePlanned": "2025-07-28T06:18:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3370:4:Gleis3", + "name": "Pirna Bahnhof", + "disassembledName": "3", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.962607, + 13.929241 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3370", + "name": "Pirna Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628270:130", + "name": "Pirna", + "type": "locality" + }, + "properties": { + "stopId": "33003370" + }, + "coord": [ + 50.962352, + 13.928855 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "3", + "areaGid": "de:14628:3370:4", + "area": "4", + "platform": "Gl. 3", + "platformName": "3", + "plannedPlatformName": "3", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:700;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:21:00Z", + "departureTimePlanned": "2025-07-28T06:22:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3420:3:Gleis2", + "name": "Obervogelgesang Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.949954, + 13.98932 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3420", + "name": "Obervogelgesang Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628270:120", + "name": "Obervogelgesang", + "type": "locality" + }, + "properties": { + "stopId": "33003420" + }, + "coord": [ + 50.949847, + 13.989626 + ], + "niveau": 0 + }, + "productClasses": [ + 1, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3420:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:707;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:26:00Z", + "departureTimePlanned": "2025-07-28T06:26:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3720:3:Gleis2", + "name": "Stadt Wehlen Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.953848, + 14.032745 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3720", + "name": "Stadt Wehlen Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628370:30", + "name": "Stadt Wehlen", + "type": "locality" + }, + "properties": { + "stopId": "33003720" + }, + "coord": [ + 50.953944, + 14.032754 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3720:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:707|729;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:29:00Z", + "departureTimePlanned": "2025-07-28T06:30:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3710:3:Gleis2", + "name": "Kurort Rathen Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.956649, + 14.075756 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3710", + "name": "Kurort Rathen Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628310:1", + "name": "Rathen Kurort", + "type": "locality" + }, + "properties": { + "stopId": "33003710" + }, + "coord": [ + 50.956541, + 14.076026 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3710:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:729;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:33:00Z", + "departureTimePlanned": "2025-07-28T06:33:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3500:3:Gleis2", + "name": "K\u00f6nigstein Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919355, + 14.0782 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3500", + "name": "K\u00f6nigstein Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628210:10", + "name": "K\u00f6nigstein (S\u00e4chsische Schweiz)", + "type": "locality" + }, + "properties": { + "stopId": "33003500" + }, + "coord": [ + 50.919406, + 14.078541 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3500:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:38:00Z", + "departureTimePlanned": "2025-07-28T06:38:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3620:1:Gleis1", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "1", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919503, + 14.137497 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3620", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "Nationalparkbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:10", + "name": "Bad Schandau", + "type": "locality" + }, + "properties": { + "stopId": "33003620" + }, + "coord": [ + 50.91927, + 14.138099 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6, + 9 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14628:3620:1", + "area": "1", + "platform": "Gl. 1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:43:00Z" + } + ], + "footPathInfo": [ + { + "position": "AFTER", + "duration": 180 + } + ], + "infos": [ + { + "priority": "normal", + "id": "23501", + "version": 268389061, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Bauarbeiten im oberen Elbtal", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23501&seqID=268389061", + "content": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                        

wegen Bauarbeiten im oberen Elbtal kommt es zu folgenden Fahrplan\u00e4nderungen im Saisonverkehr:

Linie S 1 (Mei\u00dfen Triebischtal \u2013 Coswig \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na)

6., 13., 20., 27. Juli, 3., 10., 17., 24., 31. August 7., 14. und 21. September 2025, 10.50 Uhr \u2013 11.20 Uhr

  • S-Bahn 31785 planm\u00e4\u00dfig Dresden Hbf ab 10.14 Uhr: Ausfall Bad Schandau \u25ba Sch\u00f6na

6., 13., 20., 27. Juli, 3., 10., 17., 24., 31. August 7., 14. und 21. September 2025, 16.30 Uhr \u2013 17.00 Uhr

  • S-Bahn 31786 planm\u00e4\u00dfig Sch\u00f6na ab 16.41 Uhr: Ausfall Sch\u00f6na \u25ba Bad Schandau
", + "subtitle": "Bauarbeiten im oberen Elbtal", + "title": "Linienaenderung", + "additionalText": "inEFA=\"true\";MeldungTyp=\"Information\"", + "htmlText": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                        

wegen Bauarbeiten im oberen Elbtal kommt es zu folgenden Fahrplan\u00e4nderungen im Saisonverkehr:

Linie S 1 (Mei\u00dfen Triebischtal \u2013 Coswig \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na)

6., 13., 20., 27. Juli, 3., 10., 17., 24., 31. August 7., 14. und 21. September 2025, 10.50 Uhr \u2013 11.20 Uhr

  • S-Bahn 31785 planm\u00e4\u00dfig Dresden Hbf ab 10.14 Uhr: Ausfall Bad Schandau \u25ba Sch\u00f6na

6., 13., 20., 27. Juli, 3., 10., 17., 24., 31. August 7., 14. und 21. September 2025, 16.30 Uhr \u2013 17.00 Uhr

  • S-Bahn 31786 planm\u00e4\u00dfig Sch\u00f6na ab 16.41 Uhr: Ausfall Sch\u00f6na \u25ba Bad Schandau
" + } + ] + }, + { + "priority": "normal", + "id": "23490", + "version": 267719461, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Ausfall zwischen Bad Schandau und Sch\u00f6na, Ersatzverkehr mit Bus", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23490&seqID=267719461", + "content": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                       

wegen Bauarbeiten kommt es von Montag, 30.06.2025, 00:00 Uhr bis Samstag, 13.12.2025, 00:00 Uhr, zu folgenden Fahrplan\u00e4nderungen:

S 1 Mei\u00dfen Triebischtal \u2013 Coswig (b Dresden) \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na

Die Z\u00fcge fallen zwischen Bad Schandau und Sch\u00f6na aus. Es f\u00e4hrt ein Ersatzverkehr mit Bus. Bitte beachten Sie die vom Zugverkehr abweichenden Fahrzeiten der Busse. Alternativ nutzen Sie bitte ebenfalls die Linie U28. Die in der Ausflugszeit verkehrenden Zusatzz\u00fcge (S1, RE50) verkehren teilweise bis Sch\u00f6na.

Die \u00c4nderungen sind in der digitalen Reiseauskunft verf\u00fcgbar.

Links

  • Um keine kurzfristigen \u00c4nderungen zu verpassen, informieren Sie sich bitte unmittelbar vor Fahrtantritt in den digitalen Reiseauskunftsmedien unter bahn.de oder in der App DB Navigator.
  • Den Weg zum Ersatzverkehr mit Bus finden Sie unter https://www.vvo-online.de/Umgebungsplan.
", + "subtitle": "Ausfall zwischen Bad Schandau und Sch\u00f6na, Ersatzverkehr mit Bus", + "title": "Linienaenderung", + "additionalText": "inEFA=\"true\";MeldungTyp=\"Information\"", + "htmlText": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                       

wegen Bauarbeiten kommt es von Montag, 30.06.2025, 00:00 Uhr bis Samstag, 13.12.2025, 00:00 Uhr, zu folgenden Fahrplan\u00e4nderungen:

S 1 Mei\u00dfen Triebischtal \u2013 Coswig (b Dresden) \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na

Die Z\u00fcge fallen zwischen Bad Schandau und Sch\u00f6na aus. Es f\u00e4hrt ein Ersatzverkehr mit Bus. Bitte beachten Sie die vom Zugverkehr abweichenden Fahrzeiten der Busse. Alternativ nutzen Sie bitte ebenfalls die Linie U28. Die in der Ausflugszeit verkehrenden Zusatzz\u00fcge (S1, RE50) verkehren teilweise bis Sch\u00f6na.

Die \u00c4nderungen sind in der digitalen Reiseauskunft verf\u00fcgbar.

Links

  • Um keine kurzfristigen \u00c4nderungen zu verpassen, informieren Sie sich bitte unmittelbar vor Fahrtantritt in den digitalen Reiseauskunftsmedien unter bahn.de oder in der App DB Navigator.
  • Den Weg zum Ersatzverkehr mit Bus finden Sie unter https://www.vvo-online.de/Umgebungsplan.
" + } + ] + }, + { + "priority": "normal", + "id": "23479", + "version": 267609661, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Bauarbeiten in Dresden Hbf", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23479&seqID=267609661", + "content": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                       

wegen Bauarbeiten in Dresden Hbf kommt es zu folgenden Fahrplan\u00e4nderungen:

Linie S 1 (Mei\u00dfen Triebischtal \u2013 Coswig (b Dresden) \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na)

in den N\u00e4chten 30. Juni/1. Juli \u20134./5., 6./7. \u2013 11./12., 13./14. \u2013 18./19., 20./21., 22./23. \u2013 25./26., 27./28. \u2013 1./2. August, 3./4. \u2013 8./9. August 2025, jeweils 23.40 Uhr \u2013 2.40 Uhr

  • Haltausfall Freiberger Stra\u00dfe

Linie S 2 (Pirna \u2013 Dresden \u2013 Dresden Flughafen)

in den N\u00e4chten 30. Juni/1. Juli \u20134./5., 6./7. \u2013 11./12., 13./14. \u2013 18./19., 20./21., 22./23. \u2013 25./26., 27./28. \u2013 1./2. August, 3./4. \u2013 8./9. August 2025, jeweils 23.55 Uhr \u2013 0.10 Uhr

  • Haltausfall Freiberger Stra\u00dfe
", + "subtitle": "Bauarbeiten in Dresden Hbf", + "title": "Linienaenderung", + "additionalText": "inEFA=\"true\";MeldungTyp=\"Information\"", + "htmlText": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                       

wegen Bauarbeiten in Dresden Hbf kommt es zu folgenden Fahrplan\u00e4nderungen:

Linie S 1 (Mei\u00dfen Triebischtal \u2013 Coswig (b Dresden) \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na)

in den N\u00e4chten 30. Juni/1. Juli \u20134./5., 6./7. \u2013 11./12., 13./14. \u2013 18./19., 20./21., 22./23. \u2013 25./26., 27./28. \u2013 1./2. August, 3./4. \u2013 8./9. August 2025, jeweils 23.40 Uhr \u2013 2.40 Uhr

  • Haltausfall Freiberger Stra\u00dfe

Linie S 2 (Pirna \u2013 Dresden \u2013 Dresden Flughafen)

in den N\u00e4chten 30. Juni/1. Juli \u20134./5., 6./7. \u2013 11./12., 13./14. \u2013 18./19., 20./21., 22./23. \u2013 25./26., 27./28. \u2013 1./2. August, 3./4. \u2013 8./9. August 2025, jeweils 23.55 Uhr \u2013 0.10 Uhr

  • Haltausfall Freiberger Stra\u00dfe
" + } + ] + } + ], + "coords": [ + [ + 51.040477, + 13.732761 + ], + [ + 51.039739, + 13.735013 + ], + [ + 51.039215, + 13.736624 + ], + [ + 51.039073, + 13.737021 + ], + [ + 51.038921, + 13.737371 + ], + [ + 51.038662, + 13.737922 + ], + [ + 51.038095, + 13.739289 + ], + [ + 51.037929, + 13.739708 + ], + [ + 51.037629, + 13.740536 + ], + [ + 51.037391, + 13.741199 + ], + [ + 51.036995, + 13.742416 + ], + [ + 51.036774, + 13.743083 + ], + [ + 51.036447, + 13.744088 + ], + [ + 51.036344, + 13.744396 + ], + [ + 51.036194, + 13.744868 + ], + [ + 51.036023, + 13.745382 + ], + [ + 51.035067, + 13.748303 + ], + [ + 51.034658, + 13.749573 + ], + [ + 51.03281, + 13.755216 + ], + [ + 51.032189, + 13.757125 + ], + [ + 51.032086, + 13.757431 + ], + [ + 51.030869, + 13.761172 + ], + [ + 51.030488, + 13.762332 + ], + [ + 51.030161, + 13.763324 + ], + [ + 51.028246, + 13.769178 + ], + [ + 51.022803, + 13.785833 + ], + [ + 51.022384, + 13.787103 + ], + [ + 51.022199, + 13.787679 + ], + [ + 51.021885, + 13.788636 + ], + [ + 51.021753, + 13.789028 + ], + [ + 51.021567, + 13.7896 + ], + [ + 51.021285, + 13.790382 + ], + [ + 51.021164, + 13.79071 + ], + [ + 51.02102, + 13.791096 + ], + [ + 51.020802, + 13.791666 + ], + [ + 51.020479, + 13.792466 + ], + [ + 51.020144, + 13.793259 + ], + [ + 51.019858, + 13.793904 + ], + [ + 51.019712, + 13.794251 + ], + [ + 51.019017, + 13.795784 + ], + [ + 51.018727, + 13.796409 + ], + [ + 51.018341, + 13.797205 + ], + [ + 51.017942, + 13.797981 + ], + [ + 51.017518, + 13.798751 + ], + [ + 51.017095, + 13.799484 + ], + [ + 51.01649, + 13.800493 + ], + [ + 51.014408, + 13.803943 + ], + [ + 51.014029, + 13.804579 + ], + [ + 51.013624, + 13.80525 + ], + [ + 51.013255, + 13.805853 + ], + [ + 51.012405, + 13.807267 + ], + [ + 51.011719, + 13.808402 + ], + [ + 51.011329, + 13.809045 + ], + [ + 51.010984, + 13.80962 + ], + [ + 51.009933, + 13.811362 + ], + [ + 51.008745, + 13.813328 + ], + [ + 51.008372, + 13.813955 + ], + [ + 51.007974, + 13.814608 + ], + [ + 51.007527, + 13.81535 + ], + [ + 51.007059, + 13.816122 + ], + [ + 51.006613, + 13.816865 + ], + [ + 51.005681, + 13.818408 + ], + [ + 51.003729, + 13.821647 + ], + [ + 51.003616, + 13.821832 + ], + [ + 50.999801, + 13.828158 + ], + [ + 50.999194, + 13.829164 + ], + [ + 50.999071, + 13.829364 + ], + [ + 50.995858, + 13.834684 + ], + [ + 50.991267, + 13.842282 + ], + [ + 50.989857, + 13.844634 + ], + [ + 50.989511, + 13.845208 + ], + [ + 50.989229, + 13.845665 + ], + [ + 50.987986, + 13.847719 + ], + [ + 50.987618, + 13.848335 + ], + [ + 50.987203, + 13.84901 + ], + [ + 50.983422, + 13.855277 + ], + [ + 50.981905, + 13.857779 + ], + [ + 50.981564, + 13.858346 + ], + [ + 50.981124, + 13.859079 + ], + [ + 50.980336, + 13.860367 + ], + [ + 50.980089, + 13.860774 + ], + [ + 50.978706, + 13.863023 + ], + [ + 50.975649, + 13.868072 + ], + [ + 50.97539, + 13.86851 + ], + [ + 50.974659, + 13.869719 + ], + [ + 50.974273, + 13.870369 + ], + [ + 50.973114, + 13.872271 + ], + [ + 50.972247, + 13.873712 + ], + [ + 50.971469, + 13.874998 + ], + [ + 50.968543, + 13.87984 + ], + [ + 50.96596, + 13.8841 + ], + [ + 50.964634, + 13.8863 + ], + [ + 50.963653, + 13.887939 + ], + [ + 50.963261, + 13.88864 + ], + [ + 50.962847, + 13.889434 + ], + [ + 50.962469, + 13.89023 + ], + [ + 50.962111, + 13.89103 + ], + [ + 50.961784, + 13.891827 + ], + [ + 50.961523, + 13.89253 + ], + [ + 50.961215, + 13.893395 + ], + [ + 50.961129, + 13.89365 + ], + [ + 50.961016, + 13.894012 + ], + [ + 50.960863, + 13.89452 + ], + [ + 50.960688, + 13.895131 + ], + [ + 50.960621, + 13.895369 + ], + [ + 50.960531, + 13.895722 + ], + [ + 50.960352, + 13.896456 + ], + [ + 50.960234, + 13.897017 + ], + [ + 50.960129, + 13.897525 + ], + [ + 50.960026, + 13.898098 + ], + [ + 50.959941, + 13.898614 + ], + [ + 50.95984, + 13.899245 + ], + [ + 50.95971, + 13.900076 + ], + [ + 50.959587, + 13.901029 + ], + [ + 50.959461, + 13.902098 + ], + [ + 50.959364, + 13.903191 + ], + [ + 50.959294, + 13.90421 + ], + [ + 50.959282, + 13.904518 + ], + [ + 50.959258, + 13.905038 + ], + [ + 50.959239, + 13.906587 + ], + [ + 50.959254, + 13.907385 + ], + [ + 50.959292, + 13.908245 + ], + [ + 50.959351, + 13.908949 + ], + [ + 50.959417, + 13.909592 + ], + [ + 50.95951, + 13.910457 + ], + [ + 50.959609, + 13.911359 + ], + [ + 50.959729, + 13.912431 + ], + [ + 50.959832, + 13.913325 + ], + [ + 50.959889, + 13.913769 + ], + [ + 50.95995, + 13.914182 + ], + [ + 50.960019, + 13.914595 + ], + [ + 50.960091, + 13.915004 + ], + [ + 50.960603, + 13.917785 + ], + [ + 50.961559, + 13.923 + ], + [ + 50.96162, + 13.923437 + ], + [ + 50.961702, + 13.924082 + ], + [ + 50.961997, + 13.92571 + ], + [ + 50.962103, + 13.926497 + ], + [ + 50.96226, + 13.927359 + ], + [ + 50.962357, + 13.927868 + ], + [ + 50.962548, + 13.928952 + ], + [ + 50.962583, + 13.929138 + ], + [ + 50.962635, + 13.929414 + ], + [ + 50.962718, + 13.929881 + ], + [ + 50.962784, + 13.930224 + ], + [ + 50.962965, + 13.931218 + ], + [ + 50.963208, + 13.932542 + ], + [ + 50.963345, + 13.933234 + ], + [ + 50.963521, + 13.934187 + ], + [ + 50.963666, + 13.935071 + ], + [ + 50.963734, + 13.935512 + ], + [ + 50.963805, + 13.936001 + ], + [ + 50.963843, + 13.936297 + ], + [ + 50.963909, + 13.936878 + ], + [ + 50.96393, + 13.937134 + ], + [ + 50.963961, + 13.937533 + ], + [ + 50.963981, + 13.937898 + ], + [ + 50.964001, + 13.938334 + ], + [ + 50.96402, + 13.939009 + ], + [ + 50.964033, + 13.939669 + ], + [ + 50.964031, + 13.939926 + ], + [ + 50.964018, + 13.940394 + ], + [ + 50.963995, + 13.941575 + ], + [ + 50.963992, + 13.941906 + ], + [ + 50.963922, + 13.945218 + ], + [ + 50.963916, + 13.945563 + ], + [ + 50.963906, + 13.946444 + ], + [ + 50.96387, + 13.948227 + ], + [ + 50.963863, + 13.948427 + ], + [ + 50.963837, + 13.948948 + ], + [ + 50.963815, + 13.949276 + ], + [ + 50.96377, + 13.949851 + ], + [ + 50.963723, + 13.950349 + ], + [ + 50.963684, + 13.950699 + ], + [ + 50.963645, + 13.951002 + ], + [ + 50.963613, + 13.951215 + ], + [ + 50.963547, + 13.951646 + ], + [ + 50.963317, + 13.952984 + ], + [ + 50.963101, + 13.954278 + ], + [ + 50.962879, + 13.955561 + ], + [ + 50.962498, + 13.957843 + ], + [ + 50.961986, + 13.960866 + ], + [ + 50.961769, + 13.962121 + ], + [ + 50.961625, + 13.962929 + ], + [ + 50.961548, + 13.96333 + ], + [ + 50.96143, + 13.963879 + ], + [ + 50.961309, + 13.9644 + ], + [ + 50.961079, + 13.9653 + ], + [ + 50.960961, + 13.96575 + ], + [ + 50.960823, + 13.966227 + ], + [ + 50.960695, + 13.966654 + ], + [ + 50.960547, + 13.967101 + ], + [ + 50.960405, + 13.967511 + ], + [ + 50.960078, + 13.968412 + ], + [ + 50.959827, + 13.969074 + ], + [ + 50.9595, + 13.969923 + ], + [ + 50.95919, + 13.970714 + ], + [ + 50.959019, + 13.971144 + ], + [ + 50.958806, + 13.971638 + ], + [ + 50.958437, + 13.972441 + ], + [ + 50.958085, + 13.973178 + ], + [ + 50.957584, + 13.97418 + ], + [ + 50.957289, + 13.974715 + ], + [ + 50.956893, + 13.975411 + ], + [ + 50.956412, + 13.976177 + ], + [ + 50.956166, + 13.976559 + ], + [ + 50.955887, + 13.976963 + ], + [ + 50.954266, + 13.979194 + ], + [ + 50.953802, + 13.979858 + ], + [ + 50.953456, + 13.980365 + ], + [ + 50.953267, + 13.980654 + ], + [ + 50.95307, + 13.980964 + ], + [ + 50.952697, + 13.981621 + ], + [ + 50.95252, + 13.981962 + ], + [ + 50.95231, + 13.982394 + ], + [ + 50.952144, + 13.982756 + ], + [ + 50.952009, + 13.983064 + ], + [ + 50.951787, + 13.983611 + ], + [ + 50.951601, + 13.984114 + ], + [ + 50.95144, + 13.984561 + ], + [ + 50.951099, + 13.985624 + ], + [ + 50.950071, + 13.988937 + ], + [ + 50.949868, + 13.989574 + ], + [ + 50.949653, + 13.990246 + ], + [ + 50.949157, + 13.991884 + ], + [ + 50.94894, + 13.99252 + ], + [ + 50.948827, + 13.992812 + ], + [ + 50.948715, + 13.993094 + ], + [ + 50.948585, + 13.993397 + ], + [ + 50.948445, + 13.993689 + ], + [ + 50.948275, + 13.994038 + ], + [ + 50.94809, + 13.994385 + ], + [ + 50.947624, + 13.995233 + ], + [ + 50.9472, + 13.995969 + ], + [ + 50.946654, + 13.9969 + ], + [ + 50.945733, + 13.998497 + ], + [ + 50.945564, + 13.998823 + ], + [ + 50.945442, + 13.999074 + ], + [ + 50.945335, + 13.999311 + ], + [ + 50.94505, + 13.999989 + ], + [ + 50.94485, + 14.000551 + ], + [ + 50.944763, + 14.00083 + ], + [ + 50.944668, + 14.001145 + ], + [ + 50.944564, + 14.001525 + ], + [ + 50.944476, + 14.001881 + ], + [ + 50.944292, + 14.002727 + ], + [ + 50.944113, + 14.003558 + ], + [ + 50.944051, + 14.003893 + ], + [ + 50.943989, + 14.004298 + ], + [ + 50.943928, + 14.004725 + ], + [ + 50.943889, + 14.005075 + ], + [ + 50.943851, + 14.005524 + ], + [ + 50.943822, + 14.005934 + ], + [ + 50.943803, + 14.006321 + ], + [ + 50.943792, + 14.00679 + ], + [ + 50.943791, + 14.007182 + ], + [ + 50.943807, + 14.007605 + ], + [ + 50.943828, + 14.008026 + ], + [ + 50.943863, + 14.00846 + ], + [ + 50.943896, + 14.008794 + ], + [ + 50.943961, + 14.009288 + ], + [ + 50.94403, + 14.009727 + ], + [ + 50.944102, + 14.010111 + ], + [ + 50.944159, + 14.010385 + ], + [ + 50.944214, + 14.01063 + ], + [ + 50.944286, + 14.010928 + ], + [ + 50.94451, + 14.011736 + ], + [ + 50.944679, + 14.012255 + ], + [ + 50.94474, + 14.012426 + ], + [ + 50.945032, + 14.013143 + ], + [ + 50.945138, + 14.013377 + ], + [ + 50.945341, + 14.013791 + ], + [ + 50.945527, + 14.014138 + ], + [ + 50.945705, + 14.014442 + ], + [ + 50.946076, + 14.014988 + ], + [ + 50.946418, + 14.015459 + ], + [ + 50.947529, + 14.016941 + ], + [ + 50.948737, + 14.01857 + ], + [ + 50.949439, + 14.019534 + ], + [ + 50.949678, + 14.019905 + ], + [ + 50.949867, + 14.020221 + ], + [ + 50.950139, + 14.020682 + ], + [ + 50.950274, + 14.020941 + ], + [ + 50.950456, + 14.021295 + ], + [ + 50.950993, + 14.022436 + ], + [ + 50.951185, + 14.022838 + ], + [ + 50.951317, + 14.023106 + ], + [ + 50.951426, + 14.023343 + ], + [ + 50.951638, + 14.02384 + ], + [ + 50.951784, + 14.024201 + ], + [ + 50.951867, + 14.024412 + ], + [ + 50.951954, + 14.024645 + ], + [ + 50.952103, + 14.025058 + ], + [ + 50.952253, + 14.025522 + ], + [ + 50.952343, + 14.025809 + ], + [ + 50.952427, + 14.026132 + ], + [ + 50.952503, + 14.026407 + ], + [ + 50.952601, + 14.026787 + ], + [ + 50.952704, + 14.027237 + ], + [ + 50.952803, + 14.027688 + ], + [ + 50.952913, + 14.028243 + ], + [ + 50.953228, + 14.029972 + ], + [ + 50.953395, + 14.030873 + ], + [ + 50.953439, + 14.031107 + ], + [ + 50.953507, + 14.031426 + ], + [ + 50.953604, + 14.031855 + ], + [ + 50.953642, + 14.032012 + ], + [ + 50.953671, + 14.032134 + ], + [ + 50.95375, + 14.032431 + ], + [ + 50.953862, + 14.032831 + ], + [ + 50.954687, + 14.035677 + ], + [ + 50.955179, + 14.037361 + ], + [ + 50.955506, + 14.038491 + ], + [ + 50.955552, + 14.038661 + ], + [ + 50.955999, + 14.040197 + ], + [ + 50.956215, + 14.040985 + ], + [ + 50.956321, + 14.0414 + ], + [ + 50.956409, + 14.041799 + ], + [ + 50.95658, + 14.042662 + ], + [ + 50.956661, + 14.043148 + ], + [ + 50.95673, + 14.043575 + ], + [ + 50.95679, + 14.044041 + ], + [ + 50.956853, + 14.044596 + ], + [ + 50.956912, + 14.045291 + ], + [ + 50.956952, + 14.045954 + ], + [ + 50.956969, + 14.046478 + ], + [ + 50.956972, + 14.04661 + ], + [ + 50.956974, + 14.046813 + ], + [ + 50.956974, + 14.047444 + ], + [ + 50.956966, + 14.047799 + ], + [ + 50.956936, + 14.048439 + ], + [ + 50.956871, + 14.04936 + ], + [ + 50.956817, + 14.04996 + ], + [ + 50.956745, + 14.050894 + ], + [ + 50.956716, + 14.051384 + ], + [ + 50.956685, + 14.051937 + ], + [ + 50.956669, + 14.052425 + ], + [ + 50.956659, + 14.053033 + ], + [ + 50.956662, + 14.053323 + ], + [ + 50.956661, + 14.053482 + ], + [ + 50.956678, + 14.054499 + ], + [ + 50.956722, + 14.055463 + ], + [ + 50.956785, + 14.056429 + ], + [ + 50.956859, + 14.057268 + ], + [ + 50.956921, + 14.057848 + ], + [ + 50.95696, + 14.058191 + ], + [ + 50.957035, + 14.058962 + ], + [ + 50.9571, + 14.059611 + ], + [ + 50.957159, + 14.060156 + ], + [ + 50.957277, + 14.061353 + ], + [ + 50.957306, + 14.061916 + ], + [ + 50.957331, + 14.062245 + ], + [ + 50.957377, + 14.062701 + ], + [ + 50.957611, + 14.065062 + ], + [ + 50.957737, + 14.066271 + ], + [ + 50.957775, + 14.066719 + ], + [ + 50.957801, + 14.067086 + ], + [ + 50.95782, + 14.067461 + ], + [ + 50.957836, + 14.067927 + ], + [ + 50.957842, + 14.068389 + ], + [ + 50.957838, + 14.068841 + ], + [ + 50.957824, + 14.069293 + ], + [ + 50.957801, + 14.069754 + ], + [ + 50.957769, + 14.070224 + ], + [ + 50.957719, + 14.070799 + ], + [ + 50.957601, + 14.071723 + ], + [ + 50.95755, + 14.072083 + ], + [ + 50.957489, + 14.072579 + ], + [ + 50.957451, + 14.072863 + ], + [ + 50.957361, + 14.073292 + ], + [ + 50.957219, + 14.073896 + ], + [ + 50.95716, + 14.074117 + ], + [ + 50.957008, + 14.074654 + ], + [ + 50.956864, + 14.075113 + ], + [ + 50.956796, + 14.075326 + ], + [ + 50.956667, + 14.075682 + ], + [ + 50.95645, + 14.076266 + ], + [ + 50.956362, + 14.076483 + ], + [ + 50.956302, + 14.076626 + ], + [ + 50.95616, + 14.076943 + ], + [ + 50.955974, + 14.077337 + ], + [ + 50.955749, + 14.077769 + ], + [ + 50.955649, + 14.077949 + ], + [ + 50.955486, + 14.078231 + ], + [ + 50.955314, + 14.078504 + ], + [ + 50.955146, + 14.078758 + ], + [ + 50.954791, + 14.079238 + ], + [ + 50.954571, + 14.079527 + ], + [ + 50.954214, + 14.079924 + ], + [ + 50.954013, + 14.080136 + ], + [ + 50.953704, + 14.080428 + ], + [ + 50.953333, + 14.080749 + ], + [ + 50.953189, + 14.080857 + ], + [ + 50.95282, + 14.081124 + ], + [ + 50.952618, + 14.081255 + ], + [ + 50.952273, + 14.081462 + ], + [ + 50.952079, + 14.081571 + ], + [ + 50.951917, + 14.081659 + ], + [ + 50.951724, + 14.081749 + ], + [ + 50.951449, + 14.081874 + ], + [ + 50.951288, + 14.08194 + ], + [ + 50.951036, + 14.082029 + ], + [ + 50.950758, + 14.082124 + ], + [ + 50.950573, + 14.082182 + ], + [ + 50.950254, + 14.082262 + ], + [ + 50.950007, + 14.082309 + ], + [ + 50.949568, + 14.082373 + ], + [ + 50.949373, + 14.082394 + ], + [ + 50.949094, + 14.082414 + ], + [ + 50.948954, + 14.08242 + ], + [ + 50.948631, + 14.082421 + ], + [ + 50.948197, + 14.082392 + ], + [ + 50.947846, + 14.082348 + ], + [ + 50.94759, + 14.082305 + ], + [ + 50.947217, + 14.08222 + ], + [ + 50.946854, + 14.082111 + ], + [ + 50.946642, + 14.082035 + ], + [ + 50.946327, + 14.081909 + ], + [ + 50.946218, + 14.081861 + ], + [ + 50.946052, + 14.081785 + ], + [ + 50.945764, + 14.081641 + ], + [ + 50.945521, + 14.081505 + ], + [ + 50.945237, + 14.081311 + ], + [ + 50.945029, + 14.081174 + ], + [ + 50.944697, + 14.080932 + ], + [ + 50.944495, + 14.080766 + ], + [ + 50.944218, + 14.080528 + ], + [ + 50.943994, + 14.080321 + ], + [ + 50.943747, + 14.080076 + ], + [ + 50.943504, + 14.079815 + ], + [ + 50.943262, + 14.079548 + ], + [ + 50.943041, + 14.079269 + ], + [ + 50.942695, + 14.078816 + ], + [ + 50.94259, + 14.078666 + ], + [ + 50.942381, + 14.078354 + ], + [ + 50.942166, + 14.078011 + ], + [ + 50.941724, + 14.077289 + ], + [ + 50.941104, + 14.07626 + ], + [ + 50.941068, + 14.076205 + ], + [ + 50.940824, + 14.07579 + ], + [ + 50.940438, + 14.075111 + ], + [ + 50.940227, + 14.074717 + ], + [ + 50.940117, + 14.074505 + ], + [ + 50.939853, + 14.073973 + ], + [ + 50.939708, + 14.073656 + ], + [ + 50.939602, + 14.073434 + ], + [ + 50.939283, + 14.072704 + ], + [ + 50.939193, + 14.072484 + ], + [ + 50.939045, + 14.072126 + ], + [ + 50.938906, + 14.071772 + ], + [ + 50.938748, + 14.07135 + ], + [ + 50.937782, + 14.068556 + ], + [ + 50.93725, + 14.067008 + ], + [ + 50.936704, + 14.065435 + ], + [ + 50.936002, + 14.063401 + ], + [ + 50.935712, + 14.062552 + ], + [ + 50.935568, + 14.062138 + ], + [ + 50.935287, + 14.061356 + ], + [ + 50.935186, + 14.061088 + ], + [ + 50.935112, + 14.060901 + ], + [ + 50.934974, + 14.060584 + ], + [ + 50.934892, + 14.060401 + ], + [ + 50.934827, + 14.060268 + ], + [ + 50.93468, + 14.059982 + ], + [ + 50.934514, + 14.059683 + ], + [ + 50.934307, + 14.059338 + ], + [ + 50.93421, + 14.059191 + ], + [ + 50.934057, + 14.058969 + ], + [ + 50.933898, + 14.058755 + ], + [ + 50.933779, + 14.0586 + ], + [ + 50.93359, + 14.058373 + ], + [ + 50.933397, + 14.058161 + ], + [ + 50.932892, + 14.057696 + ], + [ + 50.932648, + 14.057503 + ], + [ + 50.932323, + 14.057269 + ], + [ + 50.931219, + 14.056541 + ], + [ + 50.930764, + 14.056228 + ], + [ + 50.93023, + 14.055898 + ], + [ + 50.92995, + 14.055746 + ], + [ + 50.929744, + 14.055639 + ], + [ + 50.929435, + 14.055532 + ], + [ + 50.92919, + 14.055467 + ], + [ + 50.928999, + 14.055431 + ], + [ + 50.928884, + 14.055422 + ], + [ + 50.928678, + 14.055402 + ], + [ + 50.928517, + 14.055392 + ], + [ + 50.928266, + 14.055396 + ], + [ + 50.928055, + 14.05542 + ], + [ + 50.927661, + 14.055503 + ], + [ + 50.927465, + 14.055575 + ], + [ + 50.927388, + 14.055599 + ], + [ + 50.926915, + 14.055794 + ], + [ + 50.926671, + 14.055936 + ], + [ + 50.926472, + 14.056065 + ], + [ + 50.926256, + 14.056212 + ], + [ + 50.926095, + 14.056344 + ], + [ + 50.925951, + 14.056467 + ], + [ + 50.925688, + 14.056724 + ], + [ + 50.925401, + 14.057044 + ], + [ + 50.925254, + 14.05723 + ], + [ + 50.925075, + 14.05748 + ], + [ + 50.924695, + 14.058045 + ], + [ + 50.924583, + 14.05822 + ], + [ + 50.924355, + 14.058593 + ], + [ + 50.923436, + 14.06002 + ], + [ + 50.922722, + 14.061145 + ], + [ + 50.922023, + 14.062241 + ], + [ + 50.921853, + 14.062525 + ], + [ + 50.921677, + 14.062855 + ], + [ + 50.921516, + 14.063182 + ], + [ + 50.921361, + 14.063528 + ], + [ + 50.921237, + 14.063824 + ], + [ + 50.921095, + 14.064197 + ], + [ + 50.920867, + 14.064885 + ], + [ + 50.920821, + 14.065046 + ], + [ + 50.920741, + 14.065343 + ], + [ + 50.920675, + 14.065625 + ], + [ + 50.920593, + 14.066007 + ], + [ + 50.920502, + 14.066477 + ], + [ + 50.920157, + 14.068388 + ], + [ + 50.919873, + 14.06992 + ], + [ + 50.919712, + 14.070887 + ], + [ + 50.91951, + 14.072032 + ], + [ + 50.919411, + 14.072603 + ], + [ + 50.919351, + 14.072991 + ], + [ + 50.919301, + 14.073369 + ], + [ + 50.919262, + 14.073713 + ], + [ + 50.919223, + 14.07415 + ], + [ + 50.919198, + 14.074498 + ], + [ + 50.919187, + 14.074742 + ], + [ + 50.919169, + 14.075333 + ], + [ + 50.919167, + 14.075705 + ], + [ + 50.919178, + 14.076182 + ], + [ + 50.919189, + 14.076485 + ], + [ + 50.919201, + 14.076677 + ], + [ + 50.919224, + 14.076993 + ], + [ + 50.919291, + 14.077685 + ], + [ + 50.91936, + 14.078309 + ], + [ + 50.91961, + 14.08056 + ], + [ + 50.919703, + 14.081421 + ], + [ + 50.919746, + 14.081774 + ], + [ + 50.919835, + 14.082403 + ], + [ + 50.91991, + 14.08285 + ], + [ + 50.919984, + 14.083247 + ], + [ + 50.920062, + 14.083621 + ], + [ + 50.920161, + 14.084061 + ], + [ + 50.920272, + 14.084501 + ], + [ + 50.920379, + 14.084894 + ], + [ + 50.920508, + 14.085333 + ], + [ + 50.92061, + 14.085652 + ], + [ + 50.920698, + 14.085915 + ], + [ + 50.920854, + 14.086348 + ], + [ + 50.921029, + 14.086802 + ], + [ + 50.921136, + 14.087057 + ], + [ + 50.921312, + 14.087454 + ], + [ + 50.921561, + 14.087971 + ], + [ + 50.921676, + 14.088195 + ], + [ + 50.921794, + 14.088416 + ], + [ + 50.921914, + 14.088635 + ], + [ + 50.922039, + 14.088852 + ], + [ + 50.922166, + 14.089065 + ], + [ + 50.922813, + 14.090134 + ], + [ + 50.923671, + 14.091543 + ], + [ + 50.924744, + 14.093313 + ], + [ + 50.924903, + 14.093581 + ], + [ + 50.925037, + 14.093797 + ], + [ + 50.92521, + 14.094094 + ], + [ + 50.925379, + 14.094394 + ], + [ + 50.9255, + 14.094617 + ], + [ + 50.925621, + 14.094848 + ], + [ + 50.925738, + 14.095085 + ], + [ + 50.926015, + 14.095668 + ], + [ + 50.926173, + 14.096033 + ], + [ + 50.926332, + 14.096408 + ], + [ + 50.9265, + 14.096843 + ], + [ + 50.926839, + 14.097778 + ], + [ + 50.927227, + 14.09888 + ], + [ + 50.927404, + 14.099364 + ], + [ + 50.92767, + 14.10012 + ], + [ + 50.92781, + 14.100548 + ], + [ + 50.927889, + 14.100802 + ], + [ + 50.927989, + 14.101149 + ], + [ + 50.928037, + 14.101324 + ], + [ + 50.928106, + 14.101612 + ], + [ + 50.928171, + 14.1019 + ], + [ + 50.928256, + 14.102322 + ], + [ + 50.928306, + 14.10261 + ], + [ + 50.928377, + 14.103047 + ], + [ + 50.928421, + 14.103389 + ], + [ + 50.928456, + 14.103729 + ], + [ + 50.928477, + 14.103967 + ], + [ + 50.92849, + 14.104132 + ], + [ + 50.928511, + 14.104477 + ], + [ + 50.928524, + 14.10476 + ], + [ + 50.928531, + 14.105014 + ], + [ + 50.928532, + 14.105227 + ], + [ + 50.92853, + 14.105457 + ], + [ + 50.928519, + 14.10589 + ], + [ + 50.928504, + 14.106283 + ], + [ + 50.928488, + 14.106539 + ], + [ + 50.928469, + 14.106767 + ], + [ + 50.928438, + 14.107096 + ], + [ + 50.928411, + 14.107351 + ], + [ + 50.928377, + 14.107619 + ], + [ + 50.928341, + 14.107869 + ], + [ + 50.928314, + 14.108039 + ], + [ + 50.928255, + 14.108382 + ], + [ + 50.928192, + 14.108727 + ], + [ + 50.928133, + 14.109031 + ], + [ + 50.928036, + 14.10947 + ], + [ + 50.927938, + 14.109869 + ], + [ + 50.927871, + 14.11013 + ], + [ + 50.927798, + 14.110391 + ], + [ + 50.927705, + 14.110705 + ], + [ + 50.92763, + 14.110936 + ], + [ + 50.927485, + 14.111355 + ], + [ + 50.927358, + 14.111711 + ], + [ + 50.927145, + 14.112272 + ], + [ + 50.926592, + 14.113705 + ], + [ + 50.926169, + 14.114808 + ], + [ + 50.926014, + 14.115217 + ], + [ + 50.925711, + 14.116 + ], + [ + 50.925355, + 14.116941 + ], + [ + 50.924689, + 14.118669 + ], + [ + 50.924336, + 14.119591 + ], + [ + 50.923881, + 14.120783 + ], + [ + 50.923705, + 14.121259 + ], + [ + 50.923593, + 14.121579 + ], + [ + 50.923477, + 14.121923 + ], + [ + 50.923374, + 14.12225 + ], + [ + 50.923269, + 14.122604 + ], + [ + 50.922816, + 14.124261 + ], + [ + 50.922508, + 14.125589 + ], + [ + 50.922362, + 14.126148 + ], + [ + 50.922154, + 14.12691 + ], + [ + 50.921898, + 14.127867 + ], + [ + 50.921704, + 14.128576 + ], + [ + 50.921182, + 14.130555 + ], + [ + 50.921081, + 14.131013 + ], + [ + 50.920805, + 14.132487 + ], + [ + 50.920729, + 14.132846 + ], + [ + 50.920595, + 14.133366 + ], + [ + 50.920153, + 14.135022 + ], + [ + 50.919861, + 14.136153 + ], + [ + 50.919554, + 14.137312 + ] + ], + "interchange": { + "desc": "Fussweg", + "type": 100, + "coords": [ + [ + 50.919491, + 14.137506 + ], + [ + 50.919329, + 14.137726 + ] + ] + }, + "properties": { + "vehicleAccess": [ + { + "height": 0, + "halfWidth": 0, + "doorWidth": 0, + "attributes": 1073741824, + "areaToStay": 0, + "areaToMove": 0 + } + ], + "PlanLowFloorVehicle": "1", + "PlanWheelChairAccess": "1" + } + }, + { + "duration": 540, + "origin": { + "isGlobalId": true, + "id": "de:14628:3620:1:Gleis2", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919316, + 14.137713 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3620", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "Nationalparkbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:10", + "name": "Bad Schandau", + "type": "locality" + }, + "properties": { + "stopId": "33003620" + }, + "coord": [ + 50.91927, + 14.138099 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6, + 9 + ], + "departureTimeBaseTimetable": "2025-07-28T06:48:00Z", + "departureTimePlanned": "2025-07-28T06:48:00Z", + "departureTimeEstimated": "2025-07-28T06:48:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3620:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "destination": { + "isGlobalId": true, + "id": "de:14628:3598:4:Gleis2", + "name": "Sch\u00f6na Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.876046, + 14.234695 + ], + "niveau": 2, + "parent": { + "isGlobalId": true, + "id": "de:14628:3598", + "name": "Sch\u00f6na Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628330:30", + "name": "Sch\u00f6na (bei Pirna)", + "type": "locality" + }, + "properties": { + "stopId": "33003598" + }, + "coord": [ + 50.875684, + 14.234641 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "arrivalTimeBaseTimetable": "2025-07-28T06:57:00Z", + "arrivalTimePlanned": "2025-07-28T06:57:00Z", + "arrivalTimeEstimated": "2025-07-28T06:57:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "2", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3598:4", + "area": "4", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "transportation": { + "id": "ddb:90D28: :R:j25", + "name": "Zug U28", + "disassembledName": "U28", + "number": "U28", + "product": { + "id": 0, + "class": 0, + "name": "Zug", + "iconId": 6 + }, + "operator": { + "code": "8004", + "id": "8004", + "name": "DB Regio AG S\u00fcdost" + }, + "destination": { + "id": "99204383", + "name": "Dec\u00edn, Decin hl.n. (Hauptbahnhof)", + "type": "stop" + }, + "properties": { + "trainName": "Regionalbahn", + "trainType": "RB", + "trainNumber": "28002", + "tripCode": 79, + "timetablePeriod": "Jahresfahrplan 2025", + "lineDisplay": "LINE" + } + }, + "hints": [ + { + "content": "Fahrradmitnahme begrenzt m\u00f6glich", + "providerCode": "FB", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + }, + { + "content": "Fahrzeuggebundene Einstiegshilfe vorhanden", + "providerCode": "EH", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + }, + { + "content": "nur 2. Kl.", + "providerCode": "Y2", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + } + ], + "stopSequence": [ + { + "isGlobalId": true, + "id": "de:14628:3620:1:Gleis2", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919316, + 14.137713 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3620", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "Nationalparkbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:10", + "name": "Bad Schandau", + "type": "locality" + }, + "properties": { + "stopId": "33003620" + }, + "coord": [ + 50.91927, + 14.138099 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6, + 9 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3620:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "departureTimePlanned": "2025-07-28T06:48:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3610:5:Gleis2", + "name": "Krippen Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.913092, + 14.16035 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3610", + "name": "Krippen Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:20", + "name": "Krippen", + "type": "locality" + }, + "properties": { + "stopId": "33003610" + }, + "coord": [ + 50.913109, + 14.16027 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3610:5", + "area": "5", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:50:00Z", + "departureTimePlanned": "2025-07-28T06:50:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3645:3:Gleis2", + "name": "Schmilka Hp Hirschm\u00fchle", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.889813, + 14.22856 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3645", + "name": "Schmilka Hp Hirschm\u00fchle", + "disassembledName": "Hp Hirschm\u00fchle", + "type": "stop", + "parent": { + "id": "placeID:14628030:50", + "name": "Schmilka", + "type": "locality" + }, + "properties": { + "stopId": "33003645" + }, + "coord": [ + 50.88987, + 14.228631 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3645:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:55:00Z", + "departureTimePlanned": "2025-07-28T06:55:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3598:4:Gleis2", + "name": "Sch\u00f6na Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.876046, + 14.234695 + ], + "niveau": 2, + "parent": { + "isGlobalId": true, + "id": "de:14628:3598", + "name": "Sch\u00f6na Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628330:30", + "name": "Sch\u00f6na (bei Pirna)", + "type": "locality" + }, + "properties": { + "stopId": "33003598" + }, + "coord": [ + 50.875684, + 14.234641 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "2", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3598:4", + "area": "4", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T06:57:00Z" + } + ], + "infos": [], + "coords": [ + [ + 50.919258, + 14.137923 + ], + [ + 50.918983, + 14.138965 + ], + [ + 50.918862, + 14.139418 + ], + [ + 50.918585, + 14.140482 + ], + [ + 50.918322, + 14.141459 + ], + [ + 50.918131, + 14.142158 + ], + [ + 50.917962, + 14.14277 + ], + [ + 50.917688, + 14.143762 + ], + [ + 50.917571, + 14.144176 + ], + [ + 50.917227, + 14.145222 + ], + [ + 50.917044, + 14.145921 + ], + [ + 50.916744, + 14.146975 + ], + [ + 50.916442, + 14.147979 + ], + [ + 50.916244, + 14.148603 + ], + [ + 50.915472, + 14.151104 + ], + [ + 50.915102, + 14.152318 + ], + [ + 50.914523, + 14.154195 + ], + [ + 50.914435, + 14.154498 + ], + [ + 50.914286, + 14.155021 + ], + [ + 50.914182, + 14.155426 + ], + [ + 50.91409, + 14.155782 + ], + [ + 50.913699, + 14.157559 + ], + [ + 50.913074, + 14.16042 + ], + [ + 50.912627, + 14.162451 + ], + [ + 50.911985, + 14.165393 + ], + [ + 50.911594, + 14.167201 + ], + [ + 50.911532, + 14.16749 + ], + [ + 50.911486, + 14.167693 + ], + [ + 50.911293, + 14.168569 + ], + [ + 50.910858, + 14.170563 + ], + [ + 50.910818, + 14.170745 + ], + [ + 50.910473, + 14.172244 + ], + [ + 50.910411, + 14.172505 + ], + [ + 50.910278, + 14.173226 + ], + [ + 50.91002, + 14.174322 + ], + [ + 50.909787, + 14.1753 + ], + [ + 50.909351, + 14.177256 + ], + [ + 50.908967, + 14.179034 + ], + [ + 50.908831, + 14.17972 + ], + [ + 50.90869, + 14.18049 + ], + [ + 50.908534, + 14.181433 + ], + [ + 50.908243, + 14.183209 + ], + [ + 50.907818, + 14.185841 + ], + [ + 50.907668, + 14.186762 + ], + [ + 50.90736, + 14.188486 + ], + [ + 50.907252, + 14.189125 + ], + [ + 50.907206, + 14.189362 + ], + [ + 50.907161, + 14.189568 + ], + [ + 50.90712, + 14.18974 + ], + [ + 50.907068, + 14.189984 + ], + [ + 50.90704, + 14.190125 + ], + [ + 50.906987, + 14.190403 + ], + [ + 50.906507, + 14.193132 + ], + [ + 50.906278, + 14.194412 + ], + [ + 50.906166, + 14.195024 + ], + [ + 50.905858, + 14.196575 + ], + [ + 50.905665, + 14.197489 + ], + [ + 50.905462, + 14.198397 + ], + [ + 50.905193, + 14.199503 + ], + [ + 50.90503, + 14.200151 + ], + [ + 50.90486, + 14.200803 + ], + [ + 50.904577, + 14.201844 + ], + [ + 50.904232, + 14.203038 + ], + [ + 50.904076, + 14.203555 + ], + [ + 50.903948, + 14.203966 + ], + [ + 50.903818, + 14.204381 + ], + [ + 50.903569, + 14.20515 + ], + [ + 50.902753, + 14.207573 + ], + [ + 50.901064, + 14.212559 + ], + [ + 50.9006, + 14.213901 + ], + [ + 50.900507, + 14.214151 + ], + [ + 50.900206, + 14.214924 + ], + [ + 50.899933, + 14.215568 + ], + [ + 50.899697, + 14.216101 + ], + [ + 50.899514, + 14.216504 + ], + [ + 50.89932, + 14.216884 + ], + [ + 50.899157, + 14.217203 + ], + [ + 50.898987, + 14.217528 + ], + [ + 50.898818, + 14.217836 + ], + [ + 50.898592, + 14.218232 + ], + [ + 50.898361, + 14.218626 + ], + [ + 50.897411, + 14.220149 + ], + [ + 50.896736, + 14.221224 + ], + [ + 50.896522, + 14.22154 + ], + [ + 50.896335, + 14.221806 + ], + [ + 50.896101, + 14.222115 + ], + [ + 50.895916, + 14.222347 + ], + [ + 50.895728, + 14.222565 + ], + [ + 50.895401, + 14.222925 + ], + [ + 50.895079, + 14.223253 + ], + [ + 50.894765, + 14.223565 + ], + [ + 50.891942, + 14.226335 + ], + [ + 50.891286, + 14.227007 + ], + [ + 50.890265, + 14.228077 + ], + [ + 50.889572, + 14.228807 + ], + [ + 50.888437, + 14.229986 + ], + [ + 50.887477, + 14.231001 + ], + [ + 50.88702, + 14.231453 + ], + [ + 50.886559, + 14.231874 + ], + [ + 50.886082, + 14.232275 + ], + [ + 50.885604, + 14.232656 + ], + [ + 50.885361, + 14.23283 + ], + [ + 50.88478, + 14.233199 + ], + [ + 50.884158, + 14.233557 + ], + [ + 50.883844, + 14.233727 + ], + [ + 50.883445, + 14.233924 + ], + [ + 50.882723, + 14.234233 + ], + [ + 50.882108, + 14.234492 + ], + [ + 50.881517, + 14.234705 + ], + [ + 50.881108, + 14.234833 + ], + [ + 50.880902, + 14.234888 + ], + [ + 50.880592, + 14.234966 + ], + [ + 50.880279, + 14.235028 + ], + [ + 50.879833, + 14.235102 + ], + [ + 50.879117, + 14.235157 + ], + [ + 50.878584, + 14.235157 + ], + [ + 50.878177, + 14.235138 + ], + [ + 50.87777, + 14.235094 + ], + [ + 50.87691, + 14.234937 + ], + [ + 50.876431, + 14.234819 + ], + [ + 50.876237, + 14.234763 + ], + [ + 50.876046, + 14.234699 + ] + ] } ], - "FareZoneOrigin": 10, - "FareZoneDestination": 10, - "RouteId": 0, - "PartialRoutes": [ + "fare": { + "tickets": [ + { + "id": "", + "name": "Einzelkarte", + "comment": "", + "URL": "", + "currency": "EUR", + "priceLevel": "4", + "priceLevelUnit": "Preisstufe", + "priceBrutto": 12.2, + "priceNetto": 11.4, + "taxPercent": 7.0, + "fromLeg": 0, + "toLeg": 2, + "net": "voe", + "person": "ADULT", + "travellerClass": "SECOND", + "timeValidity": "SINGLE", + "validMinutes": 0, + "validityExtent": "ALIGHTING", + "isShortHaul": "NO", + "returnsAllowed": "NO", + "validForOneJourneyOnly": "YES", + "validForOneOperatorOnly": "NO", + "isSupplement": "NO", + "numberOfChanges": 2, + "nameValidityArea": "", + "properties": { + "tariffProductDefault": [], + "tariffProductOption": [] + } + }, + { + "id": "", + "name": "Einzelkarte", + "comment": "", + "URL": "", + "currency": "EUR", + "priceLevel": "4", + "priceLevelUnit": "Preisstufe", + "priceBrutto": 8.4, + "priceNetto": 7.85, + "taxPercent": 7.0, + "fromLeg": 0, + "toLeg": 2, + "net": "voe", + "person": "CHILD", + "travellerClass": "SECOND", + "timeValidity": "SINGLE", + "validMinutes": 0, + "validityExtent": "ALIGHTING", + "isShortHaul": "NO", + "returnsAllowed": "NO", + "validForOneJourneyOnly": "YES", + "validForOneOperatorOnly": "NO", + "isSupplement": "NO", + "numberOfChanges": 2, + "nameValidityArea": "", + "properties": { + "tariffProductDefault": [], + "tariffProductOption": [] + } + } + ], + "zones": [ + { + "net": "voe", + "toLeg": 2, + "fromLeg": 0, + "neutralZone": "", + "zones": [ + [ + "63" + ], + [ + "60" + ], + [ + "61" + ], + [ + "10" + ], + [ + "70" + ], + [ + "72" + ] + ] + } + ] + }, + "daysOfService": { + "rvb": "00000000000000000000000000000000000000000000000079F3E7C0000000F900000000000000000000000000000000" + } + }, + { + "rating": 0, + "isAdditional": false, + "interchanges": 2, + "legs": [ + { + "duration": 3240, + "origin": { + "isGlobalId": true, + "id": "de:14628:1790:3:2", + "name": "Kurort Kipsdorf Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.80591, + 13.676123 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1790", + "name": "Kurort Kipsdorf Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628010:60", + "name": "Kipsdorf Kurort", + "type": "locality" + }, + "properties": { + "stopId": "33001790" + }, + "coord": [ + 50.806852, + 13.676832 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "departureTimeBaseTimetable": "2025-07-28T06:55:00Z", + "departureTimePlanned": "2025-07-28T06:55:00Z", + "departureTimeEstimated": "2025-07-28T06:55:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1790:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "destination": { + "isGlobalId": true, + "id": "de:14612:28:19:5", + "name": "Dresden Hauptbahnhof", + "disassembledName": "5", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.03993, + 13.73419 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:28", + "name": "Dresden Hauptbahnhof", + "disassembledName": "Hauptbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000028" + }, + "coord": [ + 51.03993, + 13.732932 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "arrivalTimeBaseTimetable": "2025-07-28T07:49:00Z", + "arrivalTimePlanned": "2025-07-28T07:49:00Z", + "arrivalTimeEstimated": "2025-07-28T07:49:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "5", + "areaGid": "de:14612:28:19", + "area": "19", + "platform": "5", + "platformName": "5", + "plannedPlatformName": "5", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "transportation": { + "id": "voe:23360: :R:j25", + "name": "PlusBus 360", + "disassembledName": "360", + "number": "360", + "description": "Zinnwald - Altenberg - Kurort Kipsdorf - Dippoldiswalde - Dresden", + "product": { + "id": 11, + "class": 6, + "name": "PlusBus", + "iconId": 3 + }, + "operator": { + "code": "RVSOE", + "id": "3", + "name": "RVSOE" + }, + "destination": { + "id": "33000034", + "name": "Dresden Ammonstra\u00dfe / Budapester Stra\u00dfe", + "type": "stop" + }, + "properties": { + "isSTT": true, + "tripCode": 45, + "timetablePeriod": "Jahresfahrplan 2025 - G\u00fcltig ab 15. Dezember 2024", + "mtSubcode": "321", + "lineDisplay": "LINE", + "globalId": "de:vvo:23-360", + "OperatorURL": "http://www.rvsoe.de" + } + }, + "stopSequence": [ + { + "isGlobalId": true, + "id": "de:14628:1790:3:2", + "name": "Kurort Kipsdorf Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.80591, + 13.676123 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1790", + "name": "Kurort Kipsdorf Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628010:60", + "name": "Kipsdorf Kurort", + "type": "locality" + }, + "properties": { + "stopId": "33001790" + }, + "coord": [ + 50.806852, + 13.676832 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1790:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:636" + }, + "departureTimePlanned": "2025-07-28T06:55:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1535:3:2", + "name": "Schmiedeberg Buschm\u00fchle", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.8267, + 13.689966 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1535", + "name": "Schmiedeberg Buschm\u00fchle", + "disassembledName": "Buschm\u00fchle", + "type": "stop", + "parent": { + "id": "placeID:14628060:190", + "name": "Schmiedeberg (Dippoldiswalde)", + "type": "locality" + }, + "properties": { + "stopId": "33001535" + }, + "coord": [ + 50.826501, + 13.689948 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1535:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605|636" + }, + "arrivalTimePlanned": "2025-07-28T06:58:00Z", + "departureTimePlanned": "2025-07-28T06:58:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1534:0:2", + "name": "Schmiedeberg Ziegengasse", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.833049, + 13.681378 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1534", + "name": "Schmiedeberg Ziegengasse", + "disassembledName": "Ziegengasse", + "type": "stop", + "parent": { + "id": "placeID:14628060:190", + "name": "Schmiedeberg (Dippoldiswalde)", + "type": "locality" + }, + "properties": { + "stopId": "33001534" + }, + "coord": [ + 50.833123, + 13.681252 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1534", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T06:59:00Z", + "departureTimePlanned": "2025-07-28T06:59:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1533:0:2", + "name": "Schmiedeberg Mitte", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.838688, + 13.674793 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1533", + "name": "Schmiedeberg Mitte", + "disassembledName": "Mitte", + "type": "stop", + "parent": { + "id": "placeID:14628060:190", + "name": "Schmiedeberg (Dippoldiswalde)", + "type": "locality" + }, + "properties": { + "stopId": "33001533" + }, + "coord": [ + 50.838047, + 13.675485 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1533", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "vms:;voe:605" + }, + "arrivalTimePlanned": "2025-07-28T07:01:00Z", + "departureTimePlanned": "2025-07-28T07:01:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1532:0:2", + "name": "Schmiedeberg Naundorf Stadion", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.844038, + 13.669637 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1532", + "name": "Schmiedeberg Naundorf Stadion", + "disassembledName": "Naundorf Stadion", + "type": "stop", + "parent": { + "id": "placeID:14628060:190", + "name": "Schmiedeberg (Dippoldiswalde)", + "type": "locality" + }, + "properties": { + "stopId": "33001532" + }, + "coord": [ + 50.843969, + 13.669574 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1532", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T07:03:00Z", + "departureTimePlanned": "2025-07-28T07:03:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1501:0:2", + "name": "Obercarsdorf Bahnbr\u00fccke", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.850418, + 13.666187 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1501", + "name": "Obercarsdorf Bahnbr\u00fccke", + "disassembledName": "Bahnbr\u00fccke", + "type": "stop", + "parent": { + "id": "placeID:14628060:160", + "name": "Obercarsdorf", + "type": "locality" + }, + "properties": { + "stopId": "33001501" + }, + "coord": [ + 50.850055, + 13.666142 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1501", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T07:04:00Z", + "departureTimePlanned": "2025-07-28T07:04:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1500:3:2", + "name": "Obercarsdorf Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.862378, + 13.666026 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1500", + "name": "Obercarsdorf Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628060:160", + "name": "Obercarsdorf", + "type": "locality" + }, + "properties": { + "stopId": "33001500" + }, + "coord": [ + 50.860388, + 13.665415 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1500:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T07:06:00Z", + "departureTimePlanned": "2025-07-28T07:06:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1473:3:2", + "name": "Ulberndorf Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.87387, + 13.671883 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1473", + "name": "Ulberndorf Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628060:110", + "name": "Ulberndorf", + "type": "locality" + }, + "properties": { + "stopId": "33001473" + }, + "coord": [ + 50.874006, + 13.671784 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1473:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T07:08:00Z", + "departureTimePlanned": "2025-07-28T07:08:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1469:1:2", + "name": "Ulberndorf An der Niederm\u00fchle", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.881459, + 13.676302 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1469", + "name": "Ulberndorf An der Niederm\u00fchle", + "disassembledName": "An der Niederm\u00fchle", + "type": "stop", + "parent": { + "id": "placeID:14628060:110", + "name": "Ulberndorf", + "type": "locality" + }, + "properties": { + "stopId": "33001469" + }, + "coord": [ + 50.881397, + 13.676212 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1469:1", + "area": "1", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605|609" + }, + "arrivalTimePlanned": "2025-07-28T07:09:00Z", + "departureTimePlanned": "2025-07-28T07:09:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1408:0:2", + "name": "Dippoldiswalde Wolframsdorfer Stra\u00dfe", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.885976, + 13.672727 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1408", + "name": "Dippoldiswalde Wolframsdorfer Stra\u00dfe", + "disassembledName": "Wolframsdorfer Stra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14628060:20", + "name": "Dippoldiswalde", + "type": "locality" + }, + "properties": { + "stopId": "33001408" + }, + "coord": [ + 50.885942, + 13.672538 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1408", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605|609" + }, + "arrivalTimePlanned": "2025-07-28T07:10:00Z", + "departureTimePlanned": "2025-07-28T07:10:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1400:0:1", + "name": "Dippoldiswalde Busbahnhof", + "disassembledName": "1", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.895162, + 13.668649 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1400", + "name": "Dippoldiswalde Busbahnhof", + "disassembledName": "Busbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628060:20", + "name": "Dippoldiswalde", + "type": "locality" + }, + "properties": { + "stopId": "33001400" + }, + "coord": [ + 50.895026, + 13.668487 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14628:1400", + "area": "0", + "platform": "1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605|609" + }, + "arrivalTimePlanned": "2025-07-28T07:13:00Z", + "departureTimePlanned": "2025-07-28T07:15:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1451:0:2", + "name": "Oberh\u00e4slich Gasthof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.909314, + 13.696523 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1451", + "name": "Oberh\u00e4slich Gasthof", + "disassembledName": "Gasthof", + "type": "stop", + "parent": { + "id": "placeID:14628060:50", + "name": "Oberh\u00e4slich", + "type": "locality" + }, + "properties": { + "stopId": "33001451" + }, + "coord": [ + 50.909274, + 13.696299 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1451", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:609|615" + }, + "arrivalTimePlanned": "2025-07-28T07:19:00Z", + "departureTimePlanned": "2025-07-28T07:19:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1452:0:2", + "name": "Oberh\u00e4slich Abzweig Reinberg", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.929067, + 13.705749 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1452", + "name": "Oberh\u00e4slich Abzweig Reinberg", + "disassembledName": "Abzweig Reinberg", + "type": "stop", + "parent": { + "id": "placeID:14628060:50", + "name": "Oberh\u00e4slich", + "type": "locality" + }, + "properties": { + "stopId": "33001452" + }, + "coord": [ + 50.929095, + 13.705677 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1452", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:609|615" + }, + "arrivalTimePlanned": "2025-07-28T07:21:00Z", + "departureTimePlanned": "2025-07-28T07:21:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1286:0:2", + "name": "Karsdorf B 170", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.944334, + 13.70123 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1286", + "name": "Karsdorf B 170", + "disassembledName": "B 170", + "type": "stop", + "parent": { + "id": "placeID:14628300:10", + "name": "Karsdorf (bei Freital)", + "type": "locality" + }, + "properties": { + "stopId": "33001286" + }, + "coord": [ + 50.943649, + 13.701293 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1286", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:615" + }, + "arrivalTimePlanned": "2025-07-28T07:23:00Z", + "departureTimePlanned": "2025-07-28T07:23:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1050:0:2", + "name": "Possendorf Rundteil", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.955172, + 13.700575 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1050", + "name": "Possendorf Rundteil", + "disassembledName": "Rundteil", + "type": "stop", + "parent": { + "id": "placeID:14628050:90", + "name": "Possendorf (Bannewitz)", + "type": "locality" + }, + "properties": { + "stopId": "33001050" + }, + "coord": [ + 50.955415, + 13.700638 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1050", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:615" + }, + "arrivalTimePlanned": "2025-07-28T07:25:00Z", + "departureTimePlanned": "2025-07-28T07:25:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1030:0:2", + "name": "Possendorf Kastanienallee", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.968151, + 13.712468 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1030", + "name": "Possendorf Kastanienallee", + "disassembledName": "Kastanienallee", + "type": "stop", + "parent": { + "id": "placeID:14628050:90", + "name": "Possendorf (Bannewitz)", + "type": "locality" + }, + "properties": { + "stopId": "33001030" + }, + "coord": [ + 50.96801, + 13.712486 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1030", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:615" + }, + "arrivalTimePlanned": "2025-07-28T07:27:00Z", + "departureTimePlanned": "2025-07-28T07:28:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1059:0:2", + "name": "H\u00e4nichen Am K\u00e4ferberg", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.975856, + 13.715451 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1059", + "name": "H\u00e4nichen Am K\u00e4ferberg", + "disassembledName": "Am K\u00e4ferberg", + "type": "stop", + "parent": { + "id": "placeID:14628050:80", + "name": "H\u00e4nichen", + "type": "locality" + }, + "properties": { + "stopId": "33001059" + }, + "coord": [ + 50.975562, + 13.715038 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1059", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T07:30:00Z", + "departureTimePlanned": "2025-07-28T07:30:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1061:0:2", + "name": "H\u00e4nichen Pulverweg", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.979266, + 13.71767 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1061", + "name": "H\u00e4nichen Pulverweg", + "disassembledName": "Pulverweg", + "type": "stop", + "parent": { + "id": "placeID:14628050:80", + "name": "H\u00e4nichen", + "type": "locality" + }, + "properties": { + "stopId": "33001061" + }, + "coord": [ + 50.97908, + 13.717571 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1061:1", + "area": "1", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T07:31:00Z", + "departureTimePlanned": "2025-07-28T07:31:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1074:0:2", + "name": "Bannewitz Welschhufe", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.983519, + 13.714822 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1074", + "name": "Bannewitz Welschhufe", + "disassembledName": "Welschhufe", + "type": "stop", + "parent": { + "id": "placeID:14628050:10", + "name": "Bannewitz", + "type": "locality" + }, + "properties": { + "stopId": "33001074" + }, + "coord": [ + 50.983881, + 13.714606 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1074", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T07:32:00Z", + "departureTimePlanned": "2025-07-28T07:32:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1076:0:2", + "name": "Bannewitz Windbergstra\u00dfe", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.993975, + 13.717804 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1076", + "name": "Bannewitz Windbergstra\u00dfe", + "disassembledName": "Windbergstra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14628050:10", + "name": "Bannewitz", + "type": "locality" + }, + "properties": { + "stopId": "33001076" + }, + "coord": [ + 50.993862, + 13.717625 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1076", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T07:35:00Z", + "departureTimePlanned": "2025-07-28T07:35:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1070:0:2", + "name": "Bannewitz Boderitzer Stra\u00dfe", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.998385, + 13.719978 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1070", + "name": "Bannewitz Boderitzer Stra\u00dfe", + "disassembledName": "Boderitzer Stra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14628050:10", + "name": "Bannewitz", + "type": "locality" + }, + "properties": { + "stopId": "33001070" + }, + "coord": [ + 50.998526, + 13.72005 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1070", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T07:36:00Z", + "departureTimePlanned": "2025-07-28T07:36:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1072:0:2", + "name": "Bannewitz N\u00f6thnitz", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.004733, + 13.728692 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1072", + "name": "Bannewitz N\u00f6thnitz", + "disassembledName": "N\u00f6thnitz", + "type": "stop", + "parent": { + "id": "placeID:14628050:10", + "name": "Bannewitz", + "type": "locality" + }, + "properties": { + "stopId": "33001072" + }, + "coord": [ + 51.004315, + 13.727892 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1072", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:103|612" + }, + "arrivalTimePlanned": "2025-07-28T07:38:00Z", + "departureTimePlanned": "2025-07-28T07:38:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:733:1:1", + "name": "Dresden S\u00fcdh\u00f6he", + "disassembledName": "1", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.019931, + 13.729734 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:733", + "name": "Dresden S\u00fcdh\u00f6he", + "disassembledName": "S\u00fcdh\u00f6he", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000733" + }, + "coord": [ + 51.019716, + 13.729599 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6, + 10 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14612:733:1", + "area": "1", + "platform": "1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:103" + }, + "arrivalTimePlanned": "2025-07-28T07:42:00Z", + "departureTimePlanned": "2025-07-28T07:42:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:732:1:1", + "name": "Dresden Mommsenstra\u00dfe", + "disassembledName": "1", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.027615, + 13.731495 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:732", + "name": "Dresden Mommsenstra\u00dfe", + "disassembledName": "Mommsenstra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000732" + }, + "coord": [ + 51.027514, + 13.731378 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14612:732:1", + "area": "1", + "platform": "1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:103" + }, + "arrivalTimePlanned": "2025-07-28T07:44:00Z", + "departureTimePlanned": "2025-07-28T07:44:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:727:1:3", + "name": "Dresden Techn. Universit\u00e4t (Fr.-Foerster-Platz)", + "disassembledName": "3", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.029429, + 13.731073 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:727", + "name": "Dresden Techn. Universit\u00e4t (Fr.-Foerster-Platz)", + "disassembledName": "Technische Universit\u00e4t (Fr.-Foerster-Platz)", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000727" + }, + "coord": [ + 51.029892, + 13.73092 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "3", + "areaGid": "de:14612:727:1", + "area": "1", + "platform": "3", + "platformName": "3", + "plannedPlatformName": "3", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "vms:;voe:103" + }, + "arrivalTimePlanned": "2025-07-28T07:45:00Z", + "departureTimePlanned": "2025-07-28T07:45:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:131:2:3", + "name": "Dresden Reichenbachstra\u00dfe", + "disassembledName": "3", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.034813, + 13.731495 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:131", + "name": "Dresden Reichenbachstra\u00dfe", + "disassembledName": "Reichenbachstra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000131" + }, + "coord": [ + 51.035123, + 13.731387 + ], + "niveau": 0 + }, + "productClasses": [ + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "3", + "areaGid": "de:14612:131:2", + "area": "2", + "platform": "3", + "platformName": "3", + "plannedPlatformName": "3", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:103" + }, + "arrivalTimePlanned": "2025-07-28T07:47:00Z", + "departureTimePlanned": "2025-07-28T07:47:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:28:19:5", + "name": "Dresden Hauptbahnhof", + "disassembledName": "5", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.03993, + 13.73419 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:28", + "name": "Dresden Hauptbahnhof", + "disassembledName": "Hauptbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000028" + }, + "coord": [ + 51.03993, + 13.732932 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "5", + "areaGid": "de:14612:28:19", + "area": "19", + "platform": "5", + "platformName": "5", + "plannedPlatformName": "5", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "vms:;voe:103;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T07:49:00Z" + } + ], + "footPathInfo": [ + { + "position": "AFTER", + "duration": 360, + "footPathElem": [ + { + "description": "", + "type": "LEVEL", + "levelFrom": 0, + "levelTo": 0, + "level": "LEVEL", + "origin": { + "id": "de:14612:28", + "isGlobalId": true, + "type": "stop", + "name": "Hauptbahnhof", + "coord": [ + 51.03993, + 13.73419 + ], + "properties": { + "area": "19", + "georef": "1026791365:12:MRCV:100", + "areaGid": "de:14612:28:19", + "areaType": 113 + } + }, + "destination": { + "id": "de:14612:28", + "isGlobalId": true, + "type": "stop", + "name": "Hauptbahnhof", + "coord": [ + 51.039885, + 13.733148 + ], + "properties": { + "area": "7", + "georef": "1038172568:4:MRCV:100", + "areaGid": "de:14612:28:7", + "areaType": 32 + } + }, + "attributes": { + "duration": 30, + "distance": 0, + "narrowestWidth": -1, + "elevLength": 0, + "elevWidth": 0, + "elevDoorWidth": 0, + "rampLength": 0, + "rampWidth": 0, + "rampInclination": 0, + "numberSteps": 0, + "maxStepHeight": 0 + }, + "openingHours": [] + }, + { + "description": "", + "type": "STAIRS", + "levelFrom": 0, + "levelTo": 1, + "level": "UP", + "origin": { + "id": "de:14612:28", + "isGlobalId": true, + "type": "stop", + "name": "Hauptbahnhof", + "coord": [ + 51.039885, + 13.733148 + ], + "properties": { + "area": "7", + "georef": "1038172568:4:MRCV:100", + "areaGid": "de:14612:28:7", + "areaType": 32 + } + }, + "destination": { + "id": "de:14612:28", + "isGlobalId": true, + "type": "stop", + "name": "Hauptbahnhof", + "coord": [ + 51.0408, + 13.7318 + ], + "properties": { + "area": "8", + "georef": "1010446542:49:MRCV:100", + "areaGid": "de:14612:28:8", + "areaType": 209 + } + }, + "attributes": { + "duration": 30, + "distance": 0, + "narrowestWidth": -1, + "elevLength": 0, + "elevWidth": 0, + "elevDoorWidth": 0, + "rampLength": 0, + "rampWidth": 0, + "rampInclination": 0, + "numberSteps": 0, + "maxStepHeight": 0 + }, + "openingHours": [] + } + ] + } + ], + "infos": [ + { + "priority": "normal", + "id": "23612", + "version": 269026261, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Sperrung der Alte Altenberger Stra\u00dfe in Dippoldiswalde", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23612&seqID=269026261", + "content": "

Ab Montag, den 21. Juli 2025 bis Freitag, den 22. August 2025 kommt es zur Vollsperrung der Alte Altenberger Stra\u00dfe in Dippoldiswalde zwischen dem Schulg\u00e4\u00dfchen und der Gartenstra\u00dfe. 
Der Busbahnhof Dippoldiswalde wird von allen Linienbussen bedient.

", + "subtitle": "Sperrung der Alte Altenberger Stra\u00dfe in Dippoldiswalde", + "title": "Linienaenderung", + "additionalText": "inEFA=\"false\";MeldungTyp=\"Information\"", + "htmlText": "

Ab Montag, den 21. Juli 2025 bis Freitag, den 22. August 2025 kommt es zur Vollsperrung der Alte Altenberger Stra\u00dfe in Dippoldiswalde zwischen dem Schulg\u00e4\u00dfchen und der Gartenstra\u00dfe. 
Der Busbahnhof Dippoldiswalde wird von allen Linienbussen bedient.

" + } + ] + }, + { + "priority": "normal", + "id": "23586", + "version": 268412461, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Teilweise Sperrung des Busbahnhofes in Dippoldiswalde", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23586&seqID=268412461", + "content": "

Am Mittwoch, den 9. Juli 2025 kommt es zur teilweisen Sperrung des Busbahnhofes in Dippoldiswalde, die voraussichtlich bis zum 30. April 2026 erfolgen wird. Die Busse der Linien +360 und 370 befahren den Busbahnhof \u00fcber die Einfahrt von der B170 direkt und bedienen die entsprechenden Abfahrtsst\u00e4nde.

Alle Fahrten vom Bussteig 10 werden an den Bussteig 8 verlegt.

", + "subtitle": "Teilweise Sperrung des Busbahnhofes in Dippoldiswalde", + "title": "Linienaenderung", + "additionalText": "inEFA=\"false\";MeldungTyp=\"Information\"", + "htmlText": "

Am Mittwoch, den 9. Juli 2025 kommt es zur teilweisen Sperrung des Busbahnhofes in Dippoldiswalde, die voraussichtlich bis zum 30. April 2026 erfolgen wird. Die Busse der Linien +360 und 370 befahren den Busbahnhof \u00fcber die Einfahrt von der B170 direkt und bedienen die entsprechenden Abfahrtsst\u00e4nde.

Alle Fahrten vom Bussteig 10 werden an den Bussteig 8 verlegt.

" + } + ] + } + ], + "coords": [ + [ + 50.80587, + 13.676275 + ], + [ + 50.806008, + 13.676362 + ], + [ + 50.806593, + 13.676719 + ], + [ + 50.806692, + 13.676776 + ], + [ + 50.807301, + 13.677014 + ], + [ + 50.808424, + 13.677406 + ], + [ + 50.808627, + 13.677479 + ], + [ + 50.809724, + 13.677849 + ], + [ + 50.809941, + 13.677933 + ], + [ + 50.810141, + 13.678029 + ], + [ + 50.810296, + 13.678129 + ], + [ + 50.810426, + 13.678222 + ], + [ + 50.811132, + 13.678702 + ], + [ + 50.811214, + 13.678754 + ], + [ + 50.811733, + 13.67911 + ], + [ + 50.812904, + 13.67992 + ], + [ + 50.813744, + 13.680497 + ], + [ + 50.813923, + 13.680654 + ], + [ + 50.814094, + 13.680871 + ], + [ + 50.81466, + 13.681788 + ], + [ + 50.815097, + 13.682505 + ], + [ + 50.815814, + 13.683688 + ], + [ + 50.816172, + 13.68428 + ], + [ + 50.816294, + 13.684487 + ], + [ + 50.816992, + 13.685612 + ], + [ + 50.818887, + 13.68872 + ], + [ + 50.819648, + 13.689959 + ], + [ + 50.820067, + 13.690646 + ], + [ + 50.820504, + 13.691378 + ], + [ + 50.820755, + 13.69179 + ], + [ + 50.820892, + 13.691993 + ], + [ + 50.82104, + 13.692173 + ], + [ + 50.821159, + 13.692296 + ], + [ + 50.821678, + 13.692743 + ], + [ + 50.821808, + 13.692846 + ], + [ + 50.821884, + 13.692901 + ], + [ + 50.822118, + 13.692985 + ], + [ + 50.822237, + 13.693001 + ], + [ + 50.822357, + 13.692996 + ], + [ + 50.822522, + 13.692959 + ], + [ + 50.822694, + 13.69291 + ], + [ + 50.822848, + 13.692863 + ], + [ + 50.823002, + 13.692809 + ], + [ + 50.823206, + 13.692748 + ], + [ + 50.823449, + 13.69267 + ], + [ + 50.823589, + 13.692599 + ], + [ + 50.823721, + 13.692505 + ], + [ + 50.823851, + 13.692377 + ], + [ + 50.824833, + 13.691242 + ], + [ + 50.825153, + 13.690882 + ], + [ + 50.825277, + 13.690754 + ], + [ + 50.825474, + 13.690558 + ], + [ + 50.825696, + 13.690421 + ], + [ + 50.826131, + 13.690171 + ], + [ + 50.826298, + 13.690077 + ], + [ + 50.82668, + 13.689874 + ], + [ + 50.826818, + 13.6898 + ], + [ + 50.827326, + 13.689541 + ], + [ + 50.827484, + 13.689441 + ], + [ + 50.82768, + 13.689238 + ], + [ + 50.827948, + 13.688922 + ], + [ + 50.828079, + 13.688756 + ], + [ + 50.828217, + 13.688608 + ], + [ + 50.828445, + 13.688384 + ], + [ + 50.828705, + 13.68818 + ], + [ + 50.828814, + 13.688092 + ], + [ + 50.828941, + 13.68795 + ], + [ + 50.829111, + 13.687601 + ], + [ + 50.829176, + 13.68739 + ], + [ + 50.829304, + 13.6868 + ], + [ + 50.829353, + 13.686547 + ], + [ + 50.829388, + 13.686431 + ], + [ + 50.82942, + 13.686338 + ], + [ + 50.82948, + 13.686206 + ], + [ + 50.829597, + 13.686025 + ], + [ + 50.82997, + 13.685511 + ], + [ + 50.830023, + 13.685441 + ], + [ + 50.830076, + 13.685373 + ], + [ + 50.831127, + 13.68392 + ], + [ + 50.831262, + 13.683746 + ], + [ + 50.831411, + 13.68354 + ], + [ + 50.831466, + 13.683471 + ], + [ + 50.831605, + 13.683274 + ], + [ + 50.831621, + 13.683257 + ], + [ + 50.831773, + 13.683053 + ], + [ + 50.831948, + 13.682794 + ], + [ + 50.83196, + 13.682773 + ], + [ + 50.831989, + 13.682745 + ], + [ + 50.832148, + 13.682544 + ], + [ + 50.83234, + 13.682282 + ], + [ + 50.832381, + 13.682222 + ], + [ + 50.832447, + 13.682131 + ], + [ + 50.83284, + 13.681594 + ], + [ + 50.832853, + 13.68158 + ], + [ + 50.832934, + 13.681466 + ], + [ + 50.832955, + 13.681441 + ], + [ + 50.833024, + 13.681343 + ], + [ + 50.833211, + 13.681089 + ], + [ + 50.833275, + 13.680995 + ], + [ + 50.833899, + 13.680145 + ], + [ + 50.8342, + 13.679745 + ], + [ + 50.834512, + 13.679297 + ], + [ + 50.834563, + 13.679231 + ], + [ + 50.834889, + 13.67878 + ], + [ + 50.834925, + 13.678736 + ], + [ + 50.835135, + 13.678444 + ], + [ + 50.835255, + 13.678242 + ], + [ + 50.835335, + 13.678198 + ], + [ + 50.8354, + 13.678139 + ], + [ + 50.835539, + 13.677954 + ], + [ + 50.835559, + 13.677915 + ], + [ + 50.835581, + 13.67788 + ], + [ + 50.835681, + 13.677687 + ], + [ + 50.835794, + 13.677462 + ], + [ + 50.835923, + 13.677261 + ], + [ + 50.836031, + 13.677125 + ], + [ + 50.836119, + 13.677057 + ], + [ + 50.836248, + 13.676936 + ], + [ + 50.836281, + 13.676928 + ], + [ + 50.836303, + 13.676924 + ], + [ + 50.836382, + 13.676851 + ], + [ + 50.836412, + 13.676807 + ], + [ + 50.836504, + 13.676685 + ], + [ + 50.83655, + 13.676631 + ], + [ + 50.836683, + 13.676349 + ], + [ + 50.83674, + 13.676199 + ], + [ + 50.83679, + 13.676133 + ], + [ + 50.836864, + 13.676098 + ], + [ + 50.8369, + 13.676088 + ], + [ + 50.836906, + 13.675927 + ], + [ + 50.837006, + 13.675929 + ], + [ + 50.83714, + 13.675916 + ], + [ + 50.837484, + 13.675873 + ], + [ + 50.837531, + 13.675862 + ], + [ + 50.837577, + 13.675855 + ], + [ + 50.837692, + 13.67582 + ], + [ + 50.837741, + 13.675794 + ], + [ + 50.837824, + 13.675741 + ], + [ + 50.837862, + 13.6757 + ], + [ + 50.8379, + 13.67567 + ], + [ + 50.838164, + 13.675332 + ], + [ + 50.838658, + 13.674726 + ], + [ + 50.838788, + 13.674566 + ], + [ + 50.839118, + 13.674141 + ], + [ + 50.839347, + 13.673861 + ], + [ + 50.839654, + 13.673476 + ], + [ + 50.839969, + 13.673085 + ], + [ + 50.840239, + 13.672839 + ], + [ + 50.840467, + 13.672741 + ], + [ + 50.840664, + 13.672686 + ], + [ + 50.84086, + 13.672634 + ], + [ + 50.841083, + 13.672523 + ], + [ + 50.841272, + 13.672375 + ], + [ + 50.84151, + 13.67215 + ], + [ + 50.84221, + 13.671317 + ], + [ + 50.842416, + 13.67115 + ], + [ + 50.84276, + 13.670956 + ], + [ + 50.843144, + 13.670745 + ], + [ + 50.843268, + 13.670645 + ], + [ + 50.843335, + 13.670588 + ], + [ + 50.843456, + 13.670433 + ], + [ + 50.843655, + 13.670115 + ], + [ + 50.843791, + 13.669889 + ], + [ + 50.843986, + 13.669554 + ], + [ + 50.844072, + 13.669409 + ], + [ + 50.844161, + 13.669262 + ], + [ + 50.844272, + 13.669108 + ], + [ + 50.844412, + 13.668942 + ], + [ + 50.844668, + 13.668684 + ], + [ + 50.844804, + 13.668566 + ], + [ + 50.84505, + 13.668361 + ], + [ + 50.845269, + 13.668231 + ], + [ + 50.845608, + 13.668093 + ], + [ + 50.846452, + 13.667763 + ], + [ + 50.847365, + 13.667423 + ], + [ + 50.847627, + 13.667314 + ], + [ + 50.847884, + 13.66719 + ], + [ + 50.847911, + 13.667172 + ], + [ + 50.848141, + 13.667047 + ], + [ + 50.848305, + 13.666949 + ], + [ + 50.8488, + 13.666665 + ], + [ + 50.849183, + 13.666442 + ], + [ + 50.84946, + 13.666297 + ], + [ + 50.849536, + 13.666265 + ], + [ + 50.850001, + 13.666154 + ], + [ + 50.850406, + 13.66609 + ], + [ + 50.850623, + 13.666054 + ], + [ + 50.85102, + 13.665982 + ], + [ + 50.852124, + 13.665797 + ], + [ + 50.85232, + 13.665766 + ], + [ + 50.852514, + 13.66573 + ], + [ + 50.852842, + 13.665674 + ], + [ + 50.853676, + 13.665539 + ], + [ + 50.854205, + 13.665496 + ], + [ + 50.854313, + 13.665482 + ], + [ + 50.855234, + 13.66541 + ], + [ + 50.855719, + 13.665365 + ], + [ + 50.85596, + 13.66535 + ], + [ + 50.856211, + 13.665325 + ], + [ + 50.856432, + 13.665306 + ], + [ + 50.857616, + 13.665179 + ], + [ + 50.857842, + 13.665161 + ], + [ + 50.858241, + 13.665142 + ], + [ + 50.858348, + 13.665131 + ], + [ + 50.858578, + 13.665121 + ], + [ + 50.858977, + 13.66509 + ], + [ + 50.859123, + 13.665088 + ], + [ + 50.85922, + 13.665097 + ], + [ + 50.859718, + 13.665216 + ], + [ + 50.860214, + 13.665357 + ], + [ + 50.860884, + 13.665532 + ], + [ + 50.861044, + 13.665578 + ], + [ + 50.861802, + 13.665776 + ], + [ + 50.862227, + 13.665894 + ], + [ + 50.86239, + 13.665935 + ], + [ + 50.862847, + 13.666058 + ], + [ + 50.863003, + 13.666123 + ], + [ + 50.863069, + 13.666166 + ], + [ + 50.863144, + 13.66622 + ], + [ + 50.863271, + 13.666378 + ], + [ + 50.863329, + 13.666491 + ], + [ + 50.863357, + 13.666556 + ], + [ + 50.863394, + 13.666655 + ], + [ + 50.863415, + 13.666726 + ], + [ + 50.863457, + 13.666895 + ], + [ + 50.86351, + 13.667124 + ], + [ + 50.863551, + 13.667232 + ], + [ + 50.863594, + 13.667314 + ], + [ + 50.863604, + 13.66733 + ], + [ + 50.863663, + 13.667405 + ], + [ + 50.863728, + 13.667473 + ], + [ + 50.863792, + 13.667517 + ], + [ + 50.863857, + 13.66755 + ], + [ + 50.864183, + 13.66764 + ], + [ + 50.864399, + 13.667725 + ], + [ + 50.864503, + 13.667775 + ], + [ + 50.864747, + 13.667901 + ], + [ + 50.865373, + 13.668217 + ], + [ + 50.865957, + 13.668518 + ], + [ + 50.866582, + 13.668897 + ], + [ + 50.866934, + 13.669096 + ], + [ + 50.867457, + 13.669386 + ], + [ + 50.867885, + 13.669629 + ], + [ + 50.868336, + 13.669861 + ], + [ + 50.868636, + 13.670029 + ], + [ + 50.868783, + 13.670099 + ], + [ + 50.868888, + 13.670159 + ], + [ + 50.869041, + 13.670256 + ], + [ + 50.869141, + 13.670304 + ], + [ + 50.869244, + 13.670348 + ], + [ + 50.86939, + 13.670386 + ], + [ + 50.869534, + 13.670409 + ], + [ + 50.869662, + 13.670409 + ], + [ + 50.869851, + 13.670373 + ], + [ + 50.869944, + 13.670331 + ], + [ + 50.870101, + 13.670251 + ], + [ + 50.870272, + 13.670149 + ], + [ + 50.870557, + 13.669955 + ], + [ + 50.870803, + 13.669826 + ], + [ + 50.871072, + 13.66975 + ], + [ + 50.871303, + 13.669733 + ], + [ + 50.871491, + 13.669749 + ], + [ + 50.871752, + 13.669789 + ], + [ + 50.872179, + 13.66987 + ], + [ + 50.872441, + 13.669976 + ], + [ + 50.872574, + 13.670056 + ], + [ + 50.872737, + 13.670188 + ], + [ + 50.872846, + 13.670285 + ], + [ + 50.872964, + 13.670413 + ], + [ + 50.873074, + 13.670557 + ], + [ + 50.873165, + 13.670697 + ], + [ + 50.873393, + 13.671067 + ], + [ + 50.873516, + 13.671251 + ], + [ + 50.87365, + 13.671472 + ], + [ + 50.8737, + 13.671548 + ], + [ + 50.873815, + 13.671722 + ], + [ + 50.873898, + 13.671821 + ], + [ + 50.873921, + 13.671848 + ], + [ + 50.874026, + 13.671957 + ], + [ + 50.874137, + 13.672053 + ], + [ + 50.874246, + 13.672138 + ], + [ + 50.874487, + 13.672333 + ], + [ + 50.874542, + 13.672371 + ], + [ + 50.875598, + 13.673183 + ], + [ + 50.875769, + 13.673344 + ], + [ + 50.876006, + 13.673646 + ], + [ + 50.876308, + 13.67409 + ], + [ + 50.87655, + 13.674467 + ], + [ + 50.876866, + 13.674895 + ], + [ + 50.876965, + 13.675034 + ], + [ + 50.877402, + 13.675633 + ], + [ + 50.877623, + 13.675946 + ], + [ + 50.877836, + 13.676256 + ], + [ + 50.878009, + 13.676497 + ], + [ + 50.878144, + 13.676672 + ], + [ + 50.878267, + 13.676809 + ], + [ + 50.878429, + 13.67697 + ], + [ + 50.878551, + 13.677068 + ], + [ + 50.878716, + 13.677169 + ], + [ + 50.878858, + 13.677245 + ], + [ + 50.878989, + 13.677296 + ], + [ + 50.879029, + 13.677302 + ], + [ + 50.879133, + 13.677329 + ], + [ + 50.879329, + 13.67734 + ], + [ + 50.879645, + 13.677299 + ], + [ + 50.879858, + 13.677234 + ], + [ + 50.880299, + 13.677052 + ], + [ + 50.880551, + 13.676916 + ], + [ + 50.880748, + 13.676793 + ], + [ + 50.880983, + 13.676633 + ], + [ + 50.881167, + 13.676484 + ], + [ + 50.881428, + 13.676222 + ], + [ + 50.881527, + 13.676123 + ], + [ + 50.881723, + 13.675917 + ], + [ + 50.881901, + 13.675743 + ], + [ + 50.88204, + 13.675597 + ], + [ + 50.882085, + 13.675554 + ], + [ + 50.882236, + 13.675399 + ], + [ + 50.882445, + 13.675195 + ], + [ + 50.882734, + 13.674971 + ], + [ + 50.883133, + 13.674693 + ], + [ + 50.883349, + 13.674564 + ], + [ + 50.883458, + 13.674505 + ], + [ + 50.884279, + 13.674124 + ], + [ + 50.884604, + 13.673892 + ], + [ + 50.884901, + 13.673618 + ], + [ + 50.885708, + 13.67286 + ], + [ + 50.885913, + 13.672653 + ], + [ + 50.885932, + 13.672631 + ], + [ + 50.886143, + 13.672393 + ], + [ + 50.886597, + 13.671873 + ], + [ + 50.886768, + 13.671692 + ], + [ + 50.88716, + 13.671302 + ], + [ + 50.887267, + 13.671186 + ], + [ + 50.88738, + 13.671044 + ], + [ + 50.887507, + 13.670833 + ], + [ + 50.887853, + 13.670179 + ], + [ + 50.887901, + 13.670109 + ], + [ + 50.888094, + 13.669814 + ], + [ + 50.88836, + 13.6695 + ], + [ + 50.888714, + 13.669131 + ], + [ + 50.888822, + 13.66903 + ], + [ + 50.889093, + 13.668767 + ], + [ + 50.889333, + 13.668648 + ], + [ + 50.889979, + 13.668431 + ], + [ + 50.89035, + 13.668299 + ], + [ + 50.890825, + 13.668222 + ], + [ + 50.89099, + 13.668211 + ], + [ + 50.891064, + 13.668213 + ], + [ + 50.891068, + 13.668075 + ], + [ + 50.891106, + 13.667939 + ], + [ + 50.891182, + 13.667703 + ], + [ + 50.891275, + 13.667422 + ], + [ + 50.891376, + 13.66717 + ], + [ + 50.891445, + 13.667039 + ], + [ + 50.891505, + 13.666982 + ], + [ + 50.89163, + 13.666897 + ], + [ + 50.891721, + 13.666878 + ], + [ + 50.891878, + 13.666913 + ], + [ + 50.89224, + 13.667019 + ], + [ + 50.892296, + 13.666985 + ], + [ + 50.892387, + 13.667097 + ], + [ + 50.89253, + 13.667196 + ], + [ + 50.892681, + 13.667314 + ], + [ + 50.892748, + 13.667354 + ], + [ + 50.892795, + 13.667374 + ], + [ + 50.892852, + 13.667388 + ], + [ + 50.892897, + 13.66739 + ], + [ + 50.892979, + 13.667383 + ], + [ + 50.893059, + 13.667363 + ], + [ + 50.893235, + 13.667291 + ], + [ + 50.893317, + 13.667273 + ], + [ + 50.893395, + 13.667265 + ], + [ + 50.893482, + 13.667264 + ], + [ + 50.89357, + 13.66728 + ], + [ + 50.893642, + 13.667305 + ], + [ + 50.893756, + 13.667376 + ], + [ + 50.894268, + 13.66775 + ], + [ + 50.894537, + 13.667953 + ], + [ + 50.8948, + 13.668172 + ], + [ + 50.894855, + 13.668213 + ], + [ + 50.894901, + 13.668328 + ], + [ + 50.894944, + 13.668406 + ], + [ + 50.894985, + 13.668463 + ], + [ + 50.89513, + 13.668629 + ], + [ + 50.895155, + 13.668654 + ], + [ + 50.895214, + 13.668714 + ], + [ + 50.895249, + 13.668718 + ], + [ + 50.895305, + 13.668697 + ], + [ + 50.895403, + 13.668886 + ], + [ + 50.895558, + 13.669207 + ], + [ + 50.895666, + 13.669448 + ], + [ + 50.895748, + 13.669677 + ], + [ + 50.895788, + 13.669844 + ], + [ + 50.895799, + 13.669981 + ], + [ + 50.895781, + 13.670208 + ], + [ + 50.895726, + 13.670456 + ], + [ + 50.895614, + 13.670922 + ], + [ + 50.895593, + 13.671014 + ], + [ + 50.895503, + 13.671193 + ], + [ + 50.895611, + 13.671322 + ], + [ + 50.895825, + 13.67159 + ], + [ + 50.895967, + 13.671778 + ], + [ + 50.896067, + 13.671903 + ], + [ + 50.896348, + 13.672239 + ], + [ + 50.89642, + 13.672322 + ], + [ + 50.896615, + 13.672528 + ], + [ + 50.896853, + 13.672697 + ], + [ + 50.896892, + 13.67272 + ], + [ + 50.897072, + 13.672815 + ], + [ + 50.897246, + 13.672886 + ], + [ + 50.897397, + 13.672923 + ], + [ + 50.897633, + 13.672988 + ], + [ + 50.897781, + 13.673033 + ], + [ + 50.897985, + 13.673114 + ], + [ + 50.898187, + 13.673224 + ], + [ + 50.898401, + 13.673378 + ], + [ + 50.898594, + 13.673545 + ], + [ + 50.898838, + 13.673807 + ], + [ + 50.899073, + 13.674105 + ], + [ + 50.899395, + 13.67454 + ], + [ + 50.899572, + 13.67482 + ], + [ + 50.899741, + 13.67513 + ], + [ + 50.900106, + 13.675846 + ], + [ + 50.900365, + 13.676392 + ], + [ + 50.900537, + 13.676761 + ], + [ + 50.901462, + 13.678646 + ], + [ + 50.901633, + 13.679012 + ], + [ + 50.902072, + 13.679937 + ], + [ + 50.902146, + 13.680085 + ], + [ + 50.90274, + 13.681321 + ], + [ + 50.903397, + 13.682721 + ], + [ + 50.903598, + 13.683137 + ], + [ + 50.903876, + 13.68374 + ], + [ + 50.904166, + 13.684353 + ], + [ + 50.90442, + 13.684901 + ], + [ + 50.904493, + 13.685048 + ], + [ + 50.905001, + 13.686217 + ], + [ + 50.905969, + 13.688315 + ], + [ + 50.906668, + 13.689797 + ], + [ + 50.907231, + 13.691015 + ], + [ + 50.907565, + 13.691746 + ], + [ + 50.907794, + 13.692283 + ], + [ + 50.907893, + 13.692541 + ], + [ + 50.907983, + 13.692764 + ], + [ + 50.908096, + 13.693054 + ], + [ + 50.908134, + 13.693158 + ], + [ + 50.908312, + 13.693687 + ], + [ + 50.908381, + 13.693925 + ], + [ + 50.908418, + 13.694066 + ], + [ + 50.908537, + 13.694485 + ], + [ + 50.908593, + 13.694648 + ], + [ + 50.908655, + 13.694795 + ], + [ + 50.908748, + 13.69501 + ], + [ + 50.908851, + 13.695229 + ], + [ + 50.908942, + 13.69545 + ], + [ + 50.909025, + 13.695663 + ], + [ + 50.909075, + 13.695798 + ], + [ + 50.909126, + 13.695931 + ], + [ + 50.90918, + 13.696063 + ], + [ + 50.909292, + 13.696361 + ], + [ + 50.909343, + 13.696494 + ], + [ + 50.909483, + 13.696844 + ], + [ + 50.909823, + 13.697733 + ], + [ + 50.909922, + 13.697997 + ], + [ + 50.910059, + 13.698345 + ], + [ + 50.91013, + 13.69852 + ], + [ + 50.910155, + 13.69859 + ], + [ + 50.910226, + 13.69873 + ], + [ + 50.910295, + 13.698805 + ], + [ + 50.910359, + 13.69886 + ], + [ + 50.91042, + 13.698886 + ], + [ + 50.910506, + 13.698906 + ], + [ + 50.910728, + 13.698938 + ], + [ + 50.91101, + 13.698997 + ], + [ + 50.913911, + 13.699723 + ], + [ + 50.915687, + 13.700153 + ], + [ + 50.916501, + 13.700361 + ], + [ + 50.918387, + 13.70083 + ], + [ + 50.919148, + 13.701006 + ], + [ + 50.920027, + 13.701237 + ], + [ + 50.920929, + 13.701464 + ], + [ + 50.921058, + 13.701495 + ], + [ + 50.92189, + 13.701715 + ], + [ + 50.92259, + 13.701896 + ], + [ + 50.922868, + 13.701983 + ], + [ + 50.923061, + 13.702067 + ], + [ + 50.923197, + 13.702154 + ], + [ + 50.923468, + 13.702353 + ], + [ + 50.923554, + 13.702429 + ], + [ + 50.923681, + 13.702545 + ], + [ + 50.923866, + 13.702741 + ], + [ + 50.924185, + 13.70314 + ], + [ + 50.92448, + 13.703538 + ], + [ + 50.924708, + 13.703825 + ], + [ + 50.924855, + 13.703995 + ], + [ + 50.925005, + 13.704153 + ], + [ + 50.925228, + 13.704344 + ], + [ + 50.92547, + 13.704521 + ], + [ + 50.925623, + 13.704603 + ], + [ + 50.925787, + 13.704694 + ], + [ + 50.925931, + 13.704754 + ], + [ + 50.927463, + 13.705206 + ], + [ + 50.928312, + 13.705447 + ], + [ + 50.928482, + 13.705488 + ], + [ + 50.928692, + 13.705558 + ], + [ + 50.929082, + 13.705667 + ], + [ + 50.929569, + 13.705811 + ], + [ + 50.929782, + 13.705865 + ], + [ + 50.929989, + 13.705909 + ], + [ + 50.930129, + 13.705918 + ], + [ + 50.930264, + 13.705919 + ], + [ + 50.930352, + 13.705916 + ], + [ + 50.930533, + 13.705895 + ], + [ + 50.930836, + 13.705819 + ], + [ + 50.931015, + 13.705759 + ], + [ + 50.931693, + 13.705462 + ], + [ + 50.931988, + 13.705327 + ], + [ + 50.932356, + 13.705152 + ], + [ + 50.932645, + 13.705009 + ], + [ + 50.932948, + 13.704863 + ], + [ + 50.933293, + 13.704704 + ], + [ + 50.935622, + 13.703611 + ], + [ + 50.936805, + 13.703051 + ], + [ + 50.937445, + 13.702732 + ], + [ + 50.93867, + 13.702171 + ], + [ + 50.94147, + 13.700852 + ], + [ + 50.941655, + 13.700769 + ], + [ + 50.94177, + 13.700732 + ], + [ + 50.94192, + 13.700735 + ], + [ + 50.942128, + 13.700834 + ], + [ + 50.942334, + 13.700988 + ], + [ + 50.942541, + 13.701198 + ], + [ + 50.942715, + 13.701309 + ], + [ + 50.942883, + 13.701375 + ], + [ + 50.943003, + 13.701395 + ], + [ + 50.943195, + 13.701384 + ], + [ + 50.94331, + 13.701363 + ], + [ + 50.943484, + 13.701322 + ], + [ + 50.943579, + 13.701296 + ], + [ + 50.943978, + 13.701198 + ], + [ + 50.944016, + 13.701187 + ], + [ + 50.944321, + 13.701115 + ], + [ + 50.944496, + 13.70108 + ], + [ + 50.944649, + 13.701061 + ], + [ + 50.944807, + 13.701038 + ], + [ + 50.945214, + 13.70102 + ], + [ + 50.945702, + 13.701014 + ], + [ + 50.946347, + 13.700989 + ], + [ + 50.946899, + 13.700842 + ], + [ + 50.947757, + 13.700528 + ], + [ + 50.949599, + 13.699893 + ], + [ + 50.950119, + 13.699693 + ], + [ + 50.950416, + 13.699583 + ], + [ + 50.951349, + 13.69926 + ], + [ + 50.951722, + 13.699126 + ], + [ + 50.951948, + 13.699081 + ], + [ + 50.952191, + 13.699082 + ], + [ + 50.952293, + 13.699116 + ], + [ + 50.95248, + 13.699191 + ], + [ + 50.952922, + 13.699408 + ], + [ + 50.953505, + 13.699685 + ], + [ + 50.954111, + 13.699982 + ], + [ + 50.955184, + 13.700503 + ], + [ + 50.955359, + 13.700586 + ], + [ + 50.955728, + 13.700773 + ], + [ + 50.956344, + 13.70107 + ], + [ + 50.95698, + 13.70145 + ], + [ + 50.95719, + 13.701561 + ], + [ + 50.957784, + 13.701892 + ], + [ + 50.957997, + 13.702002 + ], + [ + 50.958212, + 13.70209 + ], + [ + 50.958386, + 13.702149 + ], + [ + 50.958674, + 13.702203 + ], + [ + 50.95901, + 13.702223 + ], + [ + 50.959974, + 13.702309 + ], + [ + 50.960229, + 13.702363 + ], + [ + 50.96043, + 13.702447 + ], + [ + 50.960625, + 13.702584 + ], + [ + 50.960822, + 13.702796 + ], + [ + 50.960968, + 13.703017 + ], + [ + 50.961092, + 13.703289 + ], + [ + 50.961206, + 13.703646 + ], + [ + 50.961297, + 13.704017 + ], + [ + 50.961741, + 13.706133 + ], + [ + 50.961832, + 13.706512 + ], + [ + 50.962029, + 13.707145 + ], + [ + 50.962256, + 13.707801 + ], + [ + 50.962446, + 13.7083 + ], + [ + 50.962542, + 13.708534 + ], + [ + 50.962652, + 13.708764 + ], + [ + 50.962795, + 13.709034 + ], + [ + 50.963243, + 13.709746 + ], + [ + 50.963384, + 13.709923 + ], + [ + 50.963472, + 13.710029 + ], + [ + 50.963583, + 13.710117 + ], + [ + 50.963684, + 13.710215 + ], + [ + 50.963947, + 13.710439 + ], + [ + 50.965121, + 13.711432 + ], + [ + 50.965285, + 13.711601 + ], + [ + 50.965448, + 13.711809 + ], + [ + 50.965673, + 13.712171 + ], + [ + 50.965891, + 13.712473 + ], + [ + 50.965986, + 13.712553 + ], + [ + 50.966083, + 13.712574 + ], + [ + 50.966158, + 13.712582 + ], + [ + 50.966923, + 13.71254 + ], + [ + 50.967783, + 13.712462 + ], + [ + 50.968148, + 13.712445 + ], + [ + 50.968491, + 13.712415 + ], + [ + 50.968862, + 13.712375 + ], + [ + 50.969528, + 13.712293 + ], + [ + 50.969894, + 13.712244 + ], + [ + 50.969977, + 13.712221 + ], + [ + 50.970119, + 13.712153 + ], + [ + 50.970352, + 13.711985 + ], + [ + 50.970478, + 13.711828 + ], + [ + 50.970923, + 13.711205 + ], + [ + 50.97108, + 13.711016 + ], + [ + 50.971208, + 13.710887 + ], + [ + 50.971317, + 13.710796 + ], + [ + 50.971606, + 13.710597 + ], + [ + 50.971888, + 13.710435 + ], + [ + 50.972331, + 13.710232 + ], + [ + 50.972495, + 13.710151 + ], + [ + 50.972695, + 13.710103 + ], + [ + 50.972915, + 13.710116 + ], + [ + 50.973139, + 13.710204 + ], + [ + 50.973335, + 13.710311 + ], + [ + 50.9736, + 13.710593 + ], + [ + 50.973825, + 13.710975 + ], + [ + 50.973952, + 13.711384 + ], + [ + 50.974035, + 13.711803 + ], + [ + 50.974125, + 13.712496 + ], + [ + 50.974256, + 13.713188 + ], + [ + 50.974348, + 13.713412 + ], + [ + 50.974529, + 13.713835 + ], + [ + 50.974737, + 13.714197 + ], + [ + 50.97497, + 13.714499 + ], + [ + 50.97543, + 13.714957 + ], + [ + 50.975565, + 13.715083 + ], + [ + 50.975654, + 13.715165 + ], + [ + 50.975888, + 13.715354 + ], + [ + 50.977961, + 13.716963 + ], + [ + 50.978513, + 13.717419 + ], + [ + 50.978689, + 13.717522 + ], + [ + 50.978744, + 13.717539 + ], + [ + 50.978894, + 13.717575 + ], + [ + 50.978996, + 13.717586 + ], + [ + 50.979097, + 13.717593 + ], + [ + 50.979206, + 13.717583 + ], + [ + 50.97926, + 13.717574 + ], + [ + 50.979306, + 13.717567 + ], + [ + 50.979433, + 13.717517 + ], + [ + 50.979707, + 13.717373 + ], + [ + 50.980689, + 13.716808 + ], + [ + 50.9808, + 13.716718 + ], + [ + 50.980885, + 13.716621 + ], + [ + 50.981681, + 13.7153 + ], + [ + 50.981836, + 13.715138 + ], + [ + 50.981883, + 13.715111 + ], + [ + 50.982025, + 13.715064 + ], + [ + 50.982783, + 13.714968 + ], + [ + 50.983329, + 13.71481 + ], + [ + 50.983508, + 13.714747 + ], + [ + 50.984451, + 13.71441 + ], + [ + 50.984607, + 13.714379 + ], + [ + 50.984789, + 13.714393 + ], + [ + 50.985856, + 13.714666 + ], + [ + 50.986884, + 13.715037 + ], + [ + 50.987051, + 13.71507 + ], + [ + 50.987226, + 13.715081 + ], + [ + 50.987429, + 13.715074 + ], + [ + 50.989421, + 13.714891 + ], + [ + 50.989876, + 13.714903 + ], + [ + 50.990324, + 13.714991 + ], + [ + 50.990794, + 13.715235 + ], + [ + 50.9912, + 13.715579 + ], + [ + 50.992457, + 13.716868 + ], + [ + 50.992837, + 13.717168 + ], + [ + 50.993012, + 13.717294 + ], + [ + 50.993213, + 13.717413 + ], + [ + 50.993524, + 13.717543 + ], + [ + 50.993987, + 13.717693 + ], + [ + 50.994121, + 13.717736 + ], + [ + 50.994395, + 13.717831 + ], + [ + 50.996009, + 13.718324 + ], + [ + 50.996469, + 13.718468 + ], + [ + 50.996693, + 13.718544 + ], + [ + 50.996921, + 13.718625 + ], + [ + 50.997261, + 13.7188 + ], + [ + 50.997402, + 13.718895 + ], + [ + 50.997556, + 13.71901 + ], + [ + 50.997779, + 13.719189 + ], + [ + 50.998057, + 13.719474 + ], + [ + 50.998253, + 13.719681 + ], + [ + 50.998424, + 13.719899 + ], + [ + 50.998567, + 13.720081 + ], + [ + 50.998744, + 13.7203 + ], + [ + 50.999782, + 13.721624 + ], + [ + 51.000429, + 13.722356 + ], + [ + 51.001036, + 13.722992 + ], + [ + 51.002502, + 13.724344 + ], + [ + 51.002681, + 13.724512 + ], + [ + 51.002954, + 13.724836 + ], + [ + 51.00321, + 13.725259 + ], + [ + 51.003382, + 13.725679 + ], + [ + 51.003752, + 13.726676 + ], + [ + 51.00407, + 13.72747 + ], + [ + 51.004243, + 13.727806 + ], + [ + 51.00452, + 13.728352 + ], + [ + 51.00475, + 13.728655 + ], + [ + 51.004785, + 13.728702 + ], + [ + 51.005556, + 13.729432 + ], + [ + 51.005701, + 13.729511 + ], + [ + 51.006133, + 13.729737 + ], + [ + 51.006454, + 13.729824 + ], + [ + 51.006656, + 13.729869 + ], + [ + 51.006778, + 13.72989 + ], + [ + 51.007562, + 13.730009 + ], + [ + 51.008144, + 13.730084 + ], + [ + 51.008616, + 13.7302 + ], + [ + 51.009035, + 13.730236 + ], + [ + 51.009363, + 13.730191 + ], + [ + 51.0095, + 13.730156 + ], + [ + 51.009644, + 13.730096 + ], + [ + 51.009805, + 13.730001 + ], + [ + 51.009963, + 13.72989 + ], + [ + 51.010146, + 13.729711 + ], + [ + 51.010327, + 13.729413 + ], + [ + 51.010473, + 13.729126 + ], + [ + 51.010603, + 13.728836 + ], + [ + 51.01067, + 13.728586 + ], + [ + 51.010722, + 13.728374 + ], + [ + 51.0108, + 13.727898 + ], + [ + 51.010877, + 13.726521 + ], + [ + 51.010909, + 13.726256 + ], + [ + 51.010969, + 13.725947 + ], + [ + 51.011054, + 13.725617 + ], + [ + 51.011138, + 13.725381 + ], + [ + 51.011233, + 13.725149 + ], + [ + 51.011417, + 13.724812 + ], + [ + 51.011723, + 13.724394 + ], + [ + 51.012598, + 13.723703 + ], + [ + 51.013103, + 13.723155 + ], + [ + 51.013316, + 13.72297 + ], + [ + 51.013559, + 13.722815 + ], + [ + 51.013727, + 13.722751 + ], + [ + 51.013905, + 13.722721 + ], + [ + 51.014061, + 13.722722 + ], + [ + 51.014205, + 13.722766 + ], + [ + 51.014475, + 13.722853 + ], + [ + 51.01471, + 13.72299 + ], + [ + 51.014868, + 13.723118 + ], + [ + 51.01505, + 13.723328 + ], + [ + 51.015239, + 13.723643 + ], + [ + 51.01536, + 13.723921 + ], + [ + 51.015454, + 13.724226 + ], + [ + 51.015511, + 13.724488 + ], + [ + 51.015565, + 13.724869 + ], + [ + 51.015654, + 13.72609 + ], + [ + 51.015699, + 13.726519 + ], + [ + 51.015757, + 13.726855 + ], + [ + 51.015842, + 13.727239 + ], + [ + 51.015975, + 13.727655 + ], + [ + 51.016151, + 13.728049 + ], + [ + 51.016321, + 13.728352 + ], + [ + 51.016444, + 13.728567 + ], + [ + 51.016613, + 13.728784 + ], + [ + 51.016845, + 13.729016 + ], + [ + 51.017019, + 13.729157 + ], + [ + 51.017199, + 13.729273 + ], + [ + 51.017594, + 13.7295 + ], + [ + 51.017999, + 13.729647 + ], + [ + 51.018153, + 13.729641 + ], + [ + 51.018628, + 13.729591 + ], + [ + 51.019006, + 13.729573 + ], + [ + 51.019375, + 13.72957 + ], + [ + 51.019575, + 13.729619 + ], + [ + 51.019622, + 13.729634 + ], + [ + 51.019729, + 13.729684 + ], + [ + 51.019841, + 13.729708 + ], + [ + 51.01993, + 13.72973 + ], + [ + 51.020457, + 13.729865 + ], + [ + 51.020551, + 13.729893 + ], + [ + 51.02137, + 13.730258 + ], + [ + 51.021759, + 13.730408 + ], + [ + 51.021943, + 13.730436 + ], + [ + 51.022123, + 13.730421 + ], + [ + 51.023534, + 13.730651 + ], + [ + 51.024124, + 13.730781 + ], + [ + 51.024238, + 13.730816 + ], + [ + 51.024362, + 13.730871 + ], + [ + 51.024472, + 13.730925 + ], + [ + 51.024595, + 13.731024 + ], + [ + 51.024681, + 13.731133 + ], + [ + 51.024771, + 13.731263 + ], + [ + 51.024852, + 13.731389 + ], + [ + 51.024897, + 13.73147 + ], + [ + 51.024968, + 13.731579 + ], + [ + 51.025094, + 13.73173 + ], + [ + 51.025213, + 13.731831 + ], + [ + 51.025235, + 13.731846 + ], + [ + 51.025265, + 13.731861 + ], + [ + 51.025399, + 13.731913 + ], + [ + 51.025505, + 13.731926 + ], + [ + 51.025527, + 13.731926 + ], + [ + 51.025601, + 13.731919 + ], + [ + 51.025707, + 13.7319 + ], + [ + 51.025864, + 13.731866 + ], + [ + 51.026318, + 13.731747 + ], + [ + 51.026515, + 13.731708 + ], + [ + 51.027026, + 13.731622 + ], + [ + 51.027052, + 13.731616 + ], + [ + 51.027271, + 13.731563 + ], + [ + 51.027413, + 13.731506 + ], + [ + 51.027589, + 13.731461 + ], + [ + 51.027608, + 13.731453 + ], + [ + 51.028012, + 13.731306 + ], + [ + 51.028468, + 13.731183 + ], + [ + 51.028815, + 13.731104 + ], + [ + 51.029115, + 13.731061 + ], + [ + 51.029457, + 13.730978 + ], + [ + 51.029483, + 13.730991 + ], + [ + 51.02942, + 13.730986 + ], + [ + 51.02983, + 13.730893 + ], + [ + 51.030047, + 13.730852 + ], + [ + 51.030205, + 13.730826 + ], + [ + 51.030433, + 13.73078 + ], + [ + 51.030713, + 13.730703 + ], + [ + 51.030891, + 13.730616 + ], + [ + 51.031068, + 13.730541 + ], + [ + 51.03182, + 13.730346 + ], + [ + 51.032301, + 13.730228 + ], + [ + 51.032373, + 13.730213 + ], + [ + 51.032507, + 13.730204 + ], + [ + 51.032633, + 13.730213 + ], + [ + 51.032741, + 13.730246 + ], + [ + 51.032891, + 13.730335 + ], + [ + 51.033155, + 13.73054 + ], + [ + 51.033531, + 13.730729 + ], + [ + 51.033836, + 13.73089 + ], + [ + 51.034131, + 13.731116 + ], + [ + 51.034212, + 13.731166 + ], + [ + 51.034382, + 13.73125 + ], + [ + 51.034548, + 13.731324 + ], + [ + 51.034816, + 13.731453 + ], + [ + 51.03507, + 13.731553 + ], + [ + 51.035124, + 13.731574 + ], + [ + 51.035302, + 13.731656 + ], + [ + 51.035906, + 13.731938 + ], + [ + 51.037567, + 13.732721 + ], + [ + 51.03817, + 13.73302 + ], + [ + 51.038692, + 13.733263 + ], + [ + 51.038836, + 13.733341 + ], + [ + 51.038988, + 13.733431 + ], + [ + 51.039063, + 13.733482 + ], + [ + 51.0396, + 13.733918 + ], + [ + 51.039708, + 13.73402 + ], + [ + 51.039924, + 13.734201 + ] + ], + "interchange": { + "desc": "Fussweg", + "type": 100, + "coords": [ + [ + 51.039936, + 13.734183 + ], + [ + 51.039925, + 13.734172 + ], + [ + 51.040043, + 13.734271 + ], + [ + 51.039993, + 13.734432 + ], + [ + 51.039981, + 13.734459 + ], + [ + 51.039998, + 13.734477 + ], + [ + 51.039942, + 13.73463 + ], + [ + 51.03993, + 13.734621 + ], + [ + 51.039919, + 13.734648 + ], + [ + 51.039891, + 13.734621 + ], + [ + 51.04032, + 13.733327 + ], + [ + 51.040456, + 13.732905 + ], + [ + 51.040552, + 13.732618 + ], + [ + 51.040817, + 13.7318 + ], + [ + 51.040815, + 13.731815 + ] + ] + }, + "properties": { + "vehicleAccess": [ + { + "height": 0, + "halfWidth": 0, + "doorWidth": 0, + "attributes": 536870912, + "areaToStay": 0, + "areaToMove": 0 + } + ] + } + }, + { + "duration": 2640, + "origin": { + "isGlobalId": true, + "id": "de:14612:28:8:Gleis18", + "name": "Dresden Hauptbahnhof", + "disassembledName": "13", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.0408, + 13.7318 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:28", + "name": "Dresden Hauptbahnhof", + "disassembledName": "Hauptbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000028" + }, + "coord": [ + 51.03993, + 13.732932 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "departureTimeBaseTimetable": "2025-07-28T07:59:00Z", + "departureTimePlanned": "2025-07-28T07:59:00Z", + "departureTimeEstimated": "2025-07-28T07:59:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "13", + "areaGid": "de:14612:28:8", + "area": "8", + "platform": "Gl.13", + "platformName": "13", + "plannedPlatformName": "13", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "destination": { + "isGlobalId": true, + "id": "de:14628:3620:1:Gleis1", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "1", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919503, + 14.137497 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3620", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "Nationalparkbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:10", + "name": "Bad Schandau", + "type": "locality" + }, + "properties": { + "stopId": "33003620" + }, + "coord": [ + 50.91927, + 14.138099 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6, + 9 + ], + "arrivalTimeBaseTimetable": "2025-07-28T08:43:00Z", + "arrivalTimePlanned": "2025-07-28T08:43:00Z", + "arrivalTimeEstimated": "2025-07-28T08:43:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14628:3620:1", + "area": "1", + "platform": "Gl. 1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "transportation": { + "id": "ddb:92D01: :H:j25", + "name": "S-Bahn S1", + "disassembledName": "S1", + "number": "S1", + "product": { + "id": 3, + "class": 1, + "name": "S-Bahn", + "iconId": 2 + }, + "operator": { + "code": "8004", + "id": "8004", + "name": "DB Regio AG S\u00fcdost" + }, + "destination": { + "id": "33003620", + "name": "Bad Schandau Nationalparkbahnhof", + "type": "stop" + }, + "properties": { + "trainName": "S-Bahn", + "trainType": "S", + "trainNumber": "31723", + "tripCode": 110, + "timetablePeriod": "Jahresfahrplan 2025", + "lineDisplay": "LINE", + "globalId": "de:vvo:10-1" + } + }, + "hints": [ + { + "content": "Fahrradmitnahme begrenzt m\u00f6glich", + "providerCode": "G", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + }, + { + "content": "Fahrzeuggebundene Einstiegshilfe am Zugende", + "providerCode": "ZE", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + } + ], + "stopSequence": [ + { + "isGlobalId": true, + "id": "de:14612:28:8:Gleis18", + "name": "Dresden Hauptbahnhof", + "disassembledName": "13", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.0408, + 13.7318 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:28", + "name": "Dresden Hauptbahnhof", + "disassembledName": "Hauptbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000028" + }, + "coord": [ + 51.03993, + 13.732932 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "13", + "areaGid": "de:14612:28:8", + "area": "8", + "platform": "Gl.13", + "platformName": "13", + "plannedPlatformName": "13", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "vms:;voe:103;voe:10000" + }, + "departureTimePlanned": "2025-07-28T07:59:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:757:1:Gleis2", + "name": "Dresden S-Bf. Strehlen", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.030621, + 13.76193 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:757", + "name": "Dresden S-Bf. Strehlen", + "disassembledName": "S-Bf. Strehlen", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000757" + }, + "coord": [ + 51.031022, + 13.761139 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:757:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:100;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:01:00Z", + "departureTimePlanned": "2025-07-28T08:02:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:907:1:Gleis2", + "name": "Dresden S-Bahnhof Reick", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.021095, + 13.790909 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:907", + "name": "Dresden S-Bahnhof Reick", + "disassembledName": "S-Bahnhof Reick", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000907" + }, + "coord": [ + 51.02127, + 13.79064 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:907:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:100;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:04:00Z", + "departureTimePlanned": "2025-07-28T08:04:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:919:1:Gleis2", + "name": "Dresden S-Bahnhof Dobritz", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.011437, + 13.808876 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:919", + "name": "Dresden S-Bahnhof Dobritz", + "disassembledName": "S-Bahnhof Dobritz", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000919" + }, + "coord": [ + 51.011635, + 13.808516 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:919:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:100;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:06:00Z", + "departureTimePlanned": "2025-07-28T08:06:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:98:1:Gleis2", + "name": "Dresden S-Bahnhof Niedersedlitz", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.999538, + 13.828594 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:98", + "name": "Dresden S-Bahnhof Niedersedlitz", + "disassembledName": "S-Bahnhof Niedersedlitz", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000098" + }, + "coord": [ + 50.999459, + 13.828818 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6, + 10 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:98:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:101;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:08:00Z", + "departureTimePlanned": "2025-07-28T08:09:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:910:1:Gleis2", + "name": "Dresden S-Bf. Zschachwitz", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.989813, + 13.844709 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:910", + "name": "Dresden S-Bf. Zschachwitz", + "disassembledName": "S-Bf. Zschachwitz", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000910" + }, + "coord": [ + 50.989649, + 13.845168 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:910:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:101;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:11:00Z", + "departureTimePlanned": "2025-07-28T08:11:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3040:1:Gleis2", + "name": "Heidenau Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.981268, + 13.858849 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3040", + "name": "Heidenau Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628160:1", + "name": "Heidenau (Sachsen)", + "type": "locality" + }, + "properties": { + "stopId": "33003040" + }, + "coord": [ + 50.98081, + 13.859945 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3040:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:709;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:13:00Z", + "departureTimePlanned": "2025-07-28T08:14:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3053:1:Gleis2", + "name": "Heidenau S-Bahnhof S\u00fcd", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.971732, + 13.87456 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3053", + "name": "Heidenau S-Bahnhof S\u00fcd", + "disassembledName": "S-Bahnhof S\u00fcd", + "type": "stop", + "parent": { + "id": "placeID:14628160:1", + "name": "Heidenau (Sachsen)", + "type": "locality" + }, + "properties": { + "stopId": "33003053" + }, + "coord": [ + 50.972371, + 13.874345 + ], + "niveau": 0 + }, + "productClasses": [ + 1, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3053:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:709;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:16:00Z", + "departureTimePlanned": "2025-07-28T08:16:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3065:1:Gleis2", + "name": "Heidenau S-Bf. Gro\u00dfsedlitz", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.960785, + 13.894808 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3065", + "name": "Heidenau S-Bf. Gro\u00dfsedlitz", + "disassembledName": "S-Bf. Gro\u00dfsedlitz", + "type": "stop", + "parent": { + "id": "placeID:14628160:1", + "name": "Heidenau (Sachsen)", + "type": "locality" + }, + "properties": { + "stopId": "33003065" + }, + "coord": [ + 50.960989, + 13.894449 + ], + "niveau": 0 + }, + "productClasses": [ + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3065:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:709;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:18:00Z", + "departureTimePlanned": "2025-07-28T08:18:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3370:4:Gleis3", + "name": "Pirna Bahnhof", + "disassembledName": "3", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.962607, + 13.929241 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3370", + "name": "Pirna Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628270:130", + "name": "Pirna", + "type": "locality" + }, + "properties": { + "stopId": "33003370" + }, + "coord": [ + 50.962352, + 13.928855 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "3", + "areaGid": "de:14628:3370:4", + "area": "4", + "platform": "Gl. 3", + "platformName": "3", + "plannedPlatformName": "3", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:700;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:21:00Z", + "departureTimePlanned": "2025-07-28T08:22:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3420:3:Gleis2", + "name": "Obervogelgesang Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.949954, + 13.98932 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3420", + "name": "Obervogelgesang Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628270:120", + "name": "Obervogelgesang", + "type": "locality" + }, + "properties": { + "stopId": "33003420" + }, + "coord": [ + 50.949847, + 13.989626 + ], + "niveau": 0 + }, + "productClasses": [ + 1, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3420:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:707;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:26:00Z", + "departureTimePlanned": "2025-07-28T08:26:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3720:3:Gleis2", + "name": "Stadt Wehlen Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.953848, + 14.032745 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3720", + "name": "Stadt Wehlen Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628370:30", + "name": "Stadt Wehlen", + "type": "locality" + }, + "properties": { + "stopId": "33003720" + }, + "coord": [ + 50.953944, + 14.032754 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3720:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:707|729;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:29:00Z", + "departureTimePlanned": "2025-07-28T08:30:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3710:3:Gleis2", + "name": "Kurort Rathen Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.956649, + 14.075756 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3710", + "name": "Kurort Rathen Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628310:1", + "name": "Rathen Kurort", + "type": "locality" + }, + "properties": { + "stopId": "33003710" + }, + "coord": [ + 50.956541, + 14.076026 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3710:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:729;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:33:00Z", + "departureTimePlanned": "2025-07-28T08:33:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3500:3:Gleis2", + "name": "K\u00f6nigstein Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919355, + 14.0782 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3500", + "name": "K\u00f6nigstein Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628210:10", + "name": "K\u00f6nigstein (S\u00e4chsische Schweiz)", + "type": "locality" + }, + "properties": { + "stopId": "33003500" + }, + "coord": [ + 50.919406, + 14.078541 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3500:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:38:00Z", + "departureTimePlanned": "2025-07-28T08:38:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3620:1:Gleis1", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "1", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919503, + 14.137497 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3620", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "Nationalparkbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:10", + "name": "Bad Schandau", + "type": "locality" + }, + "properties": { + "stopId": "33003620" + }, + "coord": [ + 50.91927, + 14.138099 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6, + 9 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14628:3620:1", + "area": "1", + "platform": "Gl. 1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:43:00Z" + } + ], + "footPathInfo": [ + { + "position": "AFTER", + "duration": 180 + } + ], + "infos": [ + { + "priority": "normal", + "id": "23501", + "version": 268389061, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Bauarbeiten im oberen Elbtal", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23501&seqID=268389061", + "content": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                        

wegen Bauarbeiten im oberen Elbtal kommt es zu folgenden Fahrplan\u00e4nderungen im Saisonverkehr:

Linie S 1 (Mei\u00dfen Triebischtal \u2013 Coswig \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na)

6., 13., 20., 27. Juli, 3., 10., 17., 24., 31. August 7., 14. und 21. September 2025, 10.50 Uhr \u2013 11.20 Uhr

  • S-Bahn 31785 planm\u00e4\u00dfig Dresden Hbf ab 10.14 Uhr: Ausfall Bad Schandau \u25ba Sch\u00f6na

6., 13., 20., 27. Juli, 3., 10., 17., 24., 31. August 7., 14. und 21. September 2025, 16.30 Uhr \u2013 17.00 Uhr

  • S-Bahn 31786 planm\u00e4\u00dfig Sch\u00f6na ab 16.41 Uhr: Ausfall Sch\u00f6na \u25ba Bad Schandau
", + "subtitle": "Bauarbeiten im oberen Elbtal", + "title": "Linienaenderung", + "additionalText": "inEFA=\"true\";MeldungTyp=\"Information\"", + "htmlText": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                        

wegen Bauarbeiten im oberen Elbtal kommt es zu folgenden Fahrplan\u00e4nderungen im Saisonverkehr:

Linie S 1 (Mei\u00dfen Triebischtal \u2013 Coswig \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na)

6., 13., 20., 27. Juli, 3., 10., 17., 24., 31. August 7., 14. und 21. September 2025, 10.50 Uhr \u2013 11.20 Uhr

  • S-Bahn 31785 planm\u00e4\u00dfig Dresden Hbf ab 10.14 Uhr: Ausfall Bad Schandau \u25ba Sch\u00f6na

6., 13., 20., 27. Juli, 3., 10., 17., 24., 31. August 7., 14. und 21. September 2025, 16.30 Uhr \u2013 17.00 Uhr

  • S-Bahn 31786 planm\u00e4\u00dfig Sch\u00f6na ab 16.41 Uhr: Ausfall Sch\u00f6na \u25ba Bad Schandau
" + } + ] + }, + { + "priority": "normal", + "id": "23490", + "version": 267719461, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Ausfall zwischen Bad Schandau und Sch\u00f6na, Ersatzverkehr mit Bus", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23490&seqID=267719461", + "content": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                       

wegen Bauarbeiten kommt es von Montag, 30.06.2025, 00:00 Uhr bis Samstag, 13.12.2025, 00:00 Uhr, zu folgenden Fahrplan\u00e4nderungen:

S 1 Mei\u00dfen Triebischtal \u2013 Coswig (b Dresden) \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na

Die Z\u00fcge fallen zwischen Bad Schandau und Sch\u00f6na aus. Es f\u00e4hrt ein Ersatzverkehr mit Bus. Bitte beachten Sie die vom Zugverkehr abweichenden Fahrzeiten der Busse. Alternativ nutzen Sie bitte ebenfalls die Linie U28. Die in der Ausflugszeit verkehrenden Zusatzz\u00fcge (S1, RE50) verkehren teilweise bis Sch\u00f6na.

Die \u00c4nderungen sind in der digitalen Reiseauskunft verf\u00fcgbar.

Links

  • Um keine kurzfristigen \u00c4nderungen zu verpassen, informieren Sie sich bitte unmittelbar vor Fahrtantritt in den digitalen Reiseauskunftsmedien unter bahn.de oder in der App DB Navigator.
  • Den Weg zum Ersatzverkehr mit Bus finden Sie unter https://www.vvo-online.de/Umgebungsplan.
", + "subtitle": "Ausfall zwischen Bad Schandau und Sch\u00f6na, Ersatzverkehr mit Bus", + "title": "Linienaenderung", + "additionalText": "inEFA=\"true\";MeldungTyp=\"Information\"", + "htmlText": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                       

wegen Bauarbeiten kommt es von Montag, 30.06.2025, 00:00 Uhr bis Samstag, 13.12.2025, 00:00 Uhr, zu folgenden Fahrplan\u00e4nderungen:

S 1 Mei\u00dfen Triebischtal \u2013 Coswig (b Dresden) \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na

Die Z\u00fcge fallen zwischen Bad Schandau und Sch\u00f6na aus. Es f\u00e4hrt ein Ersatzverkehr mit Bus. Bitte beachten Sie die vom Zugverkehr abweichenden Fahrzeiten der Busse. Alternativ nutzen Sie bitte ebenfalls die Linie U28. Die in der Ausflugszeit verkehrenden Zusatzz\u00fcge (S1, RE50) verkehren teilweise bis Sch\u00f6na.

Die \u00c4nderungen sind in der digitalen Reiseauskunft verf\u00fcgbar.

Links

  • Um keine kurzfristigen \u00c4nderungen zu verpassen, informieren Sie sich bitte unmittelbar vor Fahrtantritt in den digitalen Reiseauskunftsmedien unter bahn.de oder in der App DB Navigator.
  • Den Weg zum Ersatzverkehr mit Bus finden Sie unter https://www.vvo-online.de/Umgebungsplan.
" + } + ] + }, + { + "priority": "normal", + "id": "23479", + "version": 267609661, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Bauarbeiten in Dresden Hbf", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23479&seqID=267609661", + "content": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                       

wegen Bauarbeiten in Dresden Hbf kommt es zu folgenden Fahrplan\u00e4nderungen:

Linie S 1 (Mei\u00dfen Triebischtal \u2013 Coswig (b Dresden) \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na)

in den N\u00e4chten 30. Juni/1. Juli \u20134./5., 6./7. \u2013 11./12., 13./14. \u2013 18./19., 20./21., 22./23. \u2013 25./26., 27./28. \u2013 1./2. August, 3./4. \u2013 8./9. August 2025, jeweils 23.40 Uhr \u2013 2.40 Uhr

  • Haltausfall Freiberger Stra\u00dfe

Linie S 2 (Pirna \u2013 Dresden \u2013 Dresden Flughafen)

in den N\u00e4chten 30. Juni/1. Juli \u20134./5., 6./7. \u2013 11./12., 13./14. \u2013 18./19., 20./21., 22./23. \u2013 25./26., 27./28. \u2013 1./2. August, 3./4. \u2013 8./9. August 2025, jeweils 23.55 Uhr \u2013 0.10 Uhr

  • Haltausfall Freiberger Stra\u00dfe
", + "subtitle": "Bauarbeiten in Dresden Hbf", + "title": "Linienaenderung", + "additionalText": "inEFA=\"true\";MeldungTyp=\"Information\"", + "htmlText": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                       

wegen Bauarbeiten in Dresden Hbf kommt es zu folgenden Fahrplan\u00e4nderungen:

Linie S 1 (Mei\u00dfen Triebischtal \u2013 Coswig (b Dresden) \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na)

in den N\u00e4chten 30. Juni/1. Juli \u20134./5., 6./7. \u2013 11./12., 13./14. \u2013 18./19., 20./21., 22./23. \u2013 25./26., 27./28. \u2013 1./2. August, 3./4. \u2013 8./9. August 2025, jeweils 23.40 Uhr \u2013 2.40 Uhr

  • Haltausfall Freiberger Stra\u00dfe

Linie S 2 (Pirna \u2013 Dresden \u2013 Dresden Flughafen)

in den N\u00e4chten 30. Juni/1. Juli \u20134./5., 6./7. \u2013 11./12., 13./14. \u2013 18./19., 20./21., 22./23. \u2013 25./26., 27./28. \u2013 1./2. August, 3./4. \u2013 8./9. August 2025, jeweils 23.55 Uhr \u2013 0.10 Uhr

  • Haltausfall Freiberger Stra\u00dfe
" + } + ] + } + ], + "coords": [ + [ + 51.040477, + 13.732761 + ], + [ + 51.039739, + 13.735013 + ], + [ + 51.039215, + 13.736624 + ], + [ + 51.039073, + 13.737021 + ], + [ + 51.038921, + 13.737371 + ], + [ + 51.038662, + 13.737922 + ], + [ + 51.038095, + 13.739289 + ], + [ + 51.037929, + 13.739708 + ], + [ + 51.037629, + 13.740536 + ], + [ + 51.037391, + 13.741199 + ], + [ + 51.036995, + 13.742416 + ], + [ + 51.036774, + 13.743083 + ], + [ + 51.036447, + 13.744088 + ], + [ + 51.036344, + 13.744396 + ], + [ + 51.036194, + 13.744868 + ], + [ + 51.036023, + 13.745382 + ], + [ + 51.035067, + 13.748303 + ], + [ + 51.034658, + 13.749573 + ], + [ + 51.03281, + 13.755216 + ], + [ + 51.032189, + 13.757125 + ], + [ + 51.032086, + 13.757431 + ], + [ + 51.030869, + 13.761172 + ], + [ + 51.030488, + 13.762332 + ], + [ + 51.030161, + 13.763324 + ], + [ + 51.028246, + 13.769178 + ], + [ + 51.022803, + 13.785833 + ], + [ + 51.022384, + 13.787103 + ], + [ + 51.022199, + 13.787679 + ], + [ + 51.021885, + 13.788636 + ], + [ + 51.021753, + 13.789028 + ], + [ + 51.021567, + 13.7896 + ], + [ + 51.021285, + 13.790382 + ], + [ + 51.021164, + 13.79071 + ], + [ + 51.02102, + 13.791096 + ], + [ + 51.020802, + 13.791666 + ], + [ + 51.020479, + 13.792466 + ], + [ + 51.020144, + 13.793259 + ], + [ + 51.019858, + 13.793904 + ], + [ + 51.019712, + 13.794251 + ], + [ + 51.019017, + 13.795784 + ], + [ + 51.018727, + 13.796409 + ], + [ + 51.018341, + 13.797205 + ], + [ + 51.017942, + 13.797981 + ], + [ + 51.017518, + 13.798751 + ], + [ + 51.017095, + 13.799484 + ], + [ + 51.01649, + 13.800493 + ], + [ + 51.014408, + 13.803943 + ], + [ + 51.014029, + 13.804579 + ], + [ + 51.013624, + 13.80525 + ], + [ + 51.013255, + 13.805853 + ], + [ + 51.012405, + 13.807267 + ], + [ + 51.011719, + 13.808402 + ], + [ + 51.011329, + 13.809045 + ], + [ + 51.010984, + 13.80962 + ], + [ + 51.009933, + 13.811362 + ], + [ + 51.008745, + 13.813328 + ], + [ + 51.008372, + 13.813955 + ], + [ + 51.007974, + 13.814608 + ], + [ + 51.007527, + 13.81535 + ], + [ + 51.007059, + 13.816122 + ], + [ + 51.006613, + 13.816865 + ], + [ + 51.005681, + 13.818408 + ], + [ + 51.003729, + 13.821647 + ], + [ + 51.003616, + 13.821832 + ], + [ + 50.999801, + 13.828158 + ], + [ + 50.999194, + 13.829164 + ], + [ + 50.999071, + 13.829364 + ], + [ + 50.995858, + 13.834684 + ], + [ + 50.991267, + 13.842282 + ], + [ + 50.989857, + 13.844634 + ], + [ + 50.989511, + 13.845208 + ], + [ + 50.989229, + 13.845665 + ], + [ + 50.987986, + 13.847719 + ], + [ + 50.987618, + 13.848335 + ], + [ + 50.987203, + 13.84901 + ], + [ + 50.983422, + 13.855277 + ], + [ + 50.981905, + 13.857779 + ], + [ + 50.981564, + 13.858346 + ], + [ + 50.981124, + 13.859079 + ], + [ + 50.980336, + 13.860367 + ], + [ + 50.980089, + 13.860774 + ], + [ + 50.978706, + 13.863023 + ], + [ + 50.975649, + 13.868072 + ], + [ + 50.97539, + 13.86851 + ], + [ + 50.974659, + 13.869719 + ], + [ + 50.974273, + 13.870369 + ], + [ + 50.973114, + 13.872271 + ], + [ + 50.972247, + 13.873712 + ], + [ + 50.971469, + 13.874998 + ], + [ + 50.968543, + 13.87984 + ], + [ + 50.96596, + 13.8841 + ], + [ + 50.964634, + 13.8863 + ], + [ + 50.963653, + 13.887939 + ], + [ + 50.963261, + 13.88864 + ], + [ + 50.962847, + 13.889434 + ], + [ + 50.962469, + 13.89023 + ], + [ + 50.962111, + 13.89103 + ], + [ + 50.961784, + 13.891827 + ], + [ + 50.961523, + 13.89253 + ], + [ + 50.961215, + 13.893395 + ], + [ + 50.961129, + 13.89365 + ], + [ + 50.961016, + 13.894012 + ], + [ + 50.960863, + 13.89452 + ], + [ + 50.960688, + 13.895131 + ], + [ + 50.960621, + 13.895369 + ], + [ + 50.960531, + 13.895722 + ], + [ + 50.960352, + 13.896456 + ], + [ + 50.960234, + 13.897017 + ], + [ + 50.960129, + 13.897525 + ], + [ + 50.960026, + 13.898098 + ], + [ + 50.959941, + 13.898614 + ], + [ + 50.95984, + 13.899245 + ], + [ + 50.95971, + 13.900076 + ], + [ + 50.959587, + 13.901029 + ], + [ + 50.959461, + 13.902098 + ], + [ + 50.959364, + 13.903191 + ], + [ + 50.959294, + 13.90421 + ], + [ + 50.959282, + 13.904518 + ], + [ + 50.959258, + 13.905038 + ], + [ + 50.959239, + 13.906587 + ], + [ + 50.959254, + 13.907385 + ], + [ + 50.959292, + 13.908245 + ], + [ + 50.959351, + 13.908949 + ], + [ + 50.959417, + 13.909592 + ], + [ + 50.95951, + 13.910457 + ], + [ + 50.959609, + 13.911359 + ], + [ + 50.959729, + 13.912431 + ], + [ + 50.959832, + 13.913325 + ], + [ + 50.959889, + 13.913769 + ], + [ + 50.95995, + 13.914182 + ], + [ + 50.960019, + 13.914595 + ], + [ + 50.960091, + 13.915004 + ], + [ + 50.960603, + 13.917785 + ], + [ + 50.961559, + 13.923 + ], + [ + 50.96162, + 13.923437 + ], + [ + 50.961702, + 13.924082 + ], + [ + 50.961997, + 13.92571 + ], + [ + 50.962103, + 13.926497 + ], + [ + 50.96226, + 13.927359 + ], + [ + 50.962357, + 13.927868 + ], + [ + 50.962548, + 13.928952 + ], + [ + 50.962583, + 13.929138 + ], + [ + 50.962635, + 13.929414 + ], + [ + 50.962718, + 13.929881 + ], + [ + 50.962784, + 13.930224 + ], + [ + 50.962965, + 13.931218 + ], + [ + 50.963208, + 13.932542 + ], + [ + 50.963345, + 13.933234 + ], + [ + 50.963521, + 13.934187 + ], + [ + 50.963666, + 13.935071 + ], + [ + 50.963734, + 13.935512 + ], + [ + 50.963805, + 13.936001 + ], + [ + 50.963843, + 13.936297 + ], + [ + 50.963909, + 13.936878 + ], + [ + 50.96393, + 13.937134 + ], + [ + 50.963961, + 13.937533 + ], + [ + 50.963981, + 13.937898 + ], + [ + 50.964001, + 13.938334 + ], + [ + 50.96402, + 13.939009 + ], + [ + 50.964033, + 13.939669 + ], + [ + 50.964031, + 13.939926 + ], + [ + 50.964018, + 13.940394 + ], + [ + 50.963995, + 13.941575 + ], + [ + 50.963992, + 13.941906 + ], + [ + 50.963922, + 13.945218 + ], + [ + 50.963916, + 13.945563 + ], + [ + 50.963906, + 13.946444 + ], + [ + 50.96387, + 13.948227 + ], + [ + 50.963863, + 13.948427 + ], + [ + 50.963837, + 13.948948 + ], + [ + 50.963815, + 13.949276 + ], + [ + 50.96377, + 13.949851 + ], + [ + 50.963723, + 13.950349 + ], + [ + 50.963684, + 13.950699 + ], + [ + 50.963645, + 13.951002 + ], + [ + 50.963613, + 13.951215 + ], + [ + 50.963547, + 13.951646 + ], + [ + 50.963317, + 13.952984 + ], + [ + 50.963101, + 13.954278 + ], + [ + 50.962879, + 13.955561 + ], + [ + 50.962498, + 13.957843 + ], + [ + 50.961986, + 13.960866 + ], + [ + 50.961769, + 13.962121 + ], + [ + 50.961625, + 13.962929 + ], + [ + 50.961548, + 13.96333 + ], + [ + 50.96143, + 13.963879 + ], + [ + 50.961309, + 13.9644 + ], + [ + 50.961079, + 13.9653 + ], + [ + 50.960961, + 13.96575 + ], + [ + 50.960823, + 13.966227 + ], + [ + 50.960695, + 13.966654 + ], + [ + 50.960547, + 13.967101 + ], + [ + 50.960405, + 13.967511 + ], + [ + 50.960078, + 13.968412 + ], + [ + 50.959827, + 13.969074 + ], + [ + 50.9595, + 13.969923 + ], + [ + 50.95919, + 13.970714 + ], + [ + 50.959019, + 13.971144 + ], + [ + 50.958806, + 13.971638 + ], + [ + 50.958437, + 13.972441 + ], + [ + 50.958085, + 13.973178 + ], + [ + 50.957584, + 13.97418 + ], + [ + 50.957289, + 13.974715 + ], + [ + 50.956893, + 13.975411 + ], + [ + 50.956412, + 13.976177 + ], + [ + 50.956166, + 13.976559 + ], + [ + 50.955887, + 13.976963 + ], + [ + 50.954266, + 13.979194 + ], + [ + 50.953802, + 13.979858 + ], + [ + 50.953456, + 13.980365 + ], + [ + 50.953267, + 13.980654 + ], + [ + 50.95307, + 13.980964 + ], + [ + 50.952697, + 13.981621 + ], + [ + 50.95252, + 13.981962 + ], + [ + 50.95231, + 13.982394 + ], + [ + 50.952144, + 13.982756 + ], + [ + 50.952009, + 13.983064 + ], + [ + 50.951787, + 13.983611 + ], + [ + 50.951601, + 13.984114 + ], + [ + 50.95144, + 13.984561 + ], + [ + 50.951099, + 13.985624 + ], + [ + 50.950071, + 13.988937 + ], + [ + 50.949868, + 13.989574 + ], + [ + 50.949653, + 13.990246 + ], + [ + 50.949157, + 13.991884 + ], + [ + 50.94894, + 13.99252 + ], + [ + 50.948827, + 13.992812 + ], + [ + 50.948715, + 13.993094 + ], + [ + 50.948585, + 13.993397 + ], + [ + 50.948445, + 13.993689 + ], + [ + 50.948275, + 13.994038 + ], + [ + 50.94809, + 13.994385 + ], + [ + 50.947624, + 13.995233 + ], + [ + 50.9472, + 13.995969 + ], + [ + 50.946654, + 13.9969 + ], + [ + 50.945733, + 13.998497 + ], + [ + 50.945564, + 13.998823 + ], + [ + 50.945442, + 13.999074 + ], + [ + 50.945335, + 13.999311 + ], + [ + 50.94505, + 13.999989 + ], + [ + 50.94485, + 14.000551 + ], + [ + 50.944763, + 14.00083 + ], + [ + 50.944668, + 14.001145 + ], + [ + 50.944564, + 14.001525 + ], + [ + 50.944476, + 14.001881 + ], + [ + 50.944292, + 14.002727 + ], + [ + 50.944113, + 14.003558 + ], + [ + 50.944051, + 14.003893 + ], + [ + 50.943989, + 14.004298 + ], + [ + 50.943928, + 14.004725 + ], + [ + 50.943889, + 14.005075 + ], + [ + 50.943851, + 14.005524 + ], + [ + 50.943822, + 14.005934 + ], + [ + 50.943803, + 14.006321 + ], + [ + 50.943792, + 14.00679 + ], + [ + 50.943791, + 14.007182 + ], + [ + 50.943807, + 14.007605 + ], + [ + 50.943828, + 14.008026 + ], + [ + 50.943863, + 14.00846 + ], + [ + 50.943896, + 14.008794 + ], + [ + 50.943961, + 14.009288 + ], + [ + 50.94403, + 14.009727 + ], + [ + 50.944102, + 14.010111 + ], + [ + 50.944159, + 14.010385 + ], + [ + 50.944214, + 14.01063 + ], + [ + 50.944286, + 14.010928 + ], + [ + 50.94451, + 14.011736 + ], + [ + 50.944679, + 14.012255 + ], + [ + 50.94474, + 14.012426 + ], + [ + 50.945032, + 14.013143 + ], + [ + 50.945138, + 14.013377 + ], + [ + 50.945341, + 14.013791 + ], + [ + 50.945527, + 14.014138 + ], + [ + 50.945705, + 14.014442 + ], + [ + 50.946076, + 14.014988 + ], + [ + 50.946418, + 14.015459 + ], + [ + 50.947529, + 14.016941 + ], + [ + 50.948737, + 14.01857 + ], + [ + 50.949439, + 14.019534 + ], + [ + 50.949678, + 14.019905 + ], + [ + 50.949867, + 14.020221 + ], + [ + 50.950139, + 14.020682 + ], + [ + 50.950274, + 14.020941 + ], + [ + 50.950456, + 14.021295 + ], + [ + 50.950993, + 14.022436 + ], + [ + 50.951185, + 14.022838 + ], + [ + 50.951317, + 14.023106 + ], + [ + 50.951426, + 14.023343 + ], + [ + 50.951638, + 14.02384 + ], + [ + 50.951784, + 14.024201 + ], + [ + 50.951867, + 14.024412 + ], + [ + 50.951954, + 14.024645 + ], + [ + 50.952103, + 14.025058 + ], + [ + 50.952253, + 14.025522 + ], + [ + 50.952343, + 14.025809 + ], + [ + 50.952427, + 14.026132 + ], + [ + 50.952503, + 14.026407 + ], + [ + 50.952601, + 14.026787 + ], + [ + 50.952704, + 14.027237 + ], + [ + 50.952803, + 14.027688 + ], + [ + 50.952913, + 14.028243 + ], + [ + 50.953228, + 14.029972 + ], + [ + 50.953395, + 14.030873 + ], + [ + 50.953439, + 14.031107 + ], + [ + 50.953507, + 14.031426 + ], + [ + 50.953604, + 14.031855 + ], + [ + 50.953642, + 14.032012 + ], + [ + 50.953671, + 14.032134 + ], + [ + 50.95375, + 14.032431 + ], + [ + 50.953862, + 14.032831 + ], + [ + 50.954687, + 14.035677 + ], + [ + 50.955179, + 14.037361 + ], + [ + 50.955506, + 14.038491 + ], + [ + 50.955552, + 14.038661 + ], + [ + 50.955999, + 14.040197 + ], + [ + 50.956215, + 14.040985 + ], + [ + 50.956321, + 14.0414 + ], + [ + 50.956409, + 14.041799 + ], + [ + 50.95658, + 14.042662 + ], + [ + 50.956661, + 14.043148 + ], + [ + 50.95673, + 14.043575 + ], + [ + 50.95679, + 14.044041 + ], + [ + 50.956853, + 14.044596 + ], + [ + 50.956912, + 14.045291 + ], + [ + 50.956952, + 14.045954 + ], + [ + 50.956969, + 14.046478 + ], + [ + 50.956972, + 14.04661 + ], + [ + 50.956974, + 14.046813 + ], + [ + 50.956974, + 14.047444 + ], + [ + 50.956966, + 14.047799 + ], + [ + 50.956936, + 14.048439 + ], + [ + 50.956871, + 14.04936 + ], + [ + 50.956817, + 14.04996 + ], + [ + 50.956745, + 14.050894 + ], + [ + 50.956716, + 14.051384 + ], + [ + 50.956685, + 14.051937 + ], + [ + 50.956669, + 14.052425 + ], + [ + 50.956659, + 14.053033 + ], + [ + 50.956662, + 14.053323 + ], + [ + 50.956661, + 14.053482 + ], + [ + 50.956678, + 14.054499 + ], + [ + 50.956722, + 14.055463 + ], + [ + 50.956785, + 14.056429 + ], + [ + 50.956859, + 14.057268 + ], + [ + 50.956921, + 14.057848 + ], + [ + 50.95696, + 14.058191 + ], + [ + 50.957035, + 14.058962 + ], + [ + 50.9571, + 14.059611 + ], + [ + 50.957159, + 14.060156 + ], + [ + 50.957277, + 14.061353 + ], + [ + 50.957306, + 14.061916 + ], + [ + 50.957331, + 14.062245 + ], + [ + 50.957377, + 14.062701 + ], + [ + 50.957611, + 14.065062 + ], + [ + 50.957737, + 14.066271 + ], + [ + 50.957775, + 14.066719 + ], + [ + 50.957801, + 14.067086 + ], + [ + 50.95782, + 14.067461 + ], + [ + 50.957836, + 14.067927 + ], + [ + 50.957842, + 14.068389 + ], + [ + 50.957838, + 14.068841 + ], + [ + 50.957824, + 14.069293 + ], + [ + 50.957801, + 14.069754 + ], + [ + 50.957769, + 14.070224 + ], + [ + 50.957719, + 14.070799 + ], + [ + 50.957601, + 14.071723 + ], + [ + 50.95755, + 14.072083 + ], + [ + 50.957489, + 14.072579 + ], + [ + 50.957451, + 14.072863 + ], + [ + 50.957361, + 14.073292 + ], + [ + 50.957219, + 14.073896 + ], + [ + 50.95716, + 14.074117 + ], + [ + 50.957008, + 14.074654 + ], + [ + 50.956864, + 14.075113 + ], + [ + 50.956796, + 14.075326 + ], + [ + 50.956667, + 14.075682 + ], + [ + 50.95645, + 14.076266 + ], + [ + 50.956362, + 14.076483 + ], + [ + 50.956302, + 14.076626 + ], + [ + 50.95616, + 14.076943 + ], + [ + 50.955974, + 14.077337 + ], + [ + 50.955749, + 14.077769 + ], + [ + 50.955649, + 14.077949 + ], + [ + 50.955486, + 14.078231 + ], + [ + 50.955314, + 14.078504 + ], + [ + 50.955146, + 14.078758 + ], + [ + 50.954791, + 14.079238 + ], + [ + 50.954571, + 14.079527 + ], + [ + 50.954214, + 14.079924 + ], + [ + 50.954013, + 14.080136 + ], + [ + 50.953704, + 14.080428 + ], + [ + 50.953333, + 14.080749 + ], + [ + 50.953189, + 14.080857 + ], + [ + 50.95282, + 14.081124 + ], + [ + 50.952618, + 14.081255 + ], + [ + 50.952273, + 14.081462 + ], + [ + 50.952079, + 14.081571 + ], + [ + 50.951917, + 14.081659 + ], + [ + 50.951724, + 14.081749 + ], + [ + 50.951449, + 14.081874 + ], + [ + 50.951288, + 14.08194 + ], + [ + 50.951036, + 14.082029 + ], + [ + 50.950758, + 14.082124 + ], + [ + 50.950573, + 14.082182 + ], + [ + 50.950254, + 14.082262 + ], + [ + 50.950007, + 14.082309 + ], + [ + 50.949568, + 14.082373 + ], + [ + 50.949373, + 14.082394 + ], + [ + 50.949094, + 14.082414 + ], + [ + 50.948954, + 14.08242 + ], + [ + 50.948631, + 14.082421 + ], + [ + 50.948197, + 14.082392 + ], + [ + 50.947846, + 14.082348 + ], + [ + 50.94759, + 14.082305 + ], + [ + 50.947217, + 14.08222 + ], + [ + 50.946854, + 14.082111 + ], + [ + 50.946642, + 14.082035 + ], + [ + 50.946327, + 14.081909 + ], + [ + 50.946218, + 14.081861 + ], + [ + 50.946052, + 14.081785 + ], + [ + 50.945764, + 14.081641 + ], + [ + 50.945521, + 14.081505 + ], + [ + 50.945237, + 14.081311 + ], + [ + 50.945029, + 14.081174 + ], + [ + 50.944697, + 14.080932 + ], + [ + 50.944495, + 14.080766 + ], + [ + 50.944218, + 14.080528 + ], + [ + 50.943994, + 14.080321 + ], + [ + 50.943747, + 14.080076 + ], + [ + 50.943504, + 14.079815 + ], + [ + 50.943262, + 14.079548 + ], + [ + 50.943041, + 14.079269 + ], + [ + 50.942695, + 14.078816 + ], + [ + 50.94259, + 14.078666 + ], + [ + 50.942381, + 14.078354 + ], + [ + 50.942166, + 14.078011 + ], + [ + 50.941724, + 14.077289 + ], + [ + 50.941104, + 14.07626 + ], + [ + 50.941068, + 14.076205 + ], + [ + 50.940824, + 14.07579 + ], + [ + 50.940438, + 14.075111 + ], + [ + 50.940227, + 14.074717 + ], + [ + 50.940117, + 14.074505 + ], + [ + 50.939853, + 14.073973 + ], + [ + 50.939708, + 14.073656 + ], + [ + 50.939602, + 14.073434 + ], + [ + 50.939283, + 14.072704 + ], + [ + 50.939193, + 14.072484 + ], + [ + 50.939045, + 14.072126 + ], + [ + 50.938906, + 14.071772 + ], + [ + 50.938748, + 14.07135 + ], + [ + 50.937782, + 14.068556 + ], + [ + 50.93725, + 14.067008 + ], + [ + 50.936704, + 14.065435 + ], + [ + 50.936002, + 14.063401 + ], + [ + 50.935712, + 14.062552 + ], + [ + 50.935568, + 14.062138 + ], + [ + 50.935287, + 14.061356 + ], + [ + 50.935186, + 14.061088 + ], + [ + 50.935112, + 14.060901 + ], + [ + 50.934974, + 14.060584 + ], + [ + 50.934892, + 14.060401 + ], + [ + 50.934827, + 14.060268 + ], + [ + 50.93468, + 14.059982 + ], + [ + 50.934514, + 14.059683 + ], + [ + 50.934307, + 14.059338 + ], + [ + 50.93421, + 14.059191 + ], + [ + 50.934057, + 14.058969 + ], + [ + 50.933898, + 14.058755 + ], + [ + 50.933779, + 14.0586 + ], + [ + 50.93359, + 14.058373 + ], + [ + 50.933397, + 14.058161 + ], + [ + 50.932892, + 14.057696 + ], + [ + 50.932648, + 14.057503 + ], + [ + 50.932323, + 14.057269 + ], + [ + 50.931219, + 14.056541 + ], + [ + 50.930764, + 14.056228 + ], + [ + 50.93023, + 14.055898 + ], + [ + 50.92995, + 14.055746 + ], + [ + 50.929744, + 14.055639 + ], + [ + 50.929435, + 14.055532 + ], + [ + 50.92919, + 14.055467 + ], + [ + 50.928999, + 14.055431 + ], + [ + 50.928884, + 14.055422 + ], + [ + 50.928678, + 14.055402 + ], + [ + 50.928517, + 14.055392 + ], + [ + 50.928266, + 14.055396 + ], + [ + 50.928055, + 14.05542 + ], + [ + 50.927661, + 14.055503 + ], + [ + 50.927465, + 14.055575 + ], + [ + 50.927388, + 14.055599 + ], + [ + 50.926915, + 14.055794 + ], + [ + 50.926671, + 14.055936 + ], + [ + 50.926472, + 14.056065 + ], + [ + 50.926256, + 14.056212 + ], + [ + 50.926095, + 14.056344 + ], + [ + 50.925951, + 14.056467 + ], + [ + 50.925688, + 14.056724 + ], + [ + 50.925401, + 14.057044 + ], + [ + 50.925254, + 14.05723 + ], + [ + 50.925075, + 14.05748 + ], + [ + 50.924695, + 14.058045 + ], + [ + 50.924583, + 14.05822 + ], + [ + 50.924355, + 14.058593 + ], + [ + 50.923436, + 14.06002 + ], + [ + 50.922722, + 14.061145 + ], + [ + 50.922023, + 14.062241 + ], + [ + 50.921853, + 14.062525 + ], + [ + 50.921677, + 14.062855 + ], + [ + 50.921516, + 14.063182 + ], + [ + 50.921361, + 14.063528 + ], + [ + 50.921237, + 14.063824 + ], + [ + 50.921095, + 14.064197 + ], + [ + 50.920867, + 14.064885 + ], + [ + 50.920821, + 14.065046 + ], + [ + 50.920741, + 14.065343 + ], + [ + 50.920675, + 14.065625 + ], + [ + 50.920593, + 14.066007 + ], + [ + 50.920502, + 14.066477 + ], + [ + 50.920157, + 14.068388 + ], + [ + 50.919873, + 14.06992 + ], + [ + 50.919712, + 14.070887 + ], + [ + 50.91951, + 14.072032 + ], + [ + 50.919411, + 14.072603 + ], + [ + 50.919351, + 14.072991 + ], + [ + 50.919301, + 14.073369 + ], + [ + 50.919262, + 14.073713 + ], + [ + 50.919223, + 14.07415 + ], + [ + 50.919198, + 14.074498 + ], + [ + 50.919187, + 14.074742 + ], + [ + 50.919169, + 14.075333 + ], + [ + 50.919167, + 14.075705 + ], + [ + 50.919178, + 14.076182 + ], + [ + 50.919189, + 14.076485 + ], + [ + 50.919201, + 14.076677 + ], + [ + 50.919224, + 14.076993 + ], + [ + 50.919291, + 14.077685 + ], + [ + 50.91936, + 14.078309 + ], + [ + 50.91961, + 14.08056 + ], + [ + 50.919703, + 14.081421 + ], + [ + 50.919746, + 14.081774 + ], + [ + 50.919835, + 14.082403 + ], + [ + 50.91991, + 14.08285 + ], + [ + 50.919984, + 14.083247 + ], + [ + 50.920062, + 14.083621 + ], + [ + 50.920161, + 14.084061 + ], + [ + 50.920272, + 14.084501 + ], + [ + 50.920379, + 14.084894 + ], + [ + 50.920508, + 14.085333 + ], + [ + 50.92061, + 14.085652 + ], + [ + 50.920698, + 14.085915 + ], + [ + 50.920854, + 14.086348 + ], + [ + 50.921029, + 14.086802 + ], + [ + 50.921136, + 14.087057 + ], + [ + 50.921312, + 14.087454 + ], + [ + 50.921561, + 14.087971 + ], + [ + 50.921676, + 14.088195 + ], + [ + 50.921794, + 14.088416 + ], + [ + 50.921914, + 14.088635 + ], + [ + 50.922039, + 14.088852 + ], + [ + 50.922166, + 14.089065 + ], + [ + 50.922813, + 14.090134 + ], + [ + 50.923671, + 14.091543 + ], + [ + 50.924744, + 14.093313 + ], + [ + 50.924903, + 14.093581 + ], + [ + 50.925037, + 14.093797 + ], + [ + 50.92521, + 14.094094 + ], + [ + 50.925379, + 14.094394 + ], + [ + 50.9255, + 14.094617 + ], + [ + 50.925621, + 14.094848 + ], + [ + 50.925738, + 14.095085 + ], + [ + 50.926015, + 14.095668 + ], + [ + 50.926173, + 14.096033 + ], + [ + 50.926332, + 14.096408 + ], + [ + 50.9265, + 14.096843 + ], + [ + 50.926839, + 14.097778 + ], + [ + 50.927227, + 14.09888 + ], + [ + 50.927404, + 14.099364 + ], + [ + 50.92767, + 14.10012 + ], + [ + 50.92781, + 14.100548 + ], + [ + 50.927889, + 14.100802 + ], + [ + 50.927989, + 14.101149 + ], + [ + 50.928037, + 14.101324 + ], + [ + 50.928106, + 14.101612 + ], + [ + 50.928171, + 14.1019 + ], + [ + 50.928256, + 14.102322 + ], + [ + 50.928306, + 14.10261 + ], + [ + 50.928377, + 14.103047 + ], + [ + 50.928421, + 14.103389 + ], + [ + 50.928456, + 14.103729 + ], + [ + 50.928477, + 14.103967 + ], + [ + 50.92849, + 14.104132 + ], + [ + 50.928511, + 14.104477 + ], + [ + 50.928524, + 14.10476 + ], + [ + 50.928531, + 14.105014 + ], + [ + 50.928532, + 14.105227 + ], + [ + 50.92853, + 14.105457 + ], + [ + 50.928519, + 14.10589 + ], + [ + 50.928504, + 14.106283 + ], + [ + 50.928488, + 14.106539 + ], + [ + 50.928469, + 14.106767 + ], + [ + 50.928438, + 14.107096 + ], + [ + 50.928411, + 14.107351 + ], + [ + 50.928377, + 14.107619 + ], + [ + 50.928341, + 14.107869 + ], + [ + 50.928314, + 14.108039 + ], + [ + 50.928255, + 14.108382 + ], + [ + 50.928192, + 14.108727 + ], + [ + 50.928133, + 14.109031 + ], + [ + 50.928036, + 14.10947 + ], + [ + 50.927938, + 14.109869 + ], + [ + 50.927871, + 14.11013 + ], + [ + 50.927798, + 14.110391 + ], + [ + 50.927705, + 14.110705 + ], + [ + 50.92763, + 14.110936 + ], + [ + 50.927485, + 14.111355 + ], + [ + 50.927358, + 14.111711 + ], + [ + 50.927145, + 14.112272 + ], + [ + 50.926592, + 14.113705 + ], + [ + 50.926169, + 14.114808 + ], + [ + 50.926014, + 14.115217 + ], + [ + 50.925711, + 14.116 + ], + [ + 50.925355, + 14.116941 + ], + [ + 50.924689, + 14.118669 + ], + [ + 50.924336, + 14.119591 + ], + [ + 50.923881, + 14.120783 + ], + [ + 50.923705, + 14.121259 + ], + [ + 50.923593, + 14.121579 + ], + [ + 50.923477, + 14.121923 + ], + [ + 50.923374, + 14.12225 + ], + [ + 50.923269, + 14.122604 + ], + [ + 50.922816, + 14.124261 + ], + [ + 50.922508, + 14.125589 + ], + [ + 50.922362, + 14.126148 + ], + [ + 50.922154, + 14.12691 + ], + [ + 50.921898, + 14.127867 + ], + [ + 50.921704, + 14.128576 + ], + [ + 50.921182, + 14.130555 + ], + [ + 50.921081, + 14.131013 + ], + [ + 50.920805, + 14.132487 + ], + [ + 50.920729, + 14.132846 + ], + [ + 50.920595, + 14.133366 + ], + [ + 50.920153, + 14.135022 + ], + [ + 50.919861, + 14.136153 + ], + [ + 50.919554, + 14.137312 + ] + ], + "interchange": { + "desc": "Fussweg", + "type": 100, + "coords": [ + [ + 50.919491, + 14.137506 + ], + [ + 50.919329, + 14.137726 + ] + ] + }, + "properties": { + "vehicleAccess": [ + { + "height": 0, + "halfWidth": 0, + "doorWidth": 0, + "attributes": 1073741824, + "areaToStay": 0, + "areaToMove": 0 + } + ], + "PlanLowFloorVehicle": "1", + "PlanWheelChairAccess": "1" + } + }, { - "PartialRouteId": 0, - "Duration": 1, - "Mot": { - "DlId": "de:vvo:11-8", - "StatelessId": "voe:11008: :R:j23", - "Type": "Tram", - "Name": "8", - "Direction": "Hellerau", - "Changes": [], - "Diva": { - "Number": "11008", - "Network": "voe" - }, - "TransportationCompany": "DVB", - "OperatorCode": "16", - "ProductName": "Straßenbahn", - "TrainNumber": "805" - }, - "MapDataIndex": 0, - "Shift": "None", - "RegularStops": [ - { - "ArrivalTime": "/Date(1681916580000-0000)/", - "DepartureTime": "/Date(1681916580000-0000)/", - "ArrivalRealTime": "/Date(1681916580000-0000)/", - "DepartureRealTime": "/Date(1681916580000-0000)/", - "Place": "Dresden", - "Name": "SĂŒdvorstadt", - "Type": "Stop", - "DataId": "33000133", - "DhId": "de:14612:133", - "Platform": { - "Name": "1", - "Type": "Platform" - }, - "Latitude": 5656830, - "Longitude": 4620907, - "DepartureState": "InTime", - "ArrivalState": "InTime", - "CancelReasons": [], - "ParkAndRail": [] - }, - { - "ArrivalTime": "/Date(1681916640000-0000)/", - "DepartureTime": "/Date(1681916640000-0000)/", - "ArrivalRealTime": "/Date(1681916640000-0000)/", - "DepartureRealTime": "/Date(1681916640000-0000)/", - "Place": "Dresden", - "Name": "NĂŒrnberger Platz", - "Type": "Stop", - "DataId": "33000132", - "DhId": "de:14612:132", - "Platform": { - "Name": "3", - "Type": "Platform" - }, - "Latitude": 5656647, - "Longitude": 4621197, - "DepartureState": "InTime", - "ArrivalState": "InTime", - "CancelReasons": [], - "ParkAndRail": [] - } - ], - "NextDepartureTimes": [ - "/Date(1681917180000-0000)/", - "/Date(1681917780000-0000)/" - ], - "PreviousDepartureTimes": [ - "/Date(1681915980000-0000)/", - "/Date(1681915380000-0000)/" + "duration": 540, + "origin": { + "isGlobalId": true, + "id": "de:14628:3620:1:Gleis2", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919316, + 14.137713 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3620", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "Nationalparkbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:10", + "name": "Bad Schandau", + "type": "locality" + }, + "properties": { + "stopId": "33003620" + }, + "coord": [ + 50.91927, + 14.138099 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6, + 9 + ], + "departureTimeBaseTimetable": "2025-07-28T08:48:00Z", + "departureTimePlanned": "2025-07-28T08:48:00Z", + "departureTimeEstimated": "2025-07-28T08:48:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3620:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "destination": { + "isGlobalId": true, + "id": "de:14628:3598:4:Gleis2", + "name": "Sch\u00f6na Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.876046, + 14.234695 + ], + "niveau": 2, + "parent": { + "isGlobalId": true, + "id": "de:14628:3598", + "name": "Sch\u00f6na Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628330:30", + "name": "Sch\u00f6na (bei Pirna)", + "type": "locality" + }, + "properties": { + "stopId": "33003598" + }, + "coord": [ + 50.875684, + 14.234641 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "arrivalTimeBaseTimetable": "2025-07-28T08:57:00Z", + "arrivalTimePlanned": "2025-07-28T08:57:00Z", + "arrivalTimeEstimated": "2025-07-28T08:57:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "2", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3598:4", + "area": "4", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "transportation": { + "id": "ddb:90D28: :R:j25", + "name": "Zug U28", + "disassembledName": "U28", + "number": "U28", + "product": { + "id": 0, + "class": 0, + "name": "Zug", + "iconId": 6 + }, + "operator": { + "code": "8004", + "id": "8004", + "name": "DB Regio AG S\u00fcdost" + }, + "destination": { + "id": "99204383", + "name": "Dec\u00edn, Decin hl.n. (Hauptbahnhof)", + "type": "stop" + }, + "properties": { + "trainName": "Regionalbahn", + "trainType": "RB", + "trainNumber": "28004", + "tripCode": 81, + "timetablePeriod": "Jahresfahrplan 2025", + "lineDisplay": "LINE" + } + }, + "hints": [ + { + "content": "Fahrradmitnahme begrenzt m\u00f6glich", + "providerCode": "FB", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + }, + { + "content": "Fahrzeuggebundene Einstiegshilfe vorhanden", + "providerCode": "EH", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + }, + { + "content": "nur 2. Kl.", + "providerCode": "Y2", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + } + ], + "stopSequence": [ + { + "isGlobalId": true, + "id": "de:14628:3620:1:Gleis2", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919316, + 14.137713 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3620", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "Nationalparkbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:10", + "name": "Bad Schandau", + "type": "locality" + }, + "properties": { + "stopId": "33003620" + }, + "coord": [ + 50.91927, + 14.138099 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6, + 9 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3620:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "departureTimePlanned": "2025-07-28T08:48:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3610:5:Gleis2", + "name": "Krippen Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.913092, + 14.16035 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3610", + "name": "Krippen Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:20", + "name": "Krippen", + "type": "locality" + }, + "properties": { + "stopId": "33003610" + }, + "coord": [ + 50.913109, + 14.16027 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3610:5", + "area": "5", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:50:00Z", + "departureTimePlanned": "2025-07-28T08:50:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3645:3:Gleis2", + "name": "Schmilka Hp Hirschm\u00fchle", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.889813, + 14.22856 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3645", + "name": "Schmilka Hp Hirschm\u00fchle", + "disassembledName": "Hp Hirschm\u00fchle", + "type": "stop", + "parent": { + "id": "placeID:14628030:50", + "name": "Schmilka", + "type": "locality" + }, + "properties": { + "stopId": "33003645" + }, + "coord": [ + 50.88987, + 14.228631 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3645:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:55:00Z", + "departureTimePlanned": "2025-07-28T08:55:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3598:4:Gleis2", + "name": "Sch\u00f6na Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.876046, + 14.234695 + ], + "niveau": 2, + "parent": { + "isGlobalId": true, + "id": "de:14628:3598", + "name": "Sch\u00f6na Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628330:30", + "name": "Sch\u00f6na (bei Pirna)", + "type": "locality" + }, + "properties": { + "stopId": "33003598" + }, + "coord": [ + 50.875684, + 14.234641 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "2", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3598:4", + "area": "4", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T08:57:00Z" + } + ], + "infos": [], + "coords": [ + [ + 50.919258, + 14.137923 + ], + [ + 50.918983, + 14.138965 + ], + [ + 50.918862, + 14.139418 + ], + [ + 50.918585, + 14.140482 + ], + [ + 50.918322, + 14.141459 + ], + [ + 50.918131, + 14.142158 + ], + [ + 50.917962, + 14.14277 + ], + [ + 50.917688, + 14.143762 + ], + [ + 50.917571, + 14.144176 + ], + [ + 50.917227, + 14.145222 + ], + [ + 50.917044, + 14.145921 + ], + [ + 50.916744, + 14.146975 + ], + [ + 50.916442, + 14.147979 + ], + [ + 50.916244, + 14.148603 + ], + [ + 50.915472, + 14.151104 + ], + [ + 50.915102, + 14.152318 + ], + [ + 50.914523, + 14.154195 + ], + [ + 50.914435, + 14.154498 + ], + [ + 50.914286, + 14.155021 + ], + [ + 50.914182, + 14.155426 + ], + [ + 50.91409, + 14.155782 + ], + [ + 50.913699, + 14.157559 + ], + [ + 50.913074, + 14.16042 + ], + [ + 50.912627, + 14.162451 + ], + [ + 50.911985, + 14.165393 + ], + [ + 50.911594, + 14.167201 + ], + [ + 50.911532, + 14.16749 + ], + [ + 50.911486, + 14.167693 + ], + [ + 50.911293, + 14.168569 + ], + [ + 50.910858, + 14.170563 + ], + [ + 50.910818, + 14.170745 + ], + [ + 50.910473, + 14.172244 + ], + [ + 50.910411, + 14.172505 + ], + [ + 50.910278, + 14.173226 + ], + [ + 50.91002, + 14.174322 + ], + [ + 50.909787, + 14.1753 + ], + [ + 50.909351, + 14.177256 + ], + [ + 50.908967, + 14.179034 + ], + [ + 50.908831, + 14.17972 + ], + [ + 50.90869, + 14.18049 + ], + [ + 50.908534, + 14.181433 + ], + [ + 50.908243, + 14.183209 + ], + [ + 50.907818, + 14.185841 + ], + [ + 50.907668, + 14.186762 + ], + [ + 50.90736, + 14.188486 + ], + [ + 50.907252, + 14.189125 + ], + [ + 50.907206, + 14.189362 + ], + [ + 50.907161, + 14.189568 + ], + [ + 50.90712, + 14.18974 + ], + [ + 50.907068, + 14.189984 + ], + [ + 50.90704, + 14.190125 + ], + [ + 50.906987, + 14.190403 + ], + [ + 50.906507, + 14.193132 + ], + [ + 50.906278, + 14.194412 + ], + [ + 50.906166, + 14.195024 + ], + [ + 50.905858, + 14.196575 + ], + [ + 50.905665, + 14.197489 + ], + [ + 50.905462, + 14.198397 + ], + [ + 50.905193, + 14.199503 + ], + [ + 50.90503, + 14.200151 + ], + [ + 50.90486, + 14.200803 + ], + [ + 50.904577, + 14.201844 + ], + [ + 50.904232, + 14.203038 + ], + [ + 50.904076, + 14.203555 + ], + [ + 50.903948, + 14.203966 + ], + [ + 50.903818, + 14.204381 + ], + [ + 50.903569, + 14.20515 + ], + [ + 50.902753, + 14.207573 + ], + [ + 50.901064, + 14.212559 + ], + [ + 50.9006, + 14.213901 + ], + [ + 50.900507, + 14.214151 + ], + [ + 50.900206, + 14.214924 + ], + [ + 50.899933, + 14.215568 + ], + [ + 50.899697, + 14.216101 + ], + [ + 50.899514, + 14.216504 + ], + [ + 50.89932, + 14.216884 + ], + [ + 50.899157, + 14.217203 + ], + [ + 50.898987, + 14.217528 + ], + [ + 50.898818, + 14.217836 + ], + [ + 50.898592, + 14.218232 + ], + [ + 50.898361, + 14.218626 + ], + [ + 50.897411, + 14.220149 + ], + [ + 50.896736, + 14.221224 + ], + [ + 50.896522, + 14.22154 + ], + [ + 50.896335, + 14.221806 + ], + [ + 50.896101, + 14.222115 + ], + [ + 50.895916, + 14.222347 + ], + [ + 50.895728, + 14.222565 + ], + [ + 50.895401, + 14.222925 + ], + [ + 50.895079, + 14.223253 + ], + [ + 50.894765, + 14.223565 + ], + [ + 50.891942, + 14.226335 + ], + [ + 50.891286, + 14.227007 + ], + [ + 50.890265, + 14.228077 + ], + [ + 50.889572, + 14.228807 + ], + [ + 50.888437, + 14.229986 + ], + [ + 50.887477, + 14.231001 + ], + [ + 50.88702, + 14.231453 + ], + [ + 50.886559, + 14.231874 + ], + [ + 50.886082, + 14.232275 + ], + [ + 50.885604, + 14.232656 + ], + [ + 50.885361, + 14.23283 + ], + [ + 50.88478, + 14.233199 + ], + [ + 50.884158, + 14.233557 + ], + [ + 50.883844, + 14.233727 + ], + [ + 50.883445, + 14.233924 + ], + [ + 50.882723, + 14.234233 + ], + [ + 50.882108, + 14.234492 + ], + [ + 50.881517, + 14.234705 + ], + [ + 50.881108, + 14.234833 + ], + [ + 50.880902, + 14.234888 + ], + [ + 50.880592, + 14.234966 + ], + [ + 50.880279, + 14.235028 + ], + [ + 50.879833, + 14.235102 + ], + [ + 50.879117, + 14.235157 + ], + [ + 50.878584, + 14.235157 + ], + [ + 50.878177, + 14.235138 + ], + [ + 50.87777, + 14.235094 + ], + [ + 50.87691, + 14.234937 + ], + [ + 50.876431, + 14.234819 + ], + [ + 50.876237, + 14.234763 + ], + [ + 50.876046, + 14.234699 + ] ] } ], - "MapData": [ - "Tram|5656831|4620906|5656835|4620907|5656839|4620909|5656843|4620913|5656845|4620915|5656848|4620920|5656851|4620925|5656852|4620932|5656850|4620940|5656848|4620947|5656842|4620958|5656837|4620968|5656833|4620974|5656828|4620982|5656823|4620989|5656816|4620996|5656809|4621003|5656802|4621009|5656793|4621016|5656784|4621022|5656771|4621029|5656765|4621032|5656758|4621038|5656751|4621045|5656739|4621062|5656700|4621120|5656687|4621139|5656669|4621166|5656648|4621197|" - ] + "fare": { + "tickets": [ + { + "id": "", + "name": "Einzelkarte", + "comment": "", + "URL": "", + "currency": "EUR", + "priceLevel": "4", + "priceLevelUnit": "Preisstufe", + "priceBrutto": 12.2, + "priceNetto": 11.4, + "taxPercent": 7.0, + "fromLeg": 0, + "toLeg": 2, + "net": "voe", + "person": "ADULT", + "travellerClass": "SECOND", + "timeValidity": "SINGLE", + "validMinutes": 0, + "validityExtent": "ALIGHTING", + "isShortHaul": "NO", + "returnsAllowed": "NO", + "validForOneJourneyOnly": "YES", + "validForOneOperatorOnly": "NO", + "isSupplement": "NO", + "numberOfChanges": 2, + "nameValidityArea": "", + "properties": { + "tariffProductDefault": [], + "tariffProductOption": [] + } + }, + { + "id": "", + "name": "Einzelkarte", + "comment": "", + "URL": "", + "currency": "EUR", + "priceLevel": "4", + "priceLevelUnit": "Preisstufe", + "priceBrutto": 8.4, + "priceNetto": 7.85, + "taxPercent": 7.0, + "fromLeg": 0, + "toLeg": 2, + "net": "voe", + "person": "CHILD", + "travellerClass": "SECOND", + "timeValidity": "SINGLE", + "validMinutes": 0, + "validityExtent": "ALIGHTING", + "isShortHaul": "NO", + "returnsAllowed": "NO", + "validForOneJourneyOnly": "YES", + "validForOneOperatorOnly": "NO", + "isSupplement": "NO", + "numberOfChanges": 2, + "nameValidityArea": "", + "properties": { + "tariffProductDefault": [], + "tariffProductOption": [] + } + } + ], + "zones": [ + { + "net": "voe", + "toLeg": 2, + "fromLeg": 0, + "neutralZone": "", + "zones": [ + [ + "63" + ], + [ + "60" + ], + [ + "61" + ], + [ + "10" + ], + [ + "70" + ], + [ + "72" + ] + ] + } + ] + }, + "daysOfService": { + "rvb": "00000000000000000000000000000000000000000000000079F3E7C0000000F900000000000000000000000000000000" + } }, { - "Price": "3,00", - "ShortDistance": true, - "Net": "voe", - "Duration": 4, - "Interchanges": 0, - "MotChain": [ + "rating": 0, + "isAdditional": false, + "interchanges": 2, + "legs": [ { - "DlId": "", - "StatelessId": ":: : :", - "Type": "Footpath", - "Name": "Fussweg", - "Changes": [], - "Diva": { - "Number": "", - "Network": "" - }, - "TransportationCompany": "", - "OperatorCode": "", - "ProductName": "Fussweg", - "TrainNumber": "" + "duration": 3240, + "origin": { + "isGlobalId": true, + "id": "de:14628:1790:3:2", + "name": "Kurort Kipsdorf Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.80591, + 13.676123 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1790", + "name": "Kurort Kipsdorf Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628010:60", + "name": "Kipsdorf Kurort", + "type": "locality" + }, + "properties": { + "stopId": "33001790" + }, + "coord": [ + 50.806852, + 13.676832 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "departureTimeBaseTimetable": "2025-07-28T08:55:00Z", + "departureTimePlanned": "2025-07-28T08:55:00Z", + "departureTimeEstimated": "2025-07-28T08:55:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1790:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "destination": { + "isGlobalId": true, + "id": "de:14612:28:19:5", + "name": "Dresden Hauptbahnhof", + "disassembledName": "5", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.03993, + 13.73419 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:28", + "name": "Dresden Hauptbahnhof", + "disassembledName": "Hauptbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000028" + }, + "coord": [ + 51.03993, + 13.732932 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "arrivalTimeBaseTimetable": "2025-07-28T09:49:00Z", + "arrivalTimePlanned": "2025-07-28T09:49:00Z", + "arrivalTimeEstimated": "2025-07-28T09:49:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "5", + "areaGid": "de:14612:28:19", + "area": "19", + "platform": "5", + "platformName": "5", + "plannedPlatformName": "5", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "transportation": { + "id": "voe:23360: :R:j25", + "name": "PlusBus 360", + "disassembledName": "360", + "number": "360", + "description": "Zinnwald - Altenberg - Kurort Kipsdorf - Dippoldiswalde - Dresden", + "product": { + "id": 11, + "class": 6, + "name": "PlusBus", + "iconId": 3 + }, + "operator": { + "code": "RVSOE", + "id": "3", + "name": "RVSOE" + }, + "destination": { + "id": "33000034", + "name": "Dresden Ammonstra\u00dfe / Budapester Stra\u00dfe", + "type": "stop" + }, + "properties": { + "isSTT": true, + "tripCode": 47, + "timetablePeriod": "Jahresfahrplan 2025 - G\u00fcltig ab 15. Dezember 2024", + "mtSubcode": "321", + "lineDisplay": "LINE", + "globalId": "de:vvo:23-360", + "OperatorURL": "http://www.rvsoe.de" + } + }, + "stopSequence": [ + { + "isGlobalId": true, + "id": "de:14628:1790:3:2", + "name": "Kurort Kipsdorf Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.80591, + 13.676123 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1790", + "name": "Kurort Kipsdorf Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628010:60", + "name": "Kipsdorf Kurort", + "type": "locality" + }, + "properties": { + "stopId": "33001790" + }, + "coord": [ + 50.806852, + 13.676832 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1790:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:636" + }, + "departureTimePlanned": "2025-07-28T08:55:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1535:3:2", + "name": "Schmiedeberg Buschm\u00fchle", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.8267, + 13.689966 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1535", + "name": "Schmiedeberg Buschm\u00fchle", + "disassembledName": "Buschm\u00fchle", + "type": "stop", + "parent": { + "id": "placeID:14628060:190", + "name": "Schmiedeberg (Dippoldiswalde)", + "type": "locality" + }, + "properties": { + "stopId": "33001535" + }, + "coord": [ + 50.826501, + 13.689948 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1535:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605|636" + }, + "arrivalTimePlanned": "2025-07-28T08:58:00Z", + "departureTimePlanned": "2025-07-28T08:58:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1534:0:2", + "name": "Schmiedeberg Ziegengasse", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.833049, + 13.681378 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1534", + "name": "Schmiedeberg Ziegengasse", + "disassembledName": "Ziegengasse", + "type": "stop", + "parent": { + "id": "placeID:14628060:190", + "name": "Schmiedeberg (Dippoldiswalde)", + "type": "locality" + }, + "properties": { + "stopId": "33001534" + }, + "coord": [ + 50.833123, + 13.681252 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1534", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T08:59:00Z", + "departureTimePlanned": "2025-07-28T08:59:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1533:0:2", + "name": "Schmiedeberg Mitte", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.838688, + 13.674793 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1533", + "name": "Schmiedeberg Mitte", + "disassembledName": "Mitte", + "type": "stop", + "parent": { + "id": "placeID:14628060:190", + "name": "Schmiedeberg (Dippoldiswalde)", + "type": "locality" + }, + "properties": { + "stopId": "33001533" + }, + "coord": [ + 50.838047, + 13.675485 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1533", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "vms:;voe:605" + }, + "arrivalTimePlanned": "2025-07-28T09:01:00Z", + "departureTimePlanned": "2025-07-28T09:01:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1532:0:2", + "name": "Schmiedeberg Naundorf Stadion", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.844038, + 13.669637 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1532", + "name": "Schmiedeberg Naundorf Stadion", + "disassembledName": "Naundorf Stadion", + "type": "stop", + "parent": { + "id": "placeID:14628060:190", + "name": "Schmiedeberg (Dippoldiswalde)", + "type": "locality" + }, + "properties": { + "stopId": "33001532" + }, + "coord": [ + 50.843969, + 13.669574 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1532", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T09:03:00Z", + "departureTimePlanned": "2025-07-28T09:03:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1501:0:2", + "name": "Obercarsdorf Bahnbr\u00fccke", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.850418, + 13.666187 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1501", + "name": "Obercarsdorf Bahnbr\u00fccke", + "disassembledName": "Bahnbr\u00fccke", + "type": "stop", + "parent": { + "id": "placeID:14628060:160", + "name": "Obercarsdorf", + "type": "locality" + }, + "properties": { + "stopId": "33001501" + }, + "coord": [ + 50.850055, + 13.666142 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1501", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T09:04:00Z", + "departureTimePlanned": "2025-07-28T09:04:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1500:3:2", + "name": "Obercarsdorf Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.862378, + 13.666026 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1500", + "name": "Obercarsdorf Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628060:160", + "name": "Obercarsdorf", + "type": "locality" + }, + "properties": { + "stopId": "33001500" + }, + "coord": [ + 50.860388, + 13.665415 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1500:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T09:06:00Z", + "departureTimePlanned": "2025-07-28T09:06:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1473:3:2", + "name": "Ulberndorf Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.87387, + 13.671883 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1473", + "name": "Ulberndorf Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628060:110", + "name": "Ulberndorf", + "type": "locality" + }, + "properties": { + "stopId": "33001473" + }, + "coord": [ + 50.874006, + 13.671784 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1473:3", + "area": "3", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605" + }, + "arrivalTimePlanned": "2025-07-28T09:08:00Z", + "departureTimePlanned": "2025-07-28T09:08:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1469:1:2", + "name": "Ulberndorf An der Niederm\u00fchle", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.881459, + 13.676302 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1469", + "name": "Ulberndorf An der Niederm\u00fchle", + "disassembledName": "An der Niederm\u00fchle", + "type": "stop", + "parent": { + "id": "placeID:14628060:110", + "name": "Ulberndorf", + "type": "locality" + }, + "properties": { + "stopId": "33001469" + }, + "coord": [ + 50.881397, + 13.676212 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1469:1", + "area": "1", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605|609" + }, + "arrivalTimePlanned": "2025-07-28T09:09:00Z", + "departureTimePlanned": "2025-07-28T09:09:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1408:0:2", + "name": "Dippoldiswalde Wolframsdorfer Stra\u00dfe", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.885976, + 13.672727 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1408", + "name": "Dippoldiswalde Wolframsdorfer Stra\u00dfe", + "disassembledName": "Wolframsdorfer Stra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14628060:20", + "name": "Dippoldiswalde", + "type": "locality" + }, + "properties": { + "stopId": "33001408" + }, + "coord": [ + 50.885942, + 13.672538 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1408", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605|609" + }, + "arrivalTimePlanned": "2025-07-28T09:10:00Z", + "departureTimePlanned": "2025-07-28T09:10:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1400:0:1", + "name": "Dippoldiswalde Busbahnhof", + "disassembledName": "1", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.895162, + 13.668649 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1400", + "name": "Dippoldiswalde Busbahnhof", + "disassembledName": "Busbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628060:20", + "name": "Dippoldiswalde", + "type": "locality" + }, + "properties": { + "stopId": "33001400" + }, + "coord": [ + 50.895026, + 13.668487 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14628:1400", + "area": "0", + "platform": "1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:605|609" + }, + "arrivalTimePlanned": "2025-07-28T09:13:00Z", + "departureTimePlanned": "2025-07-28T09:15:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1451:0:2", + "name": "Oberh\u00e4slich Gasthof", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.909314, + 13.696523 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1451", + "name": "Oberh\u00e4slich Gasthof", + "disassembledName": "Gasthof", + "type": "stop", + "parent": { + "id": "placeID:14628060:50", + "name": "Oberh\u00e4slich", + "type": "locality" + }, + "properties": { + "stopId": "33001451" + }, + "coord": [ + 50.909274, + 13.696299 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1451", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:609|615" + }, + "arrivalTimePlanned": "2025-07-28T09:19:00Z", + "departureTimePlanned": "2025-07-28T09:19:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1452:0:2", + "name": "Oberh\u00e4slich Abzweig Reinberg", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.929067, + 13.705749 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1452", + "name": "Oberh\u00e4slich Abzweig Reinberg", + "disassembledName": "Abzweig Reinberg", + "type": "stop", + "parent": { + "id": "placeID:14628060:50", + "name": "Oberh\u00e4slich", + "type": "locality" + }, + "properties": { + "stopId": "33001452" + }, + "coord": [ + 50.929095, + 13.705677 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1452", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:609|615" + }, + "arrivalTimePlanned": "2025-07-28T09:21:00Z", + "departureTimePlanned": "2025-07-28T09:21:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1286:0:2", + "name": "Karsdorf B 170", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.944334, + 13.70123 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1286", + "name": "Karsdorf B 170", + "disassembledName": "B 170", + "type": "stop", + "parent": { + "id": "placeID:14628300:10", + "name": "Karsdorf (bei Freital)", + "type": "locality" + }, + "properties": { + "stopId": "33001286" + }, + "coord": [ + 50.943649, + 13.701293 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1286", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:615" + }, + "arrivalTimePlanned": "2025-07-28T09:23:00Z", + "departureTimePlanned": "2025-07-28T09:23:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1050:0:2", + "name": "Possendorf Rundteil", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.955172, + 13.700575 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1050", + "name": "Possendorf Rundteil", + "disassembledName": "Rundteil", + "type": "stop", + "parent": { + "id": "placeID:14628050:90", + "name": "Possendorf (Bannewitz)", + "type": "locality" + }, + "properties": { + "stopId": "33001050" + }, + "coord": [ + 50.955415, + 13.700638 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1050", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:615" + }, + "arrivalTimePlanned": "2025-07-28T09:25:00Z", + "departureTimePlanned": "2025-07-28T09:25:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1030:0:2", + "name": "Possendorf Kastanienallee", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.968151, + 13.712468 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1030", + "name": "Possendorf Kastanienallee", + "disassembledName": "Kastanienallee", + "type": "stop", + "parent": { + "id": "placeID:14628050:90", + "name": "Possendorf (Bannewitz)", + "type": "locality" + }, + "properties": { + "stopId": "33001030" + }, + "coord": [ + 50.96801, + 13.712486 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1030", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:615" + }, + "arrivalTimePlanned": "2025-07-28T09:27:00Z", + "departureTimePlanned": "2025-07-28T09:28:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1059:0:2", + "name": "H\u00e4nichen Am K\u00e4ferberg", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.975856, + 13.715451 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1059", + "name": "H\u00e4nichen Am K\u00e4ferberg", + "disassembledName": "Am K\u00e4ferberg", + "type": "stop", + "parent": { + "id": "placeID:14628050:80", + "name": "H\u00e4nichen", + "type": "locality" + }, + "properties": { + "stopId": "33001059" + }, + "coord": [ + 50.975562, + 13.715038 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1059", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T09:30:00Z", + "departureTimePlanned": "2025-07-28T09:30:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1061:0:2", + "name": "H\u00e4nichen Pulverweg", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.979266, + 13.71767 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1061", + "name": "H\u00e4nichen Pulverweg", + "disassembledName": "Pulverweg", + "type": "stop", + "parent": { + "id": "placeID:14628050:80", + "name": "H\u00e4nichen", + "type": "locality" + }, + "properties": { + "stopId": "33001061" + }, + "coord": [ + 50.97908, + 13.717571 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1061:1", + "area": "1", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T09:31:00Z", + "departureTimePlanned": "2025-07-28T09:31:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1074:0:2", + "name": "Bannewitz Welschhufe", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.983519, + 13.714822 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1074", + "name": "Bannewitz Welschhufe", + "disassembledName": "Welschhufe", + "type": "stop", + "parent": { + "id": "placeID:14628050:10", + "name": "Bannewitz", + "type": "locality" + }, + "properties": { + "stopId": "33001074" + }, + "coord": [ + 50.983881, + 13.714606 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1074", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T09:32:00Z", + "departureTimePlanned": "2025-07-28T09:32:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1076:0:2", + "name": "Bannewitz Windbergstra\u00dfe", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.993975, + 13.717804 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1076", + "name": "Bannewitz Windbergstra\u00dfe", + "disassembledName": "Windbergstra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14628050:10", + "name": "Bannewitz", + "type": "locality" + }, + "properties": { + "stopId": "33001076" + }, + "coord": [ + 50.993862, + 13.717625 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1076", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T09:35:00Z", + "departureTimePlanned": "2025-07-28T09:35:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1070:0:2", + "name": "Bannewitz Boderitzer Stra\u00dfe", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 50.998385, + 13.719978 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1070", + "name": "Bannewitz Boderitzer Stra\u00dfe", + "disassembledName": "Boderitzer Stra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14628050:10", + "name": "Bannewitz", + "type": "locality" + }, + "properties": { + "stopId": "33001070" + }, + "coord": [ + 50.998526, + 13.72005 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1070", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:612" + }, + "arrivalTimePlanned": "2025-07-28T09:36:00Z", + "departureTimePlanned": "2025-07-28T09:36:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:1072:0:2", + "name": "Bannewitz N\u00f6thnitz", + "disassembledName": "2", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.004733, + 13.728692 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:1072", + "name": "Bannewitz N\u00f6thnitz", + "disassembledName": "N\u00f6thnitz", + "type": "stop", + "parent": { + "id": "placeID:14628050:10", + "name": "Bannewitz", + "type": "locality" + }, + "properties": { + "stopId": "33001072" + }, + "coord": [ + 51.004315, + 13.727892 + ], + "niveau": 0 + }, + "productClasses": [ + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:1072", + "area": "0", + "platform": "2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:103|612" + }, + "arrivalTimePlanned": "2025-07-28T09:38:00Z", + "departureTimePlanned": "2025-07-28T09:38:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:733:1:1", + "name": "Dresden S\u00fcdh\u00f6he", + "disassembledName": "1", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.019931, + 13.729734 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:733", + "name": "Dresden S\u00fcdh\u00f6he", + "disassembledName": "S\u00fcdh\u00f6he", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000733" + }, + "coord": [ + 51.019716, + 13.729599 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6, + 10 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14612:733:1", + "area": "1", + "platform": "1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:103" + }, + "arrivalTimePlanned": "2025-07-28T09:42:00Z", + "departureTimePlanned": "2025-07-28T09:42:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:732:1:1", + "name": "Dresden Mommsenstra\u00dfe", + "disassembledName": "1", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.027615, + 13.731495 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:732", + "name": "Dresden Mommsenstra\u00dfe", + "disassembledName": "Mommsenstra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000732" + }, + "coord": [ + 51.027514, + 13.731378 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14612:732:1", + "area": "1", + "platform": "1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:103" + }, + "arrivalTimePlanned": "2025-07-28T09:44:00Z", + "departureTimePlanned": "2025-07-28T09:44:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:727:1:3", + "name": "Dresden Techn. Universit\u00e4t (Fr.-Foerster-Platz)", + "disassembledName": "3", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.029429, + 13.731073 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:727", + "name": "Dresden Techn. Universit\u00e4t (Fr.-Foerster-Platz)", + "disassembledName": "Technische Universit\u00e4t (Fr.-Foerster-Platz)", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000727" + }, + "coord": [ + 51.029892, + 13.73092 + ], + "niveau": 0 + }, + "productClasses": [ + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "3", + "areaGid": "de:14612:727:1", + "area": "1", + "platform": "3", + "platformName": "3", + "plannedPlatformName": "3", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "vms:;voe:103" + }, + "arrivalTimePlanned": "2025-07-28T09:45:00Z", + "departureTimePlanned": "2025-07-28T09:45:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:131:2:3", + "name": "Dresden Reichenbachstra\u00dfe", + "disassembledName": "3", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.034813, + 13.731495 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:131", + "name": "Dresden Reichenbachstra\u00dfe", + "disassembledName": "Reichenbachstra\u00dfe", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000131" + }, + "coord": [ + 51.035123, + 13.731387 + ], + "niveau": 0 + }, + "productClasses": [ + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "3", + "areaGid": "de:14612:131:2", + "area": "2", + "platform": "3", + "platformName": "3", + "plannedPlatformName": "3", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:103" + }, + "arrivalTimePlanned": "2025-07-28T09:47:00Z", + "departureTimePlanned": "2025-07-28T09:47:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:28:19:5", + "name": "Dresden Hauptbahnhof", + "disassembledName": "5", + "type": "platform", + "pointType": "PLATFORM", + "coord": [ + 51.03993, + 13.73419 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14612:28", + "name": "Dresden Hauptbahnhof", + "disassembledName": "Hauptbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000028" + }, + "coord": [ + 51.03993, + 13.732932 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "5", + "areaGid": "de:14612:28:19", + "area": "19", + "platform": "5", + "platformName": "5", + "plannedPlatformName": "5", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "vms:;voe:103;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T09:49:00Z" + } + ], + "footPathInfo": [ + { + "position": "AFTER", + "duration": 360, + "footPathElem": [ + { + "description": "", + "type": "LEVEL", + "levelFrom": 0, + "levelTo": 0, + "level": "LEVEL", + "origin": { + "id": "de:14612:28", + "isGlobalId": true, + "type": "stop", + "name": "Hauptbahnhof", + "coord": [ + 51.03993, + 13.73419 + ], + "properties": { + "area": "19", + "georef": "1026791365:12:MRCV:100", + "areaGid": "de:14612:28:19", + "areaType": 113 + } + }, + "destination": { + "id": "de:14612:28", + "isGlobalId": true, + "type": "stop", + "name": "Hauptbahnhof", + "coord": [ + 51.039885, + 13.733148 + ], + "properties": { + "area": "7", + "georef": "1038172568:4:MRCV:100", + "areaGid": "de:14612:28:7", + "areaType": 32 + } + }, + "attributes": { + "duration": 30, + "distance": 0, + "narrowestWidth": -1, + "elevLength": 0, + "elevWidth": 0, + "elevDoorWidth": 0, + "rampLength": 0, + "rampWidth": 0, + "rampInclination": 0, + "numberSteps": 0, + "maxStepHeight": 0 + }, + "openingHours": [] + }, + { + "description": "", + "type": "STAIRS", + "levelFrom": 0, + "levelTo": 1, + "level": "UP", + "origin": { + "id": "de:14612:28", + "isGlobalId": true, + "type": "stop", + "name": "Hauptbahnhof", + "coord": [ + 51.039885, + 13.733148 + ], + "properties": { + "area": "7", + "georef": "1038172568:4:MRCV:100", + "areaGid": "de:14612:28:7", + "areaType": 32 + } + }, + "destination": { + "id": "de:14612:28", + "isGlobalId": true, + "type": "stop", + "name": "Hauptbahnhof", + "coord": [ + 51.0408, + 13.7318 + ], + "properties": { + "area": "8", + "georef": "1010446542:49:MRCV:100", + "areaGid": "de:14612:28:8", + "areaType": 209 + } + }, + "attributes": { + "duration": 30, + "distance": 0, + "narrowestWidth": -1, + "elevLength": 0, + "elevWidth": 0, + "elevDoorWidth": 0, + "rampLength": 0, + "rampWidth": 0, + "rampInclination": 0, + "numberSteps": 0, + "maxStepHeight": 0 + }, + "openingHours": [] + } + ] + } + ], + "infos": [ + { + "priority": "normal", + "id": "23612", + "version": 269026261, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Sperrung der Alte Altenberger Stra\u00dfe in Dippoldiswalde", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23612&seqID=269026261", + "content": "

Ab Montag, den 21. Juli 2025 bis Freitag, den 22. August 2025 kommt es zur Vollsperrung der Alte Altenberger Stra\u00dfe in Dippoldiswalde zwischen dem Schulg\u00e4\u00dfchen und der Gartenstra\u00dfe. 
Der Busbahnhof Dippoldiswalde wird von allen Linienbussen bedient.

", + "subtitle": "Sperrung der Alte Altenberger Stra\u00dfe in Dippoldiswalde", + "title": "Linienaenderung", + "additionalText": "inEFA=\"false\";MeldungTyp=\"Information\"", + "htmlText": "

Ab Montag, den 21. Juli 2025 bis Freitag, den 22. August 2025 kommt es zur Vollsperrung der Alte Altenberger Stra\u00dfe in Dippoldiswalde zwischen dem Schulg\u00e4\u00dfchen und der Gartenstra\u00dfe. 
Der Busbahnhof Dippoldiswalde wird von allen Linienbussen bedient.

" + } + ] + }, + { + "priority": "normal", + "id": "23586", + "version": 268412461, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Teilweise Sperrung des Busbahnhofes in Dippoldiswalde", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23586&seqID=268412461", + "content": "

Am Mittwoch, den 9. Juli 2025 kommt es zur teilweisen Sperrung des Busbahnhofes in Dippoldiswalde, die voraussichtlich bis zum 30. April 2026 erfolgen wird. Die Busse der Linien +360 und 370 befahren den Busbahnhof \u00fcber die Einfahrt von der B170 direkt und bedienen die entsprechenden Abfahrtsst\u00e4nde.

Alle Fahrten vom Bussteig 10 werden an den Bussteig 8 verlegt.

", + "subtitle": "Teilweise Sperrung des Busbahnhofes in Dippoldiswalde", + "title": "Linienaenderung", + "additionalText": "inEFA=\"false\";MeldungTyp=\"Information\"", + "htmlText": "

Am Mittwoch, den 9. Juli 2025 kommt es zur teilweisen Sperrung des Busbahnhofes in Dippoldiswalde, die voraussichtlich bis zum 30. April 2026 erfolgen wird. Die Busse der Linien +360 und 370 befahren den Busbahnhof \u00fcber die Einfahrt von der B170 direkt und bedienen die entsprechenden Abfahrtsst\u00e4nde.

Alle Fahrten vom Bussteig 10 werden an den Bussteig 8 verlegt.

" + } + ] + } + ], + "coords": [ + [ + 50.80587, + 13.676275 + ], + [ + 50.806008, + 13.676362 + ], + [ + 50.806593, + 13.676719 + ], + [ + 50.806692, + 13.676776 + ], + [ + 50.807301, + 13.677014 + ], + [ + 50.808424, + 13.677406 + ], + [ + 50.808627, + 13.677479 + ], + [ + 50.809724, + 13.677849 + ], + [ + 50.809941, + 13.677933 + ], + [ + 50.810141, + 13.678029 + ], + [ + 50.810296, + 13.678129 + ], + [ + 50.810426, + 13.678222 + ], + [ + 50.811132, + 13.678702 + ], + [ + 50.811214, + 13.678754 + ], + [ + 50.811733, + 13.67911 + ], + [ + 50.812904, + 13.67992 + ], + [ + 50.813744, + 13.680497 + ], + [ + 50.813923, + 13.680654 + ], + [ + 50.814094, + 13.680871 + ], + [ + 50.81466, + 13.681788 + ], + [ + 50.815097, + 13.682505 + ], + [ + 50.815814, + 13.683688 + ], + [ + 50.816172, + 13.68428 + ], + [ + 50.816294, + 13.684487 + ], + [ + 50.816992, + 13.685612 + ], + [ + 50.818887, + 13.68872 + ], + [ + 50.819648, + 13.689959 + ], + [ + 50.820067, + 13.690646 + ], + [ + 50.820504, + 13.691378 + ], + [ + 50.820755, + 13.69179 + ], + [ + 50.820892, + 13.691993 + ], + [ + 50.82104, + 13.692173 + ], + [ + 50.821159, + 13.692296 + ], + [ + 50.821678, + 13.692743 + ], + [ + 50.821808, + 13.692846 + ], + [ + 50.821884, + 13.692901 + ], + [ + 50.822118, + 13.692985 + ], + [ + 50.822237, + 13.693001 + ], + [ + 50.822357, + 13.692996 + ], + [ + 50.822522, + 13.692959 + ], + [ + 50.822694, + 13.69291 + ], + [ + 50.822848, + 13.692863 + ], + [ + 50.823002, + 13.692809 + ], + [ + 50.823206, + 13.692748 + ], + [ + 50.823449, + 13.69267 + ], + [ + 50.823589, + 13.692599 + ], + [ + 50.823721, + 13.692505 + ], + [ + 50.823851, + 13.692377 + ], + [ + 50.824833, + 13.691242 + ], + [ + 50.825153, + 13.690882 + ], + [ + 50.825277, + 13.690754 + ], + [ + 50.825474, + 13.690558 + ], + [ + 50.825696, + 13.690421 + ], + [ + 50.826131, + 13.690171 + ], + [ + 50.826298, + 13.690077 + ], + [ + 50.82668, + 13.689874 + ], + [ + 50.826818, + 13.6898 + ], + [ + 50.827326, + 13.689541 + ], + [ + 50.827484, + 13.689441 + ], + [ + 50.82768, + 13.689238 + ], + [ + 50.827948, + 13.688922 + ], + [ + 50.828079, + 13.688756 + ], + [ + 50.828217, + 13.688608 + ], + [ + 50.828445, + 13.688384 + ], + [ + 50.828705, + 13.68818 + ], + [ + 50.828814, + 13.688092 + ], + [ + 50.828941, + 13.68795 + ], + [ + 50.829111, + 13.687601 + ], + [ + 50.829176, + 13.68739 + ], + [ + 50.829304, + 13.6868 + ], + [ + 50.829353, + 13.686547 + ], + [ + 50.829388, + 13.686431 + ], + [ + 50.82942, + 13.686338 + ], + [ + 50.82948, + 13.686206 + ], + [ + 50.829597, + 13.686025 + ], + [ + 50.82997, + 13.685511 + ], + [ + 50.830023, + 13.685441 + ], + [ + 50.830076, + 13.685373 + ], + [ + 50.831127, + 13.68392 + ], + [ + 50.831262, + 13.683746 + ], + [ + 50.831411, + 13.68354 + ], + [ + 50.831466, + 13.683471 + ], + [ + 50.831605, + 13.683274 + ], + [ + 50.831621, + 13.683257 + ], + [ + 50.831773, + 13.683053 + ], + [ + 50.831948, + 13.682794 + ], + [ + 50.83196, + 13.682773 + ], + [ + 50.831989, + 13.682745 + ], + [ + 50.832148, + 13.682544 + ], + [ + 50.83234, + 13.682282 + ], + [ + 50.832381, + 13.682222 + ], + [ + 50.832447, + 13.682131 + ], + [ + 50.83284, + 13.681594 + ], + [ + 50.832853, + 13.68158 + ], + [ + 50.832934, + 13.681466 + ], + [ + 50.832955, + 13.681441 + ], + [ + 50.833024, + 13.681343 + ], + [ + 50.833211, + 13.681089 + ], + [ + 50.833275, + 13.680995 + ], + [ + 50.833899, + 13.680145 + ], + [ + 50.8342, + 13.679745 + ], + [ + 50.834512, + 13.679297 + ], + [ + 50.834563, + 13.679231 + ], + [ + 50.834889, + 13.67878 + ], + [ + 50.834925, + 13.678736 + ], + [ + 50.835135, + 13.678444 + ], + [ + 50.835255, + 13.678242 + ], + [ + 50.835335, + 13.678198 + ], + [ + 50.8354, + 13.678139 + ], + [ + 50.835539, + 13.677954 + ], + [ + 50.835559, + 13.677915 + ], + [ + 50.835581, + 13.67788 + ], + [ + 50.835681, + 13.677687 + ], + [ + 50.835794, + 13.677462 + ], + [ + 50.835923, + 13.677261 + ], + [ + 50.836031, + 13.677125 + ], + [ + 50.836119, + 13.677057 + ], + [ + 50.836248, + 13.676936 + ], + [ + 50.836281, + 13.676928 + ], + [ + 50.836303, + 13.676924 + ], + [ + 50.836382, + 13.676851 + ], + [ + 50.836412, + 13.676807 + ], + [ + 50.836504, + 13.676685 + ], + [ + 50.83655, + 13.676631 + ], + [ + 50.836683, + 13.676349 + ], + [ + 50.83674, + 13.676199 + ], + [ + 50.83679, + 13.676133 + ], + [ + 50.836864, + 13.676098 + ], + [ + 50.8369, + 13.676088 + ], + [ + 50.836906, + 13.675927 + ], + [ + 50.837006, + 13.675929 + ], + [ + 50.83714, + 13.675916 + ], + [ + 50.837484, + 13.675873 + ], + [ + 50.837531, + 13.675862 + ], + [ + 50.837577, + 13.675855 + ], + [ + 50.837692, + 13.67582 + ], + [ + 50.837741, + 13.675794 + ], + [ + 50.837824, + 13.675741 + ], + [ + 50.837862, + 13.6757 + ], + [ + 50.8379, + 13.67567 + ], + [ + 50.838164, + 13.675332 + ], + [ + 50.838658, + 13.674726 + ], + [ + 50.838788, + 13.674566 + ], + [ + 50.839118, + 13.674141 + ], + [ + 50.839347, + 13.673861 + ], + [ + 50.839654, + 13.673476 + ], + [ + 50.839969, + 13.673085 + ], + [ + 50.840239, + 13.672839 + ], + [ + 50.840467, + 13.672741 + ], + [ + 50.840664, + 13.672686 + ], + [ + 50.84086, + 13.672634 + ], + [ + 50.841083, + 13.672523 + ], + [ + 50.841272, + 13.672375 + ], + [ + 50.84151, + 13.67215 + ], + [ + 50.84221, + 13.671317 + ], + [ + 50.842416, + 13.67115 + ], + [ + 50.84276, + 13.670956 + ], + [ + 50.843144, + 13.670745 + ], + [ + 50.843268, + 13.670645 + ], + [ + 50.843335, + 13.670588 + ], + [ + 50.843456, + 13.670433 + ], + [ + 50.843655, + 13.670115 + ], + [ + 50.843791, + 13.669889 + ], + [ + 50.843986, + 13.669554 + ], + [ + 50.844072, + 13.669409 + ], + [ + 50.844161, + 13.669262 + ], + [ + 50.844272, + 13.669108 + ], + [ + 50.844412, + 13.668942 + ], + [ + 50.844668, + 13.668684 + ], + [ + 50.844804, + 13.668566 + ], + [ + 50.84505, + 13.668361 + ], + [ + 50.845269, + 13.668231 + ], + [ + 50.845608, + 13.668093 + ], + [ + 50.846452, + 13.667763 + ], + [ + 50.847365, + 13.667423 + ], + [ + 50.847627, + 13.667314 + ], + [ + 50.847884, + 13.66719 + ], + [ + 50.847911, + 13.667172 + ], + [ + 50.848141, + 13.667047 + ], + [ + 50.848305, + 13.666949 + ], + [ + 50.8488, + 13.666665 + ], + [ + 50.849183, + 13.666442 + ], + [ + 50.84946, + 13.666297 + ], + [ + 50.849536, + 13.666265 + ], + [ + 50.850001, + 13.666154 + ], + [ + 50.850406, + 13.66609 + ], + [ + 50.850623, + 13.666054 + ], + [ + 50.85102, + 13.665982 + ], + [ + 50.852124, + 13.665797 + ], + [ + 50.85232, + 13.665766 + ], + [ + 50.852514, + 13.66573 + ], + [ + 50.852842, + 13.665674 + ], + [ + 50.853676, + 13.665539 + ], + [ + 50.854205, + 13.665496 + ], + [ + 50.854313, + 13.665482 + ], + [ + 50.855234, + 13.66541 + ], + [ + 50.855719, + 13.665365 + ], + [ + 50.85596, + 13.66535 + ], + [ + 50.856211, + 13.665325 + ], + [ + 50.856432, + 13.665306 + ], + [ + 50.857616, + 13.665179 + ], + [ + 50.857842, + 13.665161 + ], + [ + 50.858241, + 13.665142 + ], + [ + 50.858348, + 13.665131 + ], + [ + 50.858578, + 13.665121 + ], + [ + 50.858977, + 13.66509 + ], + [ + 50.859123, + 13.665088 + ], + [ + 50.85922, + 13.665097 + ], + [ + 50.859718, + 13.665216 + ], + [ + 50.860214, + 13.665357 + ], + [ + 50.860884, + 13.665532 + ], + [ + 50.861044, + 13.665578 + ], + [ + 50.861802, + 13.665776 + ], + [ + 50.862227, + 13.665894 + ], + [ + 50.86239, + 13.665935 + ], + [ + 50.862847, + 13.666058 + ], + [ + 50.863003, + 13.666123 + ], + [ + 50.863069, + 13.666166 + ], + [ + 50.863144, + 13.66622 + ], + [ + 50.863271, + 13.666378 + ], + [ + 50.863329, + 13.666491 + ], + [ + 50.863357, + 13.666556 + ], + [ + 50.863394, + 13.666655 + ], + [ + 50.863415, + 13.666726 + ], + [ + 50.863457, + 13.666895 + ], + [ + 50.86351, + 13.667124 + ], + [ + 50.863551, + 13.667232 + ], + [ + 50.863594, + 13.667314 + ], + [ + 50.863604, + 13.66733 + ], + [ + 50.863663, + 13.667405 + ], + [ + 50.863728, + 13.667473 + ], + [ + 50.863792, + 13.667517 + ], + [ + 50.863857, + 13.66755 + ], + [ + 50.864183, + 13.66764 + ], + [ + 50.864399, + 13.667725 + ], + [ + 50.864503, + 13.667775 + ], + [ + 50.864747, + 13.667901 + ], + [ + 50.865373, + 13.668217 + ], + [ + 50.865957, + 13.668518 + ], + [ + 50.866582, + 13.668897 + ], + [ + 50.866934, + 13.669096 + ], + [ + 50.867457, + 13.669386 + ], + [ + 50.867885, + 13.669629 + ], + [ + 50.868336, + 13.669861 + ], + [ + 50.868636, + 13.670029 + ], + [ + 50.868783, + 13.670099 + ], + [ + 50.868888, + 13.670159 + ], + [ + 50.869041, + 13.670256 + ], + [ + 50.869141, + 13.670304 + ], + [ + 50.869244, + 13.670348 + ], + [ + 50.86939, + 13.670386 + ], + [ + 50.869534, + 13.670409 + ], + [ + 50.869662, + 13.670409 + ], + [ + 50.869851, + 13.670373 + ], + [ + 50.869944, + 13.670331 + ], + [ + 50.870101, + 13.670251 + ], + [ + 50.870272, + 13.670149 + ], + [ + 50.870557, + 13.669955 + ], + [ + 50.870803, + 13.669826 + ], + [ + 50.871072, + 13.66975 + ], + [ + 50.871303, + 13.669733 + ], + [ + 50.871491, + 13.669749 + ], + [ + 50.871752, + 13.669789 + ], + [ + 50.872179, + 13.66987 + ], + [ + 50.872441, + 13.669976 + ], + [ + 50.872574, + 13.670056 + ], + [ + 50.872737, + 13.670188 + ], + [ + 50.872846, + 13.670285 + ], + [ + 50.872964, + 13.670413 + ], + [ + 50.873074, + 13.670557 + ], + [ + 50.873165, + 13.670697 + ], + [ + 50.873393, + 13.671067 + ], + [ + 50.873516, + 13.671251 + ], + [ + 50.87365, + 13.671472 + ], + [ + 50.8737, + 13.671548 + ], + [ + 50.873815, + 13.671722 + ], + [ + 50.873898, + 13.671821 + ], + [ + 50.873921, + 13.671848 + ], + [ + 50.874026, + 13.671957 + ], + [ + 50.874137, + 13.672053 + ], + [ + 50.874246, + 13.672138 + ], + [ + 50.874487, + 13.672333 + ], + [ + 50.874542, + 13.672371 + ], + [ + 50.875598, + 13.673183 + ], + [ + 50.875769, + 13.673344 + ], + [ + 50.876006, + 13.673646 + ], + [ + 50.876308, + 13.67409 + ], + [ + 50.87655, + 13.674467 + ], + [ + 50.876866, + 13.674895 + ], + [ + 50.876965, + 13.675034 + ], + [ + 50.877402, + 13.675633 + ], + [ + 50.877623, + 13.675946 + ], + [ + 50.877836, + 13.676256 + ], + [ + 50.878009, + 13.676497 + ], + [ + 50.878144, + 13.676672 + ], + [ + 50.878267, + 13.676809 + ], + [ + 50.878429, + 13.67697 + ], + [ + 50.878551, + 13.677068 + ], + [ + 50.878716, + 13.677169 + ], + [ + 50.878858, + 13.677245 + ], + [ + 50.878989, + 13.677296 + ], + [ + 50.879029, + 13.677302 + ], + [ + 50.879133, + 13.677329 + ], + [ + 50.879329, + 13.67734 + ], + [ + 50.879645, + 13.677299 + ], + [ + 50.879858, + 13.677234 + ], + [ + 50.880299, + 13.677052 + ], + [ + 50.880551, + 13.676916 + ], + [ + 50.880748, + 13.676793 + ], + [ + 50.880983, + 13.676633 + ], + [ + 50.881167, + 13.676484 + ], + [ + 50.881428, + 13.676222 + ], + [ + 50.881527, + 13.676123 + ], + [ + 50.881723, + 13.675917 + ], + [ + 50.881901, + 13.675743 + ], + [ + 50.88204, + 13.675597 + ], + [ + 50.882085, + 13.675554 + ], + [ + 50.882236, + 13.675399 + ], + [ + 50.882445, + 13.675195 + ], + [ + 50.882734, + 13.674971 + ], + [ + 50.883133, + 13.674693 + ], + [ + 50.883349, + 13.674564 + ], + [ + 50.883458, + 13.674505 + ], + [ + 50.884279, + 13.674124 + ], + [ + 50.884604, + 13.673892 + ], + [ + 50.884901, + 13.673618 + ], + [ + 50.885708, + 13.67286 + ], + [ + 50.885913, + 13.672653 + ], + [ + 50.885932, + 13.672631 + ], + [ + 50.886143, + 13.672393 + ], + [ + 50.886597, + 13.671873 + ], + [ + 50.886768, + 13.671692 + ], + [ + 50.88716, + 13.671302 + ], + [ + 50.887267, + 13.671186 + ], + [ + 50.88738, + 13.671044 + ], + [ + 50.887507, + 13.670833 + ], + [ + 50.887853, + 13.670179 + ], + [ + 50.887901, + 13.670109 + ], + [ + 50.888094, + 13.669814 + ], + [ + 50.88836, + 13.6695 + ], + [ + 50.888714, + 13.669131 + ], + [ + 50.888822, + 13.66903 + ], + [ + 50.889093, + 13.668767 + ], + [ + 50.889333, + 13.668648 + ], + [ + 50.889979, + 13.668431 + ], + [ + 50.89035, + 13.668299 + ], + [ + 50.890825, + 13.668222 + ], + [ + 50.89099, + 13.668211 + ], + [ + 50.891064, + 13.668213 + ], + [ + 50.891068, + 13.668075 + ], + [ + 50.891106, + 13.667939 + ], + [ + 50.891182, + 13.667703 + ], + [ + 50.891275, + 13.667422 + ], + [ + 50.891376, + 13.66717 + ], + [ + 50.891445, + 13.667039 + ], + [ + 50.891505, + 13.666982 + ], + [ + 50.89163, + 13.666897 + ], + [ + 50.891721, + 13.666878 + ], + [ + 50.891878, + 13.666913 + ], + [ + 50.89224, + 13.667019 + ], + [ + 50.892296, + 13.666985 + ], + [ + 50.892387, + 13.667097 + ], + [ + 50.89253, + 13.667196 + ], + [ + 50.892681, + 13.667314 + ], + [ + 50.892748, + 13.667354 + ], + [ + 50.892795, + 13.667374 + ], + [ + 50.892852, + 13.667388 + ], + [ + 50.892897, + 13.66739 + ], + [ + 50.892979, + 13.667383 + ], + [ + 50.893059, + 13.667363 + ], + [ + 50.893235, + 13.667291 + ], + [ + 50.893317, + 13.667273 + ], + [ + 50.893395, + 13.667265 + ], + [ + 50.893482, + 13.667264 + ], + [ + 50.89357, + 13.66728 + ], + [ + 50.893642, + 13.667305 + ], + [ + 50.893756, + 13.667376 + ], + [ + 50.894268, + 13.66775 + ], + [ + 50.894537, + 13.667953 + ], + [ + 50.8948, + 13.668172 + ], + [ + 50.894855, + 13.668213 + ], + [ + 50.894901, + 13.668328 + ], + [ + 50.894944, + 13.668406 + ], + [ + 50.894985, + 13.668463 + ], + [ + 50.89513, + 13.668629 + ], + [ + 50.895155, + 13.668654 + ], + [ + 50.895214, + 13.668714 + ], + [ + 50.895249, + 13.668718 + ], + [ + 50.895305, + 13.668697 + ], + [ + 50.895403, + 13.668886 + ], + [ + 50.895558, + 13.669207 + ], + [ + 50.895666, + 13.669448 + ], + [ + 50.895748, + 13.669677 + ], + [ + 50.895788, + 13.669844 + ], + [ + 50.895799, + 13.669981 + ], + [ + 50.895781, + 13.670208 + ], + [ + 50.895726, + 13.670456 + ], + [ + 50.895614, + 13.670922 + ], + [ + 50.895593, + 13.671014 + ], + [ + 50.895503, + 13.671193 + ], + [ + 50.895611, + 13.671322 + ], + [ + 50.895825, + 13.67159 + ], + [ + 50.895967, + 13.671778 + ], + [ + 50.896067, + 13.671903 + ], + [ + 50.896348, + 13.672239 + ], + [ + 50.89642, + 13.672322 + ], + [ + 50.896615, + 13.672528 + ], + [ + 50.896853, + 13.672697 + ], + [ + 50.896892, + 13.67272 + ], + [ + 50.897072, + 13.672815 + ], + [ + 50.897246, + 13.672886 + ], + [ + 50.897397, + 13.672923 + ], + [ + 50.897633, + 13.672988 + ], + [ + 50.897781, + 13.673033 + ], + [ + 50.897985, + 13.673114 + ], + [ + 50.898187, + 13.673224 + ], + [ + 50.898401, + 13.673378 + ], + [ + 50.898594, + 13.673545 + ], + [ + 50.898838, + 13.673807 + ], + [ + 50.899073, + 13.674105 + ], + [ + 50.899395, + 13.67454 + ], + [ + 50.899572, + 13.67482 + ], + [ + 50.899741, + 13.67513 + ], + [ + 50.900106, + 13.675846 + ], + [ + 50.900365, + 13.676392 + ], + [ + 50.900537, + 13.676761 + ], + [ + 50.901462, + 13.678646 + ], + [ + 50.901633, + 13.679012 + ], + [ + 50.902072, + 13.679937 + ], + [ + 50.902146, + 13.680085 + ], + [ + 50.90274, + 13.681321 + ], + [ + 50.903397, + 13.682721 + ], + [ + 50.903598, + 13.683137 + ], + [ + 50.903876, + 13.68374 + ], + [ + 50.904166, + 13.684353 + ], + [ + 50.90442, + 13.684901 + ], + [ + 50.904493, + 13.685048 + ], + [ + 50.905001, + 13.686217 + ], + [ + 50.905969, + 13.688315 + ], + [ + 50.906668, + 13.689797 + ], + [ + 50.907231, + 13.691015 + ], + [ + 50.907565, + 13.691746 + ], + [ + 50.907794, + 13.692283 + ], + [ + 50.907893, + 13.692541 + ], + [ + 50.907983, + 13.692764 + ], + [ + 50.908096, + 13.693054 + ], + [ + 50.908134, + 13.693158 + ], + [ + 50.908312, + 13.693687 + ], + [ + 50.908381, + 13.693925 + ], + [ + 50.908418, + 13.694066 + ], + [ + 50.908537, + 13.694485 + ], + [ + 50.908593, + 13.694648 + ], + [ + 50.908655, + 13.694795 + ], + [ + 50.908748, + 13.69501 + ], + [ + 50.908851, + 13.695229 + ], + [ + 50.908942, + 13.69545 + ], + [ + 50.909025, + 13.695663 + ], + [ + 50.909075, + 13.695798 + ], + [ + 50.909126, + 13.695931 + ], + [ + 50.90918, + 13.696063 + ], + [ + 50.909292, + 13.696361 + ], + [ + 50.909343, + 13.696494 + ], + [ + 50.909483, + 13.696844 + ], + [ + 50.909823, + 13.697733 + ], + [ + 50.909922, + 13.697997 + ], + [ + 50.910059, + 13.698345 + ], + [ + 50.91013, + 13.69852 + ], + [ + 50.910155, + 13.69859 + ], + [ + 50.910226, + 13.69873 + ], + [ + 50.910295, + 13.698805 + ], + [ + 50.910359, + 13.69886 + ], + [ + 50.91042, + 13.698886 + ], + [ + 50.910506, + 13.698906 + ], + [ + 50.910728, + 13.698938 + ], + [ + 50.91101, + 13.698997 + ], + [ + 50.913911, + 13.699723 + ], + [ + 50.915687, + 13.700153 + ], + [ + 50.916501, + 13.700361 + ], + [ + 50.918387, + 13.70083 + ], + [ + 50.919148, + 13.701006 + ], + [ + 50.920027, + 13.701237 + ], + [ + 50.920929, + 13.701464 + ], + [ + 50.921058, + 13.701495 + ], + [ + 50.92189, + 13.701715 + ], + [ + 50.92259, + 13.701896 + ], + [ + 50.922868, + 13.701983 + ], + [ + 50.923061, + 13.702067 + ], + [ + 50.923197, + 13.702154 + ], + [ + 50.923468, + 13.702353 + ], + [ + 50.923554, + 13.702429 + ], + [ + 50.923681, + 13.702545 + ], + [ + 50.923866, + 13.702741 + ], + [ + 50.924185, + 13.70314 + ], + [ + 50.92448, + 13.703538 + ], + [ + 50.924708, + 13.703825 + ], + [ + 50.924855, + 13.703995 + ], + [ + 50.925005, + 13.704153 + ], + [ + 50.925228, + 13.704344 + ], + [ + 50.92547, + 13.704521 + ], + [ + 50.925623, + 13.704603 + ], + [ + 50.925787, + 13.704694 + ], + [ + 50.925931, + 13.704754 + ], + [ + 50.927463, + 13.705206 + ], + [ + 50.928312, + 13.705447 + ], + [ + 50.928482, + 13.705488 + ], + [ + 50.928692, + 13.705558 + ], + [ + 50.929082, + 13.705667 + ], + [ + 50.929569, + 13.705811 + ], + [ + 50.929782, + 13.705865 + ], + [ + 50.929989, + 13.705909 + ], + [ + 50.930129, + 13.705918 + ], + [ + 50.930264, + 13.705919 + ], + [ + 50.930352, + 13.705916 + ], + [ + 50.930533, + 13.705895 + ], + [ + 50.930836, + 13.705819 + ], + [ + 50.931015, + 13.705759 + ], + [ + 50.931693, + 13.705462 + ], + [ + 50.931988, + 13.705327 + ], + [ + 50.932356, + 13.705152 + ], + [ + 50.932645, + 13.705009 + ], + [ + 50.932948, + 13.704863 + ], + [ + 50.933293, + 13.704704 + ], + [ + 50.935622, + 13.703611 + ], + [ + 50.936805, + 13.703051 + ], + [ + 50.937445, + 13.702732 + ], + [ + 50.93867, + 13.702171 + ], + [ + 50.94147, + 13.700852 + ], + [ + 50.941655, + 13.700769 + ], + [ + 50.94177, + 13.700732 + ], + [ + 50.94192, + 13.700735 + ], + [ + 50.942128, + 13.700834 + ], + [ + 50.942334, + 13.700988 + ], + [ + 50.942541, + 13.701198 + ], + [ + 50.942715, + 13.701309 + ], + [ + 50.942883, + 13.701375 + ], + [ + 50.943003, + 13.701395 + ], + [ + 50.943195, + 13.701384 + ], + [ + 50.94331, + 13.701363 + ], + [ + 50.943484, + 13.701322 + ], + [ + 50.943579, + 13.701296 + ], + [ + 50.943978, + 13.701198 + ], + [ + 50.944016, + 13.701187 + ], + [ + 50.944321, + 13.701115 + ], + [ + 50.944496, + 13.70108 + ], + [ + 50.944649, + 13.701061 + ], + [ + 50.944807, + 13.701038 + ], + [ + 50.945214, + 13.70102 + ], + [ + 50.945702, + 13.701014 + ], + [ + 50.946347, + 13.700989 + ], + [ + 50.946899, + 13.700842 + ], + [ + 50.947757, + 13.700528 + ], + [ + 50.949599, + 13.699893 + ], + [ + 50.950119, + 13.699693 + ], + [ + 50.950416, + 13.699583 + ], + [ + 50.951349, + 13.69926 + ], + [ + 50.951722, + 13.699126 + ], + [ + 50.951948, + 13.699081 + ], + [ + 50.952191, + 13.699082 + ], + [ + 50.952293, + 13.699116 + ], + [ + 50.95248, + 13.699191 + ], + [ + 50.952922, + 13.699408 + ], + [ + 50.953505, + 13.699685 + ], + [ + 50.954111, + 13.699982 + ], + [ + 50.955184, + 13.700503 + ], + [ + 50.955359, + 13.700586 + ], + [ + 50.955728, + 13.700773 + ], + [ + 50.956344, + 13.70107 + ], + [ + 50.95698, + 13.70145 + ], + [ + 50.95719, + 13.701561 + ], + [ + 50.957784, + 13.701892 + ], + [ + 50.957997, + 13.702002 + ], + [ + 50.958212, + 13.70209 + ], + [ + 50.958386, + 13.702149 + ], + [ + 50.958674, + 13.702203 + ], + [ + 50.95901, + 13.702223 + ], + [ + 50.959974, + 13.702309 + ], + [ + 50.960229, + 13.702363 + ], + [ + 50.96043, + 13.702447 + ], + [ + 50.960625, + 13.702584 + ], + [ + 50.960822, + 13.702796 + ], + [ + 50.960968, + 13.703017 + ], + [ + 50.961092, + 13.703289 + ], + [ + 50.961206, + 13.703646 + ], + [ + 50.961297, + 13.704017 + ], + [ + 50.961741, + 13.706133 + ], + [ + 50.961832, + 13.706512 + ], + [ + 50.962029, + 13.707145 + ], + [ + 50.962256, + 13.707801 + ], + [ + 50.962446, + 13.7083 + ], + [ + 50.962542, + 13.708534 + ], + [ + 50.962652, + 13.708764 + ], + [ + 50.962795, + 13.709034 + ], + [ + 50.963243, + 13.709746 + ], + [ + 50.963384, + 13.709923 + ], + [ + 50.963472, + 13.710029 + ], + [ + 50.963583, + 13.710117 + ], + [ + 50.963684, + 13.710215 + ], + [ + 50.963947, + 13.710439 + ], + [ + 50.965121, + 13.711432 + ], + [ + 50.965285, + 13.711601 + ], + [ + 50.965448, + 13.711809 + ], + [ + 50.965673, + 13.712171 + ], + [ + 50.965891, + 13.712473 + ], + [ + 50.965986, + 13.712553 + ], + [ + 50.966083, + 13.712574 + ], + [ + 50.966158, + 13.712582 + ], + [ + 50.966923, + 13.71254 + ], + [ + 50.967783, + 13.712462 + ], + [ + 50.968148, + 13.712445 + ], + [ + 50.968491, + 13.712415 + ], + [ + 50.968862, + 13.712375 + ], + [ + 50.969528, + 13.712293 + ], + [ + 50.969894, + 13.712244 + ], + [ + 50.969977, + 13.712221 + ], + [ + 50.970119, + 13.712153 + ], + [ + 50.970352, + 13.711985 + ], + [ + 50.970478, + 13.711828 + ], + [ + 50.970923, + 13.711205 + ], + [ + 50.97108, + 13.711016 + ], + [ + 50.971208, + 13.710887 + ], + [ + 50.971317, + 13.710796 + ], + [ + 50.971606, + 13.710597 + ], + [ + 50.971888, + 13.710435 + ], + [ + 50.972331, + 13.710232 + ], + [ + 50.972495, + 13.710151 + ], + [ + 50.972695, + 13.710103 + ], + [ + 50.972915, + 13.710116 + ], + [ + 50.973139, + 13.710204 + ], + [ + 50.973335, + 13.710311 + ], + [ + 50.9736, + 13.710593 + ], + [ + 50.973825, + 13.710975 + ], + [ + 50.973952, + 13.711384 + ], + [ + 50.974035, + 13.711803 + ], + [ + 50.974125, + 13.712496 + ], + [ + 50.974256, + 13.713188 + ], + [ + 50.974348, + 13.713412 + ], + [ + 50.974529, + 13.713835 + ], + [ + 50.974737, + 13.714197 + ], + [ + 50.97497, + 13.714499 + ], + [ + 50.97543, + 13.714957 + ], + [ + 50.975565, + 13.715083 + ], + [ + 50.975654, + 13.715165 + ], + [ + 50.975888, + 13.715354 + ], + [ + 50.977961, + 13.716963 + ], + [ + 50.978513, + 13.717419 + ], + [ + 50.978689, + 13.717522 + ], + [ + 50.978744, + 13.717539 + ], + [ + 50.978894, + 13.717575 + ], + [ + 50.978996, + 13.717586 + ], + [ + 50.979097, + 13.717593 + ], + [ + 50.979206, + 13.717583 + ], + [ + 50.97926, + 13.717574 + ], + [ + 50.979306, + 13.717567 + ], + [ + 50.979433, + 13.717517 + ], + [ + 50.979707, + 13.717373 + ], + [ + 50.980689, + 13.716808 + ], + [ + 50.9808, + 13.716718 + ], + [ + 50.980885, + 13.716621 + ], + [ + 50.981681, + 13.7153 + ], + [ + 50.981836, + 13.715138 + ], + [ + 50.981883, + 13.715111 + ], + [ + 50.982025, + 13.715064 + ], + [ + 50.982783, + 13.714968 + ], + [ + 50.983329, + 13.71481 + ], + [ + 50.983508, + 13.714747 + ], + [ + 50.984451, + 13.71441 + ], + [ + 50.984607, + 13.714379 + ], + [ + 50.984789, + 13.714393 + ], + [ + 50.985856, + 13.714666 + ], + [ + 50.986884, + 13.715037 + ], + [ + 50.987051, + 13.71507 + ], + [ + 50.987226, + 13.715081 + ], + [ + 50.987429, + 13.715074 + ], + [ + 50.989421, + 13.714891 + ], + [ + 50.989876, + 13.714903 + ], + [ + 50.990324, + 13.714991 + ], + [ + 50.990794, + 13.715235 + ], + [ + 50.9912, + 13.715579 + ], + [ + 50.992457, + 13.716868 + ], + [ + 50.992837, + 13.717168 + ], + [ + 50.993012, + 13.717294 + ], + [ + 50.993213, + 13.717413 + ], + [ + 50.993524, + 13.717543 + ], + [ + 50.993987, + 13.717693 + ], + [ + 50.994121, + 13.717736 + ], + [ + 50.994395, + 13.717831 + ], + [ + 50.996009, + 13.718324 + ], + [ + 50.996469, + 13.718468 + ], + [ + 50.996693, + 13.718544 + ], + [ + 50.996921, + 13.718625 + ], + [ + 50.997261, + 13.7188 + ], + [ + 50.997402, + 13.718895 + ], + [ + 50.997556, + 13.71901 + ], + [ + 50.997779, + 13.719189 + ], + [ + 50.998057, + 13.719474 + ], + [ + 50.998253, + 13.719681 + ], + [ + 50.998424, + 13.719899 + ], + [ + 50.998567, + 13.720081 + ], + [ + 50.998744, + 13.7203 + ], + [ + 50.999782, + 13.721624 + ], + [ + 51.000429, + 13.722356 + ], + [ + 51.001036, + 13.722992 + ], + [ + 51.002502, + 13.724344 + ], + [ + 51.002681, + 13.724512 + ], + [ + 51.002954, + 13.724836 + ], + [ + 51.00321, + 13.725259 + ], + [ + 51.003382, + 13.725679 + ], + [ + 51.003752, + 13.726676 + ], + [ + 51.00407, + 13.72747 + ], + [ + 51.004243, + 13.727806 + ], + [ + 51.00452, + 13.728352 + ], + [ + 51.00475, + 13.728655 + ], + [ + 51.004785, + 13.728702 + ], + [ + 51.005556, + 13.729432 + ], + [ + 51.005701, + 13.729511 + ], + [ + 51.006133, + 13.729737 + ], + [ + 51.006454, + 13.729824 + ], + [ + 51.006656, + 13.729869 + ], + [ + 51.006778, + 13.72989 + ], + [ + 51.007562, + 13.730009 + ], + [ + 51.008144, + 13.730084 + ], + [ + 51.008616, + 13.7302 + ], + [ + 51.009035, + 13.730236 + ], + [ + 51.009363, + 13.730191 + ], + [ + 51.0095, + 13.730156 + ], + [ + 51.009644, + 13.730096 + ], + [ + 51.009805, + 13.730001 + ], + [ + 51.009963, + 13.72989 + ], + [ + 51.010146, + 13.729711 + ], + [ + 51.010327, + 13.729413 + ], + [ + 51.010473, + 13.729126 + ], + [ + 51.010603, + 13.728836 + ], + [ + 51.01067, + 13.728586 + ], + [ + 51.010722, + 13.728374 + ], + [ + 51.0108, + 13.727898 + ], + [ + 51.010877, + 13.726521 + ], + [ + 51.010909, + 13.726256 + ], + [ + 51.010969, + 13.725947 + ], + [ + 51.011054, + 13.725617 + ], + [ + 51.011138, + 13.725381 + ], + [ + 51.011233, + 13.725149 + ], + [ + 51.011417, + 13.724812 + ], + [ + 51.011723, + 13.724394 + ], + [ + 51.012598, + 13.723703 + ], + [ + 51.013103, + 13.723155 + ], + [ + 51.013316, + 13.72297 + ], + [ + 51.013559, + 13.722815 + ], + [ + 51.013727, + 13.722751 + ], + [ + 51.013905, + 13.722721 + ], + [ + 51.014061, + 13.722722 + ], + [ + 51.014205, + 13.722766 + ], + [ + 51.014475, + 13.722853 + ], + [ + 51.01471, + 13.72299 + ], + [ + 51.014868, + 13.723118 + ], + [ + 51.01505, + 13.723328 + ], + [ + 51.015239, + 13.723643 + ], + [ + 51.01536, + 13.723921 + ], + [ + 51.015454, + 13.724226 + ], + [ + 51.015511, + 13.724488 + ], + [ + 51.015565, + 13.724869 + ], + [ + 51.015654, + 13.72609 + ], + [ + 51.015699, + 13.726519 + ], + [ + 51.015757, + 13.726855 + ], + [ + 51.015842, + 13.727239 + ], + [ + 51.015975, + 13.727655 + ], + [ + 51.016151, + 13.728049 + ], + [ + 51.016321, + 13.728352 + ], + [ + 51.016444, + 13.728567 + ], + [ + 51.016613, + 13.728784 + ], + [ + 51.016845, + 13.729016 + ], + [ + 51.017019, + 13.729157 + ], + [ + 51.017199, + 13.729273 + ], + [ + 51.017594, + 13.7295 + ], + [ + 51.017999, + 13.729647 + ], + [ + 51.018153, + 13.729641 + ], + [ + 51.018628, + 13.729591 + ], + [ + 51.019006, + 13.729573 + ], + [ + 51.019375, + 13.72957 + ], + [ + 51.019575, + 13.729619 + ], + [ + 51.019622, + 13.729634 + ], + [ + 51.019729, + 13.729684 + ], + [ + 51.019841, + 13.729708 + ], + [ + 51.01993, + 13.72973 + ], + [ + 51.020457, + 13.729865 + ], + [ + 51.020551, + 13.729893 + ], + [ + 51.02137, + 13.730258 + ], + [ + 51.021759, + 13.730408 + ], + [ + 51.021943, + 13.730436 + ], + [ + 51.022123, + 13.730421 + ], + [ + 51.023534, + 13.730651 + ], + [ + 51.024124, + 13.730781 + ], + [ + 51.024238, + 13.730816 + ], + [ + 51.024362, + 13.730871 + ], + [ + 51.024472, + 13.730925 + ], + [ + 51.024595, + 13.731024 + ], + [ + 51.024681, + 13.731133 + ], + [ + 51.024771, + 13.731263 + ], + [ + 51.024852, + 13.731389 + ], + [ + 51.024897, + 13.73147 + ], + [ + 51.024968, + 13.731579 + ], + [ + 51.025094, + 13.73173 + ], + [ + 51.025213, + 13.731831 + ], + [ + 51.025235, + 13.731846 + ], + [ + 51.025265, + 13.731861 + ], + [ + 51.025399, + 13.731913 + ], + [ + 51.025505, + 13.731926 + ], + [ + 51.025527, + 13.731926 + ], + [ + 51.025601, + 13.731919 + ], + [ + 51.025707, + 13.7319 + ], + [ + 51.025864, + 13.731866 + ], + [ + 51.026318, + 13.731747 + ], + [ + 51.026515, + 13.731708 + ], + [ + 51.027026, + 13.731622 + ], + [ + 51.027052, + 13.731616 + ], + [ + 51.027271, + 13.731563 + ], + [ + 51.027413, + 13.731506 + ], + [ + 51.027589, + 13.731461 + ], + [ + 51.027608, + 13.731453 + ], + [ + 51.028012, + 13.731306 + ], + [ + 51.028468, + 13.731183 + ], + [ + 51.028815, + 13.731104 + ], + [ + 51.029115, + 13.731061 + ], + [ + 51.029457, + 13.730978 + ], + [ + 51.029483, + 13.730991 + ], + [ + 51.02942, + 13.730986 + ], + [ + 51.02983, + 13.730893 + ], + [ + 51.030047, + 13.730852 + ], + [ + 51.030205, + 13.730826 + ], + [ + 51.030433, + 13.73078 + ], + [ + 51.030713, + 13.730703 + ], + [ + 51.030891, + 13.730616 + ], + [ + 51.031068, + 13.730541 + ], + [ + 51.03182, + 13.730346 + ], + [ + 51.032301, + 13.730228 + ], + [ + 51.032373, + 13.730213 + ], + [ + 51.032507, + 13.730204 + ], + [ + 51.032633, + 13.730213 + ], + [ + 51.032741, + 13.730246 + ], + [ + 51.032891, + 13.730335 + ], + [ + 51.033155, + 13.73054 + ], + [ + 51.033531, + 13.730729 + ], + [ + 51.033836, + 13.73089 + ], + [ + 51.034131, + 13.731116 + ], + [ + 51.034212, + 13.731166 + ], + [ + 51.034382, + 13.73125 + ], + [ + 51.034548, + 13.731324 + ], + [ + 51.034816, + 13.731453 + ], + [ + 51.03507, + 13.731553 + ], + [ + 51.035124, + 13.731574 + ], + [ + 51.035302, + 13.731656 + ], + [ + 51.035906, + 13.731938 + ], + [ + 51.037567, + 13.732721 + ], + [ + 51.03817, + 13.73302 + ], + [ + 51.038692, + 13.733263 + ], + [ + 51.038836, + 13.733341 + ], + [ + 51.038988, + 13.733431 + ], + [ + 51.039063, + 13.733482 + ], + [ + 51.0396, + 13.733918 + ], + [ + 51.039708, + 13.73402 + ], + [ + 51.039924, + 13.734201 + ] + ], + "interchange": { + "desc": "Fussweg", + "type": 100, + "coords": [ + [ + 51.039936, + 13.734183 + ], + [ + 51.039925, + 13.734172 + ], + [ + 51.040043, + 13.734271 + ], + [ + 51.039993, + 13.734432 + ], + [ + 51.039981, + 13.734459 + ], + [ + 51.039998, + 13.734477 + ], + [ + 51.039942, + 13.73463 + ], + [ + 51.03993, + 13.734621 + ], + [ + 51.039919, + 13.734648 + ], + [ + 51.039891, + 13.734621 + ], + [ + 51.04032, + 13.733327 + ], + [ + 51.040456, + 13.732905 + ], + [ + 51.040552, + 13.732618 + ], + [ + 51.040817, + 13.7318 + ], + [ + 51.040815, + 13.731815 + ] + ] + }, + "properties": { + "vehicleAccess": [ + { + "height": 0, + "halfWidth": 0, + "doorWidth": 0, + "attributes": 536870912, + "areaToStay": 0, + "areaToMove": 0 + } + ] + } }, { - "DlId": "de:vvo:23-333", - "StatelessId": "voe:23333: :R:j23", - "Type": "PlusBus", - "Name": "333", - "Direction": "Dresden Ammonstraße / Budapester Straße", - "Changes": [], - "Diva": { - "Number": "23333", - "Network": "voe" - }, - "TransportationCompany": "RVSOE", - "OperatorCode": "3", - "ProductName": "PlusBus", - "TrainNumber": "" - } - ], - "FareZoneOrigin": 10, - "FareZoneDestination": 10, - "RouteId": 1, - "PartialRoutes": [ - { - "Duration": 3, - "Mot": { - "DlId": "", - "StatelessId": ":: : :", - "Type": "Footpath", - "Name": "Fussweg", - "Changes": [], - "Diva": { - "Number": "", - "Network": "" - }, - "TransportationCompany": "", - "OperatorCode": "", - "ProductName": "Fussweg", - "TrainNumber": "" - }, - "MapDataIndex": 0, - "Shift": "None", - "RegularStops": [ - { - "ArrivalTime": "/Date(1681916820000-0000)/", - "DepartureTime": "/Date(1681916820000-0000)/", - "Place": "Dresden", - "Name": "SĂŒdvorstadt", - "Type": "Stop", - "DataId": "33000133", - "DhId": "de:14612:133", - "Latitude": 5656846, - "Longitude": 4620915, - "CancelReasons": [], - "ParkAndRail": [] - }, - { - "ArrivalTime": "/Date(1681917000000-0000)/", - "DepartureTime": "/Date(1681917000000-0000)/", - "Place": "Dresden", - "Name": "Bernhardstraße", - "Type": "Stop", - "DataId": "33000724", - "DhId": "de:14612:724", - "Platform": { - "Name": "1", - "Type": "Platform" - }, - "Latitude": 5656907, - "Longitude": 4620805, - "CancelReasons": [], - "ParkAndRail": [] - } - ], - "NextDepartureTimes": [], - "PreviousDepartureTimes": [] + "duration": 2640, + "origin": { + "isGlobalId": true, + "id": "de:14612:28:8:Gleis18", + "name": "Dresden Hauptbahnhof", + "disassembledName": "13", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.0408, + 13.7318 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:28", + "name": "Dresden Hauptbahnhof", + "disassembledName": "Hauptbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000028" + }, + "coord": [ + 51.03993, + 13.732932 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "departureTimeBaseTimetable": "2025-07-28T09:59:00Z", + "departureTimePlanned": "2025-07-28T09:59:00Z", + "departureTimeEstimated": "2025-07-28T09:59:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "13", + "areaGid": "de:14612:28:8", + "area": "8", + "platform": "Gl.13", + "platformName": "13", + "plannedPlatformName": "13", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "destination": { + "isGlobalId": true, + "id": "de:14628:3620:1:Gleis1", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "1", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919503, + 14.137497 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3620", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "Nationalparkbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:10", + "name": "Bad Schandau", + "type": "locality" + }, + "properties": { + "stopId": "33003620" + }, + "coord": [ + 50.91927, + 14.138099 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6, + 9 + ], + "arrivalTimeBaseTimetable": "2025-07-28T10:43:00Z", + "arrivalTimePlanned": "2025-07-28T10:43:00Z", + "arrivalTimeEstimated": "2025-07-28T10:43:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14628:3620:1", + "area": "1", + "platform": "Gl. 1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "transportation": { + "id": "ddb:92D01: :H:j25", + "name": "S-Bahn S1", + "disassembledName": "S1", + "number": "S1", + "product": { + "id": 3, + "class": 1, + "name": "S-Bahn", + "iconId": 2 + }, + "operator": { + "code": "8004", + "id": "8004", + "name": "DB Regio AG S\u00fcdost" + }, + "destination": { + "id": "33003620", + "name": "Bad Schandau Nationalparkbahnhof", + "type": "stop" + }, + "properties": { + "trainName": "S-Bahn", + "trainType": "S", + "trainNumber": "31731", + "tripCode": 132, + "timetablePeriod": "Jahresfahrplan 2025", + "lineDisplay": "LINE", + "globalId": "de:vvo:10-1" + } + }, + "hints": [ + { + "content": "Fahrradmitnahme begrenzt m\u00f6glich", + "providerCode": "G", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + }, + { + "content": "Fahrzeuggebundene Einstiegshilfe am Zugende", + "providerCode": "ZE", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + } + ], + "stopSequence": [ + { + "isGlobalId": true, + "id": "de:14612:28:8:Gleis18", + "name": "Dresden Hauptbahnhof", + "disassembledName": "13", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.0408, + 13.7318 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:28", + "name": "Dresden Hauptbahnhof", + "disassembledName": "Hauptbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000028" + }, + "coord": [ + 51.03993, + 13.732932 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "13", + "areaGid": "de:14612:28:8", + "area": "8", + "platform": "Gl.13", + "platformName": "13", + "plannedPlatformName": "13", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "vms:;voe:103;voe:10000" + }, + "departureTimePlanned": "2025-07-28T09:59:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:757:1:Gleis2", + "name": "Dresden S-Bf. Strehlen", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.030621, + 13.76193 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:757", + "name": "Dresden S-Bf. Strehlen", + "disassembledName": "S-Bf. Strehlen", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000757" + }, + "coord": [ + 51.031022, + 13.761139 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:757:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:100;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:01:00Z", + "departureTimePlanned": "2025-07-28T10:02:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:907:1:Gleis2", + "name": "Dresden S-Bahnhof Reick", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.021095, + 13.790909 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:907", + "name": "Dresden S-Bahnhof Reick", + "disassembledName": "S-Bahnhof Reick", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000907" + }, + "coord": [ + 51.02127, + 13.79064 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:907:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:100;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:04:00Z", + "departureTimePlanned": "2025-07-28T10:04:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:919:1:Gleis2", + "name": "Dresden S-Bahnhof Dobritz", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 51.011437, + 13.808876 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:919", + "name": "Dresden S-Bahnhof Dobritz", + "disassembledName": "S-Bahnhof Dobritz", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000919" + }, + "coord": [ + 51.011635, + 13.808516 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:919:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:100;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:06:00Z", + "departureTimePlanned": "2025-07-28T10:06:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:98:1:Gleis2", + "name": "Dresden S-Bahnhof Niedersedlitz", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.999538, + 13.828594 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:98", + "name": "Dresden S-Bahnhof Niedersedlitz", + "disassembledName": "S-Bahnhof Niedersedlitz", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000098" + }, + "coord": [ + 50.999459, + 13.828818 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 4, + 5, + 6, + 10 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:98:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:101;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:08:00Z", + "departureTimePlanned": "2025-07-28T10:09:00Z" + }, + { + "isGlobalId": true, + "id": "de:14612:910:1:Gleis2", + "name": "Dresden S-Bf. Zschachwitz", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.989813, + 13.844709 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14612:910", + "name": "Dresden S-Bf. Zschachwitz", + "disassembledName": "S-Bf. Zschachwitz", + "type": "stop", + "parent": { + "id": "placeID:14612000:1", + "name": "Dresden", + "type": "locality" + }, + "properties": { + "stopId": "33000910" + }, + "coord": [ + 50.989649, + 13.845168 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14612:910:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:101;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:11:00Z", + "departureTimePlanned": "2025-07-28T10:11:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3040:1:Gleis2", + "name": "Heidenau Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.981268, + 13.858849 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3040", + "name": "Heidenau Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628160:1", + "name": "Heidenau (Sachsen)", + "type": "locality" + }, + "properties": { + "stopId": "33003040" + }, + "coord": [ + 50.98081, + 13.859945 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3040:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:709;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:13:00Z", + "departureTimePlanned": "2025-07-28T10:14:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3053:1:Gleis2", + "name": "Heidenau S-Bahnhof S\u00fcd", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.971732, + 13.87456 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3053", + "name": "Heidenau S-Bahnhof S\u00fcd", + "disassembledName": "S-Bahnhof S\u00fcd", + "type": "stop", + "parent": { + "id": "placeID:14628160:1", + "name": "Heidenau (Sachsen)", + "type": "locality" + }, + "properties": { + "stopId": "33003053" + }, + "coord": [ + 50.972371, + 13.874345 + ], + "niveau": 0 + }, + "productClasses": [ + 1, + 5, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3053:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:709;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:16:00Z", + "departureTimePlanned": "2025-07-28T10:16:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3065:1:Gleis2", + "name": "Heidenau S-Bf. Gro\u00dfsedlitz", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.960785, + 13.894808 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3065", + "name": "Heidenau S-Bf. Gro\u00dfsedlitz", + "disassembledName": "S-Bf. Gro\u00dfsedlitz", + "type": "stop", + "parent": { + "id": "placeID:14628160:1", + "name": "Heidenau (Sachsen)", + "type": "locality" + }, + "properties": { + "stopId": "33003065" + }, + "coord": [ + 50.960989, + 13.894449 + ], + "niveau": 0 + }, + "productClasses": [ + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3065:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:709;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:18:00Z", + "departureTimePlanned": "2025-07-28T10:18:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3370:4:Gleis3", + "name": "Pirna Bahnhof", + "disassembledName": "3", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.962607, + 13.929241 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3370", + "name": "Pirna Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628270:130", + "name": "Pirna", + "type": "locality" + }, + "properties": { + "stopId": "33003370" + }, + "coord": [ + 50.962352, + 13.928855 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "3", + "areaGid": "de:14628:3370:4", + "area": "4", + "platform": "Gl. 3", + "platformName": "3", + "plannedPlatformName": "3", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 4, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:700;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:21:00Z", + "departureTimePlanned": "2025-07-28T10:22:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3420:3:Gleis2", + "name": "Obervogelgesang Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.949954, + 13.98932 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3420", + "name": "Obervogelgesang Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628270:120", + "name": "Obervogelgesang", + "type": "locality" + }, + "properties": { + "stopId": "33003420" + }, + "coord": [ + 50.949847, + 13.989626 + ], + "niveau": 0 + }, + "productClasses": [ + 1, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3420:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:707;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:26:00Z", + "departureTimePlanned": "2025-07-28T10:26:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3720:3:Gleis2", + "name": "Stadt Wehlen Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.953848, + 14.032745 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3720", + "name": "Stadt Wehlen Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628370:30", + "name": "Stadt Wehlen", + "type": "locality" + }, + "properties": { + "stopId": "33003720" + }, + "coord": [ + 50.953944, + 14.032754 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3720:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:707|729;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:29:00Z", + "departureTimePlanned": "2025-07-28T10:30:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3710:3:Gleis2", + "name": "Kurort Rathen Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.956649, + 14.075756 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3710", + "name": "Kurort Rathen Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628310:1", + "name": "Rathen Kurort", + "type": "locality" + }, + "properties": { + "stopId": "33003710" + }, + "coord": [ + 50.956541, + 14.076026 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3710:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:729;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:33:00Z", + "departureTimePlanned": "2025-07-28T10:33:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3500:3:Gleis2", + "name": "K\u00f6nigstein Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919355, + 14.0782 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3500", + "name": "K\u00f6nigstein Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628210:10", + "name": "K\u00f6nigstein (S\u00e4chsische Schweiz)", + "type": "locality" + }, + "properties": { + "stopId": "33003500" + }, + "coord": [ + 50.919406, + 14.078541 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3500:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:38:00Z", + "departureTimePlanned": "2025-07-28T10:38:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3620:1:Gleis1", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "1", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919503, + 14.137497 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3620", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "Nationalparkbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:10", + "name": "Bad Schandau", + "type": "locality" + }, + "properties": { + "stopId": "33003620" + }, + "coord": [ + 50.91927, + 14.138099 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6, + 9 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "1", + "areaGid": "de:14628:3620:1", + "area": "1", + "platform": "Gl. 1", + "platformName": "1", + "plannedPlatformName": "1", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:43:00Z" + } + ], + "footPathInfo": [ + { + "position": "AFTER", + "duration": 180 + } + ], + "infos": [ + { + "priority": "normal", + "id": "23501", + "version": 268389061, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Bauarbeiten im oberen Elbtal", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23501&seqID=268389061", + "content": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                        

wegen Bauarbeiten im oberen Elbtal kommt es zu folgenden Fahrplan\u00e4nderungen im Saisonverkehr:

Linie S 1 (Mei\u00dfen Triebischtal \u2013 Coswig \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na)

6., 13., 20., 27. Juli, 3., 10., 17., 24., 31. August 7., 14. und 21. September 2025, 10.50 Uhr \u2013 11.20 Uhr

  • S-Bahn 31785 planm\u00e4\u00dfig Dresden Hbf ab 10.14 Uhr: Ausfall Bad Schandau \u25ba Sch\u00f6na

6., 13., 20., 27. Juli, 3., 10., 17., 24., 31. August 7., 14. und 21. September 2025, 16.30 Uhr \u2013 17.00 Uhr

  • S-Bahn 31786 planm\u00e4\u00dfig Sch\u00f6na ab 16.41 Uhr: Ausfall Sch\u00f6na \u25ba Bad Schandau
", + "subtitle": "Bauarbeiten im oberen Elbtal", + "title": "Linienaenderung", + "additionalText": "inEFA=\"true\";MeldungTyp=\"Information\"", + "htmlText": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                        

wegen Bauarbeiten im oberen Elbtal kommt es zu folgenden Fahrplan\u00e4nderungen im Saisonverkehr:

Linie S 1 (Mei\u00dfen Triebischtal \u2013 Coswig \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na)

6., 13., 20., 27. Juli, 3., 10., 17., 24., 31. August 7., 14. und 21. September 2025, 10.50 Uhr \u2013 11.20 Uhr

  • S-Bahn 31785 planm\u00e4\u00dfig Dresden Hbf ab 10.14 Uhr: Ausfall Bad Schandau \u25ba Sch\u00f6na

6., 13., 20., 27. Juli, 3., 10., 17., 24., 31. August 7., 14. und 21. September 2025, 16.30 Uhr \u2013 17.00 Uhr

  • S-Bahn 31786 planm\u00e4\u00dfig Sch\u00f6na ab 16.41 Uhr: Ausfall Sch\u00f6na \u25ba Bad Schandau
" + } + ] + }, + { + "priority": "normal", + "id": "23490", + "version": 267719461, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Ausfall zwischen Bad Schandau und Sch\u00f6na, Ersatzverkehr mit Bus", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23490&seqID=267719461", + "content": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                       

wegen Bauarbeiten kommt es von Montag, 30.06.2025, 00:00 Uhr bis Samstag, 13.12.2025, 00:00 Uhr, zu folgenden Fahrplan\u00e4nderungen:

S 1 Mei\u00dfen Triebischtal \u2013 Coswig (b Dresden) \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na

Die Z\u00fcge fallen zwischen Bad Schandau und Sch\u00f6na aus. Es f\u00e4hrt ein Ersatzverkehr mit Bus. Bitte beachten Sie die vom Zugverkehr abweichenden Fahrzeiten der Busse. Alternativ nutzen Sie bitte ebenfalls die Linie U28. Die in der Ausflugszeit verkehrenden Zusatzz\u00fcge (S1, RE50) verkehren teilweise bis Sch\u00f6na.

Die \u00c4nderungen sind in der digitalen Reiseauskunft verf\u00fcgbar.

Links

  • Um keine kurzfristigen \u00c4nderungen zu verpassen, informieren Sie sich bitte unmittelbar vor Fahrtantritt in den digitalen Reiseauskunftsmedien unter bahn.de oder in der App DB Navigator.
  • Den Weg zum Ersatzverkehr mit Bus finden Sie unter https://www.vvo-online.de/Umgebungsplan.
", + "subtitle": "Ausfall zwischen Bad Schandau und Sch\u00f6na, Ersatzverkehr mit Bus", + "title": "Linienaenderung", + "additionalText": "inEFA=\"true\";MeldungTyp=\"Information\"", + "htmlText": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                       

wegen Bauarbeiten kommt es von Montag, 30.06.2025, 00:00 Uhr bis Samstag, 13.12.2025, 00:00 Uhr, zu folgenden Fahrplan\u00e4nderungen:

S 1 Mei\u00dfen Triebischtal \u2013 Coswig (b Dresden) \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na

Die Z\u00fcge fallen zwischen Bad Schandau und Sch\u00f6na aus. Es f\u00e4hrt ein Ersatzverkehr mit Bus. Bitte beachten Sie die vom Zugverkehr abweichenden Fahrzeiten der Busse. Alternativ nutzen Sie bitte ebenfalls die Linie U28. Die in der Ausflugszeit verkehrenden Zusatzz\u00fcge (S1, RE50) verkehren teilweise bis Sch\u00f6na.

Die \u00c4nderungen sind in der digitalen Reiseauskunft verf\u00fcgbar.

Links

  • Um keine kurzfristigen \u00c4nderungen zu verpassen, informieren Sie sich bitte unmittelbar vor Fahrtantritt in den digitalen Reiseauskunftsmedien unter bahn.de oder in der App DB Navigator.
  • Den Weg zum Ersatzverkehr mit Bus finden Sie unter https://www.vvo-online.de/Umgebungsplan.
" + } + ] + }, + { + "priority": "normal", + "id": "23479", + "version": 267609661, + "type": "lineInfo", + "infoLinks": [ + { + "urlText": "Bauarbeiten in Dresden Hbf", + "url": "http://192.168.150.204:8081/ics/XSLT_CM_SHOWADDINFO_REQUEST?infoID=23479&seqID=267609661", + "content": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                       

wegen Bauarbeiten in Dresden Hbf kommt es zu folgenden Fahrplan\u00e4nderungen:

Linie S 1 (Mei\u00dfen Triebischtal \u2013 Coswig (b Dresden) \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na)

in den N\u00e4chten 30. Juni/1. Juli \u20134./5., 6./7. \u2013 11./12., 13./14. \u2013 18./19., 20./21., 22./23. \u2013 25./26., 27./28. \u2013 1./2. August, 3./4. \u2013 8./9. August 2025, jeweils 23.40 Uhr \u2013 2.40 Uhr

  • Haltausfall Freiberger Stra\u00dfe

Linie S 2 (Pirna \u2013 Dresden \u2013 Dresden Flughafen)

in den N\u00e4chten 30. Juni/1. Juli \u20134./5., 6./7. \u2013 11./12., 13./14. \u2013 18./19., 20./21., 22./23. \u2013 25./26., 27./28. \u2013 1./2. August, 3./4. \u2013 8./9. August 2025, jeweils 23.55 Uhr \u2013 0.10 Uhr

  • Haltausfall Freiberger Stra\u00dfe
", + "subtitle": "Bauarbeiten in Dresden Hbf", + "title": "Linienaenderung", + "additionalText": "inEFA=\"true\";MeldungTyp=\"Information\"", + "htmlText": "

Beschreibung

Sehr geehrte Fahrg\u00e4ste,                                                       

wegen Bauarbeiten in Dresden Hbf kommt es zu folgenden Fahrplan\u00e4nderungen:

Linie S 1 (Mei\u00dfen Triebischtal \u2013 Coswig (b Dresden) \u2013 Dresden \u2013 Pirna \u2013 Sch\u00f6na)

in den N\u00e4chten 30. Juni/1. Juli \u20134./5., 6./7. \u2013 11./12., 13./14. \u2013 18./19., 20./21., 22./23. \u2013 25./26., 27./28. \u2013 1./2. August, 3./4. \u2013 8./9. August 2025, jeweils 23.40 Uhr \u2013 2.40 Uhr

  • Haltausfall Freiberger Stra\u00dfe

Linie S 2 (Pirna \u2013 Dresden \u2013 Dresden Flughafen)

in den N\u00e4chten 30. Juni/1. Juli \u20134./5., 6./7. \u2013 11./12., 13./14. \u2013 18./19., 20./21., 22./23. \u2013 25./26., 27./28. \u2013 1./2. August, 3./4. \u2013 8./9. August 2025, jeweils 23.55 Uhr \u2013 0.10 Uhr

  • Haltausfall Freiberger Stra\u00dfe
" + } + ] + } + ], + "coords": [ + [ + 51.040477, + 13.732761 + ], + [ + 51.039739, + 13.735013 + ], + [ + 51.039215, + 13.736624 + ], + [ + 51.039073, + 13.737021 + ], + [ + 51.038921, + 13.737371 + ], + [ + 51.038662, + 13.737922 + ], + [ + 51.038095, + 13.739289 + ], + [ + 51.037929, + 13.739708 + ], + [ + 51.037629, + 13.740536 + ], + [ + 51.037391, + 13.741199 + ], + [ + 51.036995, + 13.742416 + ], + [ + 51.036774, + 13.743083 + ], + [ + 51.036447, + 13.744088 + ], + [ + 51.036344, + 13.744396 + ], + [ + 51.036194, + 13.744868 + ], + [ + 51.036023, + 13.745382 + ], + [ + 51.035067, + 13.748303 + ], + [ + 51.034658, + 13.749573 + ], + [ + 51.03281, + 13.755216 + ], + [ + 51.032189, + 13.757125 + ], + [ + 51.032086, + 13.757431 + ], + [ + 51.030869, + 13.761172 + ], + [ + 51.030488, + 13.762332 + ], + [ + 51.030161, + 13.763324 + ], + [ + 51.028246, + 13.769178 + ], + [ + 51.022803, + 13.785833 + ], + [ + 51.022384, + 13.787103 + ], + [ + 51.022199, + 13.787679 + ], + [ + 51.021885, + 13.788636 + ], + [ + 51.021753, + 13.789028 + ], + [ + 51.021567, + 13.7896 + ], + [ + 51.021285, + 13.790382 + ], + [ + 51.021164, + 13.79071 + ], + [ + 51.02102, + 13.791096 + ], + [ + 51.020802, + 13.791666 + ], + [ + 51.020479, + 13.792466 + ], + [ + 51.020144, + 13.793259 + ], + [ + 51.019858, + 13.793904 + ], + [ + 51.019712, + 13.794251 + ], + [ + 51.019017, + 13.795784 + ], + [ + 51.018727, + 13.796409 + ], + [ + 51.018341, + 13.797205 + ], + [ + 51.017942, + 13.797981 + ], + [ + 51.017518, + 13.798751 + ], + [ + 51.017095, + 13.799484 + ], + [ + 51.01649, + 13.800493 + ], + [ + 51.014408, + 13.803943 + ], + [ + 51.014029, + 13.804579 + ], + [ + 51.013624, + 13.80525 + ], + [ + 51.013255, + 13.805853 + ], + [ + 51.012405, + 13.807267 + ], + [ + 51.011719, + 13.808402 + ], + [ + 51.011329, + 13.809045 + ], + [ + 51.010984, + 13.80962 + ], + [ + 51.009933, + 13.811362 + ], + [ + 51.008745, + 13.813328 + ], + [ + 51.008372, + 13.813955 + ], + [ + 51.007974, + 13.814608 + ], + [ + 51.007527, + 13.81535 + ], + [ + 51.007059, + 13.816122 + ], + [ + 51.006613, + 13.816865 + ], + [ + 51.005681, + 13.818408 + ], + [ + 51.003729, + 13.821647 + ], + [ + 51.003616, + 13.821832 + ], + [ + 50.999801, + 13.828158 + ], + [ + 50.999194, + 13.829164 + ], + [ + 50.999071, + 13.829364 + ], + [ + 50.995858, + 13.834684 + ], + [ + 50.991267, + 13.842282 + ], + [ + 50.989857, + 13.844634 + ], + [ + 50.989511, + 13.845208 + ], + [ + 50.989229, + 13.845665 + ], + [ + 50.987986, + 13.847719 + ], + [ + 50.987618, + 13.848335 + ], + [ + 50.987203, + 13.84901 + ], + [ + 50.983422, + 13.855277 + ], + [ + 50.981905, + 13.857779 + ], + [ + 50.981564, + 13.858346 + ], + [ + 50.981124, + 13.859079 + ], + [ + 50.980336, + 13.860367 + ], + [ + 50.980089, + 13.860774 + ], + [ + 50.978706, + 13.863023 + ], + [ + 50.975649, + 13.868072 + ], + [ + 50.97539, + 13.86851 + ], + [ + 50.974659, + 13.869719 + ], + [ + 50.974273, + 13.870369 + ], + [ + 50.973114, + 13.872271 + ], + [ + 50.972247, + 13.873712 + ], + [ + 50.971469, + 13.874998 + ], + [ + 50.968543, + 13.87984 + ], + [ + 50.96596, + 13.8841 + ], + [ + 50.964634, + 13.8863 + ], + [ + 50.963653, + 13.887939 + ], + [ + 50.963261, + 13.88864 + ], + [ + 50.962847, + 13.889434 + ], + [ + 50.962469, + 13.89023 + ], + [ + 50.962111, + 13.89103 + ], + [ + 50.961784, + 13.891827 + ], + [ + 50.961523, + 13.89253 + ], + [ + 50.961215, + 13.893395 + ], + [ + 50.961129, + 13.89365 + ], + [ + 50.961016, + 13.894012 + ], + [ + 50.960863, + 13.89452 + ], + [ + 50.960688, + 13.895131 + ], + [ + 50.960621, + 13.895369 + ], + [ + 50.960531, + 13.895722 + ], + [ + 50.960352, + 13.896456 + ], + [ + 50.960234, + 13.897017 + ], + [ + 50.960129, + 13.897525 + ], + [ + 50.960026, + 13.898098 + ], + [ + 50.959941, + 13.898614 + ], + [ + 50.95984, + 13.899245 + ], + [ + 50.95971, + 13.900076 + ], + [ + 50.959587, + 13.901029 + ], + [ + 50.959461, + 13.902098 + ], + [ + 50.959364, + 13.903191 + ], + [ + 50.959294, + 13.90421 + ], + [ + 50.959282, + 13.904518 + ], + [ + 50.959258, + 13.905038 + ], + [ + 50.959239, + 13.906587 + ], + [ + 50.959254, + 13.907385 + ], + [ + 50.959292, + 13.908245 + ], + [ + 50.959351, + 13.908949 + ], + [ + 50.959417, + 13.909592 + ], + [ + 50.95951, + 13.910457 + ], + [ + 50.959609, + 13.911359 + ], + [ + 50.959729, + 13.912431 + ], + [ + 50.959832, + 13.913325 + ], + [ + 50.959889, + 13.913769 + ], + [ + 50.95995, + 13.914182 + ], + [ + 50.960019, + 13.914595 + ], + [ + 50.960091, + 13.915004 + ], + [ + 50.960603, + 13.917785 + ], + [ + 50.961559, + 13.923 + ], + [ + 50.96162, + 13.923437 + ], + [ + 50.961702, + 13.924082 + ], + [ + 50.961997, + 13.92571 + ], + [ + 50.962103, + 13.926497 + ], + [ + 50.96226, + 13.927359 + ], + [ + 50.962357, + 13.927868 + ], + [ + 50.962548, + 13.928952 + ], + [ + 50.962583, + 13.929138 + ], + [ + 50.962635, + 13.929414 + ], + [ + 50.962718, + 13.929881 + ], + [ + 50.962784, + 13.930224 + ], + [ + 50.962965, + 13.931218 + ], + [ + 50.963208, + 13.932542 + ], + [ + 50.963345, + 13.933234 + ], + [ + 50.963521, + 13.934187 + ], + [ + 50.963666, + 13.935071 + ], + [ + 50.963734, + 13.935512 + ], + [ + 50.963805, + 13.936001 + ], + [ + 50.963843, + 13.936297 + ], + [ + 50.963909, + 13.936878 + ], + [ + 50.96393, + 13.937134 + ], + [ + 50.963961, + 13.937533 + ], + [ + 50.963981, + 13.937898 + ], + [ + 50.964001, + 13.938334 + ], + [ + 50.96402, + 13.939009 + ], + [ + 50.964033, + 13.939669 + ], + [ + 50.964031, + 13.939926 + ], + [ + 50.964018, + 13.940394 + ], + [ + 50.963995, + 13.941575 + ], + [ + 50.963992, + 13.941906 + ], + [ + 50.963922, + 13.945218 + ], + [ + 50.963916, + 13.945563 + ], + [ + 50.963906, + 13.946444 + ], + [ + 50.96387, + 13.948227 + ], + [ + 50.963863, + 13.948427 + ], + [ + 50.963837, + 13.948948 + ], + [ + 50.963815, + 13.949276 + ], + [ + 50.96377, + 13.949851 + ], + [ + 50.963723, + 13.950349 + ], + [ + 50.963684, + 13.950699 + ], + [ + 50.963645, + 13.951002 + ], + [ + 50.963613, + 13.951215 + ], + [ + 50.963547, + 13.951646 + ], + [ + 50.963317, + 13.952984 + ], + [ + 50.963101, + 13.954278 + ], + [ + 50.962879, + 13.955561 + ], + [ + 50.962498, + 13.957843 + ], + [ + 50.961986, + 13.960866 + ], + [ + 50.961769, + 13.962121 + ], + [ + 50.961625, + 13.962929 + ], + [ + 50.961548, + 13.96333 + ], + [ + 50.96143, + 13.963879 + ], + [ + 50.961309, + 13.9644 + ], + [ + 50.961079, + 13.9653 + ], + [ + 50.960961, + 13.96575 + ], + [ + 50.960823, + 13.966227 + ], + [ + 50.960695, + 13.966654 + ], + [ + 50.960547, + 13.967101 + ], + [ + 50.960405, + 13.967511 + ], + [ + 50.960078, + 13.968412 + ], + [ + 50.959827, + 13.969074 + ], + [ + 50.9595, + 13.969923 + ], + [ + 50.95919, + 13.970714 + ], + [ + 50.959019, + 13.971144 + ], + [ + 50.958806, + 13.971638 + ], + [ + 50.958437, + 13.972441 + ], + [ + 50.958085, + 13.973178 + ], + [ + 50.957584, + 13.97418 + ], + [ + 50.957289, + 13.974715 + ], + [ + 50.956893, + 13.975411 + ], + [ + 50.956412, + 13.976177 + ], + [ + 50.956166, + 13.976559 + ], + [ + 50.955887, + 13.976963 + ], + [ + 50.954266, + 13.979194 + ], + [ + 50.953802, + 13.979858 + ], + [ + 50.953456, + 13.980365 + ], + [ + 50.953267, + 13.980654 + ], + [ + 50.95307, + 13.980964 + ], + [ + 50.952697, + 13.981621 + ], + [ + 50.95252, + 13.981962 + ], + [ + 50.95231, + 13.982394 + ], + [ + 50.952144, + 13.982756 + ], + [ + 50.952009, + 13.983064 + ], + [ + 50.951787, + 13.983611 + ], + [ + 50.951601, + 13.984114 + ], + [ + 50.95144, + 13.984561 + ], + [ + 50.951099, + 13.985624 + ], + [ + 50.950071, + 13.988937 + ], + [ + 50.949868, + 13.989574 + ], + [ + 50.949653, + 13.990246 + ], + [ + 50.949157, + 13.991884 + ], + [ + 50.94894, + 13.99252 + ], + [ + 50.948827, + 13.992812 + ], + [ + 50.948715, + 13.993094 + ], + [ + 50.948585, + 13.993397 + ], + [ + 50.948445, + 13.993689 + ], + [ + 50.948275, + 13.994038 + ], + [ + 50.94809, + 13.994385 + ], + [ + 50.947624, + 13.995233 + ], + [ + 50.9472, + 13.995969 + ], + [ + 50.946654, + 13.9969 + ], + [ + 50.945733, + 13.998497 + ], + [ + 50.945564, + 13.998823 + ], + [ + 50.945442, + 13.999074 + ], + [ + 50.945335, + 13.999311 + ], + [ + 50.94505, + 13.999989 + ], + [ + 50.94485, + 14.000551 + ], + [ + 50.944763, + 14.00083 + ], + [ + 50.944668, + 14.001145 + ], + [ + 50.944564, + 14.001525 + ], + [ + 50.944476, + 14.001881 + ], + [ + 50.944292, + 14.002727 + ], + [ + 50.944113, + 14.003558 + ], + [ + 50.944051, + 14.003893 + ], + [ + 50.943989, + 14.004298 + ], + [ + 50.943928, + 14.004725 + ], + [ + 50.943889, + 14.005075 + ], + [ + 50.943851, + 14.005524 + ], + [ + 50.943822, + 14.005934 + ], + [ + 50.943803, + 14.006321 + ], + [ + 50.943792, + 14.00679 + ], + [ + 50.943791, + 14.007182 + ], + [ + 50.943807, + 14.007605 + ], + [ + 50.943828, + 14.008026 + ], + [ + 50.943863, + 14.00846 + ], + [ + 50.943896, + 14.008794 + ], + [ + 50.943961, + 14.009288 + ], + [ + 50.94403, + 14.009727 + ], + [ + 50.944102, + 14.010111 + ], + [ + 50.944159, + 14.010385 + ], + [ + 50.944214, + 14.01063 + ], + [ + 50.944286, + 14.010928 + ], + [ + 50.94451, + 14.011736 + ], + [ + 50.944679, + 14.012255 + ], + [ + 50.94474, + 14.012426 + ], + [ + 50.945032, + 14.013143 + ], + [ + 50.945138, + 14.013377 + ], + [ + 50.945341, + 14.013791 + ], + [ + 50.945527, + 14.014138 + ], + [ + 50.945705, + 14.014442 + ], + [ + 50.946076, + 14.014988 + ], + [ + 50.946418, + 14.015459 + ], + [ + 50.947529, + 14.016941 + ], + [ + 50.948737, + 14.01857 + ], + [ + 50.949439, + 14.019534 + ], + [ + 50.949678, + 14.019905 + ], + [ + 50.949867, + 14.020221 + ], + [ + 50.950139, + 14.020682 + ], + [ + 50.950274, + 14.020941 + ], + [ + 50.950456, + 14.021295 + ], + [ + 50.950993, + 14.022436 + ], + [ + 50.951185, + 14.022838 + ], + [ + 50.951317, + 14.023106 + ], + [ + 50.951426, + 14.023343 + ], + [ + 50.951638, + 14.02384 + ], + [ + 50.951784, + 14.024201 + ], + [ + 50.951867, + 14.024412 + ], + [ + 50.951954, + 14.024645 + ], + [ + 50.952103, + 14.025058 + ], + [ + 50.952253, + 14.025522 + ], + [ + 50.952343, + 14.025809 + ], + [ + 50.952427, + 14.026132 + ], + [ + 50.952503, + 14.026407 + ], + [ + 50.952601, + 14.026787 + ], + [ + 50.952704, + 14.027237 + ], + [ + 50.952803, + 14.027688 + ], + [ + 50.952913, + 14.028243 + ], + [ + 50.953228, + 14.029972 + ], + [ + 50.953395, + 14.030873 + ], + [ + 50.953439, + 14.031107 + ], + [ + 50.953507, + 14.031426 + ], + [ + 50.953604, + 14.031855 + ], + [ + 50.953642, + 14.032012 + ], + [ + 50.953671, + 14.032134 + ], + [ + 50.95375, + 14.032431 + ], + [ + 50.953862, + 14.032831 + ], + [ + 50.954687, + 14.035677 + ], + [ + 50.955179, + 14.037361 + ], + [ + 50.955506, + 14.038491 + ], + [ + 50.955552, + 14.038661 + ], + [ + 50.955999, + 14.040197 + ], + [ + 50.956215, + 14.040985 + ], + [ + 50.956321, + 14.0414 + ], + [ + 50.956409, + 14.041799 + ], + [ + 50.95658, + 14.042662 + ], + [ + 50.956661, + 14.043148 + ], + [ + 50.95673, + 14.043575 + ], + [ + 50.95679, + 14.044041 + ], + [ + 50.956853, + 14.044596 + ], + [ + 50.956912, + 14.045291 + ], + [ + 50.956952, + 14.045954 + ], + [ + 50.956969, + 14.046478 + ], + [ + 50.956972, + 14.04661 + ], + [ + 50.956974, + 14.046813 + ], + [ + 50.956974, + 14.047444 + ], + [ + 50.956966, + 14.047799 + ], + [ + 50.956936, + 14.048439 + ], + [ + 50.956871, + 14.04936 + ], + [ + 50.956817, + 14.04996 + ], + [ + 50.956745, + 14.050894 + ], + [ + 50.956716, + 14.051384 + ], + [ + 50.956685, + 14.051937 + ], + [ + 50.956669, + 14.052425 + ], + [ + 50.956659, + 14.053033 + ], + [ + 50.956662, + 14.053323 + ], + [ + 50.956661, + 14.053482 + ], + [ + 50.956678, + 14.054499 + ], + [ + 50.956722, + 14.055463 + ], + [ + 50.956785, + 14.056429 + ], + [ + 50.956859, + 14.057268 + ], + [ + 50.956921, + 14.057848 + ], + [ + 50.95696, + 14.058191 + ], + [ + 50.957035, + 14.058962 + ], + [ + 50.9571, + 14.059611 + ], + [ + 50.957159, + 14.060156 + ], + [ + 50.957277, + 14.061353 + ], + [ + 50.957306, + 14.061916 + ], + [ + 50.957331, + 14.062245 + ], + [ + 50.957377, + 14.062701 + ], + [ + 50.957611, + 14.065062 + ], + [ + 50.957737, + 14.066271 + ], + [ + 50.957775, + 14.066719 + ], + [ + 50.957801, + 14.067086 + ], + [ + 50.95782, + 14.067461 + ], + [ + 50.957836, + 14.067927 + ], + [ + 50.957842, + 14.068389 + ], + [ + 50.957838, + 14.068841 + ], + [ + 50.957824, + 14.069293 + ], + [ + 50.957801, + 14.069754 + ], + [ + 50.957769, + 14.070224 + ], + [ + 50.957719, + 14.070799 + ], + [ + 50.957601, + 14.071723 + ], + [ + 50.95755, + 14.072083 + ], + [ + 50.957489, + 14.072579 + ], + [ + 50.957451, + 14.072863 + ], + [ + 50.957361, + 14.073292 + ], + [ + 50.957219, + 14.073896 + ], + [ + 50.95716, + 14.074117 + ], + [ + 50.957008, + 14.074654 + ], + [ + 50.956864, + 14.075113 + ], + [ + 50.956796, + 14.075326 + ], + [ + 50.956667, + 14.075682 + ], + [ + 50.95645, + 14.076266 + ], + [ + 50.956362, + 14.076483 + ], + [ + 50.956302, + 14.076626 + ], + [ + 50.95616, + 14.076943 + ], + [ + 50.955974, + 14.077337 + ], + [ + 50.955749, + 14.077769 + ], + [ + 50.955649, + 14.077949 + ], + [ + 50.955486, + 14.078231 + ], + [ + 50.955314, + 14.078504 + ], + [ + 50.955146, + 14.078758 + ], + [ + 50.954791, + 14.079238 + ], + [ + 50.954571, + 14.079527 + ], + [ + 50.954214, + 14.079924 + ], + [ + 50.954013, + 14.080136 + ], + [ + 50.953704, + 14.080428 + ], + [ + 50.953333, + 14.080749 + ], + [ + 50.953189, + 14.080857 + ], + [ + 50.95282, + 14.081124 + ], + [ + 50.952618, + 14.081255 + ], + [ + 50.952273, + 14.081462 + ], + [ + 50.952079, + 14.081571 + ], + [ + 50.951917, + 14.081659 + ], + [ + 50.951724, + 14.081749 + ], + [ + 50.951449, + 14.081874 + ], + [ + 50.951288, + 14.08194 + ], + [ + 50.951036, + 14.082029 + ], + [ + 50.950758, + 14.082124 + ], + [ + 50.950573, + 14.082182 + ], + [ + 50.950254, + 14.082262 + ], + [ + 50.950007, + 14.082309 + ], + [ + 50.949568, + 14.082373 + ], + [ + 50.949373, + 14.082394 + ], + [ + 50.949094, + 14.082414 + ], + [ + 50.948954, + 14.08242 + ], + [ + 50.948631, + 14.082421 + ], + [ + 50.948197, + 14.082392 + ], + [ + 50.947846, + 14.082348 + ], + [ + 50.94759, + 14.082305 + ], + [ + 50.947217, + 14.08222 + ], + [ + 50.946854, + 14.082111 + ], + [ + 50.946642, + 14.082035 + ], + [ + 50.946327, + 14.081909 + ], + [ + 50.946218, + 14.081861 + ], + [ + 50.946052, + 14.081785 + ], + [ + 50.945764, + 14.081641 + ], + [ + 50.945521, + 14.081505 + ], + [ + 50.945237, + 14.081311 + ], + [ + 50.945029, + 14.081174 + ], + [ + 50.944697, + 14.080932 + ], + [ + 50.944495, + 14.080766 + ], + [ + 50.944218, + 14.080528 + ], + [ + 50.943994, + 14.080321 + ], + [ + 50.943747, + 14.080076 + ], + [ + 50.943504, + 14.079815 + ], + [ + 50.943262, + 14.079548 + ], + [ + 50.943041, + 14.079269 + ], + [ + 50.942695, + 14.078816 + ], + [ + 50.94259, + 14.078666 + ], + [ + 50.942381, + 14.078354 + ], + [ + 50.942166, + 14.078011 + ], + [ + 50.941724, + 14.077289 + ], + [ + 50.941104, + 14.07626 + ], + [ + 50.941068, + 14.076205 + ], + [ + 50.940824, + 14.07579 + ], + [ + 50.940438, + 14.075111 + ], + [ + 50.940227, + 14.074717 + ], + [ + 50.940117, + 14.074505 + ], + [ + 50.939853, + 14.073973 + ], + [ + 50.939708, + 14.073656 + ], + [ + 50.939602, + 14.073434 + ], + [ + 50.939283, + 14.072704 + ], + [ + 50.939193, + 14.072484 + ], + [ + 50.939045, + 14.072126 + ], + [ + 50.938906, + 14.071772 + ], + [ + 50.938748, + 14.07135 + ], + [ + 50.937782, + 14.068556 + ], + [ + 50.93725, + 14.067008 + ], + [ + 50.936704, + 14.065435 + ], + [ + 50.936002, + 14.063401 + ], + [ + 50.935712, + 14.062552 + ], + [ + 50.935568, + 14.062138 + ], + [ + 50.935287, + 14.061356 + ], + [ + 50.935186, + 14.061088 + ], + [ + 50.935112, + 14.060901 + ], + [ + 50.934974, + 14.060584 + ], + [ + 50.934892, + 14.060401 + ], + [ + 50.934827, + 14.060268 + ], + [ + 50.93468, + 14.059982 + ], + [ + 50.934514, + 14.059683 + ], + [ + 50.934307, + 14.059338 + ], + [ + 50.93421, + 14.059191 + ], + [ + 50.934057, + 14.058969 + ], + [ + 50.933898, + 14.058755 + ], + [ + 50.933779, + 14.0586 + ], + [ + 50.93359, + 14.058373 + ], + [ + 50.933397, + 14.058161 + ], + [ + 50.932892, + 14.057696 + ], + [ + 50.932648, + 14.057503 + ], + [ + 50.932323, + 14.057269 + ], + [ + 50.931219, + 14.056541 + ], + [ + 50.930764, + 14.056228 + ], + [ + 50.93023, + 14.055898 + ], + [ + 50.92995, + 14.055746 + ], + [ + 50.929744, + 14.055639 + ], + [ + 50.929435, + 14.055532 + ], + [ + 50.92919, + 14.055467 + ], + [ + 50.928999, + 14.055431 + ], + [ + 50.928884, + 14.055422 + ], + [ + 50.928678, + 14.055402 + ], + [ + 50.928517, + 14.055392 + ], + [ + 50.928266, + 14.055396 + ], + [ + 50.928055, + 14.05542 + ], + [ + 50.927661, + 14.055503 + ], + [ + 50.927465, + 14.055575 + ], + [ + 50.927388, + 14.055599 + ], + [ + 50.926915, + 14.055794 + ], + [ + 50.926671, + 14.055936 + ], + [ + 50.926472, + 14.056065 + ], + [ + 50.926256, + 14.056212 + ], + [ + 50.926095, + 14.056344 + ], + [ + 50.925951, + 14.056467 + ], + [ + 50.925688, + 14.056724 + ], + [ + 50.925401, + 14.057044 + ], + [ + 50.925254, + 14.05723 + ], + [ + 50.925075, + 14.05748 + ], + [ + 50.924695, + 14.058045 + ], + [ + 50.924583, + 14.05822 + ], + [ + 50.924355, + 14.058593 + ], + [ + 50.923436, + 14.06002 + ], + [ + 50.922722, + 14.061145 + ], + [ + 50.922023, + 14.062241 + ], + [ + 50.921853, + 14.062525 + ], + [ + 50.921677, + 14.062855 + ], + [ + 50.921516, + 14.063182 + ], + [ + 50.921361, + 14.063528 + ], + [ + 50.921237, + 14.063824 + ], + [ + 50.921095, + 14.064197 + ], + [ + 50.920867, + 14.064885 + ], + [ + 50.920821, + 14.065046 + ], + [ + 50.920741, + 14.065343 + ], + [ + 50.920675, + 14.065625 + ], + [ + 50.920593, + 14.066007 + ], + [ + 50.920502, + 14.066477 + ], + [ + 50.920157, + 14.068388 + ], + [ + 50.919873, + 14.06992 + ], + [ + 50.919712, + 14.070887 + ], + [ + 50.91951, + 14.072032 + ], + [ + 50.919411, + 14.072603 + ], + [ + 50.919351, + 14.072991 + ], + [ + 50.919301, + 14.073369 + ], + [ + 50.919262, + 14.073713 + ], + [ + 50.919223, + 14.07415 + ], + [ + 50.919198, + 14.074498 + ], + [ + 50.919187, + 14.074742 + ], + [ + 50.919169, + 14.075333 + ], + [ + 50.919167, + 14.075705 + ], + [ + 50.919178, + 14.076182 + ], + [ + 50.919189, + 14.076485 + ], + [ + 50.919201, + 14.076677 + ], + [ + 50.919224, + 14.076993 + ], + [ + 50.919291, + 14.077685 + ], + [ + 50.91936, + 14.078309 + ], + [ + 50.91961, + 14.08056 + ], + [ + 50.919703, + 14.081421 + ], + [ + 50.919746, + 14.081774 + ], + [ + 50.919835, + 14.082403 + ], + [ + 50.91991, + 14.08285 + ], + [ + 50.919984, + 14.083247 + ], + [ + 50.920062, + 14.083621 + ], + [ + 50.920161, + 14.084061 + ], + [ + 50.920272, + 14.084501 + ], + [ + 50.920379, + 14.084894 + ], + [ + 50.920508, + 14.085333 + ], + [ + 50.92061, + 14.085652 + ], + [ + 50.920698, + 14.085915 + ], + [ + 50.920854, + 14.086348 + ], + [ + 50.921029, + 14.086802 + ], + [ + 50.921136, + 14.087057 + ], + [ + 50.921312, + 14.087454 + ], + [ + 50.921561, + 14.087971 + ], + [ + 50.921676, + 14.088195 + ], + [ + 50.921794, + 14.088416 + ], + [ + 50.921914, + 14.088635 + ], + [ + 50.922039, + 14.088852 + ], + [ + 50.922166, + 14.089065 + ], + [ + 50.922813, + 14.090134 + ], + [ + 50.923671, + 14.091543 + ], + [ + 50.924744, + 14.093313 + ], + [ + 50.924903, + 14.093581 + ], + [ + 50.925037, + 14.093797 + ], + [ + 50.92521, + 14.094094 + ], + [ + 50.925379, + 14.094394 + ], + [ + 50.9255, + 14.094617 + ], + [ + 50.925621, + 14.094848 + ], + [ + 50.925738, + 14.095085 + ], + [ + 50.926015, + 14.095668 + ], + [ + 50.926173, + 14.096033 + ], + [ + 50.926332, + 14.096408 + ], + [ + 50.9265, + 14.096843 + ], + [ + 50.926839, + 14.097778 + ], + [ + 50.927227, + 14.09888 + ], + [ + 50.927404, + 14.099364 + ], + [ + 50.92767, + 14.10012 + ], + [ + 50.92781, + 14.100548 + ], + [ + 50.927889, + 14.100802 + ], + [ + 50.927989, + 14.101149 + ], + [ + 50.928037, + 14.101324 + ], + [ + 50.928106, + 14.101612 + ], + [ + 50.928171, + 14.1019 + ], + [ + 50.928256, + 14.102322 + ], + [ + 50.928306, + 14.10261 + ], + [ + 50.928377, + 14.103047 + ], + [ + 50.928421, + 14.103389 + ], + [ + 50.928456, + 14.103729 + ], + [ + 50.928477, + 14.103967 + ], + [ + 50.92849, + 14.104132 + ], + [ + 50.928511, + 14.104477 + ], + [ + 50.928524, + 14.10476 + ], + [ + 50.928531, + 14.105014 + ], + [ + 50.928532, + 14.105227 + ], + [ + 50.92853, + 14.105457 + ], + [ + 50.928519, + 14.10589 + ], + [ + 50.928504, + 14.106283 + ], + [ + 50.928488, + 14.106539 + ], + [ + 50.928469, + 14.106767 + ], + [ + 50.928438, + 14.107096 + ], + [ + 50.928411, + 14.107351 + ], + [ + 50.928377, + 14.107619 + ], + [ + 50.928341, + 14.107869 + ], + [ + 50.928314, + 14.108039 + ], + [ + 50.928255, + 14.108382 + ], + [ + 50.928192, + 14.108727 + ], + [ + 50.928133, + 14.109031 + ], + [ + 50.928036, + 14.10947 + ], + [ + 50.927938, + 14.109869 + ], + [ + 50.927871, + 14.11013 + ], + [ + 50.927798, + 14.110391 + ], + [ + 50.927705, + 14.110705 + ], + [ + 50.92763, + 14.110936 + ], + [ + 50.927485, + 14.111355 + ], + [ + 50.927358, + 14.111711 + ], + [ + 50.927145, + 14.112272 + ], + [ + 50.926592, + 14.113705 + ], + [ + 50.926169, + 14.114808 + ], + [ + 50.926014, + 14.115217 + ], + [ + 50.925711, + 14.116 + ], + [ + 50.925355, + 14.116941 + ], + [ + 50.924689, + 14.118669 + ], + [ + 50.924336, + 14.119591 + ], + [ + 50.923881, + 14.120783 + ], + [ + 50.923705, + 14.121259 + ], + [ + 50.923593, + 14.121579 + ], + [ + 50.923477, + 14.121923 + ], + [ + 50.923374, + 14.12225 + ], + [ + 50.923269, + 14.122604 + ], + [ + 50.922816, + 14.124261 + ], + [ + 50.922508, + 14.125589 + ], + [ + 50.922362, + 14.126148 + ], + [ + 50.922154, + 14.12691 + ], + [ + 50.921898, + 14.127867 + ], + [ + 50.921704, + 14.128576 + ], + [ + 50.921182, + 14.130555 + ], + [ + 50.921081, + 14.131013 + ], + [ + 50.920805, + 14.132487 + ], + [ + 50.920729, + 14.132846 + ], + [ + 50.920595, + 14.133366 + ], + [ + 50.920153, + 14.135022 + ], + [ + 50.919861, + 14.136153 + ], + [ + 50.919554, + 14.137312 + ] + ], + "interchange": { + "desc": "Fussweg", + "type": 100, + "coords": [ + [ + 50.919491, + 14.137506 + ], + [ + 50.919329, + 14.137726 + ] + ] + }, + "properties": { + "vehicleAccess": [ + { + "height": 0, + "halfWidth": 0, + "doorWidth": 0, + "attributes": 1073741824, + "areaToStay": 0, + "areaToMove": 0 + } + ], + "PlanLowFloorVehicle": "1", + "PlanWheelChairAccess": "1" + } }, { - "PartialRouteId": 1, - "Duration": 1, - "Mot": { - "DlId": "de:vvo:23-333", - "StatelessId": "voe:23333: :R:j23", - "Type": "PlusBus", - "Name": "333", - "Direction": "Dresden Ammonstraße / Budapester Straße", - "Changes": [], - "Diva": { - "Number": "23333", - "Network": "voe" - }, - "TransportationCompany": "RVSOE", - "OperatorCode": "3", - "ProductName": "PlusBus", - "TrainNumber": "" - }, - "MapDataIndex": 1, - "Shift": "None", - "Infos": [ - "PlusBus: Regionalbus, der tĂ€glich im Takt mit einheitlicher LinienfĂŒhrung und guten ZuganschlĂŒssen verkehrt. mehr >" - ], - "RegularStops": [ - { - "ArrivalTime": "/Date(1681917000000-0000)/", - "DepartureTime": "/Date(1681917000000-0000)/", - "ArrivalRealTime": "/Date(1681917000000-0000)/", - "DepartureRealTime": "/Date(1681917000000-0000)/", - "Place": "Dresden", - "Name": "Bernhardstraße", - "Type": "Stop", - "DataId": "33000724", - "DhId": "de:14612:724", - "Platform": { - "Name": "1", - "Type": "Platform" - }, - "Latitude": 5656907, - "Longitude": 4620805, - "DepartureState": "InTime", - "ArrivalState": "InTime", - "CancelReasons": [], - "ParkAndRail": [] - }, - { - "ArrivalTime": "/Date(1681917060000-0000)/", - "DepartureTime": "/Date(1681917060000-0000)/", - "ArrivalRealTime": "/Date(1681917060000-0000)/", - "DepartureRealTime": "/Date(1681917060000-0000)/", - "Place": "Dresden", - "Name": "NĂŒrnberger Platz", - "Type": "Stop", - "DataId": "33000132", - "DhId": "de:14612:132", - "Platform": { - "Name": "4", - "Type": "Platform" - }, - "Latitude": 5656665, - "Longitude": 4621160, - "DepartureState": "InTime", - "ArrivalState": "InTime", - "CancelReasons": [], - "ParkAndRail": [] - } - ], - "NextDepartureTimes": [ - "/Date(1681918800000-0000)/", - "/Date(1681920420000-0000)/" - ], - "PreviousDepartureTimes": [ - "/Date(1681915200000-0000)/", - "/Date(1681913400000-0000)/" - ] - } - ], - "MapData": [ - "Footpath|5656846|4620915|5656847|4620913|5656855|4620902|5656850|4620896|5656852|4620893|5656859|4620881|5656864|4620882|5656867|4620882|5656869|4620877|5656873|4620861|5656880|4620851|5656901|4620821|5656909|4620808|", - "PlusBus|5656919|4620794|5656910|4620806|5656880|4620851|5656873|4620861|5656862|4620870|5656852|4620877|5656836|4620887|5656826|4620894|5656815|4620902|5656808|4620908|5656798|4620918|5656790|4620928|5656782|4620940|5656774|4620953|5656768|4620963|5656763|4620976|5656758|4620991|5656755|4621006|5656753|4621019|5656751|4621031|5656749|4621037|5656746|4621043|5656743|4621053|5656737|4621061|5656699|4621119|5656692|4621129|5656676|4621152|5656669|4621163|" - ] - }, - { - "Price": "3,00", - "ShortDistance": true, - "Net": "voe", - "Duration": 1, - "Interchanges": 0, - "MotChain": [ - { - "DlId": "de:vvo:11-8", - "StatelessId": "voe:11008: :R:j23", - "Type": "Tram", - "Name": "8", - "Direction": "Hellerau", - "Changes": [], - "Diva": { - "Number": "11008", - "Network": "voe" - }, - "TransportationCompany": "DVB", - "OperatorCode": "16", - "ProductName": "Straßenbahn", - "TrainNumber": "805" - } - ], - "FareZoneOrigin": 10, - "FareZoneDestination": 10, - "RouteId": 2, - "PartialRoutes": [ - { - "PartialRouteId": 0, - "Duration": 1, - "Mot": { - "DlId": "de:vvo:11-8", - "StatelessId": "voe:11008: :R:j23", - "Type": "Tram", - "Name": "8", - "Direction": "Hellerau", - "Changes": [], - "Diva": { - "Number": "11008", - "Network": "voe" - }, - "TransportationCompany": "DVB", - "OperatorCode": "16", - "ProductName": "Straßenbahn", - "TrainNumber": "805" - }, - "MapDataIndex": 0, - "Shift": "None", - "RegularStops": [ - { - "ArrivalTime": "/Date(1681917180000-0000)/", - "DepartureTime": "/Date(1681917180000-0000)/", - "ArrivalRealTime": "/Date(1681917180000-0000)/", - "DepartureRealTime": "/Date(1681917180000-0000)/", - "Place": "Dresden", - "Name": "SĂŒdvorstadt", - "Type": "Stop", - "DataId": "33000133", - "DhId": "de:14612:133", - "Platform": { - "Name": "1", - "Type": "Platform" - }, - "Latitude": 5656830, - "Longitude": 4620907, - "DepartureState": "InTime", - "ArrivalState": "InTime", - "CancelReasons": [], - "ParkAndRail": [] - }, - { - "ArrivalTime": "/Date(1681917240000-0000)/", - "DepartureTime": "/Date(1681917240000-0000)/", - "ArrivalRealTime": "/Date(1681917240000-0000)/", - "DepartureRealTime": "/Date(1681917240000-0000)/", - "Place": "Dresden", - "Name": "NĂŒrnberger Platz", - "Type": "Stop", - "DataId": "33000132", - "DhId": "de:14612:132", - "Platform": { - "Name": "3", - "Type": "Platform" - }, - "Latitude": 5656647, - "Longitude": 4621197, - "DepartureState": "InTime", - "ArrivalState": "InTime", - "CancelReasons": [], - "ParkAndRail": [] - } - ], - "NextDepartureTimes": [ - "/Date(1681917780000-0000)/", - "/Date(1681918380000-0000)/" - ], - "PreviousDepartureTimes": [ - "/Date(1681916580000-0000)/", - "/Date(1681915980000-0000)/" + "duration": 540, + "origin": { + "isGlobalId": true, + "id": "de:14628:3620:1:Gleis2", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919316, + 14.137713 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3620", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "Nationalparkbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:10", + "name": "Bad Schandau", + "type": "locality" + }, + "properties": { + "stopId": "33003620" + }, + "coord": [ + 50.91927, + 14.138099 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6, + 9 + ], + "departureTimeBaseTimetable": "2025-07-28T10:48:00Z", + "departureTimePlanned": "2025-07-28T10:48:00Z", + "departureTimeEstimated": "2025-07-28T10:48:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3620:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "destination": { + "isGlobalId": true, + "id": "de:14628:3598:4:Gleis2", + "name": "Sch\u00f6na Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.876046, + 14.234695 + ], + "niveau": 2, + "parent": { + "isGlobalId": true, + "id": "de:14628:3598", + "name": "Sch\u00f6na Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628330:30", + "name": "Sch\u00f6na (bei Pirna)", + "type": "locality" + }, + "properties": { + "stopId": "33003598" + }, + "coord": [ + 50.875684, + 14.234641 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "arrivalTimeBaseTimetable": "2025-07-28T10:57:00Z", + "arrivalTimePlanned": "2025-07-28T10:57:00Z", + "arrivalTimeEstimated": "2025-07-28T10:57:00Z", + "properties": { + "AREA_NIVEAU_DIVA": "2", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3598:4", + "area": "4", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ] + } + }, + "transportation": { + "id": "ddb:90D28: :R:j25", + "name": "Zug U28", + "disassembledName": "U28", + "number": "U28", + "product": { + "id": 0, + "class": 0, + "name": "Zug", + "iconId": 6 + }, + "operator": { + "code": "8004", + "id": "8004", + "name": "DB Regio AG S\u00fcdost" + }, + "destination": { + "id": "99204383", + "name": "Dec\u00edn, Decin hl.n. (Hauptbahnhof)", + "type": "stop" + }, + "properties": { + "trainName": "Regionalbahn", + "trainType": "RB", + "trainNumber": "28006", + "tripCode": 84, + "timetablePeriod": "Jahresfahrplan 2025", + "lineDisplay": "LINE" + } + }, + "hints": [ + { + "content": "Fahrradmitnahme begrenzt m\u00f6glich", + "providerCode": "FB", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + }, + { + "content": "Fahrzeuggebundene Einstiegshilfe vorhanden", + "providerCode": "EH", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + }, + { + "content": "nur 2. Kl.", + "providerCode": "Y2", + "type": "Timetable", + "properties": { + "subnet": "ddb" + } + } + ], + "stopSequence": [ + { + "isGlobalId": true, + "id": "de:14628:3620:1:Gleis2", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.919316, + 14.137713 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3620", + "name": "Bad Schandau Nationalparkbahnhof", + "disassembledName": "Nationalparkbahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:10", + "name": "Bad Schandau", + "type": "locality" + }, + "properties": { + "stopId": "33003620" + }, + "coord": [ + 50.91927, + 14.138099 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6, + 9 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3620:1", + "area": "1", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "height": 780, + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "departureTimePlanned": "2025-07-28T10:48:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3610:5:Gleis2", + "name": "Krippen Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.913092, + 14.16035 + ], + "niveau": 0, + "parent": { + "isGlobalId": true, + "id": "de:14628:3610", + "name": "Krippen Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628030:20", + "name": "Krippen", + "type": "locality" + }, + "properties": { + "stopId": "33003610" + }, + "coord": [ + 50.913109, + 14.16027 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1, + 6 + ], + "properties": { + "AREA_NIVEAU_DIVA": "0", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3610:5", + "area": "5", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:50:00Z", + "departureTimePlanned": "2025-07-28T10:50:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3645:3:Gleis2", + "name": "Schmilka Hp Hirschm\u00fchle", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.889813, + 14.22856 + ], + "niveau": 1, + "parent": { + "isGlobalId": true, + "id": "de:14628:3645", + "name": "Schmilka Hp Hirschm\u00fchle", + "disassembledName": "Hp Hirschm\u00fchle", + "type": "stop", + "parent": { + "id": "placeID:14628030:50", + "name": "Schmilka", + "type": "locality" + }, + "properties": { + "stopId": "33003645" + }, + "coord": [ + 50.88987, + 14.228631 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "1", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3645:3", + "area": "3", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:55:00Z", + "departureTimePlanned": "2025-07-28T10:55:00Z" + }, + { + "isGlobalId": true, + "id": "de:14628:3598:4:Gleis2", + "name": "Sch\u00f6na Bahnhof", + "disassembledName": "2", + "type": "platform", + "pointType": "TRACK", + "coord": [ + 50.876046, + 14.234695 + ], + "niveau": 2, + "parent": { + "isGlobalId": true, + "id": "de:14628:3598", + "name": "Sch\u00f6na Bahnhof", + "disassembledName": "Bahnhof", + "type": "stop", + "parent": { + "id": "placeID:14628330:30", + "name": "Sch\u00f6na (bei Pirna)", + "type": "locality" + }, + "properties": { + "stopId": "33003598" + }, + "coord": [ + 50.875684, + 14.234641 + ], + "niveau": 0 + }, + "productClasses": [ + 0, + 1 + ], + "properties": { + "AREA_NIVEAU_DIVA": "2", + "stoppingPointPlanned": "2", + "areaGid": "de:14628:3598:4", + "area": "4", + "platform": "Gl. 2", + "platformName": "2", + "plannedPlatformName": "2", + "accessArray": [ + { + "stoppointAccess": { + "equipment": 0, + "maxWeight": 0, + "distanceTrack": 0, + "lengthAvail": 0, + "widthAvail": 0, + "attributes": 0, + "stepFromStreet": 0 + } + } + ], + "zone": "voe:720;voe:10000" + }, + "arrivalTimePlanned": "2025-07-28T10:57:00Z" + } + ], + "infos": [], + "coords": [ + [ + 50.919258, + 14.137923 + ], + [ + 50.918983, + 14.138965 + ], + [ + 50.918862, + 14.139418 + ], + [ + 50.918585, + 14.140482 + ], + [ + 50.918322, + 14.141459 + ], + [ + 50.918131, + 14.142158 + ], + [ + 50.917962, + 14.14277 + ], + [ + 50.917688, + 14.143762 + ], + [ + 50.917571, + 14.144176 + ], + [ + 50.917227, + 14.145222 + ], + [ + 50.917044, + 14.145921 + ], + [ + 50.916744, + 14.146975 + ], + [ + 50.916442, + 14.147979 + ], + [ + 50.916244, + 14.148603 + ], + [ + 50.915472, + 14.151104 + ], + [ + 50.915102, + 14.152318 + ], + [ + 50.914523, + 14.154195 + ], + [ + 50.914435, + 14.154498 + ], + [ + 50.914286, + 14.155021 + ], + [ + 50.914182, + 14.155426 + ], + [ + 50.91409, + 14.155782 + ], + [ + 50.913699, + 14.157559 + ], + [ + 50.913074, + 14.16042 + ], + [ + 50.912627, + 14.162451 + ], + [ + 50.911985, + 14.165393 + ], + [ + 50.911594, + 14.167201 + ], + [ + 50.911532, + 14.16749 + ], + [ + 50.911486, + 14.167693 + ], + [ + 50.911293, + 14.168569 + ], + [ + 50.910858, + 14.170563 + ], + [ + 50.910818, + 14.170745 + ], + [ + 50.910473, + 14.172244 + ], + [ + 50.910411, + 14.172505 + ], + [ + 50.910278, + 14.173226 + ], + [ + 50.91002, + 14.174322 + ], + [ + 50.909787, + 14.1753 + ], + [ + 50.909351, + 14.177256 + ], + [ + 50.908967, + 14.179034 + ], + [ + 50.908831, + 14.17972 + ], + [ + 50.90869, + 14.18049 + ], + [ + 50.908534, + 14.181433 + ], + [ + 50.908243, + 14.183209 + ], + [ + 50.907818, + 14.185841 + ], + [ + 50.907668, + 14.186762 + ], + [ + 50.90736, + 14.188486 + ], + [ + 50.907252, + 14.189125 + ], + [ + 50.907206, + 14.189362 + ], + [ + 50.907161, + 14.189568 + ], + [ + 50.90712, + 14.18974 + ], + [ + 50.907068, + 14.189984 + ], + [ + 50.90704, + 14.190125 + ], + [ + 50.906987, + 14.190403 + ], + [ + 50.906507, + 14.193132 + ], + [ + 50.906278, + 14.194412 + ], + [ + 50.906166, + 14.195024 + ], + [ + 50.905858, + 14.196575 + ], + [ + 50.905665, + 14.197489 + ], + [ + 50.905462, + 14.198397 + ], + [ + 50.905193, + 14.199503 + ], + [ + 50.90503, + 14.200151 + ], + [ + 50.90486, + 14.200803 + ], + [ + 50.904577, + 14.201844 + ], + [ + 50.904232, + 14.203038 + ], + [ + 50.904076, + 14.203555 + ], + [ + 50.903948, + 14.203966 + ], + [ + 50.903818, + 14.204381 + ], + [ + 50.903569, + 14.20515 + ], + [ + 50.902753, + 14.207573 + ], + [ + 50.901064, + 14.212559 + ], + [ + 50.9006, + 14.213901 + ], + [ + 50.900507, + 14.214151 + ], + [ + 50.900206, + 14.214924 + ], + [ + 50.899933, + 14.215568 + ], + [ + 50.899697, + 14.216101 + ], + [ + 50.899514, + 14.216504 + ], + [ + 50.89932, + 14.216884 + ], + [ + 50.899157, + 14.217203 + ], + [ + 50.898987, + 14.217528 + ], + [ + 50.898818, + 14.217836 + ], + [ + 50.898592, + 14.218232 + ], + [ + 50.898361, + 14.218626 + ], + [ + 50.897411, + 14.220149 + ], + [ + 50.896736, + 14.221224 + ], + [ + 50.896522, + 14.22154 + ], + [ + 50.896335, + 14.221806 + ], + [ + 50.896101, + 14.222115 + ], + [ + 50.895916, + 14.222347 + ], + [ + 50.895728, + 14.222565 + ], + [ + 50.895401, + 14.222925 + ], + [ + 50.895079, + 14.223253 + ], + [ + 50.894765, + 14.223565 + ], + [ + 50.891942, + 14.226335 + ], + [ + 50.891286, + 14.227007 + ], + [ + 50.890265, + 14.228077 + ], + [ + 50.889572, + 14.228807 + ], + [ + 50.888437, + 14.229986 + ], + [ + 50.887477, + 14.231001 + ], + [ + 50.88702, + 14.231453 + ], + [ + 50.886559, + 14.231874 + ], + [ + 50.886082, + 14.232275 + ], + [ + 50.885604, + 14.232656 + ], + [ + 50.885361, + 14.23283 + ], + [ + 50.88478, + 14.233199 + ], + [ + 50.884158, + 14.233557 + ], + [ + 50.883844, + 14.233727 + ], + [ + 50.883445, + 14.233924 + ], + [ + 50.882723, + 14.234233 + ], + [ + 50.882108, + 14.234492 + ], + [ + 50.881517, + 14.234705 + ], + [ + 50.881108, + 14.234833 + ], + [ + 50.880902, + 14.234888 + ], + [ + 50.880592, + 14.234966 + ], + [ + 50.880279, + 14.235028 + ], + [ + 50.879833, + 14.235102 + ], + [ + 50.879117, + 14.235157 + ], + [ + 50.878584, + 14.235157 + ], + [ + 50.878177, + 14.235138 + ], + [ + 50.87777, + 14.235094 + ], + [ + 50.87691, + 14.234937 + ], + [ + 50.876431, + 14.234819 + ], + [ + 50.876237, + 14.234763 + ], + [ + 50.876046, + 14.234699 + ] ] } ], - "MapData": [ - "Tram|5656831|4620906|5656835|4620907|5656839|4620909|5656843|4620913|5656845|4620915|5656848|4620920|5656851|4620925|5656852|4620932|5656850|4620940|5656848|4620947|5656842|4620958|5656837|4620968|5656833|4620974|5656828|4620982|5656823|4620989|5656816|4620996|5656809|4621003|5656802|4621009|5656793|4621016|5656784|4621022|5656771|4621029|5656765|4621032|5656758|4621038|5656751|4621045|5656739|4621062|5656700|4621120|5656687|4621139|5656669|4621166|5656648|4621197|" - ] - }, - { - "Net": "", - "Duration": 4, - "Interchanges": 0, - "MotChain": [ - { - "DlId": "", - "StatelessId": ":: : :", - "Type": "Footpath", - "Name": "Fussweg", - "Changes": [], - "Diva": { - "Number": "", - "Network": "" - }, - "TransportationCompany": "", - "OperatorCode": "", - "ProductName": "Fussweg", - "TrainNumber": "" - } - ], - "RouteId": 3, - "PartialRoutes": [ - { - "Duration": 4, - "Mot": { - "DlId": "", - "StatelessId": ":: : :", - "Type": "Footpath", - "Name": "Fussweg", - "Changes": [], - "Diva": { - "Number": "", - "Network": "" - }, - "TransportationCompany": "", - "OperatorCode": "", - "ProductName": "Fussweg", - "TrainNumber": "" - }, - "MapDataIndex": 0, - "Shift": "None", - "RegularStops": [ - { - "ArrivalTime": "/Date(1681916460000-0000)/", - "DepartureTime": "/Date(1681916460000-0000)/", - "Place": "Dresden", - "Name": "SĂŒdvorstadt", - "Type": "Stop", - "DataId": "33000133", - "DhId": "de:14612:133", - "Latitude": 5656830, - "Longitude": 4620907, - "CancelReasons": [], - "ParkAndRail": [] - }, - { - "ArrivalTime": "/Date(1681916700000-0000)/", - "DepartureTime": "/Date(1681916700000-0000)/", - "Place": "Dresden", - "Name": "NĂŒrnberger Platz", - "Type": "Stop", - "DataId": "33000132", - "DhId": "de:14612:132", - "Latitude": 5656684, - "Longitude": 4621145, - "CancelReasons": [], - "ParkAndRail": [] - } - ], - "NextDepartureTimes": [], - "PreviousDepartureTimes": [] - } - ], - "MapData": [ - "Footpath|5656830|4620907|5656832|4620903|5656828|4620902|5656823|4620902|5656815|4620902|5656808|4620908|5656798|4620918|5656790|4620928|5656781|4620939|5656774|4620953|5656768|4620963|5656763|4620976|5656758|4620991|5656755|4621006|5656753|4621019|5656751|4621031|5656749|4621037|5656746|4621043|5656744|4621052|5656737|4621061|5656699|4621118|5656692|4621129|5656682|4621143|5656684|4621145|" - ] + "fare": { + "tickets": [ + { + "id": "", + "name": "Einzelkarte", + "comment": "", + "URL": "", + "currency": "EUR", + "priceLevel": "4", + "priceLevelUnit": "Preisstufe", + "priceBrutto": 12.2, + "priceNetto": 11.4, + "taxPercent": 7.0, + "fromLeg": 0, + "toLeg": 2, + "net": "voe", + "person": "ADULT", + "travellerClass": "SECOND", + "timeValidity": "SINGLE", + "validMinutes": 0, + "validityExtent": "ALIGHTING", + "isShortHaul": "NO", + "returnsAllowed": "NO", + "validForOneJourneyOnly": "YES", + "validForOneOperatorOnly": "NO", + "isSupplement": "NO", + "numberOfChanges": 2, + "nameValidityArea": "", + "properties": { + "tariffProductDefault": [], + "tariffProductOption": [] + } + }, + { + "id": "", + "name": "Einzelkarte", + "comment": "", + "URL": "", + "currency": "EUR", + "priceLevel": "4", + "priceLevelUnit": "Preisstufe", + "priceBrutto": 8.4, + "priceNetto": 7.85, + "taxPercent": 7.0, + "fromLeg": 0, + "toLeg": 2, + "net": "voe", + "person": "CHILD", + "travellerClass": "SECOND", + "timeValidity": "SINGLE", + "validMinutes": 0, + "validityExtent": "ALIGHTING", + "isShortHaul": "NO", + "returnsAllowed": "NO", + "validForOneJourneyOnly": "YES", + "validForOneOperatorOnly": "NO", + "isSupplement": "NO", + "numberOfChanges": 2, + "nameValidityArea": "", + "properties": { + "tariffProductDefault": [], + "tariffProductOption": [] + } + } + ], + "zones": [ + { + "net": "voe", + "toLeg": 2, + "fromLeg": 0, + "neutralZone": "", + "zones": [ + [ + "63" + ], + [ + "60" + ], + [ + "61" + ], + [ + "10" + ], + [ + "70" + ], + [ + "72" + ] + ] + } + ] + }, + "daysOfService": { + "rvb": "00000000000000000000000000000000000000000000000079F3E7C0000000F900000000000000000000000000000000" + } } ] -} \ No newline at end of file +} diff --git a/Haltestellenmonitor1-DD/Shared/Models/Coordinate.swift b/Haltestellenmonitor1-DD/Shared/Models/Coordinate.swift new file mode 100644 index 0000000..e69de29 From 4efb71ced846c121600629d2059a72e694605e44 Mon Sep 17 00:00:00 2001 From: Tom <65157178+t0mbrn@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:54:16 +0200 Subject: [PATCH 06/12] Working Trip Finder --- .../project.pbxproj | 10 ++++++++ .../Shared Models/Location.swift | 2 +- .../SingleTripView/Models/StopSequence.swift | 2 +- .../Shared/Models/Coordinate.swift | 25 +++++++++++++++++++ .../TripFinder/Models/TripLeg.swift | 25 ++++++++++++------- .../TripFinder/Views/ConnectionView.swift | 16 ++++++------ .../TripFinder/Views/PartialRouteRow.swift | 7 +----- .../TripFinder/Views/RegularStopRow.swift | 5 +--- .../TripFinder/Views/TripSection.swift | 11 +++----- 9 files changed, 67 insertions(+), 36 deletions(-) diff --git a/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj b/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj index 7db528f..b1e2e22 100644 --- a/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj +++ b/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj @@ -171,6 +171,10 @@ F13960532DCA73E5004AC9AA /* DepartureRowSkeleton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F13960522DCA73DC004AC9AA /* DepartureRowSkeleton.swift */; }; F13960572DCA7F1F004AC9AA /* SingleTripRowSkeleton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F13960562DCA7F1F004AC9AA /* SingleTripRowSkeleton.swift */; }; F1520EE32AE96E5A001E3E05 /* widgetLocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1520EE12AE96E5A001E3E05 /* widgetLocationManager.swift */; }; + F15272212E43A8D700CEB1AB /* Coordinate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15272202E43A8CF00CEB1AB /* Coordinate.swift */; }; + F15272222E43A8D700CEB1AB /* Coordinate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15272202E43A8CF00CEB1AB /* Coordinate.swift */; }; + F15272232E43A8D700CEB1AB /* Coordinate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15272202E43A8CF00CEB1AB /* Coordinate.swift */; }; + F15272242E43A8D700CEB1AB /* Coordinate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15272202E43A8CF00CEB1AB /* Coordinate.swift */; }; F15FE0EC2DE0F01C0096C79E /* Point.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15FE0EB2DE0F01C0096C79E /* Point.swift */; }; F15FE0ED2DE0F01C0096C79E /* Point.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15FE0EB2DE0F01C0096C79E /* Point.swift */; }; F15FE0EE2DE0F01C0096C79E /* Point.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15FE0EB2DE0F01C0096C79E /* Point.swift */; }; @@ -367,6 +371,7 @@ F13960522DCA73DC004AC9AA /* DepartureRowSkeleton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DepartureRowSkeleton.swift; sourceTree = ""; }; F13960562DCA7F1F004AC9AA /* SingleTripRowSkeleton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleTripRowSkeleton.swift; sourceTree = ""; }; F1520EE12AE96E5A001E3E05 /* widgetLocationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = widgetLocationManager.swift; sourceTree = ""; }; + F15272202E43A8CF00CEB1AB /* Coordinate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Coordinate.swift; sourceTree = ""; }; F15FE0EB2DE0F01C0096C79E /* Point.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Point.swift; sourceTree = ""; }; F15FE0FF2DE0FAFE0096C79E /* InfoParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoParser.swift; sourceTree = ""; }; F15FE1012DE0FB160096C79E /* StringSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringSection.swift; sourceTree = ""; }; @@ -657,6 +662,7 @@ F15FE0E22DE0E9C50096C79E /* Models */ = { isa = PBXGroup; children = ( + F15272202E43A8CF00CEB1AB /* Coordinate.swift */, D040EC2A29EEFA3E002DFEBF /* FavoriteStop.swift */, F17FF4C82DB4E13100F553D1 /* MOTTypes.swift */, ); @@ -1124,6 +1130,7 @@ D0C1ECDA29F2FA50001D214D /* TripStandardSettings.swift in Sources */, D0142C4E2A11039600646C94 /* GaussKrueger.swift in Sources */, D0142C5C2A1128E900646C94 /* TripRequestShort.swift in Sources */, + F15272242E43A8D700CEB1AB /* Coordinate.swift in Sources */, D0C1ECE029F325CC001D214D /* MapView.swift in Sources */, D0C1ECCC29F2B165001D214D /* ActivityRequest.swift in Sources */, D040EC2B29EEFA3E002DFEBF /* FavoriteStop.swift in Sources */, @@ -1182,6 +1189,7 @@ D0C1ECC929F28C2F001D214D /* TripAttributes.swift in Sources */, D0142C3B2A0F90AA00646C94 /* DepartureBinding.swift in Sources */, F1520EE32AE96E5A001E3E05 /* widgetLocationManager.swift in Sources */, + F15272212E43A8D700CEB1AB /* Coordinate.swift in Sources */, F18557F32DF8A32A0082EDB5 /* LiveActivityBanner.swift in Sources */, D0BD669E29EFEA03004E574C /* Stop.swift in Sources */, D0BD66C229EFEF0F004E574C /* DateParser.swift in Sources */, @@ -1243,6 +1251,7 @@ D0BD66AE29EFECF1004E574C /* IntentHandler.swift in Sources */, D0142C4B2A10FB1000646C94 /* ConnectionStop.swift in Sources */, D011F08C2C523DBF000BAB5C /* RegularStop.swift in Sources */, + F15272232E43A8D700CEB1AB /* Coordinate.swift in Sources */, D011F0802C523D9D000BAB5C /* Trip.swift in Sources */, D0C1ECD629F2EF9B001D214D /* DepartureFilter.swift in Sources */, D0BD66B929EFEEC0004E574C /* StopData.swift in Sources */, @@ -1303,6 +1312,7 @@ D0D1997F29F40B9C00946D87 /* TripRequest.swift in Sources */, D0D1996829F40B8A00946D87 /* LocationManager.swift in Sources */, D0D1997129F40B9C00946D87 /* Stop.swift in Sources */, + F15272222E43A8D700CEB1AB /* Coordinate.swift in Sources */, D0D1997229F40B9C00946D87 /* PushTokenHistory.swift in Sources */, F17FF4CC2DB4E14400F553D1 /* MOTTypes.swift in Sources */, D0D1997829F40B9C00946D87 /* ActivityRequest.swift in Sources */, diff --git a/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/Location.swift b/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/Location.swift index d691564..812cba9 100644 --- a/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/Location.swift +++ b/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/Location.swift @@ -11,7 +11,7 @@ struct Location: Hashable, Codable { var name: String var disassembledName: String? var type: String - var coord: [Int]? + var coord: [Coordinate]? var properties: Stop_Property? // var parent: Location? } diff --git a/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift b/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift index 2179307..b3c2e0a 100644 --- a/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift +++ b/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift @@ -13,7 +13,7 @@ struct StopSequenceItem: Hashable, Codable { // var disassembledName: String? // var type: String // var pointType: String? - // var coord: [Int]? + // var coord: [Coordinate]? // var niveau: Int var parent: Location // var productClasses: [Int] diff --git a/Haltestellenmonitor1-DD/Shared/Models/Coordinate.swift b/Haltestellenmonitor1-DD/Shared/Models/Coordinate.swift index e69de29..c45e905 100644 --- a/Haltestellenmonitor1-DD/Shared/Models/Coordinate.swift +++ b/Haltestellenmonitor1-DD/Shared/Models/Coordinate.swift @@ -0,0 +1,25 @@ +// +// Coordinate.swift +// Haltestellenmonitor1-DD +// +// Created by Tom Braune on 06.08.25. +// + +struct Coordinate: Hashable, Codable { + let value: Double + + init(from decoder: Decoder) throws { + let container = try decoder.singleValueContainer() + if let double = try? container.decode(Double.self) { + self.value = double + } else if let string = try? container.decode(String.self), let double = Double(string) { + self.value = double + } else { + throw DecodingError.dataCorruptedError(in: container, debugDescription: "Cannot decode as Double or String convertible to Double") + } + } + + init (_ value: Double) { + self.value = value + } +} diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift b/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift index ff32434..b6edc71 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift @@ -11,7 +11,7 @@ struct TripLeg: Hashable, Codable { struct TripOrigin: Hashable, Codable { let id: String let name: String - let coord: [Double] + let coord: [Coordinate] let niveau: Int? let departureTimePlanned: String let departureTimeEstimated: String? @@ -20,7 +20,7 @@ struct TripLeg: Hashable, Codable { struct TripDestination: Hashable, Codable { let id: String let name: String - let coord: [Double] + let coord: [Coordinate] let niveau: Int? let arrivalTimePlanned: String let arrivalTimeEstimated: String? @@ -47,7 +47,7 @@ struct TripLeg: Hashable, Codable { let stopSequence: [StopSequenceItem]? let infos: [Info]? - let coords: [[Double]] // [(x,y)] + let coords: [[Coordinate]] // [(x,y)] struct PathDescription: Hashable, Codable { let name: String let coord: [Double] // x, y @@ -68,7 +68,7 @@ struct TripLeg: Hashable, Codable { let type: String let level: String } - let footPathElem: [FootPathElement] + let footPathElem: [FootPathElement]? } let footPathInfo: [FootPathInfo]? let footPathInfoRedundant: Bool? @@ -127,7 +127,10 @@ struct TripLeg: Hashable, Codable { // if self.Mot.Name == nil && self.Mot.Direction == nil { // return "Unbekannt" // } - return getAccessibilityLabelEFA(iconId: transportation.product.iconId) + if self.transportation.number != nil { + return "\(self.transportation.number ?? "")" + } + return getAccessibilityLabelEFA(iconId: transportation.product.iconId) } func getColor() -> Color { @@ -135,7 +138,11 @@ struct TripLeg: Hashable, Codable { } func getName() -> String { - getAccessibilityLabelEFA(iconId: transportation.product.iconId) + // don't use for Cable Car + if self.transportation.properties.specialFares != nil && self.transportation.product.iconId != 9 { + return "\(self.transportation.properties.trainType ?? "") \(self.transportation.properties.trainNumber ?? "") \(self.destination.name)" + } + return "\(self.transportation.number ?? "") \(self.destination.name)" } func getAccessibilityLabel() -> String { @@ -147,21 +154,21 @@ struct TripLeg: Hashable, Codable { } func getFirstPlatform() -> String { - if stopSequence != nil { + if stopSequence == nil { return "" } return stopSequence!.first!.getPlatform() } func getLastPlatform() -> String? { - if stopSequence != nil { + if stopSequence == nil { return "" } return stopSequence!.last!.getPlatform() } func getLastStopName() -> String { - if stopSequence != nil { + if stopSequence == nil { return "" } return stopSequence!.last!.name diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift b/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift index 1c316b5..7d473ed 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift @@ -477,11 +477,11 @@ struct ConnectionView: View { } } } -// -// struct ConnectionView_Previews: PreviewProvider { -// static var previews: some View { -// ConnectionView(trip: tripTmp) -// .environmentObject(LocationManager()) -// .environmentObject(StopManager()) -// } -// } + + struct ConnectionView_Previews: PreviewProvider { + static var previews: some View { + ConnectionView(trip: tripTmp) + .environmentObject(LocationManager()) + .environmentObject(StopManager()) + } + } diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift b/Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift index f92e74d..b7c0d47 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift @@ -80,12 +80,7 @@ struct PartialRouteRow: View { struct PartialRouteRow_Previews: PreviewProvider { static var previews: some View { VStack { - PartialRouteRow(tripLeg: TripLeg(duration: 60, - origin: TripLeg.TripOrigin(id: "123", name: "Hauptbahnhof", coord: [1.0, 2.0], niveau: 0, departureTimePlanned: "2025-03-26T06:00:00Z", departureTimeEstimated: "2025-03-26T06:00:00Z", disassebledName: ""), - destination: TripLeg.TripDestination(id: "456", name: "Postplatz", coord: [3.0, 4.0], niveau: 0, arrivalTimePlanned: "2025-03-26T06:05:00Z", arrivalTimeEstimated: "2025-03-26T06:06:00Z", disassebledName: ""), - transportation: TripLeg.TripTransportation(id: "", number: "7", product: Product(name: "Tram", iconId: 4), properties: T_Properties(trainName: "", trainType: "", trainNumber: "7", tripCode: 0, globalId: "", specialFares: "")), - stopSequence: [StopSequenceItem(id: "xyz", name: "Hauptbahnhof", parent: Location(name: "Hauptbahnhof", type: ""), properties: StopSequenceItem.properties(platfromName: "1"))], - infos: [], coords: [], pathDescription: TripLeg.PathDescription(name: "TODO", coord: []), interchange: TripLeg.Interchange(desc: "TODO", coords: []), footPathInfo: [], footPathInfoRedundant: true)) + PartialRouteRow(tripLeg: tripTmp.journeys.first!.legs.first!) .previewLayout(.fixed(width: 500, height: 100)) .padding() } .padding() diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift b/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift index b62418a..c7bfa52 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift @@ -61,9 +61,6 @@ struct RegularStopRow: View { struct RegularStopRow_Previews: PreviewProvider { static var previews: some View { - RegularStopRow(stop: StopSequenceItem(id: "1", - name: "HBF", - parent: Location(id: "de:14612:28", name: "HBF DD", disassembledName: "", type: "stop", coord: [], properties: Stop_Property(stopId: "de:14612:28")), - properties: StopSequenceItem.properties(platfromName: "1", plannedPlatformName: "")), isFirst: true) + RegularStopRow(stop: tripTmp.journeys.first!.legs.first!.stopSequence!.first!, isFirst: true) } } diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift b/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift index 9ad6713..ff98c05 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift @@ -113,13 +113,10 @@ struct TripSection: View { struct TripSection_Previews: PreviewProvider { static var previews: some View { - TripSection(vm: TripSectionViewModel(journey: Journey(interchanges: 1, - legs: [TripLeg(duration: 60, origin: TripLeg.TripOrigin(id: "123", name: "Hauptbahnhof", coord: [1.0, 2.0], niveau: 0, departureTimePlanned: "2025-03-26T06:00:00Z", departureTimeEstimated: "2025-03-26T06:00:00Z", disassebledName: ""), destination: TripLeg.TripDestination(id: "456", name: "Postplatz", coord: [3.0, 4.0], niveau: 0, arrivalTimePlanned: "2025-03-26T06:05:00Z", arrivalTimeEstimated: "2025-03-26T06:06:00Z", disassebledName: ""), - transportation: TripLeg.TripTransportation(product: Product(name: "Tram", iconId: 4), properties: T_Properties()), - stopSequence: [StopSequenceItem(id: "xyz", name: "Hauptbahnhof", parent: Location(name: "Hauptbahnhof", type: ""), properties: StopSequenceItem.properties(platfromName: "1"))], - infos: [], coords: [], pathDescription: nil, interchange: nil, footPathInfo: [], footPathInfoRedundant: true)], - fare: Journey.TripFare(tickets: [Journey.TripFare.Ticket(name: "Einzelfahrt", currency: "EUR", priceBrutto: 4.1, priceLevel: "1", priceLevelUnit: "Preisstufe", fromLeg: 0, toLeg: 1, person: "Adult")])))) - } + VStack { + TripSection(vm: TripSectionViewModel(journey: tripTmp.journeys[0])) + }.padding(.top, 20) + } } struct Line: Shape { From 69ac2d02dd7ee9108dd1513ec14b0d667a9fb635 Mon Sep 17 00:00:00 2001 From: Tom <65157178+t0mbrn@users.noreply.github.com> Date: Wed, 6 Aug 2025 19:08:25 +0200 Subject: [PATCH 07/12] Bugfixes, Anpassung an aktuelles Design --- .../Shared Models/Location.swift | 6 +++- .../SingleTripView/Models/StopSequence.swift | 5 +++ .../Shared/Models/MOTTypes.swift | 8 +++-- .../TripFinder/Models/TripLeg.swift | 32 +++++++++++++++---- .../TripFinder/Views/RegularStopRow.swift | 4 +-- .../TripFinder/Views/TripSection.swift | 2 +- 6 files changed, 43 insertions(+), 14 deletions(-) diff --git a/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/Location.swift b/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/Location.swift index 812cba9..a6a6798 100644 --- a/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/Location.swift +++ b/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/Location.swift @@ -6,6 +6,10 @@ // struct Location: Hashable, Codable { + struct LocationParent: Hashable, Codable { + var name: String + } + var id: String? // var isGlobalId: Bool? var name: String @@ -13,5 +17,5 @@ struct Location: Hashable, Codable { var type: String var coord: [Coordinate]? var properties: Stop_Property? - // var parent: Location? + var parent: LocationParent? } diff --git a/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift b/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift index b3c2e0a..8c24f88 100644 --- a/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift +++ b/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift @@ -115,6 +115,11 @@ struct StopSequenceItem: Hashable, Codable { return calendar.dateComponents([.minute], from: scheduledTimeComponents, to: realtimeComponents).minute! } + + func getName() -> String { + let location = parent.parent?.name ?? parent.name + return "\(self.parent.disassembledName ?? self.parent.name)\(location == "Dresden" || location.isEmpty ? "" : ", \(location)")" + } func getPlatform() -> String { if self.properties.plannedPlatformName == nil && self.properties.platfromName == nil { diff --git a/Haltestellenmonitor1-DD/Shared/Models/MOTTypes.swift b/Haltestellenmonitor1-DD/Shared/Models/MOTTypes.swift index 3e3b8ba..b2812aa 100644 --- a/Haltestellenmonitor1-DD/Shared/Models/MOTTypes.swift +++ b/Haltestellenmonitor1-DD/Shared/Models/MOTTypes.swift @@ -32,7 +32,7 @@ func getAccessibilityLabelStandard(motType: MOTType) -> String { case .Down: return "Treppe abwĂ€rts" case .Walking: - return "Zu Fuß" + return "Fußweg" } } @@ -48,7 +48,7 @@ func getAccessibilityLabelEFA(iconId: Int) -> String { return getAccessibilityLabelStandard(motType: .CableCar) case 10: return getAccessibilityLabelStandard(motType: .Boat) - case -1: + case 100: return getAccessibilityLabelStandard(motType: .Walking) default: return getAccessibilityLabelStandard(motType: .Default) @@ -115,6 +115,8 @@ func getIconEFA(iconId: Int) -> String { return getIconStandard(motType: .CableCar) case 10: return getIconStandard(motType: .Boat) + case 100: + return getIconStandard(motType: .Walking) default: return getIconStandard(motType: .Default) } @@ -177,7 +179,7 @@ func getColorEFA(iconId: Int) -> Color { return getColorStandard(motType: .CableCar) case 10: return getColorStandard(motType: .Boat) - case -1: + case 100: return getColorStandard(motType: .Walking) default: return getColorStandard(motType: .Default) diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift b/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift index b6edc71..e5e50b7 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift @@ -8,6 +8,15 @@ import Foundation import SwiftUI struct TripLeg: Hashable, Codable { + struct TripLocationParent: Hashable, Codable { + struct TripLocationParent2: Hashable, Codable { + let name: String + } + let name: String + let disassembledName: String? + let parent: TripLocationParent2? + } + struct TripOrigin: Hashable, Codable { let id: String let name: String @@ -16,6 +25,7 @@ struct TripLeg: Hashable, Codable { let departureTimePlanned: String let departureTimeEstimated: String? let disassebledName: String? // Platform + let parent: TripLocationParent } struct TripDestination: Hashable, Codable { let id: String @@ -25,6 +35,7 @@ struct TripLeg: Hashable, Codable { let arrivalTimePlanned: String let arrivalTimeEstimated: String? let disassebledName: String? // Platform + let parent: TripLocationParent } struct TripTransportation: Hashable, Codable { @@ -36,7 +47,7 @@ struct TripLeg: Hashable, Codable { // var `operator`: Operator? // var origin: Place? var properties: T_Properties - // var destination: Place? + var destination: Place? } let duration: Int @@ -89,7 +100,7 @@ struct TripLeg: Hashable, Codable { } func getIconText() -> Text { - if transportation.product.iconId == -1 { + if transportation.product.iconId == 100 { return Text(Image(systemName: "figure.walk")) } return Text(getIconEFA(iconId: transportation.product.iconId)) @@ -109,6 +120,9 @@ struct TripLeg: Hashable, Codable { if transportation.product.name == "InsertedWaiting" { return "🕝" } + if transportation.product.iconId == 100 { + return "đŸš¶" + } // if self.Mot.type == "Footpath" { // return hasNoTime() ? "🕝" : "đŸš¶" // } @@ -136,13 +150,17 @@ struct TripLeg: Hashable, Codable { func getColor() -> Color { getColorEFA(iconId: transportation.product.iconId) } + func getName() -> String { // don't use for Cable Car if self.transportation.properties.specialFares != nil && self.transportation.product.iconId != 9 { return "\(self.transportation.properties.trainType ?? "") \(self.transportation.properties.trainNumber ?? "") \(self.destination.name)" } - return "\(self.transportation.number ?? "") \(self.destination.name)" + if self.transportation.product.iconId == 100 { + return getAccessibilityLabelStandard(motType: .Walking) + } + return "\(self.transportation.number ?? "") \(self.transportation.destination?.name ?? "")" } func getAccessibilityLabel() -> String { @@ -171,13 +189,13 @@ struct TripLeg: Hashable, Codable { if stopSequence == nil { return "" } - return stopSequence!.last!.name + return stopSequence!.last!.getName() } } func createWaitingLeg(duration: Int, startTime: String, endTime: String) -> TripLeg { - let startEvent = StopSequenceItem(id: "", name: "Wait", parent: Location(name: "", type: ""), properties: StopSequenceItem.properties(), departureTimePlanned: startTime, departureTimeEstimated: startTime) - let endEvent = StopSequenceItem(id: "", name: "Wait", parent: Location(name: "", type: ""), properties: StopSequenceItem.properties(), arrivalTimePlanned: endTime, arrivalTimeEstimated: endTime) + let startEvent = StopSequenceItem(id: "", name: "Wait", parent: Location(name: "", disassembledName: "", type: ""), properties: StopSequenceItem.properties(), departureTimePlanned: startTime, departureTimeEstimated: startTime) + let endEvent = StopSequenceItem(id: "", name: "Wait", parent: Location(name: "", disassembledName: "", type: ""), properties: StopSequenceItem.properties(), arrivalTimePlanned: endTime, arrivalTimeEstimated: endTime) - return TripLeg(duration: duration, origin: TripLeg.TripOrigin(id: "", name: "", coord: [], niveau: 0, departureTimePlanned: startTime, departureTimeEstimated: startTime, disassebledName: ""), destination: TripLeg.TripDestination(id: "", name: "", coord: [], niveau: 0, arrivalTimePlanned: endTime, arrivalTimeEstimated: endTime, disassebledName: ""), transportation: TripLeg.TripTransportation(id: "", product: Product(name: "InsertedWaiting", iconId: -1), properties: T_Properties()), stopSequence: [startEvent, endEvent], infos: [], coords: [], pathDescription: TripLeg.PathDescription(name: "", coord: []), interchange: TripLeg.Interchange(desc: "", coords: []), footPathInfo: [], footPathInfoRedundant: false) + return TripLeg(duration: duration, origin: TripLeg.TripOrigin(id: "", name: "", coord: [], niveau: 0, departureTimePlanned: startTime, departureTimeEstimated: startTime, disassebledName: "", parent: TripLeg.TripLocationParent(name: "", disassembledName: "", parent: TripLeg.TripLocationParent.TripLocationParent2(name: ""))), destination: TripLeg.TripDestination(id: "", name: "", coord: [], niveau: 0, arrivalTimePlanned: endTime, arrivalTimeEstimated: endTime, disassebledName: "", parent: TripLeg.TripLocationParent(name: "", disassembledName: "", parent: TripLeg.TripLocationParent.TripLocationParent2(name: ""))), transportation: TripLeg.TripTransportation(id: "", product: Product(name: "InsertedWaiting", iconId: -1), properties: T_Properties()), stopSequence: [startEvent, endEvent], infos: [], coords: [], pathDescription: TripLeg.PathDescription(name: "", coord: []), interchange: TripLeg.Interchange(desc: "", coords: []), footPathInfo: [], footPathInfoRedundant: false) } diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift b/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift index c7bfa52..cd54cb3 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift @@ -14,8 +14,8 @@ struct RegularStopRow: View { var body: some View { VStack(alignment: .leading) { HStack { - Text(stop.name) - .accessibilityLabel("Haltestelle \(stop.name)") + Text(stop.getName()) + .accessibilityLabel("Haltestelle \(stop.getName())") Spacer() if stop.getPlatform() != "" { Text(stop.getPlatform()) diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift b/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift index ff98c05..1d96a7e 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift @@ -115,7 +115,7 @@ struct TripSection: View { static var previews: some View { VStack { TripSection(vm: TripSectionViewModel(journey: tripTmp.journeys[0])) - }.padding(.top, 20) + } } } From ccc8b26b1fc118f3c27634fbe2cc971f306e3302 Mon Sep 17 00:00:00 2001 From: Tom <65157178+t0mbrn@users.noreply.github.com> Date: Thu, 7 Aug 2025 17:51:27 +0200 Subject: [PATCH 08/12] Refactoring, Improvements to Time Output --- .../project.pbxproj | 16 ++++++++-------- .../TripFinder/Models/TripLeg.swift | 3 +++ .../TripFinder/Models/TripSectionViewModel.swift | 8 ++++---- ...egularStopRow.swift => StopSequenceRow.swift} | 4 ++-- .../{PartialRouteRow.swift => TripLegRow.swift} | 6 +++--- .../TripFinder/Views/TripSection.swift | 12 +++++++----- 6 files changed, 27 insertions(+), 22 deletions(-) rename Haltestellenmonitor1-DD/TripFinder/Views/{RegularStopRow.swift => StopSequenceRow.swift} (95%) rename Haltestellenmonitor1-DD/TripFinder/Views/{PartialRouteRow.swift => TripLegRow.swift} (96%) diff --git a/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj b/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj index b1e2e22..23be4d1 100644 --- a/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj +++ b/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj @@ -118,7 +118,7 @@ D0BD66F329F03C14004E574C /* Mot.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BD66E129F03949004E574C /* Mot.swift */; }; D0BD66F429F03C15004E574C /* Mot.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BD66E129F03949004E574C /* Mot.swift */; }; D0BD66F729F03ED2004E574C /* TripSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BD66F629F03ED2004E574C /* TripSection.swift */; }; - D0BD66FA29F04593004E574C /* PartialRouteRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BD66F929F04593004E574C /* PartialRouteRow.swift */; }; + D0BD66FA29F04593004E574C /* TripLegRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BD66F929F04593004E574C /* TripLegRow.swift */; }; D0BD66FB29F04D28004E574C /* MonitorWidget.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = D0BD66FF29F04D28004E574C /* MonitorWidget.intentdefinition */; }; D0BD66FC29F04D28004E574C /* MonitorWidget.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = D0BD66FF29F04D28004E574C /* MonitorWidget.intentdefinition */; }; D0BD66FD29F04D28004E574C /* MonitorWidget.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = D0BD66FF29F04D28004E574C /* MonitorWidget.intentdefinition */; }; @@ -140,7 +140,7 @@ D0C1ECDA29F2FA50001D214D /* TripStandardSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C1ECD929F2FA50001D214D /* TripStandardSettings.swift */; }; D0C1ECDB29F2FB3C001D214D /* TripStandardSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C1ECD929F2FA50001D214D /* TripStandardSettings.swift */; }; D0C1ECDC29F2FB3C001D214D /* TripStandardSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C1ECD929F2FA50001D214D /* TripStandardSettings.swift */; }; - D0C1ECDE29F3008B001D214D /* RegularStopRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C1ECDD29F3008B001D214D /* RegularStopRow.swift */; }; + D0C1ECDE29F3008B001D214D /* StopSequenceRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C1ECDD29F3008B001D214D /* StopSequenceRow.swift */; }; D0C1ECE029F325CC001D214D /* MapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C1ECDF29F325CC001D214D /* MapView.swift */; }; D0C1ECE429F333F9001D214D /* ActivityKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C1ECE329F333F9001D214D /* ActivityKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; D0C21F4529F426A8001770F1 /* SingleTripView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C21F4429F426A8001770F1 /* SingleTripView.swift */; }; @@ -344,7 +344,7 @@ D0BD66E129F03949004E574C /* Mot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Mot.swift; sourceTree = ""; }; D0BD66E329F03BE5004E574C /* trip.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = trip.json; sourceTree = ""; }; D0BD66F629F03ED2004E574C /* TripSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripSection.swift; sourceTree = ""; }; - D0BD66F929F04593004E574C /* PartialRouteRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PartialRouteRow.swift; sourceTree = ""; }; + D0BD66F929F04593004E574C /* TripLegRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripLegRow.swift; sourceTree = ""; }; D0BD66FE29F04D28004E574C /* de */ = {isa = PBXFileReference; lastKnownFileType = file.intentdefinition; name = de; path = de.lproj/MonitorWidget.intentdefinition; sourceTree = ""; }; D0C1ECBB29F2823E001D214D /* SingleTripView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleTripView.swift; sourceTree = ""; }; D0C1ECBF29F283DE001D214D /* SingleTripRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleTripRow.swift; sourceTree = ""; }; @@ -354,7 +354,7 @@ D0C1ECD329F2EF9B001D214D /* DepartureFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DepartureFilter.swift; sourceTree = ""; }; D0C1ECD729F2F071001D214D /* DepartureDisclosureSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DepartureDisclosureSection.swift; sourceTree = ""; }; D0C1ECD929F2FA50001D214D /* TripStandardSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripStandardSettings.swift; sourceTree = ""; }; - D0C1ECDD29F3008B001D214D /* RegularStopRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegularStopRow.swift; sourceTree = ""; }; + D0C1ECDD29F3008B001D214D /* StopSequenceRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StopSequenceRow.swift; sourceTree = ""; }; D0C1ECDF29F325CC001D214D /* MapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapView.swift; sourceTree = ""; }; D0C1ECE329F333F9001D214D /* ActivityKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ActivityKit.framework; path = System/Library/Frameworks/ActivityKit.framework; sourceTree = SDKROOT; }; D0C21F4429F426A8001770F1 /* SingleTripView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleTripView.swift; sourceTree = ""; }; @@ -727,8 +727,8 @@ children = ( D0BD66D129F01B99004E574C /* ConnectionView.swift */, D0BD66D529F026D7004E574C /* ConnectionStopSelectionView.swift */, - D0BD66F929F04593004E574C /* PartialRouteRow.swift */, - D0C1ECDD29F3008B001D214D /* RegularStopRow.swift */, + D0BD66F929F04593004E574C /* TripLegRow.swift */, + D0C1ECDD29F3008B001D214D /* StopSequenceRow.swift */, D0BD66F629F03ED2004E574C /* TripSection.swift */, ); path = Views; @@ -1155,7 +1155,7 @@ F15FE1022DE0FB1F0096C79E /* StringSection.swift in Sources */, D0142C5F2A112CA900646C94 /* StopCoordinate.swift in Sources */, F1B8C04E2D70DD5C00F77CE4 /* Location.swift in Sources */, - D0C1ECDE29F3008B001D214D /* RegularStopRow.swift in Sources */, + D0C1ECDE29F3008B001D214D /* StopSequenceRow.swift in Sources */, D0BD66D629F026D7004E574C /* ConnectionStopSelectionView.swift in Sources */, D0142C5A2A11285700646C94 /* FavoriteConnection.swift in Sources */, F17FF4C62DB4D83B00F553D1 /* DateManager.swift in Sources */, @@ -1170,7 +1170,7 @@ D0142C582A1119D500646C94 /* About.swift in Sources */, D03A26A029EEC248005B0600 /* DepartureRow.swift in Sources */, F16B7FDE2D9321CD00851DC4 /* StopSequence.swift in Sources */, - D0BD66FA29F04593004E574C /* PartialRouteRow.swift in Sources */, + D0BD66FA29F04593004E574C /* TripLegRow.swift in Sources */, D03A268329EEB6C9005B0600 /* Haltestellenmonitor1_DDApp.swift in Sources */, F16B7FDC2D90861A00851DC4 /* DepartureInfoView.swift in Sources */, D03A269929EEBA9B005B0600 /* Stop.swift in Sources */, diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift b/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift index e5e50b7..6402891 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift @@ -160,6 +160,9 @@ struct TripLeg: Hashable, Codable { if self.transportation.product.iconId == 100 { return getAccessibilityLabelStandard(motType: .Walking) } + if isInsertedWaiting() { + return "Wartezeit" + } return "\(self.transportation.number ?? "") \(self.transportation.destination?.name ?? "")" } diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/TripSectionViewModel.swift b/Haltestellenmonitor1-DD/TripFinder/Models/TripSectionViewModel.swift index 81ad659..8dca771 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/TripSectionViewModel.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/TripSectionViewModel.swift @@ -33,11 +33,11 @@ class TripSectionViewModel: ObservableObject { } func getTime() -> String { - var totalDuration: Int = 0 - journey.legs.forEach { - totalDuration += $0.duration + let totalDuration = journey.duration + if totalDuration > 60 { + return "\(totalDuration / 60):\(totalDuration % 60 == 0 ? "00" : "\(totalDuration % 60)")h" } - return "\(totalDuration / 60) Min" + return "\(journey.duration) Min" } func getDuration(_ leg: TripLeg) -> (Int, String) { diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift b/Haltestellenmonitor1-DD/TripFinder/Views/StopSequenceRow.swift similarity index 95% rename from Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift rename to Haltestellenmonitor1-DD/TripFinder/Views/StopSequenceRow.swift index cd54cb3..a157e59 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/RegularStopRow.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/StopSequenceRow.swift @@ -7,7 +7,7 @@ import SwiftUI -struct RegularStopRow: View { +struct StopSequenceRow: View { var stop: StopSequenceItem var isFirst: Bool @@ -61,6 +61,6 @@ struct RegularStopRow: View { struct RegularStopRow_Previews: PreviewProvider { static var previews: some View { - RegularStopRow(stop: tripTmp.journeys.first!.legs.first!.stopSequence!.first!, isFirst: true) + StopSequenceRow(stop: tripTmp.journeys.first!.legs.first!.stopSequence!.first!, isFirst: true) } } diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift b/Haltestellenmonitor1-DD/TripFinder/Views/TripLegRow.swift similarity index 96% rename from Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift rename to Haltestellenmonitor1-DD/TripFinder/Views/TripLegRow.swift index b7c0d47..a0ba80b 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/PartialRouteRow.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/TripLegRow.swift @@ -9,7 +9,7 @@ import SwiftUI private var timeFrameWidth: CGFloat = 60 -struct PartialRouteRow: View { +struct TripLegRow: View { var tripLeg: TripLeg var body: some View { @@ -80,14 +80,14 @@ struct PartialRouteRow: View { struct PartialRouteRow_Previews: PreviewProvider { static var previews: some View { VStack { - PartialRouteRow(tripLeg: tripTmp.journeys.first!.legs.first!) + TripLegRow(tripLeg: tripTmp.journeys.first!.legs.first!) .previewLayout(.fixed(width: 500, height: 100)) .padding() } .padding() } } -struct PartialRouteRowWaitingTime: View { +struct InterTripLegWaitingRow: View { var time: Int var text: String = "Wartezeit" diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift b/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift index 1d96a7e..513e4d9 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift @@ -23,6 +23,7 @@ struct TripSection: View { Spacer() Text("| \(vm.getTime())") + .monospacedDigit() .foregroundColor(.gray) .accessibilityLabel("Dauer: \(vm.getTime())") @@ -42,16 +43,16 @@ struct TripSection: View { DisclosureGroup { ForEach(vm.routesWithWaitingTimeUnder2Min, id: \.self) { tripLeg in if tripLeg.isInsertedWaiting() && tripLeg.duration > 0 { - PartialRouteRowWaitingTime(time: tripLeg.duration / 60, text: tripLeg.getName()) + InterTripLegWaitingRow(time: tripLeg.duration / 60, text: tripLeg.getName()) } if tripLeg.stopSequence == nil { if tripLeg.duration == 0 { let tup = vm.getDuration(tripLeg) if tup.0 > 0 { - PartialRouteRowWaitingTime(time: tup.0, text: tup.1) + InterTripLegWaitingRow(time: tup.0, text: tup.1) } } else { - PartialRouteRow(tripLeg: tripLeg) + TripLegRow(tripLeg: tripLeg) } } else { if !tripLeg.isInsertedWaiting() { @@ -65,11 +66,11 @@ struct TripSection: View { .opacity(0.0) .buttonStyle(.plain) - RegularStopRow(stop: stopSequenceItem, isFirst: tripLeg.stopSequence?.first?.id == stopSequenceItem.id) + StopSequenceRow(stop: stopSequenceItem, isFirst: tripLeg.stopSequence?.first?.id == stopSequenceItem.id) } } } label: { - PartialRouteRow(tripLeg: tripLeg) + TripLegRow(tripLeg: tripLeg) } } } @@ -79,6 +80,7 @@ struct TripSection: View { }.accessibilityHint("Abschnitte der Route") } + /// Horizontal Bar displaying trip legs @ViewBuilder func tripView() -> some View { GeometryReader { geo in From b7839077ae76a55e75ca7ab13dab77a011a99290 Mon Sep 17 00:00:00 2001 From: Tom <65157178+t0mbrn@users.noreply.github.com> Date: Sat, 9 Aug 2025 19:10:59 +0200 Subject: [PATCH 09/12] Add FootPath Duration to trip section --- .../SingleTripView/Models/StopSequence.swift | 2 +- .../TripFinder/Models/TripLeg.swift | 14 +++++++++-- .../TripFinder/Views/TripLegRow.swift | 23 +++++++++++++++++++ .../TripFinder/Views/TripSection.swift | 3 +++ 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift b/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift index 8c24f88..0470fab 100644 --- a/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift +++ b/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift @@ -115,7 +115,7 @@ struct StopSequenceItem: Hashable, Codable { return calendar.dateComponents([.minute], from: scheduledTimeComponents, to: realtimeComponents).minute! } - + func getName() -> String { let location = parent.parent?.name ?? parent.name return "\(self.parent.disassembledName ?? self.parent.name)\(location == "Dresden" || location.isEmpty ? "" : ", \(location)")" diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift b/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift index 6402891..ca763d0 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/TripLeg.swift @@ -16,7 +16,7 @@ struct TripLeg: Hashable, Codable { let disassembledName: String? let parent: TripLocationParent2? } - + struct TripOrigin: Hashable, Codable { let id: String let name: String @@ -150,7 +150,6 @@ struct TripLeg: Hashable, Codable { func getColor() -> Color { getColorEFA(iconId: transportation.product.iconId) } - func getName() -> String { // don't use for Cable Car @@ -194,6 +193,17 @@ struct TripLeg: Hashable, Codable { } return stopSequence!.last!.getName() } + + func hasInterchangeFootpath() -> Bool { + footPathInfo != nil && !(footPathInfo?.isEmpty ?? true) + } + + func getFootpathDuration() -> Int { + if !hasInterchangeFootpath() { + return 0 + } + return footPathInfo!.first!.duration / 60 + } } func createWaitingLeg(duration: Int, startTime: String, endTime: String) -> TripLeg { diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/TripLegRow.swift b/Haltestellenmonitor1-DD/TripFinder/Views/TripLegRow.swift index a0ba80b..39f270e 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/TripLegRow.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/TripLegRow.swift @@ -109,3 +109,26 @@ struct InterTripLegWaitingRow: View { .accessibilityElement(children: .combine) } } + +struct AfterTripLegFootpathRow: View { + var duration: Int + let text: String = "Fußweg" + + var body: some View { + HStack { + Text(Image(systemName: "figure.walk")) + .frame(width: timeFrameWidth) + .offset(CGSize(width: 13, height: 0)) + .accessibilityHidden(true) + + Text("\(duration) min \(text)") + .frame(maxWidth: .infinity, alignment: .leading) + .offset(CGSize(width: 22, height: 0)) + + } + .foregroundColor(.gray) + .font(.subheadline.monospacedDigit()) + .padding(.leading, -47.5) // fixes horizontal line below row + .accessibilityElement(children: .combine) + } +} diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift b/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift index 513e4d9..f25090b 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/TripSection.swift @@ -73,6 +73,9 @@ struct TripSection: View { TripLegRow(tripLeg: tripLeg) } } + if tripLeg.getFootpathDuration() > 0 { + AfterTripLegFootpathRow(duration: tripLeg.getFootpathDuration()) + } } } } From 1a6c5d74a62c0da5cb2c369998fa16d19c32a732 Mon Sep 17 00:00:00 2001 From: Tom <65157178+t0mbrn@users.noreply.github.com> Date: Sat, 9 Aug 2025 20:16:14 +0200 Subject: [PATCH 10/12] Trip Settings First part --- .../project.pbxproj | 4 +++ .../TripFinder/Models/TripRequest.swift | 2 +- .../TripFinder/Views/ConnectionView.swift | 11 +++++- .../TripFinder/Views/TripSettingsView.swift | 36 +++++++++++++++++++ 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 Haltestellenmonitor1-DD/TripFinder/Views/TripSettingsView.swift diff --git a/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj b/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj index 23be4d1..2c8afe4 100644 --- a/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj +++ b/Haltestellenmonitor1-DD.xcodeproj/project.pbxproj @@ -188,6 +188,7 @@ F16B7FDF2D9321CD00851DC4 /* StopSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = F16B7FDD2D9321C700851DC4 /* StopSequence.swift */; }; F16B7FE02D9321CD00851DC4 /* StopSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = F16B7FDD2D9321C700851DC4 /* StopSequence.swift */; }; F16B7FE12D9321CD00851DC4 /* StopSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = F16B7FDD2D9321C700851DC4 /* StopSequence.swift */; }; + F17D3F132E47BC5300EE9149 /* TripSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F17D3F122E47BC4D00EE9149 /* TripSettingsView.swift */; }; F17FF4C42DB4D83B00F553D1 /* DateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F17FF4C32DB4D82E00F553D1 /* DateManager.swift */; }; F17FF4C52DB4D83B00F553D1 /* DateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F17FF4C32DB4D82E00F553D1 /* DateManager.swift */; }; F17FF4C62DB4D83B00F553D1 /* DateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F17FF4C32DB4D82E00F553D1 /* DateManager.swift */; }; @@ -378,6 +379,7 @@ F15FE1032DE0FB690096C79E /* DepartureInfoViewRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DepartureInfoViewRow.swift; sourceTree = ""; }; F16B7FDB2D90861A00851DC4 /* DepartureInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DepartureInfoView.swift; sourceTree = ""; }; F16B7FDD2D9321C700851DC4 /* StopSequence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StopSequence.swift; sourceTree = ""; }; + F17D3F122E47BC4D00EE9149 /* TripSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripSettingsView.swift; sourceTree = ""; }; F17FF4C32DB4D82E00F553D1 /* DateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateManager.swift; sourceTree = ""; }; F17FF4C82DB4E13100F553D1 /* MOTTypes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MOTTypes.swift; sourceTree = ""; }; F18557F22DF8A31F0082EDB5 /* LiveActivityBanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LiveActivityBanner.swift; sourceTree = ""; }; @@ -726,6 +728,7 @@ isa = PBXGroup; children = ( D0BD66D129F01B99004E574C /* ConnectionView.swift */, + F17D3F122E47BC4D00EE9149 /* TripSettingsView.swift */, D0BD66D529F026D7004E574C /* ConnectionStopSelectionView.swift */, D0BD66F929F04593004E574C /* TripLegRow.swift */, D0C1ECDD29F3008B001D214D /* StopSequenceRow.swift */, @@ -1176,6 +1179,7 @@ D03A269929EEBA9B005B0600 /* Stop.swift in Sources */, D0BD66F729F03ED2004E574C /* TripSection.swift in Sources */, F15FE0F02DE0F01C0096C79E /* Point.swift in Sources */, + F17D3F132E47BC5300EE9149 /* TripSettingsView.swift in Sources */, D0BD66DC29F030BD004E574C /* Route.swift in Sources */, D040EC2429EEDE3C002DFEBF /* DepartureView.swift in Sources */, D0BD66D429F02576004E574C /* ConnectionFilter.swift in Sources */, diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift b/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift index 1252651..d9652eb 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift @@ -21,7 +21,7 @@ struct TripRequest: Hashable, Codable { var format: String = "json" } -enum IndividualTransportType: String, Codable { +enum IndividualTransportType: String, Hashable, Codable, CaseIterable { case walking = "100" case bike_and_ride = "101" case bike_takealong = "102" diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift b/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift index 7d473ed..16c332f 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift @@ -55,7 +55,7 @@ struct ConnectionView: View { } } ToolbarItem(placement: ToolbarItemPlacement.confirmationAction) { - Button("ZurĂŒcksetzen") { + Button { if isLoading { return } @@ -65,6 +65,15 @@ struct ConnectionView: View { requestData = nil numbernext = 0 dateTime = Date.now + } label: { + Text(Image(systemName: "arrow.counterclockwise")) + } + } + ToolbarItem(placement: ToolbarItemPlacement.confirmationAction) { + NavigationLink { + TripSettingsView() + } label: { + Text(Image(systemName: "gearshape")) } } } diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/TripSettingsView.swift b/Haltestellenmonitor1-DD/TripFinder/Views/TripSettingsView.swift new file mode 100644 index 0000000..e8c34a5 --- /dev/null +++ b/Haltestellenmonitor1-DD/TripFinder/Views/TripSettingsView.swift @@ -0,0 +1,36 @@ +// +// TripSettingsView.swift +// Haltestellenmonitor1-DD +// +// Created by Tom Braune on 09.08.25. +// +import SwiftUI + +struct TripSettingsView: View { + @AppStorage("interchangeMethod") + private var interchangeMethod: IndividualTransportType = .walking + + var body: some View { + Form { + Picker("Art der sekundĂ€ren Fortbewegung", selection: Binding( + get: { interchangeMethod }, + set: { interchangeMethod = $0 } + )) { + Label("Zu Fuß", systemImage: "figure.walk") + .tag(IndividualTransportType.walking) + + Label("Bike & Ride", systemImage: "figure.walk") + .tag(IndividualTransportType.bike_and_ride) + + Label("Fahrradmitnahme", systemImage: "bicycle") + .tag(IndividualTransportType.bike_takealong) + } + .pickerStyle(.inline) + } + .navigationTitle("Trip Einstellungen") + } +} + +#Preview("Trip Einstellungen") { + TripSettingsView() +} From d2649804d9c7b192088a80168f6a168443381795 Mon Sep 17 00:00:00 2001 From: Tom <65157178+t0mbrn@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:53:49 +0200 Subject: [PATCH 11/12] Trip Settings Page Complete --- .../TripFinder/Models/TripRequest.swift | 7 ++ .../TripFinder/Views/TripSettingsView.swift | 99 ++++++++++++++++--- 2 files changed, 91 insertions(+), 15 deletions(-) diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift b/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift index d9652eb..ab42f41 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift @@ -25,6 +25,13 @@ enum IndividualTransportType: String, Hashable, Codable, CaseIterable { case walking = "100" case bike_and_ride = "101" case bike_takealong = "102" + case park_and_ride = "104" +} + +enum IndividualTransportSpeed: String, Hashable, Codable, CaseIterable { + case fast = "fast" + case normal = "normal" + case slow = "slow" } struct TripRequestJSON: Hashable, Codable { diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/TripSettingsView.swift b/Haltestellenmonitor1-DD/TripFinder/Views/TripSettingsView.swift index e8c34a5..61e7c91 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/TripSettingsView.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/TripSettingsView.swift @@ -7,25 +7,94 @@ import SwiftUI struct TripSettingsView: View { - @AppStorage("interchangeMethod") - private var interchangeMethod: IndividualTransportType = .walking + @AppStorage("trip_individualTransportType") + private var individualTransportType: IndividualTransportType = .walking + + @AppStorage("trip_showFare") + private var showFare: Bool = true + + @AppStorage("trip_showOneBefore") + private var showOneBefore: Bool = true + + @AppStorage("trip_numberOfTripsRequested") + private var numberOfTripsRequested: Int = 4 + + /// int proxy binding for number of trips requested + private var intProxyNTR: Binding { + Binding(get: { + return Double(numberOfTripsRequested) + }, set: { + numberOfTripsRequested = Int($0) + }) + } + + @AppStorage("trip_individualTransportSpeed") + private var indiviudalTransportSpeed: IndividualTransportSpeed = .normal + + @AppStorage("trip_useWheelchair") + private var useWheelchair: Bool = false + + @AppStorage("trip_noStairs") + private var noStairs: Bool = false var body: some View { Form { - Picker("Art der sekundĂ€ren Fortbewegung", selection: Binding( - get: { interchangeMethod }, - set: { interchangeMethod = $0 } - )) { - Label("Zu Fuß", systemImage: "figure.walk") - .tag(IndividualTransportType.walking) - - Label("Bike & Ride", systemImage: "figure.walk") - .tag(IndividualTransportType.bike_and_ride) - - Label("Fahrradmitnahme", systemImage: "bicycle") - .tag(IndividualTransportType.bike_takealong) + + Toggle("Fahrtkosten anzeigen", isOn: $showFare) + + Section(header: Text("Anzahl der Trips")) { + VStack { + Slider(value: intProxyNTR, in: 1.0...20.0, step: 1.0) { + Text("Anzahl der Fahrten: \(numberOfTripsRequested)") + } minimumValueLabel: { + Text("1") + } maximumValueLabel: { + Text("20") + } + Text("Anzahl Fahrten: \(numberOfTripsRequested)") + } + + Toggle("Vorrausgehende Fahrt anzeigen", isOn: $showOneBefore) + } + + Section(header: Text("SekundĂ€re Fortbewegung")) { + Picker("Art", selection: Binding( + get: { individualTransportType }, + set: { individualTransportType = $0 } + )) { + Label("Zu Fuß", systemImage: "figure.walk") + .tag(IndividualTransportType.walking) + + Label("Bike & Ride", systemImage: "figure.walk") + .tag(IndividualTransportType.bike_and_ride) + + Label("Fahrradmitnahme", systemImage: "bicycle") + .tag(IndividualTransportType.bike_takealong) + + Label("Park & Ride", systemImage: "car") + .tag(IndividualTransportType.park_and_ride) + } + + Picker("Geschwindigkeit", selection: Binding( + get: { indiviudalTransportSpeed }, + set: { indiviudalTransportSpeed = $0 } + )) { + Label("Langsam", systemImage: "tortoise") + .tag(IndividualTransportSpeed.slow) + + Label("Normal", systemImage: "figure.walk") + .tag(IndividualTransportSpeed.normal) + + Label("Schnell", systemImage: "hare") + .tag(IndividualTransportSpeed.fast) + } + + } + + Section(header: Text("MobilitĂ€tseinschrĂ€nkungen")) { + Toggle("Rollstuhl", isOn: $useWheelchair) + Toggle("Treppen vermeiden", isOn: $noStairs) } - .pickerStyle(.inline) } .navigationTitle("Trip Einstellungen") } From 5e7950a57ec16b7369d7bae41d270ddac3f35a6f Mon Sep 17 00:00:00 2001 From: Tom <65157178+t0mbrn@users.noreply.github.com> Date: Thu, 14 Aug 2025 16:12:56 +0200 Subject: [PATCH 12/12] Remove TripRequestAmount, Relocate Trip Form Reset Button --- .../Shared Models/Location.swift | 2 +- .../SingleTripView/Models/StopSequence.swift | 4 +- .../TripFinder/Models/TripRequest.swift | 58 ++++++++++++++++--- .../TripFinder/Views/ConnectionView.swift | 47 ++++++++++----- .../TripFinder/Views/TripSettingsView.swift | 27 +-------- 5 files changed, 86 insertions(+), 52 deletions(-) diff --git a/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/Location.swift b/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/Location.swift index a6a6798..c99bc20 100644 --- a/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/Location.swift +++ b/Haltestellenmonitor1-DD/DepartureMonitor/Shared Models/Location.swift @@ -12,7 +12,7 @@ struct Location: Hashable, Codable { var id: String? // var isGlobalId: Bool? - var name: String + var name: String? var disassembledName: String? var type: String var coord: [Coordinate]? diff --git a/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift b/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift index 0470fab..0b1f60d 100644 --- a/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift +++ b/Haltestellenmonitor1-DD/DepartureMonitor/SingleTripView/Models/StopSequence.swift @@ -117,8 +117,8 @@ struct StopSequenceItem: Hashable, Codable { } func getName() -> String { - let location = parent.parent?.name ?? parent.name - return "\(self.parent.disassembledName ?? self.parent.name)\(location == "Dresden" || location.isEmpty ? "" : ", \(location)")" + let location = parent.parent?.name ?? parent.name ?? "" + return "\(self.parent.disassembledName ?? self.parent.name ?? "")\(location == "Dresden" || location.isEmpty ? "" : ", \(location)")" } func getPlatform() -> String { diff --git a/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift b/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift index ab42f41..9d9180a 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Models/TripRequest.swift @@ -34,16 +34,31 @@ enum IndividualTransportSpeed: String, Hashable, Codable, CaseIterable { case slow = "slow" } +func calculateCycleSpeed(from speed: IndividualTransportSpeed) -> String { + switch speed { + case .fast: + return "30" + case .normal: + return "23" + case .slow: + return "15" + } +} + struct TripRequestJSON: Hashable, Codable { var itdTime: String var itdDate: String var origin: String var via: String? var destination: String - var individualTransport: IndividualTransportType + var individualTransportType: IndividualTransportType + var indiviualTransportSpeed: IndividualTransportSpeed var excludeTransports: TripStandardSettings? // could be MOTType var isarrivaltime: Bool? = false - var numberOfTrips: Int = 5 + var numberOfTrips: Int = 4 + var useWheelchair: Bool + var noStairs: Bool + var showOneBefore: Bool func createTripRequestString() -> String { // &coordOutputFormat=WGS84[dd.dddddd] @@ -51,7 +66,9 @@ struct TripRequestJSON: Hashable, Codable { if let via = via { requestString += "&type_via=any&name_via=\(via)" } - requestString += "&destination=\(destination)&individualTransport=\(individualTransport.rawValue)" + if !showOneBefore { + requestString += "&calcOneDirection=1" + } if let excludeTransports = excludeTransports { if !excludeTransports.mot.isEmpty { requestString += "&excludedMeans=checkbox" @@ -60,16 +77,43 @@ struct TripRequestJSON: Hashable, Codable { requestString += "&exclMOT\(transportType)" } } - if individualTransport != .walking { - requestString += "&itOptionsActive=1&trITMOT=\(individualTransport.rawValue)" + if individualTransportType != .walking { + requestString += "&itOptionsActive=1&trITMOT=\(individualTransportType.rawValue)" + + switch individualTransportType { + case .bike_takealong: + requestString += "&calcBicycleMacro=on&std3_bikeSettings=takealong&cycleSpeed=\(calculateCycleSpeed(from: indiviualTransportSpeed))&maxTimeBicycle=10" + case .bike_and_ride: + requestString += "&calcBicycleMacro=on&brRoutingMacro=true&cycleSpeed=\(calculateCycleSpeed(from: indiviualTransportSpeed))&maxTimeBicycle=10" + case .park_and_ride: + requestString += "&prRoutingMacro=true" + default: + break + } + + if indiviualTransportSpeed != .normal { + requestString += "&ptOptionsActive=1&changeSpeed=\(indiviualTransportSpeed.rawValue)" + } + } else { + if indiviualTransportSpeed != .normal { + requestString += "&itOptionsActive=1&ptOptionsActive=1&changeSpeed=\(indiviualTransportSpeed.rawValue)" + } } if isarrivaltime ?? false { requestString += "&itdTripDateTimeDepArr=arr" } - // todo: change speed - + if useWheelchair || noStairs { + requestString += "&imparedOptionsActive=1" + if useWheelchair { + requestString += "&wheelchair=1" + } + if noStairs { + requestString += "&noSolidStairs=1" + } + } + print(requestString) return requestString } } diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift b/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift index 16c332f..7ece1a5 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/ConnectionView.swift @@ -30,6 +30,24 @@ struct ConnectionView: View { @StateObject var favoriteConnections = FavoriteConnection() @State private var minDate = Date().addingTimeInterval(TimeInterval(-20.0 * 60.0)) // 20 minutes in past + @AppStorage("trip_individualTransportType") + private var individualTransportType: IndividualTransportType = .walking + + @AppStorage("trip_showFare") + private var showFare: Bool = true + + @AppStorage("trip_showOneBefore") + private var showOneBefore: Bool = true + + @AppStorage("trip_individualTransportSpeed") + private var indiviudalTransportSpeed: IndividualTransportSpeed = .normal + + @AppStorage("trip_useWheelchair") + private var useWheelchair: Bool = false + + @AppStorage("trip_noStairs") + private var noStairs: Bool = false + var body: some View { NavigationStack(path: $stopManager.presentedStops) { VStack(spacing: 5) { @@ -52,23 +70,20 @@ struct ConnectionView: View { ToolbarItem(placement: ToolbarItemPlacement.cancellationAction) { if isLoading { ProgressView() - } - } - ToolbarItem(placement: ToolbarItemPlacement.confirmationAction) { - Button { - if isLoading { - return + } else { + Button { + filter.startStop = nil + filter.endStop = nil + trip = nil + requestData = nil + numbernext = 0 + dateTime = Date.now + } label: { + Text(Image(systemName: "arrow.counterclockwise")) } - filter.startStop = nil - filter.endStop = nil - trip = nil - requestData = nil - numbernext = 0 - dateTime = Date.now - } label: { - Text(Image(systemName: "arrow.counterclockwise")) } } + ToolbarItem(placement: ToolbarItemPlacement.confirmationAction) { NavigationLink { TripSettingsView() @@ -346,7 +361,7 @@ struct ConnectionView: View { let startStr = await startStrPromise let endStr = await endStrPromise - requestData = TripRequestJSON(itdTime: getTimeStampURL(date: dateTime), itdDate: getDateStampURL(date: dateTime), origin: startStr, destination: endStr, individualTransport: .walking, excludeTransports: standardSettings, isarrivaltime: isArrivalTime) + requestData = TripRequestJSON(itdTime: getTimeStampURL(date: dateTime), itdDate: getDateStampURL(date: dateTime), origin: startStr, destination: endStr, individualTransportType: individualTransportType, indiviualTransportSpeed: indiviudalTransportSpeed, excludeTransports: standardSettings, isarrivaltime: isArrivalTime, useWheelchair: useWheelchair, noStairs: noStairs, showOneBefore: showOneBefore) } func getTripData(isNext: Bool = false) async { @@ -359,7 +374,7 @@ struct ConnectionView: View { return } - var url = URL(string: "https://efa.vvo-online.de/std3/trias/XML_TRIP_REQUEST2")! + let url = URL(string: "https://efa.vvo-online.de/std3/trias/XML_TRIP_REQUEST2")! // if isNext { // url = URL(string: "https://webapi.vvo-online.de/tr/prevnext")! // } diff --git a/Haltestellenmonitor1-DD/TripFinder/Views/TripSettingsView.swift b/Haltestellenmonitor1-DD/TripFinder/Views/TripSettingsView.swift index 61e7c91..78b9858 100644 --- a/Haltestellenmonitor1-DD/TripFinder/Views/TripSettingsView.swift +++ b/Haltestellenmonitor1-DD/TripFinder/Views/TripSettingsView.swift @@ -16,18 +16,6 @@ struct TripSettingsView: View { @AppStorage("trip_showOneBefore") private var showOneBefore: Bool = true - @AppStorage("trip_numberOfTripsRequested") - private var numberOfTripsRequested: Int = 4 - - /// int proxy binding for number of trips requested - private var intProxyNTR: Binding { - Binding(get: { - return Double(numberOfTripsRequested) - }, set: { - numberOfTripsRequested = Int($0) - }) - } - @AppStorage("trip_individualTransportSpeed") private var indiviudalTransportSpeed: IndividualTransportSpeed = .normal @@ -42,20 +30,7 @@ struct TripSettingsView: View { Toggle("Fahrtkosten anzeigen", isOn: $showFare) - Section(header: Text("Anzahl der Trips")) { - VStack { - Slider(value: intProxyNTR, in: 1.0...20.0, step: 1.0) { - Text("Anzahl der Fahrten: \(numberOfTripsRequested)") - } minimumValueLabel: { - Text("1") - } maximumValueLabel: { - Text("20") - } - Text("Anzahl Fahrten: \(numberOfTripsRequested)") - } - - Toggle("Vorrausgehende Fahrt anzeigen", isOn: $showOneBefore) - } + Toggle("Vorrausgehende Fahrt anzeigen", isOn: $showOneBefore) Section(header: Text("SekundĂ€re Fortbewegung")) { Picker("Art", selection: Binding(