diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 81372257bfb43a079f6c18d4889e850871f7fabd..6c17be8fe6e49db6f84c6386c27d07e39510fdbb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,6 +26,7 @@ tests: - apt install -y libgl1-mesa-glx xvfb - pip install tox - apt install -y graphviz xdg-utils + - apt install -y libcairo2-dev libjpeg-dev libgif-dev - xvfb-run tox -v --recreate build_and_deploy_docs: @@ -39,6 +40,7 @@ build_and_deploy_docs: - pip install awscli - apt update - apt install -y graphviz libgl1-mesa-glx xvfb xdg-utils + - apt install -y libcairo2-dev libjpeg-dev libgif-dev script: - pip install -r requirements_dev.txt - python setup.py install diff --git a/examples/play_model.py b/examples/play_model.py index 34c6aadfeefd44771fd335e2957e1fbd0b2f740f..08dadeb1d3d1e64b012c00e99594bcefd2905d1c 100644 --- a/examples/play_model.py +++ b/examples/play_model.py @@ -63,7 +63,8 @@ class Player(object): # Real Agent # action = self.agent.act(np.array(self.obs[handle]), eps=self.eps) # Random actions - action = random.randint(0, 3) + # action = random.randint(0, 3) + action = np.random.choice([0, 1, 2, 3], 1, p=[0.2, 0.1, 0.6, 0.1])[0] # Numpy version uses single random sequence # action = np.random.randint(0, 4, size=1) self.action_prob[action] += 1 @@ -106,7 +107,7 @@ def max_lt(seq, val): return None -def main(render=True, delay=0.0, n_trials=3, n_steps=50, sGL="QT"): +def main(render=True, delay=0.0, n_trials=3, n_steps=50, sGL="PILSVG"): random.seed(1) np.random.seed(1) @@ -116,8 +117,7 @@ def main(render=True, delay=0.0, n_trials=3, n_steps=50, sGL="QT"): number_of_agents=5) if render: - # env_renderer = RenderTool(env, gl="QTSVG") - env_renderer = RenderTool(env, gl=sGL) + env_renderer = RenderTool(env, gl=sGL, show=True) oPlayer = Player(env) @@ -159,7 +159,7 @@ def main_old(render=True, delay=0.0): number_of_agents=5) if render: - env_renderer = RenderTool(env, gl="QTSVG") + env_renderer = RenderTool(env, gl="PIL") # env_renderer = RenderTool(env, gl="QT") n_trials = 9999 @@ -277,4 +277,4 @@ def main_old(render=True, delay=0.0): if __name__ == "__main__": - main(render=True, delay=0) + main(render=True, delay=0.5) diff --git a/examples/tkplay.py b/examples/tkplay.py index 95842e3b430000169093d27c3c9de02ebe037de9..05078fadc225602dccc30bd5159b50a1ac7a8713 100644 --- a/examples/tkplay.py +++ b/examples/tkplay.py @@ -9,7 +9,7 @@ from flatland.envs.rail_env import RailEnv from flatland.utils.rendertools import RenderTool -def tkmain(n_trials=2): +def tkmain(n_trials=2, n_steps=50): # This creates the main window of an application window = tk.Tk() window.title("Join") @@ -24,7 +24,6 @@ def tkmain(n_trials=2): oPlayer = Player(env) n_trials = 1 - n_steps = 20 delay = 0 for trials in range(1, n_trials + 1): diff --git a/flatland/envs/agent_utils.py b/flatland/envs/agent_utils.py index a5f18f3f723c703339092eb8875010d2e82eac63..52cdb1029d59c9e47188cfe29208903b5e8eeac8 100644 --- a/flatland/envs/agent_utils.py +++ b/flatland/envs/agent_utils.py @@ -6,6 +6,11 @@ import numpy as np @attrs class EnvDescription(object): + """ EnvDescription - This is a description of a random env, + based around the rail_generator and stats like size and n_agents. + It mirrors the parameters given to the RailEnv constructor. + Not currently used. + """ n_agents = attrib() height = attrib() width = attrib() @@ -15,7 +20,7 @@ class EnvDescription(object): @attrs class EnvAgentStatic(object): - """ TODO: EnvAgentStatic - To store initial position, direction and target. + """ EnvAgentStatic - Stores initial position, direction and target. This is like static data for the environment - it's where an agent starts, rather than where it is at the moment. The target should also be stored here. diff --git a/flatland/utils/editor.py b/flatland/utils/editor.py index 680695ffd8440ceb349309da9f341cf2873ac28b..021a708e34c919dc8c2ee85991e1e351022da8f6 100644 --- a/flatland/utils/editor.py +++ b/flatland/utils/editor.py @@ -29,11 +29,15 @@ import jpy_canvas class EditorMVC(object): - def __init__(self, env=None, sGL="MPL"): + """ EditorMVC - a class to encompass and assemble the Jupyter Editor Model-View-Controller. + """ + def __init__(self, env=None, sGL="PIL"): + """ Create an Editor MVC assembly around a railenv, or create one if None. + """ if env is None: env = RailEnv(width=10, height=10, - rail_generator=random_rail_generator(), + rail_generator=empty_rail_generator(), number_of_agents=0, obs_builder_object=TreeObsForRailEnv(max_depth=2)) @@ -47,6 +51,8 @@ class EditorMVC(object): class View(object): + """ The Jupyter Editor View - creates and holds the widgets comprising the Editor. + """ def __init__(self, editor, sGL="MPL"): self.editor = self.model = editor self.sGL = sGL diff --git a/flatland/utils/graphics_layer.py b/flatland/utils/graphics_layer.py index c93762d58288b32e5e1d5db31a63678d65db1fcb..a1de818fe57ed2f91a3b025f652234c578dc11e8 100644 --- a/flatland/utils/graphics_layer.py +++ b/flatland/utils/graphics_layer.py @@ -7,6 +7,9 @@ class GraphicsLayer(object): def __init__(self): pass + def open_window(self): + pass + def is_raster(self): return True diff --git a/flatland/utils/graphics_pil.py b/flatland/utils/graphics_pil.py index b66c8dc55f38c321d038306f933de66493a6e6b3..294251e4c1f9e138cdd3174e642eab6bd9c1f8c3 100644 --- a/flatland/utils/graphics_pil.py +++ b/flatland/utils/graphics_pil.py @@ -1,8 +1,14 @@ - from flatland.utils.graphics_layer import GraphicsLayer -from PIL import Image, ImageDraw # , ImageFont +from PIL import Image, ImageDraw, ImageTk # , ImageFont +import tkinter as tk from numpy import array import numpy as np +# from flatland.utils.svg import Track, Zug +import time +import io +from cairosvg import svg2png +from flatland.core.transitions import RailEnvTransitions +# from copy import copy class PILGL(GraphicsLayer): @@ -10,6 +16,7 @@ class PILGL(GraphicsLayer): self.nPixCell = 60 self.yxBase = (0, 0) self.linewidth = 4 + self.nAgentColors = 1 # overridden in loadAgent # self.tile_size = self.nPixCell self.width = width @@ -26,7 +33,11 @@ class PILGL(GraphicsLayer): self.tColRail = (0, 0, 0) # black rails self.tColGrid = (230,) * 3 # light grey for grid - self.beginFrame() + self.window_open = False + # self.bShow = show + self.firstFrame = True + self.create_layers() + # self.beginFrame() def plot(self, gX, gY, color=None, linewidth=3, layer=0, opacity=255, **kwargs): color = self.adaptColor(color) @@ -45,6 +56,27 @@ class PILGL(GraphicsLayer): for x, y in gPoints: self.draws[layer].rectangle([(x - r, y - r), (x + r, y + r)], fill=color, outline=color) + def drawImageXY(self, pil_img, xyPixLeftTop, layer=0): + # self.layers[layer].alpha_composite(pil_img, offset=xyPixLeftTop) + if (pil_img.mode == "RGBA"): + pil_mask = pil_img + else: + pil_mask = None + # print(pil_img, pil_img.mode, xyPixLeftTop, layer) + + self.layers[layer].paste(pil_img, xyPixLeftTop, pil_mask) + + def drawImageRC(self, pil_img, rcTopLeft, layer=0): + xyPixLeftTop = tuple((array(rcTopLeft) * self.nPixCell)[[1, 0]]) + self.drawImageXY(pil_img, xyPixLeftTop, layer=layer) + + def open_window(self): + assert self.window_open is False, "Window is already open!" + self.window = tk.Tk() + self.window.title("Flatland") + self.window.configure(background='grey') + self.window_open = True + def text(self, *args, **kwargs): pass @@ -55,12 +87,28 @@ class PILGL(GraphicsLayer): pass def beginFrame(self): - self.create_layer(0) - self.create_layer(1) + # Create a new agent layer + self.create_layer(iLayer=1, clear=True) def show(self, block=False): - pass - # plt.show(block=block) + img = self.alpha_composite_layers() + + if not self.window_open: + self.open_window() + + tkimg = ImageTk.PhotoImage(img) + + if self.firstFrame: + # Do TK actions for a new panel (not sure what they really do) + self.panel = tk.Label(self.window, image=tkimg) + self.panel.pack(side="bottom", fill="both", expand="yes") + else: + # update the image in situ + self.panel.configure(image=tkimg) + self.panel.image = tkimg + + self.window.update() + self.firstFrame = False def pause(self, seconds=0.00001): pass @@ -83,7 +131,8 @@ class PILGL(GraphicsLayer): img = Image.new("RGBA", (self.widthPx, self.heightPx), (255, 255, 255, opacity)) return img - def create_layer(self, iLayer=0): + def create_layer(self, iLayer=0, clear=True): + # If we don't have the layers already, create them if len(self.layers) <= iLayer: for i in range(len(self.layers), iLayer+1): if i == 0: @@ -94,7 +143,216 @@ class PILGL(GraphicsLayer): self.layers.append(img) self.draws.append(ImageDraw.Draw(img)) else: - opacity = 0 if iLayer > 0 else 255 - self.layers[iLayer] = img = self.create_image(opacity) - self.draws[iLayer] = ImageDraw.Draw(img) + # We do already have this iLayer. Clear it if requested. + if clear: + opacity = 0 if iLayer > 0 else 255 + self.layers[iLayer] = img = self.create_image(opacity) + # We also need to maintain a Draw object for each layer + self.draws[iLayer] = ImageDraw.Draw(img) + + def create_layers(self, clear=True): + self.create_layer(0, clear=clear) + self.create_layer(1, clear=clear) + + +class PILSVG(PILGL): + def __init__(self, width, height): + print(self, type(self)) + oSuper = super() + print(oSuper, type(oSuper)) + oSuper.__init__(width, height) + + # self.track = self.track = Track() + # self.lwTrack = [] + # self.zug = Zug() + + self.lwAgents = [] + self.agents_prev = [] + + self.loadRailSVGs() + self.loadAgentSVGs() + + def is_raster(self): + return False + + def processEvents(self): + # self.app.processEvents() + time.sleep(0.001) + + def clear_rails(self): + print("Clear rails") + self.create_layers() + self.clear_agents() + + def clear_agents(self): + # print("Clear Agents: ", len(self.lwAgents)) + for wAgent in self.lwAgents: + self.layout.removeWidget(wAgent) + self.lwAgents = [] + self.agents_prev = [] + + def pilFromSvgFile(self, sfPath): + with open(sfPath, "r") as fIn: + bytesPNG = svg2png(file_obj=fIn, output_height=self.nPixCell, output_width=self.nPixCell) + + with io.BytesIO(bytesPNG) as fIn: + pil_img = Image.open(fIn) + pil_img.load() + # print(pil_img.mode) + + return pil_img + + def pilFromSvgBytes(self, bytesSVG): + bytesPNG = svg2png(bytesSVG, output_height=self.nPixCell, output_width=self.nPixCell) + with io.BytesIO(bytesPNG) as fIn: + pil_img = Image.open(fIn) + return pil_img + + def loadRailSVGs(self): + """ Load the rail SVG images, apply rotations, and store as PIL images. + """ + dFiles = { + "": "Background_#91D1DD.svg", + "WE": "Gleis_Deadend.svg", + "WW EE NN SS": "Gleis_Diamond_Crossing.svg", + "WW EE": "Gleis_horizontal.svg", + "EN SW": "Gleis_Kurve_oben_links.svg", + "WN SE": "Gleis_Kurve_oben_rechts.svg", + "ES NW": "Gleis_Kurve_unten_links.svg", + "NE WS": "Gleis_Kurve_unten_rechts.svg", + "NN SS": "Gleis_vertikal.svg", + "NN SS EE WW ES NW SE WN": "Weiche_Double_Slip.svg", + "EE WW EN SW": "Weiche_horizontal_oben_links.svg", + "EE WW SE WN": "Weiche_horizontal_oben_rechts.svg", + "EE WW ES NW": "Weiche_horizontal_unten_links.svg", + "EE WW NE WS": "Weiche_horizontal_unten_rechts.svg", + "NN SS EE WW NW ES": "Weiche_Single_Slip.svg", + "NE NW ES WS": "Weiche_Symetrical.svg", + "NN SS EN SW": "Weiche_vertikal_oben_links.svg", + "NN SS SE WN": "Weiche_vertikal_oben_rechts.svg", + "NN SS NW ES": "Weiche_vertikal_unten_links.svg", + "NN SS NE WS": "Weiche_vertikal_unten_rechts.svg"} + + self.dPil = {} + + transitions = RailEnvTransitions() + + lDirs = list("NESW") + + # svgBG = SVG("./svg/Background_#91D1DD.svg") + + for sTrans, sFile in dFiles.items(): + sPathSvg = "./svg/" + sFile + + # Translate the ascii transition descption in the format "NE WS" to the + # binary list of transitions as per RailEnv - NESW (in) x NESW (out) + lTrans16 = ["0"] * 16 + for sTran in sTrans.split(" "): + if len(sTran) == 2: + iDirIn = lDirs.index(sTran[0]) + iDirOut = lDirs.index(sTran[1]) + iTrans = 4 * iDirIn + iDirOut + lTrans16[iTrans] = "1" + sTrans16 = "".join(lTrans16) + binTrans = int(sTrans16, 2) + print(sTrans, sTrans16, sFile) + + # Merge the transition svg image with the background colour. + # This is a shortcut / hack and will need re-working. + # if binTrans > 0: + # svg = svg.merge(svgBG) + + pilRail = self.pilFromSvgFile(sPathSvg) + self.dPil[binTrans] = pilRail + + # Rotate both the transition binary and the image and save in the dict + for nRot in [90, 180, 270]: + binTrans2 = transitions.rotate_transition(binTrans, nRot) + + # PIL rotates anticlockwise for positive theta + pilRail2 = pilRail.rotate(-nRot) + self.dPil[binTrans2] = pilRail2 + + def setRailAt(self, row, col, binTrans): + if binTrans in self.dPil: + pilTrack = self.dPil[binTrans] + self.drawImageRC(pilTrack, (row, col)) + else: + print("Illegal rail:", row, col, format(binTrans, "#018b")[2:]) + + def rgb_s2i(self, sRGB): + """ convert a hex RGB string like 0091ea to 3-tuple of ints """ + return tuple(int(sRGB[iRGB * 2:iRGB * 2 + 2], 16) for iRGB in [0, 1, 2]) + + def loadAgentSVGs(self): + + # Seed initial train/zug files indexed by tuple(iDirIn, iDirOut): + dDirsFile = { + (0, 0): "svg/Zug_Gleis_#0091ea.svg", + (1, 2): "svg/Zug_1_Weiche_#0091ea.svg", + (0, 3): "svg/Zug_2_Weiche_#0091ea.svg" + } + + sColors = "d50000#c51162#aa00ff#6200ea#304ffe#2962ff#0091ea#00b8d4#00bfa5#00c853" + \ + "#64dd17#aeea00#ffd600#ffab00#ff6d00#ff3d00#5d4037#455a64" + lColors = sColors.split("#") + self.nAgentColors = len(lColors) + + # "paint" color of the train images we load + a_base_color = self.rgb_s2i("0091ea") + + self.dPilZug = {} + + for tDirs, sPathSvg in dDirsFile.items(): + iDirIn, iDirOut = tDirs + + pilZug = self.pilFromSvgFile(sPathSvg) + + # Rotate both the directions and the image and save in the dict + for iDirRot in range(4): + nDegRot = iDirRot * 90 + iDirIn2 = (iDirIn + iDirRot) % 4 + iDirOut2 = (iDirOut + iDirRot) % 4 + + # PIL rotates anticlockwise for positive theta + pilZug2 = pilZug.rotate(-nDegRot) + rgbaZug2 = array(pilZug2) + + for iColor, sColor in enumerate(lColors): + tnNewColor = self.rgb_s2i(sColor) + xy_color_mask = np.all(rgbaZug2[:, :, 0:3] - a_base_color == 0, axis=2) + rgbaZug3 = np.copy(rgbaZug2) + rgbaZug3[xy_color_mask, 0:3] = tnNewColor + self.dPilZug[(iDirIn2, iDirOut2, iColor)] = Image.fromarray(rgbaZug3) + + def setAgentAt(self, iAgent, row, col, iDirIn, iDirOut, color=None): + delta_dir = (iDirOut - iDirIn) % 4 + iColor = iAgent % self.nAgentColors + # when flipping direction at a dead end, use the "iDirOut" direction. + if delta_dir == 2: + iDirIn = iDirOut + pilZug = self.dPilZug[(iDirIn % 4, iDirOut % 4, iColor)] + self.drawImageRC(pilZug, (row, col), layer=1) + + +def main2(): + gl = PILSVG(10, 10) + for i in range(10): + gl.beginFrame() + gl.plot([3 + i, 4], [-4 - i, -5], color="r") + gl.endFrame() + time.sleep(1) + + +def main(): + gl = PILSVG(width=10, height=10) + + for i in range(1000): + gl.processEvents() + time.sleep(0.1) + time.sleep(1) + + +if __name__ == "__main__": + main() diff --git a/flatland/utils/render_qt.py b/flatland/utils/render_qt.py index b00ebe450c677a485c43ef98c1327f9319fea73c..a41f5a26ca31c70ff8f7759ad7c45043bcd2c2d3 100644 --- a/flatland/utils/render_qt.py +++ b/flatland/utils/render_qt.py @@ -135,6 +135,7 @@ class QTSVG(GraphicsLayer): self.agents_prev = [] # svgWidget = None +<<<<<<< HEAD # iArt = 0 # iCol = 0 @@ -154,6 +155,8 @@ class QTSVG(GraphicsLayer): # svgWidget2.renderer().load(bySVG) # # self.layout.addWidget(svgWidget2, 0, 0) +======= +>>>>>>> 38-jw-SBB-graphics def is_raster(self): return False diff --git a/flatland/utils/rendertools.py b/flatland/utils/rendertools.py index c3ba40f7e21083bdc04a989d7477f6c154a07b85..b34467bfd4365a93063163eef8bec2d9612fa5ad 100644 --- a/flatland/utils/rendertools.py +++ b/flatland/utils/rendertools.py @@ -3,27 +3,26 @@ from collections import deque # import xarray as xr import matplotlib.pyplot as plt -import numpy as np -from numpy import array -from recordtype import recordtype - -from flatland.utils.graphics_layer import GraphicsLayer -from flatland.utils.graphics_pil import PILGL from flatland.utils.render_qt import QTGL, QTSVG - +from flatland.utils.graphics_pil import PILGL, PILSVG +from flatland.utils.graphics_layer import GraphicsLayer +from recordtype import recordtype +from numpy import array +import numpy as np # TODO: suggested renaming to RailEnvRenderTool, as it will only work with RailEnv! class MPLGL(GraphicsLayer): - def __init__(self, width, height, show=False): + def __init__(self, width, height): self.width = width self.height = height self.yxBase = array([6, 21]) # pixel offset self.nPixCell = 700 / width self.img = None - if show: - plt.figure(figsize=(10, 10)) + + def open_window(self): + plt.figure(figsize=(10, 10)) def plot(self, *args, **kwargs): plt.plot(*args, **kwargs) @@ -127,11 +126,13 @@ class RenderTool(object): # self.gl = MPLGL() if gl == "MPL": - self.gl = MPLGL(env.width, env.height, show=show) + self.gl = MPLGL(env.width, env.height) elif gl == "QT": self.gl = QTGL(env.width, env.height) elif gl == "PIL": self.gl = PILGL(env.width, env.height) + elif gl == "PILSVG": + self.gl = PILSVG(env.width, env.height) elif gl == "QTSVG": self.gl = QTSVG(env.width, env.height) @@ -620,11 +621,11 @@ class RenderTool(object): """ if not self.gl.is_raster(): - self.renderEnv2(show, curves, spacing, - arrows, agents, renderobs, sRailColor, - frames, iEpisode, iStep, - iSelectedAgent, action_dict) - + self.renderEnv2(show=show, curves=curves, spacing=spacing, + arrows=arrows, agents=agents, show_observations=show_observations, + sRailColor=sRailColor, + frames=frames, iEpisode=iEpisode, iStep=iStep, + iSelectedAgent=iSelectedAgent, action_dict=action_dict) return if type(self.gl) in (QTGL, PILGL): @@ -684,6 +685,9 @@ class RenderTool(object): self.gl.show(block=False) # self.gl.endFrame() + if show and type(self.gl) is PILGL: + self.gl.show() + self.gl.pause(0.00001) return @@ -727,9 +731,11 @@ class RenderTool(object): gP0 = array([gX1, gY1, gZ1]) - def renderEnv2(self, show=False, curves=True, spacing=False, arrows=False, agents=True, renderobs=True, - sRailColor="gray", frames=False, iEpisode=None, iStep=None, iSelectedAgent=None, - action_dict=dict()): + def renderEnv2( + self, show=False, curves=True, spacing=False, arrows=False, agents=True, + show_observations=True, sRailColor="gray", + frames=False, iEpisode=None, iStep=None, iSelectedAgent=None, + action_dict=dict()): """ Draw the environment using matplotlib. Draw into the figure if provided. @@ -740,6 +746,8 @@ class RenderTool(object): env = self.env + self.gl.beginFrame() + if self.new_rail: self.new_rail = False self.gl.clear_rails() @@ -765,13 +773,23 @@ class RenderTool(object): iAction = action_dict[iAgent] new_direction, action_isValid = self.env.check_action(agent, iAction) - if action_isValid: + # ** TODO *** + # why should we only update if the action is valid ? + if True: + if action_isValid: + self.gl.setAgentAt(iAgent, *agent.position, agent.direction, new_direction, color=oColor) + else: + # pass + print("invalid action - agent ", iAgent, " bend ", agent.direction, new_direction) + self.gl.setAgentAt(iAgent, *agent.position, agent.direction, new_direction) + else: self.gl.setAgentAt(iAgent, *agent.position, agent.direction, new_direction, color=oColor) else: print("invalid action - agent ", iAgent, " bend ", agent.direction, new_direction) # self.gl.setAgentAt(iAgent, *agent.position, agent.direction, new_direction) - self.gl.show() + if show: + self.gl.show() for i in range(3): self.gl.processEvents() diff --git a/flatland/utils/svg.py b/flatland/utils/svg.py index fb8b987cae83f4b8a3696e0e9496659045709c17..89730af2c41a442e65d8c5976f24b1ea84468330 100644 --- a/flatland/utils/svg.py +++ b/flatland/utils/svg.py @@ -104,6 +104,13 @@ class Zug(object): class Track(object): + """ Class to load and hold SVG track images. + Creates a mapping between + - cell entry and exit directions (ie transitions), and + - specific images provided by the SBB graphic artist. + The directions and images are also rotated by 90, 180 & 270 degrees. + (There is some redundancy in this process, given the images provided) + """ def __init__(self): dFiles = { "": "Background_#9CCB89.svg", @@ -138,6 +145,8 @@ class Track(object): for sTrans, sFile in dFiles.items(): svg = SVG("./svg/" + sFile) + # Translate the ascii transition descption in the format "NE WS" to the + # binary list of transitions as per RailEnv - NESW (in) x NESW (out) lTrans16 = ["0"] * 16 for sTran in sTrans.split(" "): if len(sTran) == 2: @@ -149,11 +158,14 @@ class Track(object): binTrans = int(sTrans16, 2) print(sTrans, sTrans16, sFile) + # Merge the transition svg image with the background colour. + # This is a shortcut / hack and will need re-working. if binTrans > 0: svg = svg.merge(svgBG) self.dSvg[binTrans] = svg + # Rotate both the transition binary and the image and save in the dict for nRot in [90, 180, 270]: binTrans2 = transitions.rotate_transition(binTrans, nRot) svg2 = svg.copy() diff --git a/images/basic-env.npz b/images/basic-env.npz index 8ffaf023e1116b0c92702212ddb04c71b82f0655..e645113154b9e953575a12dcbadf4f9f3195b4ad 100644 Binary files a/images/basic-env.npz and b/images/basic-env.npz differ diff --git a/requirements_dev.txt b/requirements_dev.txt index 67b2a0e632283c89d07d778f935f0328559ffb8a..0bc1c76c25c5fc43a1f43ecaf484d23931f5bf7c 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -20,6 +20,8 @@ xarray==0.11.3 matplotlib==3.0.2 PyQt5==5.12 Pillow==5.4.1 +CairoSVG==2.3.1 +pycairo==1.18.1 msgpack==0.6.1 svgutils==0.3.1 diff --git a/svg/Bahnhof_#d50000_Deadend_links.svg b/svg/Bahnhof_#d50000_Deadend_links.svg new file mode 100644 index 0000000000000000000000000000000000000000..949b95f59f7aa74bb2a47cc45854b2fbf03b6bc5 --- /dev/null +++ b/svg/Bahnhof_#d50000_Deadend_links.svg @@ -0,0 +1,269 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 240 240" style="enable-background:new 0 0 240 240;" xml:space="preserve"> +<style type="text/css"> + .st0{display:none;} + .st1{display:inline;fill:none;} + .st2{fill:#D50000;} + .st3{fill:none;} + .st4{fill:#858B8A;} + .st5{fill:#E20613;} + .st6{fill:#ECECEC;} + .st7{fill:#D9D9D9;} + .st8{fill:#585858;} + .st9{fill:#FFFFFF;} + .st10{fill:#1D1D1B;} + .st11{fill:#9EA5A3;} + .st12{fill:#978679;} + .st13{fill:#3D3D3D;} +</style> +<g class="st0"> + <rect class="st1" width="240" height="240"/> +</g> +<g> + <g> + <polygon class="st2" points="123.31,56.74 123.31,50.78 123.31,45.54 87.08,45.54 72.79,45.54 72.79,56.74 48.39,56.74 + 48.39,89.5 72.79,89.5 87.08,89.5 98.25,89.5 123.31,89.5 147.7,89.5 147.7,56.74 "/> + <polygon class="st2" points="126.51,42.94 98.17,25.74 70.3,42.93 70.3,44.66 126.51,44.66 "/> + </g> + <g> + <polygon class="st3" points="70.3,42.93 70.3,44.66 126.51,44.66 126.51,42.94 98.17,25.74 "/> + <path class="st4" d="M98.16,22.96L68.67,41.15v5.91h59.46v-5.91L98.16,22.96z M126.51,44.66H70.3v-1.73l27.87-17.19l28.34,17.2 + V44.66z"/> + </g> + <polygon class="st5" points="98.44,19.35 105.82,17.62 105.82,11.99 98.44,13.73 "/> + <rect x="97.68" y="13.72" class="st4" width="0.75" height="11.5"/> + <rect x="47.12" y="52.82" class="st4" width="101.86" height="3.92"/> + <rect x="47.12" y="89.5" class="st4" width="101.86" height="2"/> + <g> + <rect x="91.11" y="52.5" class="st6" width="13.82" height="10.5"/> + <polygon class="st7" points="104.93,62.99 94.03,62.99 99.48,52.5 104.93,52.5 "/> + <rect x="91.11" y="62.99" class="st8" width="13.82" height="0.69"/> + </g> + <rect x="76.12" y="52.84" class="st6" width="6.79" height="10.5"/> + <polygon class="st7" points="82.9,63.34 77.55,63.34 80.23,52.84 82.9,52.84 "/> + <rect x="76.12" y="63.34" class="st8" width="6.79" height="0.69"/> + <rect x="113.19" y="52.84" class="st6" width="6.79" height="10.5"/> + <polygon class="st7" points="119.98,63.34 114.63,63.34 117.3,52.84 119.98,52.84 "/> + <rect x="113.19" y="63.34" class="st8" width="6.79" height="0.69"/> + <rect x="76.12" y="68.26" class="st6" width="6.79" height="10.5"/> + <polygon class="st7" points="82.9,78.76 77.55,78.76 80.23,68.26 82.9,68.26 "/> + <rect x="76.12" y="78.76" class="st8" width="6.79" height="0.69"/> + <rect x="113.19" y="68.26" class="st6" width="6.79" height="10.5"/> + <polygon class="st7" points="119.98,78.76 114.63,78.76 117.3,68.26 119.98,68.26 "/> + <rect x="113.19" y="78.76" class="st8" width="6.79" height="0.69"/> + <g> + <g> + <rect x="90.42" y="73.93" class="st6" width="15.06" height="14.59"/> + <polygon class="st7" points="105.48,88.52 93.61,88.52 99.55,73.93 105.48,73.93 "/> + </g> + <rect x="90.42" y="88.52" class="st8" width="15.06" height="0.95"/> + <rect x="90.42" y="73.12" class="st8" width="15.06" height="0.81"/> + + <rect x="97.45" y="81.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 186.9261 -24.334)" class="st8" width="16.35" height="0.3"/> + + <rect x="82.12" y="81.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 171.593 -9.0009)" class="st8" width="16.35" height="0.3"/> + + <rect x="89.92" y="81.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 179.3965 -16.8044)" class="st8" width="16.35" height="0.3"/> + <g> + <rect x="96.29" y="81.62" class="st8" width="0.93" height="0.55"/> + <rect x="98.98" y="81.62" class="st8" width="0.93" height="0.55"/> + </g> + </g> + <rect x="127.03" y="84.91" class="st8" width="6.79" height="0.69"/> + <rect x="62.38" y="58.99" class="st6" width="6.79" height="10.5"/> + <polygon class="st7" points="69.16,69.49 63.81,69.49 66.49,58.99 69.16,58.99 "/> + <rect x="62.38" y="69.49" class="st8" width="6.79" height="0.69"/> + <rect x="62.38" y="74.41" class="st6" width="6.79" height="10.5"/> + <polygon class="st7" points="69.16,84.91 63.81,84.91 66.49,74.41 69.16,74.41 "/> + <rect x="62.38" y="84.91" class="st8" width="6.79" height="0.69"/> + <rect x="52.62" y="58.99" class="st6" width="6.79" height="10.5"/> + <polygon class="st7" points="59.41,69.49 54.06,69.49 56.74,58.99 59.41,58.99 "/> + <rect x="52.62" y="69.49" class="st8" width="6.79" height="0.69"/> + <rect x="52.62" y="74.41" class="st6" width="6.79" height="10.5"/> + <polygon class="st7" points="59.41,84.91 54.06,84.91 56.74,74.41 59.41,74.41 "/> + <rect x="52.62" y="84.91" class="st8" width="6.79" height="0.69"/> + <rect x="136.78" y="58.99" class="st6" width="6.79" height="10.5"/> + <polygon class="st7" points="143.57,69.49 138.22,69.49 140.89,58.99 143.57,58.99 "/> + <rect x="136.78" y="69.49" class="st8" width="6.79" height="0.69"/> + <rect x="136.78" y="74.41" class="st6" width="6.79" height="10.5"/> + <polygon class="st7" points="143.57,84.91 138.22,84.91 140.89,74.41 143.57,74.41 "/> + <rect x="136.78" y="84.91" class="st8" width="6.79" height="0.69"/> + <rect x="127.03" y="58.99" class="st6" width="6.79" height="10.5"/> + <polygon class="st7" points="133.81,69.49 128.46,69.49 131.14,58.99 133.81,58.99 "/> + <rect x="127.03" y="74.41" class="st6" width="6.79" height="10.5"/> + <polygon class="st7" points="133.81,84.91 128.46,84.91 131.14,74.41 133.81,74.41 "/> + <rect x="127.03" y="69.49" class="st8" width="6.79" height="0.69"/> + <g> + <rect x="91.11" y="56.04" class="st8" width="13.82" height="0.69"/> + </g> + <rect x="76.12" y="56.39" class="st8" width="6.79" height="0.69"/> + <rect x="113.19" y="56.39" class="st8" width="6.79" height="0.69"/> + <rect x="76.12" y="71.81" class="st8" width="6.79" height="0.69"/> + <rect x="113.19" y="71.81" class="st8" width="6.79" height="0.69"/> + <rect x="127.03" y="77.96" class="st8" width="6.79" height="0.69"/> + <rect x="62.38" y="62.54" class="st8" width="6.79" height="0.69"/> + <rect x="62.38" y="77.96" class="st8" width="6.79" height="0.69"/> + <rect x="52.62" y="62.54" class="st8" width="6.79" height="0.69"/> + <rect x="52.62" y="77.96" class="st8" width="6.79" height="0.69"/> + <rect x="136.78" y="62.54" class="st8" width="6.79" height="0.69"/> + <rect x="136.78" y="77.96" class="st8" width="6.79" height="0.69"/> + <rect x="127.03" y="62.54" class="st8" width="6.79" height="0.69"/> + <g> + <path class="st9" d="M103.54,36.19c0-2.84-2.3-5.14-5.14-5.14c-2.84,0-5.14,2.3-5.14,5.14c0,2.84,2.3,5.14,5.14,5.14 + C101.24,41.34,103.54,39.03,103.54,36.19z"/> + <g> + <path class="st10" d="M98.4,40.76c-2.52,0-4.57-2.05-4.57-4.57c0-2.52,2.05-4.57,4.57-4.57c2.52,0,4.57,2.05,4.57,4.57 + C102.97,38.71,100.92,40.76,98.4,40.76z M98.4,32.15c-2.23,0-4.04,1.81-4.04,4.04c0,2.23,1.81,4.04,4.04,4.04 + c2.23,0,4.04-1.81,4.04-4.04C102.45,33.97,100.63,32.15,98.4,32.15z"/> + </g> + <path class="st10" d="M101.25,35.93h-2.58V33.1c0-0.14-0.12-0.26-0.26-0.26c-0.14,0-0.26,0.12-0.26,0.26v3.1 + c0,0.14,0.12,0.26,0.26,0.26h2.85c0.14,0,0.26-0.12,0.26-0.26S101.39,35.93,101.25,35.93z"/> + </g> + <g> + <g> + <g> + <g> + <rect x="108.27" y="69.21" class="st11" width="2.33" height="19.15"/> + </g> + <g> + <rect x="109.43" y="69.21" class="st4" width="1.16" height="19.15"/> + </g> + <rect x="107.02" y="88.36" class="st11" width="4.84" height="1.28"/> + <g> + <rect x="110.02" y="88.36" class="st11" width="1.84" height="1.28"/> + </g> + <rect x="107.51" y="87.83" class="st11" width="3.85" height="0.79"/> + <g> + <rect x="109.6" y="87.83" class="st11" width="1.76" height="0.79"/> + </g> + <path class="st11" d="M108.68,70.18c0-0.54-0.43-0.97-0.97-0.97s-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + S108.68,70.72,108.68,70.18z"/> + <rect x="107.71" y="69.21" class="st11" width="3.45" height="0.65"/> + <g> + <rect x="109.79" y="69.21" class="st11" width="1.37" height="0.65"/> + </g> + <g> + <path class="st11" d="M112.13,70.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C111.69,71.15,112.13,70.72,112.13,70.18z"/> + </g> + </g> + </g> + <g> + <g> + <g> + <rect x="85.33" y="69.21" class="st11" width="2.33" height="19.15"/> + </g> + <g> + <rect x="86.49" y="69.21" class="st4" width="1.16" height="19.15"/> + </g> + <rect x="84.07" y="88.36" class="st11" width="4.84" height="1.28"/> + <g> + <rect x="87.08" y="88.36" class="st11" width="1.84" height="1.28"/> + </g> + <rect x="84.57" y="87.83" class="st11" width="3.85" height="0.79"/> + <g> + <rect x="86.66" y="87.83" class="st11" width="1.76" height="0.79"/> + </g> + <path class="st11" d="M85.74,70.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C85.3,71.15,85.74,70.72,85.74,70.18z"/> + <rect x="84.77" y="69.21" class="st11" width="3.45" height="0.65"/> + <g> + <rect x="86.84" y="69.21" class="st11" width="1.37" height="0.65"/> + </g> + <g> + <path class="st11" d="M89.19,70.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C88.75,71.15,89.19,70.72,89.19,70.18z"/> + </g> + </g> + </g> + </g> + <g> + <g> + <g> + <g> + <rect x="108.27" y="47.12" class="st11" width="2.33" height="19.15"/> + </g> + <g> + <rect x="109.43" y="47.12" class="st4" width="1.16" height="19.15"/> + </g> + <rect x="107.02" y="66.26" class="st11" width="4.84" height="1.28"/> + <g> + <rect x="110.02" y="66.26" class="st11" width="1.84" height="1.28"/> + </g> + <rect x="107.51" y="65.74" class="st11" width="3.85" height="0.79"/> + <g> + <rect x="109.6" y="65.74" class="st11" width="1.76" height="0.79"/> + </g> + <path class="st11" d="M108.68,48.09c0-0.54-0.43-0.97-0.97-0.97s-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + S108.68,48.62,108.68,48.09z"/> + <rect x="107.71" y="47.12" class="st11" width="3.45" height="0.65"/> + <g> + <rect x="109.79" y="47.12" class="st11" width="1.37" height="0.65"/> + </g> + <g> + <path class="st11" d="M112.13,48.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C111.69,49.06,112.13,48.62,112.13,48.09z"/> + </g> + </g> + </g> + <g> + <g> + <g> + <rect x="85.33" y="47.12" class="st11" width="2.33" height="19.15"/> + </g> + <g> + <rect x="86.49" y="47.12" class="st4" width="1.16" height="19.15"/> + </g> + <rect x="84.07" y="66.26" class="st11" width="4.84" height="1.28"/> + <g> + <rect x="87.08" y="66.26" class="st11" width="1.84" height="1.28"/> + </g> + <rect x="84.57" y="65.74" class="st11" width="3.85" height="0.79"/> + <g> + <rect x="86.66" y="65.74" class="st11" width="1.76" height="0.79"/> + </g> + <path class="st11" d="M85.74,48.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C85.3,49.06,85.74,48.62,85.74,48.09z"/> + <rect x="84.77" y="47.12" class="st11" width="3.45" height="0.65"/> + <g> + <rect x="86.84" y="47.12" class="st11" width="1.37" height="0.65"/> + </g> + <g> + <path class="st11" d="M89.19,48.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C88.75,49.06,89.19,48.62,89.19,48.09z"/> + </g> + </g> + </g> + </g> + <rect x="83.2" y="66.5" class="st11" width="29.54" height="2.71"/> + <rect x="83.2" y="67.85" class="st4" width="29.54" height="1.36"/> + <polygon class="st9" points="101.58,17.77 102.68,17.46 102.68,13.57 101.58,13.88 "/> + <polygon class="st9" points="100.24,15.54 100.24,16.64 104.03,15.8 104.03,14.7 "/> +</g> +<g> + <g> + <rect x="112.85" y="111.24" class="st12" width="3.29" height="16.56"/> + <rect x="101.83" y="111.24" class="st12" width="3.29" height="16.56"/> + <rect x="90.81" y="111.24" class="st12" width="3.29" height="16.56"/> + <rect x="79.8" y="111.24" class="st12" width="3.29" height="16.56"/> + <rect x="145.85" y="111.24" class="st13" width="3.29" height="16.56"/> + <rect x="134.83" y="111.24" class="st12" width="3.29" height="16.56"/> + <rect x="123.81" y="111.24" class="st12" width="3.29" height="16.56"/> + <rect x="68.78" y="111.24" class="st12" width="3.29" height="16.56"/> + <rect x="57.76" y="111.24" class="st12" width="3.29" height="16.56"/> + <rect x="46.74" y="111.24" class="st12" width="3.29" height="16.56"/> + <rect x="35.73" y="111.24" class="st12" width="3.29" height="16.56"/> + <rect x="24.71" y="111.24" class="st12" width="3.29" height="16.56"/> + <rect x="14.11" y="111.24" class="st12" width="3.29" height="16.56"/> + <rect x="3.85" y="111.24" class="st12" width="3.29" height="16.56"/> + </g> + <g> + <rect x="0" y="114.71" class="st13" width="148" height="1.33"/> + <rect x="0" y="123" class="st13" width="148" height="1.33"/> + </g> +</g> +<rect x="47" y="131.5" transform="matrix(-1 -1.224647e-16 1.224647e-16 -1 196 274)" class="st7" width="102" height="11"/> +<rect x="47" y="97.5" transform="matrix(-1 -3.564960e-14 3.564960e-14 -1 196 206)" class="st7" width="102" height="11"/> +</svg> diff --git a/svg/Bahnhof_#d50000_Deadend_oben.svg b/svg/Bahnhof_#d50000_Deadend_oben.svg new file mode 100644 index 0000000000000000000000000000000000000000..7a8c41f1e0df98037b0da3470c2b8aff47d32b2a --- /dev/null +++ b/svg/Bahnhof_#d50000_Deadend_oben.svg @@ -0,0 +1,267 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 240 240" style="enable-background:new 0 0 240 240;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#D50000;} + .st2{fill:#858B8A;} + .st3{fill:#E20613;} + .st4{fill:#ECECEC;} + .st5{fill:#D9D9D9;} + .st6{fill:#585858;} + .st7{fill:#FFFFFF;} + .st8{fill:#1D1D1B;} + .st9{fill:#9EA5A3;} + .st10{fill:#978679;} + .st11{fill:#3D3D3D;} +</style> +<g> + <rect class="st0" width="240" height="240"/> +</g> +<g> + <g> + <polygon class="st1" points="145.31,204.74 145.31,198.78 145.31,193.54 109.08,193.54 94.79,193.54 94.79,204.74 70.39,204.74 + 70.39,237.5 94.79,237.5 109.08,237.5 120.25,237.5 145.31,237.5 169.7,237.5 169.7,204.74 "/> + <polygon class="st1" points="148.51,190.94 120.17,173.74 92.3,190.93 92.3,192.66 148.51,192.66 "/> + </g> + <g> + <polygon class="st0" points="92.3,190.93 92.3,192.66 148.51,192.66 148.51,190.94 120.17,173.74 "/> + <path class="st2" d="M120.16,170.96l-29.49,18.19v5.91h59.46v-5.91L120.16,170.96z M148.51,192.66H92.3v-1.73l27.87-17.19 + l28.34,17.2V192.66z"/> + </g> + <polygon class="st3" points="120.44,167.35 127.82,165.62 127.82,159.99 120.44,161.73 "/> + <rect x="119.68" y="161.72" class="st2" width="0.75" height="11.5"/> + <rect x="69.12" y="200.82" class="st2" width="101.86" height="3.92"/> + <rect x="69.12" y="237.5" class="st2" width="101.86" height="2"/> + <g> + <rect x="113.11" y="200.5" class="st4" width="13.82" height="10.5"/> + <polygon class="st5" points="126.93,210.99 116.03,210.99 121.48,200.5 126.93,200.5 "/> + <rect x="113.11" y="210.99" class="st6" width="13.82" height="0.69"/> + </g> + <rect x="98.12" y="200.84" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="104.9,211.34 99.55,211.34 102.23,200.84 104.9,200.84 "/> + <rect x="98.12" y="211.34" class="st6" width="6.79" height="0.69"/> + <rect x="135.19" y="200.84" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="141.98,211.34 136.63,211.34 139.3,200.84 141.98,200.84 "/> + <rect x="135.19" y="211.34" class="st6" width="6.79" height="0.69"/> + <rect x="98.12" y="216.26" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="104.9,226.76 99.55,226.76 102.23,216.26 104.9,216.26 "/> + <rect x="98.12" y="226.76" class="st6" width="6.79" height="0.69"/> + <rect x="135.19" y="216.26" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="141.98,226.76 136.63,226.76 139.3,216.26 141.98,216.26 "/> + <rect x="135.19" y="226.76" class="st6" width="6.79" height="0.69"/> + <g> + <g> + <rect x="112.42" y="221.93" class="st4" width="15.06" height="14.59"/> + <polygon class="st5" points="127.48,236.52 115.61,236.52 121.55,221.93 127.48,221.93 "/> + </g> + <rect x="112.42" y="236.52" class="st6" width="15.06" height="0.95"/> + <rect x="112.42" y="221.12" class="st6" width="15.06" height="0.81"/> + + <rect x="119.45" y="229.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 356.9261 101.666)" class="st6" width="16.35" height="0.3"/> + + <rect x="104.12" y="229.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 341.593 116.9991)" class="st6" width="16.35" height="0.3"/> + + <rect x="111.92" y="229.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 349.3965 109.1956)" class="st6" width="16.35" height="0.3"/> + <g> + <rect x="118.29" y="229.62" class="st6" width="0.93" height="0.55"/> + <rect x="120.98" y="229.62" class="st6" width="0.93" height="0.55"/> + </g> + </g> + <rect x="149.03" y="232.91" class="st6" width="6.79" height="0.69"/> + <rect x="84.38" y="206.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="91.16,217.49 85.81,217.49 88.49,206.99 91.16,206.99 "/> + <rect x="84.38" y="217.49" class="st6" width="6.79" height="0.69"/> + <rect x="84.38" y="222.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="91.16,232.91 85.81,232.91 88.49,222.41 91.16,222.41 "/> + <rect x="84.38" y="232.91" class="st6" width="6.79" height="0.69"/> + <rect x="74.62" y="206.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="81.41,217.49 76.06,217.49 78.74,206.99 81.41,206.99 "/> + <rect x="74.62" y="217.49" class="st6" width="6.79" height="0.69"/> + <rect x="74.62" y="222.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="81.41,232.91 76.06,232.91 78.74,222.41 81.41,222.41 "/> + <rect x="74.62" y="232.91" class="st6" width="6.79" height="0.69"/> + <rect x="158.78" y="206.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="165.57,217.49 160.22,217.49 162.89,206.99 165.57,206.99 "/> + <rect x="158.78" y="217.49" class="st6" width="6.79" height="0.69"/> + <rect x="158.78" y="222.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="165.57,232.91 160.22,232.91 162.89,222.41 165.57,222.41 "/> + <rect x="158.78" y="232.91" class="st6" width="6.79" height="0.69"/> + <rect x="149.03" y="206.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="155.81,217.49 150.46,217.49 153.14,206.99 155.81,206.99 "/> + <rect x="149.03" y="222.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="155.81,232.91 150.46,232.91 153.14,222.41 155.81,222.41 "/> + <rect x="149.03" y="217.49" class="st6" width="6.79" height="0.69"/> + <g> + <rect x="113.11" y="204.04" class="st6" width="13.82" height="0.69"/> + </g> + <rect x="98.12" y="204.39" class="st6" width="6.79" height="0.69"/> + <rect x="135.19" y="204.39" class="st6" width="6.79" height="0.69"/> + <rect x="98.12" y="219.81" class="st6" width="6.79" height="0.69"/> + <rect x="135.19" y="219.81" class="st6" width="6.79" height="0.69"/> + <rect x="149.03" y="225.96" class="st6" width="6.79" height="0.69"/> + <rect x="84.38" y="210.54" class="st6" width="6.79" height="0.69"/> + <rect x="84.38" y="225.96" class="st6" width="6.79" height="0.69"/> + <rect x="74.62" y="210.54" class="st6" width="6.79" height="0.69"/> + <rect x="74.62" y="225.96" class="st6" width="6.79" height="0.69"/> + <rect x="158.78" y="210.54" class="st6" width="6.79" height="0.69"/> + <rect x="158.78" y="225.96" class="st6" width="6.79" height="0.69"/> + <rect x="149.03" y="210.54" class="st6" width="6.79" height="0.69"/> + <g> + <path class="st7" d="M125.54,184.19c0-2.84-2.3-5.14-5.14-5.14c-2.84,0-5.14,2.3-5.14,5.14c0,2.84,2.3,5.14,5.14,5.14 + C123.24,189.34,125.54,187.03,125.54,184.19z"/> + <g> + <path class="st8" d="M120.4,188.76c-2.52,0-4.57-2.05-4.57-4.57c0-2.52,2.05-4.57,4.57-4.57c2.52,0,4.57,2.05,4.57,4.57 + C124.97,186.71,122.92,188.76,120.4,188.76z M120.4,180.15c-2.23,0-4.04,1.81-4.04,4.04c0,2.23,1.81,4.04,4.04,4.04 + c2.23,0,4.04-1.81,4.04-4.04C124.45,181.97,122.63,180.15,120.4,180.15z"/> + </g> + <path class="st8" d="M123.25,183.93h-2.58v-2.84c0-0.14-0.12-0.26-0.26-0.26c-0.14,0-0.26,0.12-0.26,0.26v3.1 + c0,0.14,0.12,0.26,0.26,0.26h2.85c0.14,0,0.26-0.12,0.26-0.26C123.51,184.05,123.39,183.93,123.25,183.93z"/> + </g> + <g> + <g> + <g> + <g> + <rect x="130.27" y="217.21" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="131.43" y="217.21" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="129.02" y="236.36" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="132.02" y="236.36" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="129.51" y="235.83" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="131.6" y="235.83" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M130.68,218.18c0-0.54-0.43-0.97-0.97-0.97s-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + S130.68,218.72,130.68,218.18z"/> + <rect x="129.71" y="217.21" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="131.79" y="217.21" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M134.13,218.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C133.69,219.15,134.13,218.72,134.13,218.18z"/> + </g> + </g> + </g> + <g> + <g> + <g> + <rect x="107.33" y="217.21" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="108.49" y="217.21" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="106.07" y="236.36" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="109.08" y="236.36" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="106.57" y="235.83" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="108.66" y="235.83" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M107.74,218.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C107.3,219.15,107.74,218.72,107.74,218.18z"/> + <rect x="106.77" y="217.21" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="108.84" y="217.21" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M111.19,218.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C110.75,219.15,111.19,218.72,111.19,218.18z"/> + </g> + </g> + </g> + </g> + <g> + <g> + <g> + <g> + <rect x="130.27" y="195.12" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="131.43" y="195.12" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="129.02" y="214.26" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="132.02" y="214.26" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="129.51" y="213.74" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="131.6" y="213.74" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M130.68,196.09c0-0.54-0.43-0.97-0.97-0.97s-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + S130.68,196.62,130.68,196.09z"/> + <rect x="129.71" y="195.12" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="131.79" y="195.12" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M134.13,196.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C133.69,197.06,134.13,196.62,134.13,196.09z"/> + </g> + </g> + </g> + <g> + <g> + <g> + <rect x="107.33" y="195.12" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="108.49" y="195.12" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="106.07" y="214.26" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="109.08" y="214.26" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="106.57" y="213.74" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="108.66" y="213.74" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M107.74,196.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C107.3,197.06,107.74,196.62,107.74,196.09z"/> + <rect x="106.77" y="195.12" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="108.84" y="195.12" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M111.19,196.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C110.75,197.06,111.19,196.62,111.19,196.09z"/> + </g> + </g> + </g> + </g> + <rect x="105.2" y="214.5" class="st9" width="29.54" height="2.71"/> + <rect x="105.2" y="215.85" class="st2" width="29.54" height="1.36"/> + <polygon class="st7" points="123.58,165.77 124.68,165.46 124.68,161.57 123.58,161.88 "/> + <polygon class="st7" points="122.24,163.54 122.24,164.64 126.03,163.8 126.03,162.7 "/> +</g> +<g> + <g> + <rect x="111.74" y="112.85" class="st10" width="16.56" height="3.29"/> + <rect x="111.74" y="101.83" class="st10" width="16.56" height="3.29"/> + <rect x="111.74" y="90.81" class="st10" width="16.56" height="3.29"/> + <rect x="111.74" y="79.8" class="st10" width="16.56" height="3.29"/> + <rect x="111.74" y="145.85" class="st11" width="16.56" height="3.29"/> + <rect x="111.74" y="134.83" class="st10" width="16.56" height="3.29"/> + <rect x="111.74" y="123.81" class="st10" width="16.56" height="3.29"/> + <rect x="111.74" y="68.78" class="st10" width="16.56" height="3.29"/> + <rect x="111.74" y="57.76" class="st10" width="16.56" height="3.29"/> + <rect x="111.74" y="46.74" class="st10" width="16.56" height="3.29"/> + <rect x="111.74" y="35.73" class="st10" width="16.56" height="3.29"/> + <rect x="111.74" y="24.71" class="st10" width="16.56" height="3.29"/> + <rect x="111.74" y="14.11" class="st10" width="16.56" height="3.29"/> + <rect x="111.74" y="3.85" class="st10" width="16.56" height="3.29"/> + </g> + <g> + <rect x="115.21" y="0" class="st11" width="1.33" height="148"/> + <rect x="123.5" y="0" class="st11" width="1.33" height="148"/> + </g> +</g> +<rect x="86.5" y="92.5" transform="matrix(4.490459e-11 -1 1 4.490459e-11 39.5 235.5)" class="st5" width="102" height="11"/> +<rect x="52.5" y="92.5" transform="matrix(4.489571e-11 -1 1 4.489571e-11 5.5 201.5)" class="st5" width="102" height="11"/> +</svg> diff --git a/svg/Bahnhof_#d50000_Deadend_rechts.svg b/svg/Bahnhof_#d50000_Deadend_rechts.svg new file mode 100644 index 0000000000000000000000000000000000000000..bd1ff9204101853c0f33926b36217d2e4cf01413 --- /dev/null +++ b/svg/Bahnhof_#d50000_Deadend_rechts.svg @@ -0,0 +1,267 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 240 240" style="enable-background:new 0 0 240 240;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#D50000;} + .st2{fill:#858B8A;} + .st3{fill:#E20613;} + .st4{fill:#ECECEC;} + .st5{fill:#D9D9D9;} + .st6{fill:#585858;} + .st7{fill:#FFFFFF;} + .st8{fill:#1D1D1B;} + .st9{fill:#9EA5A3;} + .st10{fill:#978679;} + .st11{fill:#3D3D3D;} +</style> +<g> + <rect class="st0" width="240" height="240"/> +</g> +<g> + <g> + <polygon class="st1" points="167.31,56.74 167.31,50.78 167.31,45.54 131.08,45.54 116.79,45.54 116.79,56.74 92.39,56.74 + 92.39,89.5 116.79,89.5 131.08,89.5 142.25,89.5 167.31,89.5 191.7,89.5 191.7,56.74 "/> + <polygon class="st1" points="170.51,42.94 142.17,25.74 114.3,42.93 114.3,44.66 170.51,44.66 "/> + </g> + <g> + <polygon class="st0" points="114.3,42.93 114.3,44.66 170.51,44.66 170.51,42.94 142.17,25.74 "/> + <path class="st2" d="M142.16,22.96l-29.49,18.19v5.91h59.46v-5.91L142.16,22.96z M170.51,44.66H114.3v-1.73l27.87-17.19 + l28.34,17.2V44.66z"/> + </g> + <polygon class="st3" points="142.44,19.35 149.82,17.62 149.82,11.99 142.44,13.73 "/> + <rect x="141.68" y="13.72" class="st2" width="0.75" height="11.5"/> + <rect x="91.12" y="52.82" class="st2" width="101.86" height="3.92"/> + <rect x="91.12" y="89.5" class="st2" width="101.86" height="2"/> + <g> + <rect x="135.11" y="52.5" class="st4" width="13.82" height="10.5"/> + <polygon class="st5" points="148.93,62.99 138.03,62.99 143.48,52.5 148.93,52.5 "/> + <rect x="135.11" y="62.99" class="st6" width="13.82" height="0.69"/> + </g> + <rect x="120.12" y="52.84" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="126.9,63.34 121.55,63.34 124.23,52.84 126.9,52.84 "/> + <rect x="120.12" y="63.34" class="st6" width="6.79" height="0.69"/> + <rect x="157.19" y="52.84" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="163.98,63.34 158.63,63.34 161.3,52.84 163.98,52.84 "/> + <rect x="157.19" y="63.34" class="st6" width="6.79" height="0.69"/> + <rect x="120.12" y="68.26" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="126.9,78.76 121.55,78.76 124.23,68.26 126.9,68.26 "/> + <rect x="120.12" y="78.76" class="st6" width="6.79" height="0.69"/> + <rect x="157.19" y="68.26" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="163.98,78.76 158.63,78.76 161.3,68.26 163.98,68.26 "/> + <rect x="157.19" y="78.76" class="st6" width="6.79" height="0.69"/> + <g> + <g> + <rect x="134.42" y="73.93" class="st4" width="15.06" height="14.59"/> + <polygon class="st5" points="149.48,88.52 137.61,88.52 143.55,73.93 149.48,73.93 "/> + </g> + <rect x="134.42" y="88.52" class="st6" width="15.06" height="0.95"/> + <rect x="134.42" y="73.12" class="st6" width="15.06" height="0.81"/> + + <rect x="141.45" y="81.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 230.9261 -68.334)" class="st6" width="16.35" height="0.3"/> + + <rect x="126.12" y="81.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 215.593 -53.0009)" class="st6" width="16.35" height="0.3"/> + + <rect x="133.92" y="81.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 223.3965 -60.8044)" class="st6" width="16.35" height="0.3"/> + <g> + <rect x="140.29" y="81.62" class="st6" width="0.93" height="0.55"/> + <rect x="142.98" y="81.62" class="st6" width="0.93" height="0.55"/> + </g> + </g> + <rect x="171.03" y="84.91" class="st6" width="6.79" height="0.69"/> + <rect x="106.38" y="58.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="113.16,69.49 107.81,69.49 110.49,58.99 113.16,58.99 "/> + <rect x="106.38" y="69.49" class="st6" width="6.79" height="0.69"/> + <rect x="106.38" y="74.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="113.16,84.91 107.81,84.91 110.49,74.41 113.16,74.41 "/> + <rect x="106.38" y="84.91" class="st6" width="6.79" height="0.69"/> + <rect x="96.62" y="58.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="103.41,69.49 98.06,69.49 100.74,58.99 103.41,58.99 "/> + <rect x="96.62" y="69.49" class="st6" width="6.79" height="0.69"/> + <rect x="96.62" y="74.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="103.41,84.91 98.06,84.91 100.74,74.41 103.41,74.41 "/> + <rect x="96.62" y="84.91" class="st6" width="6.79" height="0.69"/> + <rect x="180.78" y="58.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="187.57,69.49 182.22,69.49 184.89,58.99 187.57,58.99 "/> + <rect x="180.78" y="69.49" class="st6" width="6.79" height="0.69"/> + <rect x="180.78" y="74.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="187.57,84.91 182.22,84.91 184.89,74.41 187.57,74.41 "/> + <rect x="180.78" y="84.91" class="st6" width="6.79" height="0.69"/> + <rect x="171.03" y="58.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="177.81,69.49 172.46,69.49 175.14,58.99 177.81,58.99 "/> + <rect x="171.03" y="74.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="177.81,84.91 172.46,84.91 175.14,74.41 177.81,74.41 "/> + <rect x="171.03" y="69.49" class="st6" width="6.79" height="0.69"/> + <g> + <rect x="135.11" y="56.04" class="st6" width="13.82" height="0.69"/> + </g> + <rect x="120.12" y="56.39" class="st6" width="6.79" height="0.69"/> + <rect x="157.19" y="56.39" class="st6" width="6.79" height="0.69"/> + <rect x="120.12" y="71.81" class="st6" width="6.79" height="0.69"/> + <rect x="157.19" y="71.81" class="st6" width="6.79" height="0.69"/> + <rect x="171.03" y="77.96" class="st6" width="6.79" height="0.69"/> + <rect x="106.38" y="62.54" class="st6" width="6.79" height="0.69"/> + <rect x="106.38" y="77.96" class="st6" width="6.79" height="0.69"/> + <rect x="96.62" y="62.54" class="st6" width="6.79" height="0.69"/> + <rect x="96.62" y="77.96" class="st6" width="6.79" height="0.69"/> + <rect x="180.78" y="62.54" class="st6" width="6.79" height="0.69"/> + <rect x="180.78" y="77.96" class="st6" width="6.79" height="0.69"/> + <rect x="171.03" y="62.54" class="st6" width="6.79" height="0.69"/> + <g> + <path class="st7" d="M147.54,36.19c0-2.84-2.3-5.14-5.14-5.14c-2.84,0-5.14,2.3-5.14,5.14c0,2.84,2.3,5.14,5.14,5.14 + C145.24,41.34,147.54,39.03,147.54,36.19z"/> + <g> + <path class="st8" d="M142.4,40.76c-2.52,0-4.57-2.05-4.57-4.57c0-2.52,2.05-4.57,4.57-4.57c2.52,0,4.57,2.05,4.57,4.57 + C146.97,38.71,144.92,40.76,142.4,40.76z M142.4,32.15c-2.23,0-4.04,1.81-4.04,4.04c0,2.23,1.81,4.04,4.04,4.04 + c2.23,0,4.04-1.81,4.04-4.04C146.45,33.97,144.63,32.15,142.4,32.15z"/> + </g> + <path class="st8" d="M145.25,35.93h-2.58V33.1c0-0.14-0.12-0.26-0.26-0.26c-0.14,0-0.26,0.12-0.26,0.26v3.1 + c0,0.14,0.12,0.26,0.26,0.26h2.85c0.14,0,0.26-0.12,0.26-0.26S145.39,35.93,145.25,35.93z"/> + </g> + <g> + <g> + <g> + <g> + <rect x="152.27" y="69.21" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="153.43" y="69.21" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="151.02" y="88.36" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="154.02" y="88.36" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="151.51" y="87.83" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="153.6" y="87.83" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M152.68,70.18c0-0.54-0.43-0.97-0.97-0.97s-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + S152.68,70.72,152.68,70.18z"/> + <rect x="151.71" y="69.21" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="153.79" y="69.21" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M156.13,70.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C155.69,71.15,156.13,70.72,156.13,70.18z"/> + </g> + </g> + </g> + <g> + <g> + <g> + <rect x="129.33" y="69.21" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="130.49" y="69.21" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="128.07" y="88.36" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="131.08" y="88.36" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="128.57" y="87.83" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="130.66" y="87.83" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M129.74,70.18c0-0.54-0.43-0.97-0.97-0.97s-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + S129.74,70.72,129.74,70.18z"/> + <rect x="128.77" y="69.21" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="130.84" y="69.21" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M133.19,70.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C132.75,71.15,133.19,70.72,133.19,70.18z"/> + </g> + </g> + </g> + </g> + <g> + <g> + <g> + <g> + <rect x="152.27" y="47.12" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="153.43" y="47.12" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="151.02" y="66.26" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="154.02" y="66.26" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="151.51" y="65.74" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="153.6" y="65.74" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M152.68,48.09c0-0.54-0.43-0.97-0.97-0.97s-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + S152.68,48.62,152.68,48.09z"/> + <rect x="151.71" y="47.12" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="153.79" y="47.12" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M156.13,48.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C155.69,49.06,156.13,48.62,156.13,48.09z"/> + </g> + </g> + </g> + <g> + <g> + <g> + <rect x="129.33" y="47.12" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="130.49" y="47.12" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="128.07" y="66.26" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="131.08" y="66.26" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="128.57" y="65.74" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="130.66" y="65.74" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M129.74,48.09c0-0.54-0.43-0.97-0.97-0.97s-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + S129.74,48.62,129.74,48.09z"/> + <rect x="128.77" y="47.12" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="130.84" y="47.12" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M133.19,48.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C132.75,49.06,133.19,48.62,133.19,48.09z"/> + </g> + </g> + </g> + </g> + <rect x="127.2" y="66.5" class="st9" width="29.54" height="2.71"/> + <rect x="127.2" y="67.85" class="st2" width="29.54" height="1.36"/> + <polygon class="st7" points="145.58,17.77 146.68,17.46 146.68,13.57 145.58,13.88 "/> + <polygon class="st7" points="144.24,15.54 144.24,16.64 148.03,15.8 148.03,14.7 "/> +</g> +<g> + <g> + <rect x="123.87" y="111.24" class="st10" width="3.29" height="16.56"/> + <rect x="134.88" y="111.24" class="st10" width="3.29" height="16.56"/> + <rect x="145.9" y="111.24" class="st10" width="3.29" height="16.56"/> + <rect x="156.92" y="111.24" class="st10" width="3.29" height="16.56"/> + <rect x="90.87" y="111.24" class="st11" width="3.29" height="16.56"/> + <rect x="101.88" y="111.24" class="st10" width="3.29" height="16.56"/> + <rect x="112.9" y="111.24" class="st10" width="3.29" height="16.56"/> + <rect x="167.93" y="111.24" class="st10" width="3.29" height="16.56"/> + <rect x="178.95" y="111.24" class="st10" width="3.29" height="16.56"/> + <rect x="189.97" y="111.24" class="st10" width="3.29" height="16.56"/> + <rect x="200.99" y="111.24" class="st10" width="3.29" height="16.56"/> + <rect x="212" y="111.24" class="st10" width="3.29" height="16.56"/> + <rect x="222.6" y="111.24" class="st10" width="3.29" height="16.56"/> + <rect x="232.86" y="111.24" class="st10" width="3.29" height="16.56"/> + </g> + <g> + <rect x="92" y="114.71" class="st11" width="148" height="1.33"/> + <rect x="92" y="123" class="st11" width="148" height="1.33"/> + </g> +</g> +<rect x="91" y="131.5" class="st5" width="102" height="11"/> +<rect x="91" y="97.5" class="st5" width="102" height="11"/> +</svg> diff --git a/svg/Bahnhof_#d50000_Deadend_unten.svg b/svg/Bahnhof_#d50000_Deadend_unten.svg new file mode 100644 index 0000000000000000000000000000000000000000..7acf6eea6fb911e9c66ad92fc69ddd6dd8d23d1d --- /dev/null +++ b/svg/Bahnhof_#d50000_Deadend_unten.svg @@ -0,0 +1,267 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 240 240" style="enable-background:new 0 0 240 240;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#D50000;} + .st2{fill:#858B8A;} + .st3{fill:#E20613;} + .st4{fill:#ECECEC;} + .st5{fill:#D9D9D9;} + .st6{fill:#585858;} + .st7{fill:#FFFFFF;} + .st8{fill:#1D1D1B;} + .st9{fill:#9EA5A3;} + .st10{fill:#978679;} + .st11{fill:#3D3D3D;} +</style> +<g> + <rect class="st0" width="240" height="240"/> +</g> +<g> + <g> + <polygon class="st1" points="145.31,45.74 145.31,39.78 145.31,34.54 109.08,34.54 94.79,34.54 94.79,45.74 70.39,45.74 + 70.39,78.5 94.79,78.5 109.08,78.5 120.25,78.5 145.31,78.5 169.7,78.5 169.7,45.74 "/> + <polygon class="st1" points="148.51,31.94 120.17,14.74 92.3,31.93 92.3,33.66 148.51,33.66 "/> + </g> + <g> + <polygon class="st0" points="92.3,31.93 92.3,33.66 148.51,33.66 148.51,31.94 120.17,14.74 "/> + <path class="st2" d="M120.16,11.96L90.67,30.15v5.91h59.46v-5.91L120.16,11.96z M148.51,33.66H92.3v-1.73l27.87-17.19l28.34,17.2 + V33.66z"/> + </g> + <polygon class="st3" points="120.44,8.35 127.82,6.62 127.82,0.99 120.44,2.73 "/> + <rect x="119.68" y="2.72" class="st2" width="0.75" height="11.5"/> + <rect x="69.12" y="41.82" class="st2" width="101.86" height="3.92"/> + <rect x="69.12" y="78.5" class="st2" width="101.86" height="2"/> + <g> + <rect x="113.11" y="41.5" class="st4" width="13.82" height="10.5"/> + <polygon class="st5" points="126.93,51.99 116.03,51.99 121.48,41.5 126.93,41.5 "/> + <rect x="113.11" y="51.99" class="st6" width="13.82" height="0.69"/> + </g> + <rect x="98.12" y="41.84" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="104.9,52.34 99.55,52.34 102.23,41.84 104.9,41.84 "/> + <rect x="98.12" y="52.34" class="st6" width="6.79" height="0.69"/> + <rect x="135.19" y="41.84" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="141.98,52.34 136.63,52.34 139.3,41.84 141.98,41.84 "/> + <rect x="135.19" y="52.34" class="st6" width="6.79" height="0.69"/> + <rect x="98.12" y="57.26" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="104.9,67.76 99.55,67.76 102.23,57.26 104.9,57.26 "/> + <rect x="98.12" y="67.76" class="st6" width="6.79" height="0.69"/> + <rect x="135.19" y="57.26" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="141.98,67.76 136.63,67.76 139.3,57.26 141.98,57.26 "/> + <rect x="135.19" y="67.76" class="st6" width="6.79" height="0.69"/> + <g> + <g> + <rect x="112.42" y="62.93" class="st4" width="15.06" height="14.59"/> + <polygon class="st5" points="127.48,77.52 115.61,77.52 121.55,62.93 127.48,62.93 "/> + </g> + <rect x="112.42" y="77.52" class="st6" width="15.06" height="0.95"/> + <rect x="112.42" y="62.12" class="st6" width="15.06" height="0.81"/> + + <rect x="119.45" y="70.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 197.9261 -57.334)" class="st6" width="16.35" height="0.3"/> + + <rect x="104.12" y="70.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 182.593 -42.0009)" class="st6" width="16.35" height="0.3"/> + + <rect x="111.92" y="70.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 190.3965 -49.8044)" class="st6" width="16.35" height="0.3"/> + <g> + <rect x="118.29" y="70.62" class="st6" width="0.93" height="0.55"/> + <rect x="120.98" y="70.62" class="st6" width="0.93" height="0.55"/> + </g> + </g> + <rect x="149.03" y="73.91" class="st6" width="6.79" height="0.69"/> + <rect x="84.38" y="47.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="91.16,58.49 85.81,58.49 88.49,47.99 91.16,47.99 "/> + <rect x="84.38" y="58.49" class="st6" width="6.79" height="0.69"/> + <rect x="84.38" y="63.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="91.16,73.91 85.81,73.91 88.49,63.41 91.16,63.41 "/> + <rect x="84.38" y="73.91" class="st6" width="6.79" height="0.69"/> + <rect x="74.62" y="47.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="81.41,58.49 76.06,58.49 78.74,47.99 81.41,47.99 "/> + <rect x="74.62" y="58.49" class="st6" width="6.79" height="0.69"/> + <rect x="74.62" y="63.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="81.41,73.91 76.06,73.91 78.74,63.41 81.41,63.41 "/> + <rect x="74.62" y="73.91" class="st6" width="6.79" height="0.69"/> + <rect x="158.78" y="47.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="165.57,58.49 160.22,58.49 162.89,47.99 165.57,47.99 "/> + <rect x="158.78" y="58.49" class="st6" width="6.79" height="0.69"/> + <rect x="158.78" y="63.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="165.57,73.91 160.22,73.91 162.89,63.41 165.57,63.41 "/> + <rect x="158.78" y="73.91" class="st6" width="6.79" height="0.69"/> + <rect x="149.03" y="47.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="155.81,58.49 150.46,58.49 153.14,47.99 155.81,47.99 "/> + <rect x="149.03" y="63.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="155.81,73.91 150.46,73.91 153.14,63.41 155.81,63.41 "/> + <rect x="149.03" y="58.49" class="st6" width="6.79" height="0.69"/> + <g> + <rect x="113.11" y="45.04" class="st6" width="13.82" height="0.69"/> + </g> + <rect x="98.12" y="45.39" class="st6" width="6.79" height="0.69"/> + <rect x="135.19" y="45.39" class="st6" width="6.79" height="0.69"/> + <rect x="98.12" y="60.81" class="st6" width="6.79" height="0.69"/> + <rect x="135.19" y="60.81" class="st6" width="6.79" height="0.69"/> + <rect x="149.03" y="66.96" class="st6" width="6.79" height="0.69"/> + <rect x="84.38" y="51.54" class="st6" width="6.79" height="0.69"/> + <rect x="84.38" y="66.96" class="st6" width="6.79" height="0.69"/> + <rect x="74.62" y="51.54" class="st6" width="6.79" height="0.69"/> + <rect x="74.62" y="66.96" class="st6" width="6.79" height="0.69"/> + <rect x="158.78" y="51.54" class="st6" width="6.79" height="0.69"/> + <rect x="158.78" y="66.96" class="st6" width="6.79" height="0.69"/> + <rect x="149.03" y="51.54" class="st6" width="6.79" height="0.69"/> + <g> + <path class="st7" d="M125.54,25.19c0-2.84-2.3-5.14-5.14-5.14c-2.84,0-5.14,2.3-5.14,5.14c0,2.84,2.3,5.14,5.14,5.14 + C123.24,30.34,125.54,28.03,125.54,25.19z"/> + <g> + <path class="st8" d="M120.4,29.76c-2.52,0-4.57-2.05-4.57-4.57c0-2.52,2.05-4.57,4.57-4.57c2.52,0,4.57,2.05,4.57,4.57 + C124.97,27.71,122.92,29.76,120.4,29.76z M120.4,21.15c-2.23,0-4.04,1.81-4.04,4.04c0,2.23,1.81,4.04,4.04,4.04 + c2.23,0,4.04-1.81,4.04-4.04C124.45,22.97,122.63,21.15,120.4,21.15z"/> + </g> + <path class="st8" d="M123.25,24.93h-2.58V22.1c0-0.14-0.12-0.26-0.26-0.26c-0.14,0-0.26,0.12-0.26,0.26v3.1 + c0,0.14,0.12,0.26,0.26,0.26h2.85c0.14,0,0.26-0.12,0.26-0.26S123.39,24.93,123.25,24.93z"/> + </g> + <g> + <g> + <g> + <g> + <rect x="130.27" y="58.21" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="131.43" y="58.21" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="129.02" y="77.36" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="132.02" y="77.36" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="129.51" y="76.83" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="131.6" y="76.83" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M130.68,59.18c0-0.54-0.43-0.97-0.97-0.97s-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + S130.68,59.72,130.68,59.18z"/> + <rect x="129.71" y="58.21" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="131.79" y="58.21" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M134.13,59.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C133.69,60.15,134.13,59.72,134.13,59.18z"/> + </g> + </g> + </g> + <g> + <g> + <g> + <rect x="107.33" y="58.21" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="108.49" y="58.21" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="106.07" y="77.36" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="109.08" y="77.36" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="106.57" y="76.83" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="108.66" y="76.83" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M107.74,59.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C107.3,60.15,107.74,59.72,107.74,59.18z"/> + <rect x="106.77" y="58.21" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="108.84" y="58.21" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M111.19,59.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C110.75,60.15,111.19,59.72,111.19,59.18z"/> + </g> + </g> + </g> + </g> + <g> + <g> + <g> + <g> + <rect x="130.27" y="36.12" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="131.43" y="36.12" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="129.02" y="55.26" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="132.02" y="55.26" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="129.51" y="54.74" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="131.6" y="54.74" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M130.68,37.09c0-0.54-0.43-0.97-0.97-0.97s-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + S130.68,37.62,130.68,37.09z"/> + <rect x="129.71" y="36.12" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="131.79" y="36.12" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M134.13,37.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C133.69,38.06,134.13,37.62,134.13,37.09z"/> + </g> + </g> + </g> + <g> + <g> + <g> + <rect x="107.33" y="36.12" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="108.49" y="36.12" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="106.07" y="55.26" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="109.08" y="55.26" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="106.57" y="54.74" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="108.66" y="54.74" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M107.74,37.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C107.3,38.06,107.74,37.62,107.74,37.09z"/> + <rect x="106.77" y="36.12" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="108.84" y="36.12" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M111.19,37.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C110.75,38.06,111.19,37.62,111.19,37.09z"/> + </g> + </g> + </g> + </g> + <rect x="105.2" y="55.5" class="st9" width="29.54" height="2.71"/> + <rect x="105.2" y="56.85" class="st2" width="29.54" height="1.36"/> + <polygon class="st7" points="123.58,6.77 124.68,6.46 124.68,2.57 123.58,2.88 "/> + <polygon class="st7" points="122.24,4.54 122.24,5.64 126.03,4.8 126.03,3.7 "/> +</g> +<g> + <g> + <rect x="112.2" y="123.87" class="st10" width="16.56" height="3.29"/> + <rect x="112.2" y="134.88" class="st10" width="16.56" height="3.29"/> + <rect x="112.2" y="145.9" class="st10" width="16.56" height="3.29"/> + <rect x="112.2" y="156.92" class="st10" width="16.56" height="3.29"/> + <rect x="112.2" y="90.87" class="st11" width="16.56" height="3.29"/> + <rect x="112.2" y="101.88" class="st10" width="16.56" height="3.29"/> + <rect x="112.2" y="112.9" class="st10" width="16.56" height="3.29"/> + <rect x="112.2" y="167.93" class="st10" width="16.56" height="3.29"/> + <rect x="112.2" y="178.95" class="st10" width="16.56" height="3.29"/> + <rect x="112.2" y="189.97" class="st10" width="16.56" height="3.29"/> + <rect x="112.2" y="200.99" class="st10" width="16.56" height="3.29"/> + <rect x="112.2" y="212" class="st10" width="16.56" height="3.29"/> + <rect x="112.2" y="222.6" class="st10" width="16.56" height="3.29"/> + <rect x="112.2" y="232.86" class="st10" width="16.56" height="3.29"/> + </g> + <g> + <rect x="123.96" y="92" class="st11" width="1.33" height="148"/> + <rect x="115.68" y="92" class="st11" width="1.33" height="148"/> + </g> +</g> +<rect x="52" y="136.5" transform="matrix(-4.490471e-11 1 -1 -4.490471e-11 245 39)" class="st5" width="102" height="11"/> +<rect x="86" y="136.5" transform="matrix(-4.486829e-11 1 -1 -4.486829e-11 279 5)" class="st5" width="102" height="11"/> +</svg> diff --git a/svg/Bahnhof_#d50000_Gleis_horizontal.svg b/svg/Bahnhof_#d50000_Gleis_horizontal.svg new file mode 100644 index 0000000000000000000000000000000000000000..93dcd898545f4d00f3ac50c85a5453683d01915c --- /dev/null +++ b/svg/Bahnhof_#d50000_Gleis_horizontal.svg @@ -0,0 +1,283 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 240 240" style="enable-background:new 0 0 240 240;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#D50000;} + .st2{fill:#858B8A;} + .st3{fill:#E20613;} + .st4{fill:#ECECEC;} + .st5{fill:#D9D9D9;} + .st6{fill:#585858;} + .st7{fill:#FFFFFF;} + .st8{fill:#1D1D1B;} + .st9{fill:#9EA5A3;} + .st10{fill:#978679;} + .st11{fill:#3D3D3D;} +</style> +<g> + <rect class="st0" width="240" height="240"/> +</g> +<g> + <g> + <polygon class="st1" points="145.31,56.74 145.31,50.78 145.31,45.54 109.08,45.54 94.79,45.54 94.79,56.74 70.39,56.74 + 70.39,89.5 94.79,89.5 109.08,89.5 120.25,89.5 145.31,89.5 169.7,89.5 169.7,56.74 "/> + <polygon class="st1" points="148.51,42.94 120.17,25.74 92.3,42.93 92.3,44.66 148.51,44.66 "/> + </g> + <g> + <polygon class="st0" points="92.3,42.93 92.3,44.66 148.51,44.66 148.51,42.94 120.17,25.74 "/> + <path class="st2" d="M120.16,22.96L90.67,41.15v5.91h59.46v-5.91L120.16,22.96z M148.51,44.66H92.3v-1.73l27.87-17.19l28.34,17.2 + V44.66z"/> + </g> + <polygon class="st3" points="120.44,19.35 127.82,17.62 127.82,11.99 120.44,13.73 "/> + <rect x="119.68" y="13.72" class="st2" width="0.75" height="11.5"/> + <rect x="69.12" y="52.82" class="st2" width="101.86" height="3.92"/> + <rect x="69.12" y="89.5" class="st2" width="101.86" height="2"/> + <g> + <rect x="113.11" y="52.5" class="st4" width="13.82" height="10.5"/> + <polygon class="st5" points="126.93,62.99 116.03,62.99 121.48,52.5 126.93,52.5 "/> + <rect x="113.11" y="62.99" class="st6" width="13.82" height="0.69"/> + </g> + <rect x="98.12" y="52.84" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="104.9,63.34 99.55,63.34 102.23,52.84 104.9,52.84 "/> + <rect x="98.12" y="63.34" class="st6" width="6.79" height="0.69"/> + <rect x="135.19" y="52.84" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="141.98,63.34 136.63,63.34 139.3,52.84 141.98,52.84 "/> + <rect x="135.19" y="63.34" class="st6" width="6.79" height="0.69"/> + <rect x="98.12" y="68.26" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="104.9,78.76 99.55,78.76 102.23,68.26 104.9,68.26 "/> + <rect x="98.12" y="78.76" class="st6" width="6.79" height="0.69"/> + <rect x="135.19" y="68.26" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="141.98,78.76 136.63,78.76 139.3,68.26 141.98,68.26 "/> + <rect x="135.19" y="78.76" class="st6" width="6.79" height="0.69"/> + <g> + <g> + <rect x="112.42" y="73.93" class="st4" width="15.06" height="14.59"/> + <polygon class="st5" points="127.48,88.52 115.61,88.52 121.55,73.93 127.48,73.93 "/> + </g> + <rect x="112.42" y="88.52" class="st6" width="15.06" height="0.95"/> + <rect x="112.42" y="73.12" class="st6" width="15.06" height="0.81"/> + + <rect x="119.45" y="81.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 208.9261 -46.334)" class="st6" width="16.35" height="0.3"/> + + <rect x="104.12" y="81.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 193.593 -31.0009)" class="st6" width="16.35" height="0.3"/> + + <rect x="111.92" y="81.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 201.3965 -38.8044)" class="st6" width="16.35" height="0.3"/> + <g> + <rect x="118.29" y="81.62" class="st6" width="0.93" height="0.55"/> + <rect x="120.98" y="81.62" class="st6" width="0.93" height="0.55"/> + </g> + </g> + <rect x="149.03" y="84.91" class="st6" width="6.79" height="0.69"/> + <rect x="84.38" y="58.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="91.16,69.49 85.81,69.49 88.49,58.99 91.16,58.99 "/> + <rect x="84.38" y="69.49" class="st6" width="6.79" height="0.69"/> + <rect x="84.38" y="74.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="91.16,84.91 85.81,84.91 88.49,74.41 91.16,74.41 "/> + <rect x="84.38" y="84.91" class="st6" width="6.79" height="0.69"/> + <rect x="74.62" y="58.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="81.41,69.49 76.06,69.49 78.74,58.99 81.41,58.99 "/> + <rect x="74.62" y="69.49" class="st6" width="6.79" height="0.69"/> + <rect x="74.62" y="74.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="81.41,84.91 76.06,84.91 78.74,74.41 81.41,74.41 "/> + <rect x="74.62" y="84.91" class="st6" width="6.79" height="0.69"/> + <rect x="158.78" y="58.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="165.57,69.49 160.22,69.49 162.89,58.99 165.57,58.99 "/> + <rect x="158.78" y="69.49" class="st6" width="6.79" height="0.69"/> + <rect x="158.78" y="74.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="165.57,84.91 160.22,84.91 162.89,74.41 165.57,74.41 "/> + <rect x="158.78" y="84.91" class="st6" width="6.79" height="0.69"/> + <rect x="149.03" y="58.99" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="155.81,69.49 150.46,69.49 153.14,58.99 155.81,58.99 "/> + <rect x="149.03" y="74.41" class="st4" width="6.79" height="10.5"/> + <polygon class="st5" points="155.81,84.91 150.46,84.91 153.14,74.41 155.81,74.41 "/> + <rect x="149.03" y="69.49" class="st6" width="6.79" height="0.69"/> + <g> + <rect x="113.11" y="56.04" class="st6" width="13.82" height="0.69"/> + </g> + <rect x="98.12" y="56.39" class="st6" width="6.79" height="0.69"/> + <rect x="135.19" y="56.39" class="st6" width="6.79" height="0.69"/> + <rect x="98.12" y="71.81" class="st6" width="6.79" height="0.69"/> + <rect x="135.19" y="71.81" class="st6" width="6.79" height="0.69"/> + <rect x="149.03" y="77.96" class="st6" width="6.79" height="0.69"/> + <rect x="84.38" y="62.54" class="st6" width="6.79" height="0.69"/> + <rect x="84.38" y="77.96" class="st6" width="6.79" height="0.69"/> + <rect x="74.62" y="62.54" class="st6" width="6.79" height="0.69"/> + <rect x="74.62" y="77.96" class="st6" width="6.79" height="0.69"/> + <rect x="158.78" y="62.54" class="st6" width="6.79" height="0.69"/> + <rect x="158.78" y="77.96" class="st6" width="6.79" height="0.69"/> + <rect x="149.03" y="62.54" class="st6" width="6.79" height="0.69"/> + <g> + <path class="st7" d="M125.54,36.19c0-2.84-2.3-5.14-5.14-5.14c-2.84,0-5.14,2.3-5.14,5.14c0,2.84,2.3,5.14,5.14,5.14 + C123.24,41.34,125.54,39.03,125.54,36.19z"/> + <g> + <path class="st8" d="M120.4,40.76c-2.52,0-4.57-2.05-4.57-4.57c0-2.52,2.05-4.57,4.57-4.57c2.52,0,4.57,2.05,4.57,4.57 + C124.97,38.71,122.92,40.76,120.4,40.76z M120.4,32.15c-2.23,0-4.04,1.81-4.04,4.04c0,2.23,1.81,4.04,4.04,4.04 + c2.23,0,4.04-1.81,4.04-4.04C124.45,33.97,122.63,32.15,120.4,32.15z"/> + </g> + <path class="st8" d="M123.25,35.93h-2.58V33.1c0-0.14-0.12-0.26-0.26-0.26c-0.14,0-0.26,0.12-0.26,0.26v3.1 + c0,0.14,0.12,0.26,0.26,0.26h2.85c0.14,0,0.26-0.12,0.26-0.26S123.39,35.93,123.25,35.93z"/> + </g> + <g> + <g> + <g> + <g> + <rect x="130.27" y="69.21" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="131.43" y="69.21" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="129.02" y="88.36" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="132.02" y="88.36" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="129.51" y="87.83" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="131.6" y="87.83" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M130.68,70.18c0-0.54-0.43-0.97-0.97-0.97s-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + S130.68,70.72,130.68,70.18z"/> + <rect x="129.71" y="69.21" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="131.79" y="69.21" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M134.13,70.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C133.69,71.15,134.13,70.72,134.13,70.18z"/> + </g> + </g> + </g> + <g> + <g> + <g> + <rect x="107.33" y="69.21" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="108.49" y="69.21" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="106.07" y="88.36" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="109.08" y="88.36" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="106.57" y="87.83" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="108.66" y="87.83" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M107.74,70.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C107.3,71.15,107.74,70.72,107.74,70.18z"/> + <rect x="106.77" y="69.21" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="108.84" y="69.21" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M111.19,70.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C110.75,71.15,111.19,70.72,111.19,70.18z"/> + </g> + </g> + </g> + </g> + <g> + <g> + <g> + <g> + <rect x="130.27" y="47.12" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="131.43" y="47.12" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="129.02" y="66.26" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="132.02" y="66.26" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="129.51" y="65.74" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="131.6" y="65.74" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M130.68,48.09c0-0.54-0.43-0.97-0.97-0.97s-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + S130.68,48.62,130.68,48.09z"/> + <rect x="129.71" y="47.12" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="131.79" y="47.12" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M134.13,48.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C133.69,49.06,134.13,48.62,134.13,48.09z"/> + </g> + </g> + </g> + <g> + <g> + <g> + <rect x="107.33" y="47.12" class="st9" width="2.33" height="19.15"/> + </g> + <g> + <rect x="108.49" y="47.12" class="st2" width="1.16" height="19.15"/> + </g> + <rect x="106.07" y="66.26" class="st9" width="4.84" height="1.28"/> + <g> + <rect x="109.08" y="66.26" class="st9" width="1.84" height="1.28"/> + </g> + <rect x="106.57" y="65.74" class="st9" width="3.85" height="0.79"/> + <g> + <rect x="108.66" y="65.74" class="st9" width="1.76" height="0.79"/> + </g> + <path class="st9" d="M107.74,48.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C107.3,49.06,107.74,48.62,107.74,48.09z"/> + <rect x="106.77" y="47.12" class="st9" width="3.45" height="0.65"/> + <g> + <rect x="108.84" y="47.12" class="st9" width="1.37" height="0.65"/> + </g> + <g> + <path class="st9" d="M111.19,48.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C110.75,49.06,111.19,48.62,111.19,48.09z"/> + </g> + </g> + </g> + </g> + <rect x="105.2" y="66.5" class="st9" width="29.54" height="2.71"/> + <rect x="105.2" y="67.85" class="st2" width="29.54" height="1.36"/> + <polygon class="st7" points="123.58,17.77 124.68,17.46 124.68,13.57 123.58,13.88 "/> + <polygon class="st7" points="122.24,15.54 122.24,16.64 126.03,15.8 126.03,14.7 "/> +</g> +<rect x="26" y="97.5" class="st5" width="189" height="11"/> +<rect x="26" y="131.5" class="st5" width="189" height="11"/> +<g> + <g> + <rect x="3.87" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="14.88" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="25.9" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="36.92" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="47.93" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="58.95" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="69.97" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="80.99" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="92" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="102.6" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="112.86" y="111.7" class="st10" width="3.29" height="16.56"/> + </g> + <g> + <rect y="123.46" class="st11" width="120" height="1.33"/> + <rect y="115.18" class="st11" width="120" height="1.33"/> + </g> +</g> +<g> + <g> + <rect x="123.87" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="134.88" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="145.9" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="156.92" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="167.93" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="178.95" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="189.97" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="200.99" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="212" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="222.6" y="111.7" class="st10" width="3.29" height="16.56"/> + <rect x="232.86" y="111.7" class="st10" width="3.29" height="16.56"/> + </g> + <g> + <rect x="120" y="123.46" class="st11" width="120" height="1.33"/> + <rect x="120" y="115.18" class="st11" width="120" height="1.33"/> + </g> +</g> +</svg> diff --git a/svg/Bahnhof_#d50000_Gleis_vertikal.svg b/svg/Bahnhof_#d50000_Gleis_vertikal.svg new file mode 100644 index 0000000000000000000000000000000000000000..6746ae5b062d5e8cc5f739c74f1adca400ed3472 --- /dev/null +++ b/svg/Bahnhof_#d50000_Gleis_vertikal.svg @@ -0,0 +1,286 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 240 240" style="enable-background:new 0 0 240 240;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#D9D9D9;} + .st2{fill:#978679;} + .st3{fill:#3D3D3D;} + .st4{fill:#FFFFFF;} + .st5{fill:#D50000;} + .st6{fill:#858B8A;} + .st7{fill:#E20613;} + .st8{fill:#ECECEC;} + .st9{fill:#585858;} + .st10{fill:#1D1D1B;} + .st11{fill:#9EA5A3;} +</style> +<g> + <rect class="st0" width="240" height="240"/> +</g> +<rect x="110" y="182.5" transform="matrix(1.143782e-06 1 -1 1.143782e-06 324.9999 50.9997)" class="st1" width="54" height="11"/> +<rect x="76" y="182.5" transform="matrix(1.143782e-06 1 -1 1.143782e-06 291 84.9997)" class="st1" width="54" height="11"/> +<g> + <g> + <rect x="111.74" y="3.87" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="14.88" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="25.9" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="36.92" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="47.93" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="58.95" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="69.97" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="80.99" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="92" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="102.6" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="112.86" class="st2" width="16.56" height="3.29"/> + </g> + <g> + <rect x="115.21" y="0" class="st3" width="1.33" height="120"/> + <rect x="123.5" y="0" class="st3" width="1.33" height="120"/> + </g> +</g> +<g> + <g> + <rect x="111.74" y="123.87" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="134.88" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="145.9" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="156.92" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="167.93" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="178.95" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="189.97" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="200.99" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="212" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="222.6" class="st2" width="16.56" height="3.29"/> + <rect x="111.74" y="232.86" class="st2" width="16.56" height="3.29"/> + </g> + <g> + <rect x="115.21" y="120" class="st3" width="1.33" height="120"/> + <rect x="123.5" y="120" class="st3" width="1.33" height="120"/> + </g> +</g> +<rect x="61" y="69" class="st4" width="118" height="92"/> +<g> + <g> + <polygon class="st5" points="145.31,119.74 145.31,113.78 145.31,108.54 109.08,108.54 94.79,108.54 94.79,119.74 70.39,119.74 + 70.39,152.5 94.79,152.5 109.08,152.5 120.25,152.5 145.31,152.5 169.7,152.5 169.7,119.74 "/> + <polygon class="st5" points="148.51,105.94 120.17,88.74 92.3,105.93 92.3,107.66 148.51,107.66 "/> + </g> + <g> + <polygon class="st0" points="92.3,105.93 92.3,107.66 148.51,107.66 148.51,105.94 120.17,88.74 "/> + <path class="st6" d="M120.16,85.96l-29.49,18.19v5.91h59.46v-5.91L120.16,85.96z M148.51,107.66H92.3v-1.73l27.87-17.19 + l28.34,17.2V107.66z"/> + </g> + <polygon class="st7" points="120.44,82.35 127.82,80.62 127.82,74.99 120.44,76.73 "/> + <rect x="119.68" y="76.72" class="st6" width="0.75" height="11.5"/> + <rect x="69.12" y="115.82" class="st6" width="101.86" height="3.92"/> + <rect x="69.12" y="152.5" class="st6" width="101.86" height="2"/> + <g> + <rect x="113.11" y="115.5" class="st8" width="13.82" height="10.5"/> + <polygon class="st1" points="126.93,125.99 116.03,125.99 121.48,115.5 126.93,115.5 "/> + <rect x="113.11" y="125.99" class="st9" width="13.82" height="0.69"/> + </g> + <rect x="98.12" y="115.84" class="st8" width="6.79" height="10.5"/> + <polygon class="st1" points="104.9,126.34 99.55,126.34 102.23,115.84 104.9,115.84 "/> + <rect x="98.12" y="126.34" class="st9" width="6.79" height="0.69"/> + <rect x="135.19" y="115.84" class="st8" width="6.79" height="10.5"/> + <polygon class="st1" points="141.98,126.34 136.63,126.34 139.3,115.84 141.98,115.84 "/> + <rect x="135.19" y="126.34" class="st9" width="6.79" height="0.69"/> + <rect x="98.12" y="131.26" class="st8" width="6.79" height="10.5"/> + <polygon class="st1" points="104.9,141.76 99.55,141.76 102.23,131.26 104.9,131.26 "/> + <rect x="98.12" y="141.76" class="st9" width="6.79" height="0.69"/> + <rect x="135.19" y="131.26" class="st8" width="6.79" height="10.5"/> + <polygon class="st1" points="141.98,141.76 136.63,141.76 139.3,131.26 141.98,131.26 "/> + <rect x="135.19" y="141.76" class="st9" width="6.79" height="0.69"/> + <g> + <g> + <rect x="112.42" y="136.93" class="st8" width="15.06" height="14.59"/> + <polygon class="st1" points="127.48,151.52 115.61,151.52 121.55,136.93 127.48,136.93 "/> + </g> + <rect x="112.42" y="151.52" class="st9" width="15.06" height="0.95"/> + <rect x="112.42" y="136.12" class="st9" width="15.06" height="0.81"/> + + <rect x="119.45" y="144.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 271.9261 16.666)" class="st9" width="16.35" height="0.3"/> + + <rect x="104.12" y="144.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 256.593 31.9991)" class="st9" width="16.35" height="0.3"/> + + <rect x="111.92" y="144.15" transform="matrix(-1.836970e-16 1 -1 -1.836970e-16 264.3965 24.1956)" class="st9" width="16.35" height="0.3"/> + <g> + <rect x="118.29" y="144.62" class="st9" width="0.93" height="0.55"/> + <rect x="120.98" y="144.62" class="st9" width="0.93" height="0.55"/> + </g> + </g> + <rect x="149.03" y="147.91" class="st9" width="6.79" height="0.69"/> + <rect x="84.38" y="121.99" class="st8" width="6.79" height="10.5"/> + <polygon class="st1" points="91.16,132.49 85.81,132.49 88.49,121.99 91.16,121.99 "/> + <rect x="84.38" y="132.49" class="st9" width="6.79" height="0.69"/> + <rect x="84.38" y="137.41" class="st8" width="6.79" height="10.5"/> + <polygon class="st1" points="91.16,147.91 85.81,147.91 88.49,137.41 91.16,137.41 "/> + <rect x="84.38" y="147.91" class="st9" width="6.79" height="0.69"/> + <rect x="74.62" y="121.99" class="st8" width="6.79" height="10.5"/> + <polygon class="st1" points="81.41,132.49 76.06,132.49 78.74,121.99 81.41,121.99 "/> + <rect x="74.62" y="132.49" class="st9" width="6.79" height="0.69"/> + <rect x="74.62" y="137.41" class="st8" width="6.79" height="10.5"/> + <polygon class="st1" points="81.41,147.91 76.06,147.91 78.74,137.41 81.41,137.41 "/> + <rect x="74.62" y="147.91" class="st9" width="6.79" height="0.69"/> + <rect x="158.78" y="121.99" class="st8" width="6.79" height="10.5"/> + <polygon class="st1" points="165.57,132.49 160.22,132.49 162.89,121.99 165.57,121.99 "/> + <rect x="158.78" y="132.49" class="st9" width="6.79" height="0.69"/> + <rect x="158.78" y="137.41" class="st8" width="6.79" height="10.5"/> + <polygon class="st1" points="165.57,147.91 160.22,147.91 162.89,137.41 165.57,137.41 "/> + <rect x="158.78" y="147.91" class="st9" width="6.79" height="0.69"/> + <rect x="149.03" y="121.99" class="st8" width="6.79" height="10.5"/> + <polygon class="st1" points="155.81,132.49 150.46,132.49 153.14,121.99 155.81,121.99 "/> + <rect x="149.03" y="137.41" class="st8" width="6.79" height="10.5"/> + <polygon class="st1" points="155.81,147.91 150.46,147.91 153.14,137.41 155.81,137.41 "/> + <rect x="149.03" y="132.49" class="st9" width="6.79" height="0.69"/> + <g> + <rect x="113.11" y="119.04" class="st9" width="13.82" height="0.69"/> + </g> + <rect x="98.12" y="119.39" class="st9" width="6.79" height="0.69"/> + <rect x="135.19" y="119.39" class="st9" width="6.79" height="0.69"/> + <rect x="98.12" y="134.81" class="st9" width="6.79" height="0.69"/> + <rect x="135.19" y="134.81" class="st9" width="6.79" height="0.69"/> + <rect x="149.03" y="140.96" class="st9" width="6.79" height="0.69"/> + <rect x="84.38" y="125.54" class="st9" width="6.79" height="0.69"/> + <rect x="84.38" y="140.96" class="st9" width="6.79" height="0.69"/> + <rect x="74.62" y="125.54" class="st9" width="6.79" height="0.69"/> + <rect x="74.62" y="140.96" class="st9" width="6.79" height="0.69"/> + <rect x="158.78" y="125.54" class="st9" width="6.79" height="0.69"/> + <rect x="158.78" y="140.96" class="st9" width="6.79" height="0.69"/> + <rect x="149.03" y="125.54" class="st9" width="6.79" height="0.69"/> + <g> + <path class="st4" d="M125.54,99.19c0-2.84-2.3-5.14-5.14-5.14c-2.84,0-5.14,2.3-5.14,5.14c0,2.84,2.3,5.14,5.14,5.14 + C123.24,104.34,125.54,102.03,125.54,99.19z"/> + <g> + <path class="st10" d="M120.4,103.76c-2.52,0-4.57-2.05-4.57-4.57c0-2.52,2.05-4.57,4.57-4.57c2.52,0,4.57,2.05,4.57,4.57 + C124.97,101.71,122.92,103.76,120.4,103.76z M120.4,95.15c-2.23,0-4.04,1.81-4.04,4.04c0,2.23,1.81,4.04,4.04,4.04 + c2.23,0,4.04-1.81,4.04-4.04C124.45,96.97,122.63,95.15,120.4,95.15z"/> + </g> + <path class="st10" d="M123.25,98.93h-2.58V96.1c0-0.14-0.12-0.26-0.26-0.26c-0.14,0-0.26,0.12-0.26,0.26v3.1 + c0,0.14,0.12,0.26,0.26,0.26h2.85c0.14,0,0.26-0.12,0.26-0.26C123.51,99.05,123.39,98.93,123.25,98.93z"/> + </g> + <g> + <g> + <g> + <g> + <rect x="130.27" y="132.21" class="st11" width="2.33" height="19.15"/> + </g> + <g> + <rect x="131.43" y="132.21" class="st6" width="1.16" height="19.15"/> + </g> + <rect x="129.02" y="151.36" class="st11" width="4.84" height="1.28"/> + <g> + <rect x="132.02" y="151.36" class="st11" width="1.84" height="1.28"/> + </g> + <rect x="129.51" y="150.83" class="st11" width="3.85" height="0.79"/> + <g> + <rect x="131.6" y="150.83" class="st11" width="1.76" height="0.79"/> + </g> + <path class="st11" d="M130.68,133.18c0-0.54-0.43-0.97-0.97-0.97s-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + S130.68,133.72,130.68,133.18z"/> + <rect x="129.71" y="132.21" class="st11" width="3.45" height="0.65"/> + <g> + <rect x="131.79" y="132.21" class="st11" width="1.37" height="0.65"/> + </g> + <g> + <path class="st11" d="M134.13,133.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C133.69,134.15,134.13,133.72,134.13,133.18z"/> + </g> + </g> + </g> + <g> + <g> + <g> + <rect x="107.33" y="132.21" class="st11" width="2.33" height="19.15"/> + </g> + <g> + <rect x="108.49" y="132.21" class="st6" width="1.16" height="19.15"/> + </g> + <rect x="106.07" y="151.36" class="st11" width="4.84" height="1.28"/> + <g> + <rect x="109.08" y="151.36" class="st11" width="1.84" height="1.28"/> + </g> + <rect x="106.57" y="150.83" class="st11" width="3.85" height="0.79"/> + <g> + <rect x="108.66" y="150.83" class="st11" width="1.76" height="0.79"/> + </g> + <path class="st11" d="M107.74,133.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C107.3,134.15,107.74,133.72,107.74,133.18z"/> + <rect x="106.77" y="132.21" class="st11" width="3.45" height="0.65"/> + <g> + <rect x="108.84" y="132.21" class="st11" width="1.37" height="0.65"/> + </g> + <g> + <path class="st11" d="M111.19,133.18c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C110.75,134.15,111.19,133.72,111.19,133.18z"/> + </g> + </g> + </g> + </g> + <g> + <g> + <g> + <g> + <rect x="130.27" y="110.12" class="st11" width="2.33" height="19.15"/> + </g> + <g> + <rect x="131.43" y="110.12" class="st6" width="1.16" height="19.15"/> + </g> + <rect x="129.02" y="129.26" class="st11" width="4.84" height="1.28"/> + <g> + <rect x="132.02" y="129.26" class="st11" width="1.84" height="1.28"/> + </g> + <rect x="129.51" y="128.74" class="st11" width="3.85" height="0.79"/> + <g> + <rect x="131.6" y="128.74" class="st11" width="1.76" height="0.79"/> + </g> + <path class="st11" d="M130.68,111.09c0-0.54-0.43-0.97-0.97-0.97s-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + S130.68,111.62,130.68,111.09z"/> + <rect x="129.71" y="110.12" class="st11" width="3.45" height="0.65"/> + <g> + <rect x="131.79" y="110.12" class="st11" width="1.37" height="0.65"/> + </g> + <g> + <path class="st11" d="M134.13,111.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C133.69,112.06,134.13,111.62,134.13,111.09z"/> + </g> + </g> + </g> + <g> + <g> + <g> + <rect x="107.33" y="110.12" class="st11" width="2.33" height="19.15"/> + </g> + <g> + <rect x="108.49" y="110.12" class="st6" width="1.16" height="19.15"/> + </g> + <rect x="106.07" y="129.26" class="st11" width="4.84" height="1.28"/> + <g> + <rect x="109.08" y="129.26" class="st11" width="1.84" height="1.28"/> + </g> + <rect x="106.57" y="128.74" class="st11" width="3.85" height="0.79"/> + <g> + <rect x="108.66" y="128.74" class="st11" width="1.76" height="0.79"/> + </g> + <path class="st11" d="M107.74,111.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C107.3,112.06,107.74,111.62,107.74,111.09z"/> + <rect x="106.77" y="110.12" class="st11" width="3.45" height="0.65"/> + <g> + <rect x="108.84" y="110.12" class="st11" width="1.37" height="0.65"/> + </g> + <g> + <path class="st11" d="M111.19,111.09c0-0.54-0.43-0.97-0.97-0.97c-0.54,0-0.97,0.43-0.97,0.97c0,0.54,0.43,0.97,0.97,0.97 + C110.75,112.06,111.19,111.62,111.19,111.09z"/> + </g> + </g> + </g> + </g> + <rect x="105.2" y="129.5" class="st11" width="29.54" height="2.71"/> + <rect x="105.2" y="130.85" class="st6" width="29.54" height="1.36"/> + <polygon class="st4" points="123.58,80.77 124.68,80.46 124.68,76.57 123.58,76.88 "/> + <polygon class="st4" points="122.24,78.54 122.24,79.64 126.03,78.8 126.03,77.7 "/> +</g> +<rect x="110" y="47.5" transform="matrix(1.143782e-06 1 -1 1.143782e-06 189.9999 -84.0001)" class="st1" width="54" height="11"/> +<rect x="76" y="47.5" transform="matrix(1.143782e-06 1 -1 1.143782e-06 155.9999 -50.0001)" class="st1" width="54" height="11"/> +</svg> diff --git a/tests/test_player.py b/tests/test_player.py index 7b2745f2e372ca80cd2fb5cf9dcaa3db96fb910a..668afb96a502ce5c25fa1e6d6fe9383a1facbf87 100644 --- a/tests/test_player.py +++ b/tests/test_player.py @@ -1,8 +1,12 @@ -# from examples.play_model import main -from examples.tkplay import tkmain +from examples.play_model import main +# from examples.tkplay import tkmain def test_main(): - tkmain(n_trials=2) + main(render=True, n_steps=20, n_trials=2, sGL="PILSVG") + # main(render=True, n_steps=20, n_trials=2, sGL="PIL") + +if __name__ == "__main__": + test_main() diff --git a/tests/test_rendertools.py b/tests/test_rendertools.py index 8204a305328df746a772d034f3c763c848cceb93..1bfce0323322638447ed11191e7d5d9bbea565b5 100644 --- a/tests/test_rendertools.py +++ b/tests/test_rendertools.py @@ -12,6 +12,7 @@ import numpy as np import flatland.utils.rendertools as rt from flatland.envs.observations import TreeObsForRailEnv from flatland.envs.rail_env import RailEnv, random_rail_generator +from flatland.envs.generators import empty_rail_generator def checkFrozenImage(oRT, sFileImage, resave=False): @@ -39,14 +40,15 @@ def test_render_env(save_new_images=False): # random.seed(100) np.random.seed(100) oEnv = RailEnv(width=10, height=10, - rail_generator=random_rail_generator(), + # rail_generator=random_rail_generator(), + rail_generator=empty_rail_generator(), number_of_agents=0, # obs_builder_object=GlobalObsForRailEnv()) obs_builder_object=TreeObsForRailEnv(max_depth=2) ) sfTestEnv = "env-data/tests/test1.npy" oEnv.rail.load_transition_map(sfTestEnv) - oRT = rt.RenderTool(oEnv, gl="PIL", show=False) + oRT = rt.RenderTool(oEnv, gl="PILSVG", show=False) oRT.renderEnv(show=False) checkFrozenImage(oRT, "basic-env.npz", resave=save_new_images) @@ -82,6 +84,7 @@ def main(): test_render_env(save_new_images=True) else: print("Run 'python test_rendertools.py save' to regenerate images") + test_render_env() if __name__ == "__main__":