<?xml version="1.0" encoding="UTF-8"?>
<!--
  S-Bahn München Network Map Data
  Extracted from Netzplan_S-Bahn_München.svg (Stand: Dezember 2024)
  CC-BY-SA Zeno Heilmaier

  Coordinate system: SVG viewBox 0 0 2400 1280
  x/y = center of station marker circle (or midpoint between circles for multi-circle stations)
  Diagonal X-marker stations: midpoint of the two crossing points
  Each station listed once only, under its first-occurring line (S1 first, then S2…S8, S20)
-->
<map>

  <!-- ══════════════════════════════════════════
       STAMMSTRECKE  (central tunnel)
       Shared by S1 S2 S3 S4 S6 S7 S8 S20
  ══════════════════════════════════════════ -->
  <line name="Stammstrecke" color="None">
    <station x="735"  y="675" lines="[S1,S2,S3,S4,S6,S8,S20]">Pasing</station>
    <station x="825"  y="675" lines="[S1,S2,S3,S4,S6,S8]">Laim</station>
    <station x="915"  y="675" lines="[S1,S2,S3,S4,S6,S7,S8]">Donnersbergerbrücke</station>
    <station x="1005" y="675" lines="[S1,S2,S3,S4,S6,S7,S8]">Hackerbrücke</station>
    <station x="1095" y="675" lines="[S1,S2,S3,S4,S6,S7,S8]">Hauptbahnhof</station>
    <station x="1185" y="675" lines="[S1,S2,S3,S4,S6,S7,S8]">Karlsplatz (Stachus)</station>
    <station x="1275" y="675" lines="[S1,S2,S3,S4,S6,S7,S8]">Marienplatz</station>
    <station x="1365" y="675" lines="[S1,S2,S3,S4,S6,S7,S8]">Isartor</station>
    <station x="1455" y="675" lines="[S1,S2,S3,S4,S6,S7,S8]">Rosenheimer Platz</station>
    <station x="1545" y="675" lines="[S1,S2,S3,S4,S6,S7,S8]">Ostbahnhof</station>
  </line>

  <!-- ══════════════════════════════════════════
       S1  Freising / Flughafen München – Erding
       Color: #16bae7
  ══════════════════════════════════════════ -->
  <line name="S1" color="#16bae7">
    <station x="1725" y="150" lines="[S1]">Freising</station>
    <station x="1725" y="225" lines="[S1,S8]">Pulling</station>
    <!-- Airport branch -->
    <station x="1820" y="285" lines="[S1]">Flughafen Besucherpark</station>
    <station x="1885" y="220" lines="[S1,S8]">Flughafen München</station>
    <!-- Shared S1/S8 section south of airport -->
    <station x="1620" y="300" lines="[S1,S8]">Neufahrn</station>
    <station x="1470" y="300" lines="[S1,S8]">Eching</station>
    <station x="1320" y="300" lines="[S1,S8]">Lohhof</station>
    <station x="1020" y="300" lines="[S1,S8]">Oberschleißheim</station>
    <station x="1170" y="300" lines="[S1,S8]">Unterschleißheim</station>
    <!-- East of Ostbahnhof -->
    <station x="1725" y="675" lines="[S1,S2,S3,S4,S6]">Leuchtenbergring</station>
    <station x="1815" y="675" lines="[S1,S2,S4]">Berg am Laim</station>
    <station x="1905" y="615" lines="[S1,S2]">Riem</station>
    <station x="1940" y="580" lines="[S1,S2]">Feldkirchen</station>
    <station x="1975" y="545" lines="[S1,S2]">Heimstetten</station>
    <station x="2010" y="510" lines="[S1,S2]">Grub</station>
    <station x="2045" y="475" lines="[S1,S2]">Poing</station>
    <station x="2080" y="440" lines="[S1,S2]">Markt Schwaben</station>
    <station x="2090" y="395" lines="[S1]">Ottenhofen</station>
    <station x="2090" y="350" lines="[S1]">St. Koloman</station>
    <station x="2090" y="305" lines="[S1]">Aufhausen</station>
    <station x="2090" y="260" lines="[S1]">Altenerding</station>
    <station x="2090" y="215" lines="[S1]">Erding</station>
  </line>

  <!-- ══════════════════════════════════════════
       S2  Petershausen / Altomünster – Erding
       Color: #76b82a
  ══════════════════════════════════════════ -->
  <line name="S2" color="#76b82a">
    <!-- NW branch: Petershausen -->
    <station x="675" y="75"  lines="[S2]">Petershausen</station>
    <station x="675" y="125" lines="[S2]">Vierkirchen-Esterhofen</station>
    <station x="675" y="175" lines="[S2]">Röhrmoos</station>
    <station x="675" y="225" lines="[S2]">Hebertshausen</station>
    <station x="675" y="325" lines="[S2,S3]">Dachau</station>
    <station x="675" y="375" lines="[S2,S3]">Karlsfeld</station>
    <station x="675" y="425" lines="[S2,S3]">Allach</station>
    <station x="675" y="475" lines="[S2,S3]">Untermenzing</station>
    <station x="695" y="541" lines="[S2,S3]">Obermenzing</station>
    <station x="795" y="480" lines="[S2,S3]">Moosach</station>
    <station x="870" y="405" lines="[S2,S3]">Fasanerie</station>
    <station x="945" y="330" lines="[S2,S3]">Feldmoching</station>
    <!-- NE branch: Altomünster -->
    <station x="275" y="75"  lines="[S2]">Altomünster</station>
    <station x="350" y="75"  lines="[S2]">Kleinberghofen</station>
    <station x="425" y="75"  lines="[S2]">Erdweg</station>
    <station x="475" y="100" lines="[S2]">Arnbach</station>
    <station x="510" y="135" lines="[S2]">Markt Indersdorf</station>
    <station x="545" y="170" lines="[S2]">Niederroth</station>
    <station x="580" y="205" lines="[S2]">Schwabhausen</station>
    <station x="615" y="240" lines="[S2]">Bachern</station>
    <station x="650" y="275" lines="[S2]">Dachau Stadt</station>
  </line>

  <!-- ══════════════════════════════════════════
       S3  Mammendorf – Holzkirchen
       Color: #ea516d
  ══════════════════════════════════════════ -->
  <line name="S3" color="#ea516d">
    <station x="350" y="335" lines="[S3]">Mammendorf</station>
    <station x="385" y="370" lines="[S3]">Malching</station>
    <station x="420" y="405" lines="[S3]">Maisach</station>
    <station x="455" y="440" lines="[S3]">Gernlinden</station>
    <station x="490" y="475" lines="[S3]">Esting</station>
    <station x="525" y="510" lines="[S3]">Olching</station>
    <station x="560" y="545" lines="[S3]">Gröbenzell</station>
    <station x="595" y="580" lines="[S3]">Lochhausen</station>
    <station x="630" y="615" lines="[S3,S4,S6,S8]">Langwied</station>
    <!-- East via Ostbahnhof: Perlach, Giesing branch to Holzkirchen -->
    <station x="1593" y="860" lines="[S3]">Perlach</station>
    <station x="1545" y="815" lines="[S3]">St.-Martin-Straße</station>
    <station x="1545" y="850" lines="[S3]">Giesing</station>
    <station x="1520" y="871" lines="[S3]">Fasangarten</station>
    <station x="1520" y="917" lines="[S3]">Fasanenpark</station>
    <station x="1520" y="962" lines="[S3]">Unterhaching</station>
    <station x="1520" y="1008" lines="[S3]">Taufkirchen</station>
    <station x="1520" y="1053" lines="[S3]">Furth</station>
    <station x="1520" y="1099" lines="[S3]">Deisenhofen</station>
    <station x="1520" y="1144" lines="[S3]">Sauerlach</station>
    <station x="1520" y="1190" lines="[S3]">Otterﬁng</station>
    <station x="1520" y="1235" lines="[S3]">Holzkirchen</station>
  </line>

  <!-- ══════════════════════════════════════════
       S4  Geltendorf – Ebersberg
       Color: #e3051b
  ══════════════════════════════════════════ -->
  <line name="S4" color="#e3051b">
    <station x="140"  y="885" lines="[S4]">Geltendorf</station>
    <station x="175"  y="850" lines="[S4]">Türkenfeld</station>
    <station x="210"  y="815" lines="[S4]">Grafrath</station>
    <station x="245"  y="780" lines="[S4]">Schöngeising</station>
    <station x="280"  y="745" lines="[S4]">Buchenau</station>
    <station x="315"  y="710" lines="[S4]">Fürstenfeldbruck</station>
    <station x="375"  y="675" lines="[S4,S5,S6]">Eichenau</station>
    <station x="450"  y="675" lines="[S4,S5,S6]">Puchheim</station>
    <station x="525"  y="675" lines="[S4,S5,S6]">Aubing</station>
    <station x="600"  y="675" lines="[S4,S5,S6]">Leienfelsstraße</station>
    <!-- East: Trudering → Ebersberg (shared with S6) -->
    <station x="1905" y="682" lines="[S4,S6]">Trudering</station>
    <station x="1970" y="700" lines="[S4,S6]">Gronsdorf</station>
    <station x="2000" y="730" lines="[S4,S6]">Haar</station>
    <station x="2030" y="760" lines="[S4,S6]">Vaterstetten</station>
    <station x="2060" y="790" lines="[S4,S6]">Baldham</station>
    <station x="2090" y="820" lines="[S4,S6]">Zorneding</station>
    <station x="2120" y="850" lines="[S4,S6]">Eglharting</station>
    <station x="2150" y="880" lines="[S4,S6]">Kirchseeon</station>
    <station x="2180" y="910" lines="[S4,S6]">Graﬁng Bahnhof</station>
    <station x="2210" y="940" lines="[S4]">Graﬁng Stadt</station>
    <station x="2240" y="970" lines="[S4]">Ebersberg</station>
  </line>

  <!-- ══════════════════════════════════════════
       S5  Herrsching – Kreuzstraße
       Color: #00547e
  ══════════════════════════════════════════ -->
  <line name="S5" color="#00547e">
    <station x="250" y="1120" lines="[S5]">Herrsching</station>
    <station x="285" y="1085" lines="[S5]">Seefeld-Hechendorf</station>
    <station x="320" y="1050" lines="[S5]">Steinebach</station>
    <station x="340" y="1020" lines="[S5]">Weßling</station>
    <station x="375" y="985"  lines="[S5]">Neugilching</station>
    <station x="410" y="950"  lines="[S5]">Gilching-Argelsried</station>
    <station x="445" y="915"  lines="[S5]">Geisenbrunn</station>
    <station x="470" y="875"  lines="[S5]">Germering-Unterpfaﬀenhofen</station>
    <station x="480" y="880"  lines="[S5]">Harthaus</station>
    <station x="515" y="845"  lines="[S5]">Freiham</station>
    <station x="550" y="810"  lines="[S5]">Neuaubing</station>
    <station x="590" y="770"  lines="[S5,S6,S8]">Westkreuz</station>
    <!-- East: Neuperlach Süd → Kreuzstraße -->
    <station x="1645" y="890"  lines="[S5]">Neuperlach Süd</station>
    <station x="1645" y="925"  lines="[S5]">Neubiberg</station>
    <station x="1645" y="960"  lines="[S5]">Ottobrunn</station>
    <station x="1645" y="995"  lines="[S5]">Hohenbrunn</station>
    <station x="1645" y="1030" lines="[S5]">Wächterhof</station>
    <station x="1645" y="1065" lines="[S5]">Höhenkirchen-Siegertsbrunn</station>
    <station x="1645" y="1100" lines="[S5]">Dürrnhaar</station>
    <station x="1645" y="1135" lines="[S5]">Aying</station>
    <station x="1645" y="1165" lines="[S5]">Peiß</station>
    <station x="1645" y="1200" lines="[S5]">Großhelfendorf</station>
    <station x="1645" y="1235" lines="[S5]">Kreuzstraße</station>
  </line>

  <!-- ══════════════════════════════════════════
       S6  Tutzing – Ebersberg
       Color: #008d58
  ══════════════════════════════════════════ -->
  <line name="S6" color="#008d58">
    <station x="635" y="1235" lines="[S6]">Tutzing</station>
    <station x="635" y="1184" lines="[S6]">Feldaﬁng</station>
    <station x="635" y="1134" lines="[S6]">Possenhofen</station>
    <station x="635" y="1083" lines="[S6]">Starnberg</station>
    <station x="635" y="1033" lines="[S6]">Starnberg Nord</station>
    <station x="635" y="982"  lines="[S6]">Gauting</station>
    <station x="635" y="932"  lines="[S6]">Stockdorf</station>
    <station x="635" y="881"  lines="[S6]">Planegg</station>
    <station x="635" y="831"  lines="[S6]">Gräfelﬁng</station>
    <station x="635" y="780"  lines="[S6]">Lochham</station>
    <!-- East stations shared with S4 – listed under S4 -->
  </line>

  <!-- ══════════════════════════════════════════
       S7  Wolfratshausen – Ostbahnhof
       Color: #892e23
  ══════════════════════════════════════════ -->
  <line name="S7" color="#892e23">
    <station x="965" y="1235" lines="[S7]">Wolfratshausen</station>
    <station x="965" y="1200" lines="[S7]">Icking</station>
    <station x="965" y="1165" lines="[S7]">Ebenhausen-Schäftlarn</station>
    <station x="965" y="1130" lines="[S7]">Hohenschäftlarn</station>
    <station x="965" y="1095" lines="[S7]">Baierbrunn</station>
    <station x="965" y="1060" lines="[S7]">Buchenhain</station>
    <station x="965" y="1025" lines="[S7,S20]">Höllriegelskreuth</station>
    <station x="965" y="990"  lines="[S7]">Pullach</station>
    <station x="965" y="955"  lines="[S7]">Großhesselohe Isartalbahnhof</station>
    <station x="965" y="920"  lines="[S7]">Solln</station>
    <station x="965" y="885"  lines="[S7]">Siemenswerke</station>
    <station x="965" y="850"  lines="[S7]">Mittersendling</station>
    <station x="965" y="815"  lines="[S7]">Harras</station>
    <station x="965" y="780"  lines="[S7,S20]">Heimeranplatz</station>
  </line>

  <!-- ══════════════════════════════════════════
       S8  Herrsching – Flughafen München
       Color: #f0ac32
       (Herrsching–Westkreuz shared with S5; Stammstrecke shared;
        Berg am Laim–Daglfing diverges northeast to airport)
  ══════════════════════════════════════════ -->
  <line name="S8" color="#f0ac32">
    <station x="1815" y="600" lines="[S8]">Daglfing</station>
    <station x="1815" y="550" lines="[S8]">Englschalking</station>
    <station x="1815" y="500" lines="[S8]">Johanneskirchen</station>
    <station x="1815" y="450" lines="[S8]">Unterföhring</station>
    <station x="1815" y="400" lines="[S8]">Ismaning</station>
    <station x="1815" y="350" lines="[S8]">Hallbergmoos</station>
    <!-- Flughafen München listed under S1 -->
  </line>

  <!-- ══════════════════════════════════════════
       S20  Pasing – Deisenhofen  (orbital, limited service)
       Color: #892e23
       Shares Stammstrecke and S7 southern stations.
       No unique-to-S20 stations beyond what is listed elsewhere.
  ══════════════════════════════════════════ -->
  <line name="S20" color="#892e23">
    <!-- All stations shared with Stammstrecke and S7; see those lines. -->
  </line>

</map>
