{
  "version": 1,
  "environment": "training-road",
  "layout": "roundabout",
  "id": "training-roundabout",
  "title": "Övningsväg – cirkulationsplats",
  "status": "Syntetisk övningsmiljö ritad för KörLabbet. Ingen verklig plats och inga anspråk på VGU-efterlevnad.",
  "sources": [
    {
      "label": "Trafikförordningen (1998:1276) 3 kap. 13 §",
      "url": "https://data.riksdagen.se/dokument/sfs-1998-1276.html",
      "license": "SFS",
      "checkedUtc": "2026-09-25",
      "note": "I en cirkulationsplats ska ett fordon föras motsols i cirkulationen runt rondellen."
    },
    {
      "label": "Trafikförordningen (1998:1276) 3 kap. 22 §",
      "url": "https://data.riksdagen.se/dokument/sfs-1998-1276.html",
      "license": "SFS",
      "checkedUtc": "2026-09-25",
      "note": "En förare som kör in i en cirkulationsplats har väjningsplikt mot varje fordon som befinner sig i cirkulationen."
    },
    {
      "label": "Trafikförordningen (1998:1276) 3 kap. 65 §",
      "url": "https://data.riksdagen.se/dokument/sfs-1998-1276.html",
      "license": "SFS",
      "checkedUtc": "2026-09-25",
      "note": "När en förare avser att svänga eller ändra fordonets placering i sidled på något annat inte oväsentligt sätt ska föraren ge tecken med körriktningsvisaren. Tecken ska ges i god tid och upphöra så snart manövern är avslutad."
    },
    {
      "label": "Transportstyrelsen – Cirkulationsplats",
      "url": "https://www.transportstyrelsen.se/sv/vagtrafik/trafikregler-och-vagmarken/trafikregler/Generella-trafikregler/Cirkulationsplats/",
      "license": "Myndighetsinformation",
      "checkedUtc": "2026-09-25",
      "note": "Runt rondellen finns en väg för cirkulation, där trafiken kör motsols. Fordon som tänker köra in i cirkulationsplatsen har väjningsplikt mot de fordon som befinner sig inne i cirkulationen och ska därför i god tid sänka hastigheten eller stanna."
    },
    {
      "label": "Transportstyrelsen – vägmärket B1 Väjningsplikt",
      "url": "https://www.transportstyrelsen.se/sv/vagtrafik/trafikregler-och-vagmarken/vagmarken/vajningspliktsmarken/vajningsplikt/",
      "license": "Myndighetsinformation",
      "checkedUtc": "2026-09-25",
      "note": "Officiell märkesfil: nedåtvänd liksidig triangel, röd ram, gul botten. Används vid cirkulationsplatsens tillfarter."
    },
    {
      "label": "Transportstyrelsen – vägmärket D3 Cirkulationsplats",
      "url": "https://www.transportstyrelsen.se/sv/vagtrafik/trafikregler-och-vagmarken/vagmarken/pabudsmarken/cirkulationsplats/",
      "license": "Myndighetsinformation",
      "checkedUtc": "2026-09-25",
      "note": "Påbudsmärket D3 Cirkulationsplats markerar cirkulationsplatsen. Officiell märkesfil mätt 2026-09-25: blå cirkel med tre vita pilar i ring."
    },
    {
      "label": "Transportstyrelsen – vägmarkering M14 Väjningslinje",
      "url": "https://www.transportstyrelsen.se/sv/vagtrafik/trafikregler-och-vagmarken/vagmarken/vagmarkeringar/vajningslinje/",
      "license": "Myndighetsinformation",
      "checkedUtc": "2026-09-25",
      "note": "Markeringen anger den linje som fordon inte bör passera när föraren iakttar väjningsplikt."
    },
    {
      "label": "TSFS 2010:171 3 kap. 7 § – Transportstyrelsens föreskrifter om vägmarkeringar",
      "url": "https://www.transportstyrelsen.se/TSFS/TSFS%202010_171.pdf",
      "license": "Myndighetsinformation",
      "checkedUtc": "2026-09-25",
      "note": "M14: triangelhöjd 0,70 m, bas 0,50 m, avstånd 0,50 m."
    }
  ],
  "spawn": {
    "x": 2.25,
    "y": -50,
    "heading": 1.5707963267948966
  },
  "bounds": {
    "minX": -80,
    "maxX": 80,
    "minY": -80,
    "maxY": 80
  },
  "geometry": {
    "laneWidth": 4.5,
    "lanesPerDirection": 1,
    "carriagewayHalfWidth": 4.5,
    "footwayWidth": 2.5,
    "kerbHeight": 0.12,
    "corridorTolerance": 0.15,
    "cornerRadius": 2.5,
    "armLength": 70,
    "buildingFront": 9,
    "centreLineWidth": 0.15,
    "centreLineDash": 3,
    "centreLineGap": 3,
    "laneLineWidth": 0.1,
    "laneLineDash": 3,
    "laneLineGap": 3,
    "stopLineWidth": 0.4,
    "yieldTriangleHeight": 0.7,
    "yieldTriangleBase": 0.5,
    "yieldTriangleGap": 0.5,
    "laneArrowLength": 3
  },
  "junction": {
    "kind": "roundabout",
    "radius": 14,
    "width": 6,
    "islandRadius": 11,
    "ringLanes": 1,
    "splitterLength": 10
  },
  "corridors": [
    {"id": "arm-south", "kind": "polyline", "width": 9, "path": [[0, -70], [0, -17]]},
    {"id": "arm-north", "kind": "polyline", "width": 9, "path": [[0, 70], [0, 17]]},
    {"id": "arm-east", "kind": "polyline", "width": 9, "path": [[70, 0], [17, 0]]},
    {"id": "arm-west", "kind": "polyline", "width": 9, "path": [[-70, 0], [-17, 0]]}
  ],
  "lanes": [
    {
      "id": "ring-lane",
      "arm": "ring",
      "role": "circulating",
      "width": 6,
      "path": [[14, 0], [9.899, 9.899], [0, 14], [-9.899, 9.899], [-14, 0], [-9.899, -9.899], [0, -14], [9.899, -9.899], [14, 0]]
    },
    {
      "id": "south-entry-0",
      "arm": "south",
      "role": "entry",
      "index": 0,
      "width": 4.5,
      "path": [[2.25, -70], [2.25, -17], [2.382, -16.272], [2.778, -15.51], [3.438, -14.714], [4.361, -13.885], [5.549, -13.022], [7, -12.124]]
    },
    {
      "id": "south-exit-0",
      "arm": "south",
      "role": "exit",
      "index": 0,
      "width": 4.5,
      "path": [[-7, -12.124], [-5.549, -13.105], [-4.361, -14.218], [-3.437, -15.464], [-2.778, -16.843], [-2.382, -18.355], [-2.25, -20], [-2.25, -70]]
    },
    {
      "id": "north-entry-0",
      "arm": "north",
      "role": "entry",
      "index": 0,
      "width": 4.5,
      "path": [[-2.25, 70], [-2.25, 17], [-2.382, 16.272], [-2.778, 15.51], [-3.437, 14.714], [-4.361, 13.885], [-5.549, 13.022], [-7, 12.124]]
    },
    {
      "id": "north-exit-0",
      "arm": "north",
      "role": "exit",
      "index": 0,
      "width": 4.5,
      "path": [[7, 12.124], [5.549, 13.105], [4.361, 14.218], [3.438, 15.464], [2.778, 16.843], [2.382, 18.355], [2.25, 20], [2.25, 70]]
    },
    {
      "id": "east-entry-0",
      "arm": "east",
      "role": "entry",
      "index": 0,
      "width": 4.5,
      "path": [[70, 2.25], [17, 2.25], [16.272, 2.382], [15.51, 2.778], [14.714, 3.438], [13.885, 4.361], [13.022, 5.549], [12.124, 7]]
    },
    {
      "id": "east-exit-0",
      "arm": "east",
      "role": "exit",
      "index": 0,
      "width": 4.5,
      "path": [[12.124, -7], [13.105, -5.549], [14.218, -4.361], [15.464, -3.438], [16.843, -2.778], [18.355, -2.382], [20, -2.25], [70, -2.25]]
    },
    {
      "id": "west-entry-0",
      "arm": "west",
      "role": "entry",
      "index": 0,
      "width": 4.5,
      "path": [[-70, -2.25], [-17, -2.25], [-16.272, -2.382], [-15.51, -2.778], [-14.714, -3.437], [-13.885, -4.361], [-13.022, -5.549], [-12.124, -7]]
    },
    {
      "id": "west-exit-0",
      "arm": "west",
      "role": "exit",
      "index": 0,
      "width": 4.5,
      "path": [[-12.124, 7], [-13.105, 5.549], [-14.218, 4.361], [-15.464, 3.438], [-16.843, 2.778], [-18.355, 2.382], [-20, 2.25], [-70, 2.25]]
    }
  ],
  "approaches": [
    {
      "id": "south",
      "label": "Södra tillfarten",
      "heading": 1.5707963267948966,
      "entryLane": "south-entry-0",
      "exitArm": "north",
      "yieldLine": {"from": [0.45, -18.6], "to": [4.5, -18.6]},
      "sign": {"position": [0, -26], "facing": -1.5707963267948966},
      "island": "island-south"
    },
    {
      "id": "east",
      "label": "Östra tillfarten",
      "heading": 3.141592653589793,
      "entryLane": "east-entry-0",
      "exitArm": "west",
      "yieldLine": {"from": [18.6, 0.45], "to": [18.6, 4.5]},
      "sign": {"position": [26, 0], "facing": 0},
      "island": "island-east"
    },
    {
      "id": "north",
      "label": "Norra tillfarten",
      "heading": -1.5707963267948966,
      "entryLane": "north-entry-0",
      "exitArm": "south",
      "yieldLine": {"from": [-4.5, 18.6], "to": [-0.45, 18.6]},
      "sign": {"position": [0, 26], "facing": 1.5707963267948966},
      "island": "island-north"
    },
    {
      "id": "west",
      "label": "Västra tillfarten",
      "heading": 0,
      "entryLane": "west-entry-0",
      "exitArm": "east",
      "yieldLine": {"from": [-18.6, -4.5], "to": [-18.6, -0.45]},
      "sign": {"position": [-26, 0], "facing": 3.141592653589793},
      "island": "island-west"
    }
  ],
  "islands": [
    {
      "id": "central-island",
      "height": 0.16,
      "outline": [[11, 0], [10.164, 4.209], [7.778, 7.778], [4.209, 10.164], [0, 11], [-4.209, 10.164], [-7.778, 7.778], [-10.164, 4.209], [-11, 0], [-10.164, -4.209], [-7.778, -7.778], [-4.209, -10.164], [0, -11], [4.209, -10.164], [7.778, -7.778], [10.164, -4.209]]
    },
    {"id": "island-south", "height": 0.16, "outline": [[-0.45, -34.5], [0.45, -34.5], [0.45, -25], [0, -24.2], [-0.45, -25]]},
    {"id": "island-north", "height": 0.16, "outline": [[-0.45, 34.5], [0.45, 34.5], [0.45, 25], [0, 24.2], [-0.45, 25]]},
    {"id": "island-east", "height": 0.16, "outline": [[34.5, -0.45], [34.5, 0.45], [25, 0.45], [24.2, 0], [25, -0.45]]},
    {"id": "island-west", "height": 0.16, "outline": [[-34.5, -0.45], [-34.5, 0.45], [-25, 0.45], [-24.2, 0], [-25, -0.45]]}
  ],
  "controlGroups": {
    "always": ["markings:M1"],
    "signs": [
      {"group": "signs:B1:south", "type": "B1", "approach": "south"},
      {"group": "signs:B1:east", "type": "B1", "approach": "east"},
      {"group": "signs:B1:north", "type": "B1", "approach": "north"},
      {"group": "signs:B1:west", "type": "B1", "approach": "west"},
      {"group": "signs:D3:south", "type": "D3", "approach": "south"},
      {"group": "signs:D3:east", "type": "D3", "approach": "east"},
      {"group": "signs:D3:north", "type": "D3", "approach": "north"},
      {"group": "signs:D3:west", "type": "D3", "approach": "west"}
    ],
    "markings": [
      {"group": "markings:M14:south", "type": "M14", "approach": "south"},
      {"group": "markings:M14:east", "type": "M14", "approach": "east"},
      {"group": "markings:M14:north", "type": "M14", "approach": "north"},
      {"group": "markings:M14:west", "type": "M14", "approach": "west"}
    ]
  },
  "buildings": [
    {"sourceId": 1, "name": "Nordöst", "height": 16, "outline": [[24, 24], [48, 24], [48, 48], [24, 48]]},
    {"sourceId": 2, "name": "Nordväst", "height": 17.5, "outline": [[-48, 24], [-24, 24], [-24, 48], [-48, 48]]},
    {"sourceId": 3, "name": "Sydväst", "height": 15.5, "outline": [[-48, -48], [-24, -48], [-24, -24], [-48, -24]]},
    {"sourceId": 4, "name": "Sydöst", "height": 18, "outline": [[24, -48], [48, -48], [48, -24], [24, -24]]},
    {"sourceId": 5, "name": "Norra armen väster", "height": 14, "outline": [[-26, 30], [-11, 30], [-11, 58], [-26, 58]]},
    {"sourceId": 6, "name": "Östra armen norr", "height": 16, "outline": [[30, 11], [58, 11], [58, 26], [30, 26]]},
    {"sourceId": 7, "name": "Södra armen öster", "height": 15, "outline": [[11, -58], [26, -58], [26, -30], [11, -30]]},
    {"sourceId": 8, "name": "Västra armen söder", "height": 17, "outline": [[-58, -26], [-30, -26], [-30, -11], [-58, -11]]}
  ],
  "trees": [
    [8, 22], [8, 36], [-8, 22], [-8, 36],
    [8, -22], [8, -36], [-8, -22], [-8, -36],
    [22, 8], [36, 8], [22, -8], [36, -8],
    [-22, 8], [-36, 8], [-22, -8], [-36, -8]
  ],
  "details": {
    "version": 1,
    "status": "Syntetisk övningsväg.",
    "sources": ["Trafikförordningen (1998:1276)", "Transportstyrelsen vägmärken och vägmarkeringar"],
    "crossings": [],
    "parkingBays": [],
    "parkedCars": []
  },
  "attribution": {
    "label": "KörLabbet – syntetisk övningsväg",
    "note": "Egen geometri. Märkesfilerna B1 och D3 är officiella filer från Transportstyrelsen. Inga kartdata, inga foton och inga tredjepartsmodeller ingår."
  }
}
