{
  "method": "Shortest continuous mapped track path between station points snapped to nearby tracks (within 15m); no edges interpolated across gaps. UTM zone 35S EPSG:32735. Horizontal length, not 3D/survey chainage. Parallel direction paths represented by a single shared distance.",
  "survey_verified": false,
  "measurement_date": "2026-10-30",
  "confidence": "medium: municipal mapped alignment; station points are not certified platform chainage marks; source survey/version date unavailable",
  "source": "https://ags.joburg.org.za/server/rest/services/Transportation/MapServer/13",
  "station_source": "https://ags.joburg.org.za/server/rest/services/Transportation/MapServer/28",
  "raw_sha256": "7cb83103074fc053ad9fe78a717fc0b3c29f6ad776f989d8b8420f3b36fee3c6",
  "station_raw_sha256": "aeb9d690f80a51c22f1b548be1b17e87052056668d8067da2d99f7b3c5189663",
  "crs": "EPSG:32735",
  "snap_tolerance_m": 15,
  "endpoint_join_tolerance_m": 0.3,
  "station_snaps": {
    "Park": [
      {
        "track": "Park_1",
        "offset_m": 6.282
      },
      {
        "track": "Park_2",
        "offset_m": 6.348
      }
    ],
    "Rosebank": [
      {
        "track": "Rosebank_2",
        "offset_m": 2.598
      },
      {
        "track": "Rosebank_1",
        "offset_m": 8.878
      }
    ],
    "Sandton": [
      {
        "track": "Sandton_2",
        "offset_m": 3.242
      },
      {
        "track": "Sandton_1",
        "offset_m": 9.283
      }
    ],
    "Marlboro": [
      {
        "track": "Marlboro_S2",
        "offset_m": 5.341
      },
      {
        "track": "Marlboro-N2",
        "offset_m": 5.486
      },
      {
        "track": "Marlboro_S1",
        "offset_m": 9.369
      },
      {
        "track": "Marlboro_N1",
        "offset_m": 9.6
      }
    ],
    "Rhodesfield": [
      {
        "track": "Rhodesfield-1",
        "offset_m": 4.242
      },
      {
        "track": "Rhodesfield-2",
        "offset_m": 8.139
      }
    ],
    "OR Tambo Int Airport": [
      {
        "track": "ORTIA-1",
        "offset_m": 2.411
      },
      {
        "track": "OTRIA-2",
        "offset_m": 6.644
      }
    ],
    "Midrand": [
      {
        "track": "Midrand-2",
        "offset_m": 4.236
      },
      {
        "track": "Midrand-1",
        "offset_m": 8.098
      }
    ],
    "Centurion": [
      {
        "track": "Centurion-2",
        "offset_m": 3.767
      },
      {
        "track": "Centurion-1",
        "offset_m": 7.735
      }
    ],
    "Pretoria": [
      {
        "track": "Pretoria-2",
        "offset_m": 5.721
      },
      {
        "track": "Pretoria-1",
        "offset_m": 6.18
      }
    ],
    "Hatfield": [
      {
        "track": "Hatfield-1",
        "offset_m": 6.043
      },
      {
        "track": "Hatfield-2",
        "offset_m": 6.37
      }
    ]
  },
  "station_lonlat": {
    "Park": [
      28.042122946427966,
      -26.194806320711443
    ],
    "Rosebank": [
      28.04415364267947,
      -26.145155259619518
    ],
    "Sandton": [
      28.056883706577025,
      -26.108317224462184
    ],
    "Marlboro": [
      28.111650570435256,
      -26.08334987869529
    ],
    "Rhodesfield": [
      28.224612720743835,
      -26.127226380684046
    ],
    "OR Tambo Int Airport": [
      28.230913480089725,
      -26.1321010883447
    ],
    "Midrand": [
      28.135473859842257,
      -25.995719444657418
    ],
    "Centurion": [
      28.18967995351035,
      -25.851858466334974
    ],
    "Pretoria": [
      28.19042805234865,
      -25.75948382247577
    ],
    "Hatfield": [
      28.2378373429637,
      -25.747787536098258
    ]
  },
  "segments": [
    {
      "from": "Park",
      "to": "Rosebank",
      "km": 5.717495,
      "object_ids": [
        13,
        16,
        17
      ],
      "tracks": [
        "Park_1",
        "Park_Rosebank",
        "Rosebank_1"
      ]
    },
    {
      "from": "Rosebank",
      "to": "Sandton",
      "km": 4.508654,
      "object_ids": [
        18,
        19,
        21,
        22
      ],
      "tracks": [
        "Rosebank_2",
        "Rosebank_Sandton",
        "Sandton_4",
        "Sandton_1"
      ]
    },
    {
      "from": "Sandton",
      "to": "Marlboro",
      "km": 6.204399,
      "object_ids": [
        23,
        26,
        28,
        30,
        4,
        11
      ],
      "tracks": [
        "Sandton_2",
        "Sandton_Portal-2",
        "Sandton_Portal_turnout-3",
        "Sandton_Portal-4",
        "Portal_Marlboro-4",
        "Marlboro_S1"
      ]
    },
    {
      "from": "Marlboro",
      "to": "Midrand",
      "km": 10.689887,
      "object_ids": [
        6,
        48,
        51,
        52,
        55,
        58,
        59,
        62
      ],
      "tracks": [
        "Marlboro_N1",
        "Marlboro_Midrand-1",
        "Marlboro_Midrand-3",
        "Marlboro_Midrand-5",
        "Marlboro_Midrand_Turnout Depot N-2",
        "Marlboro_Midrand-turnout Depot N-3",
        "Marlboro_Midrand-8",
        "Midrand-2"
      ]
    },
    {
      "from": "Midrand",
      "to": "Centurion",
      "km": 17.932505,
      "object_ids": [
        62,
        65,
        68,
        69,
        70,
        73
      ],
      "tracks": [
        "Midrand-2",
        "Midrand_Samrand-2",
        "Samrand-2",
        "Samrand_Turnout N",
        "Samrand_Centurion-1",
        "Centurion-1"
      ]
    },
    {
      "from": "Centurion",
      "to": "Pretoria",
      "km": 10.888238,
      "object_ids": [
        73,
        76,
        79,
        80
      ],
      "tracks": [
        "Centurion-1",
        "Centurion_Pretoria-1",
        "Centurion_Pretoria-3",
        "Pretoria-1"
      ]
    },
    {
      "from": "Pretoria",
      "to": "Hatfield",
      "km": 5.691493,
      "object_ids": [
        85,
        86,
        89
      ],
      "tracks": [
        "Pretoria-2",
        "Pretoria_Hatfield-1",
        "Hatfield-1"
      ]
    },
    {
      "from": "Sandton",
      "to": "Marlboro",
      "km": 6.204399,
      "object_ids": [
        23,
        26,
        28,
        30,
        4,
        11
      ],
      "tracks": [
        "Sandton_2",
        "Sandton_Portal-2",
        "Sandton_Portal_turnout-3",
        "Sandton_Portal-4",
        "Portal_Marlboro-4",
        "Marlboro_S1"
      ]
    },
    {
      "from": "Marlboro",
      "to": "Rhodesfield",
      "km": 12.732431,
      "object_ids": [
        10,
        32,
        35,
        36,
        38,
        40
      ],
      "tracks": [
        "Marlboro_S2",
        "Marlboro_Modderfontein-1",
        "Modderfontein-1",
        "Modderfontein_Turnout-2",
        "Modderfontein_Rhodesfield-2",
        "Rhodesfield-2"
      ]
    },
    {
      "from": "Rhodesfield",
      "to": "OR Tambo Int Airport",
      "km": 0.90167,
      "object_ids": [
        41,
        43,
        47
      ],
      "tracks": [
        "Rhodesfield-1",
        "Rhodesfield_ORTIA-1",
        "ORTIA-1"
      ]
    }
  ]
}