浏览代码

Merge branch 'master' of http://192.168.14.36:3000/adc_pilot/modularization

fujiankuan 3 年之前
父节点
当前提交
35870efbad
共有 76 个文件被更改,包括 15485 次插入1489 次删除
  1. 4045 0
      map/map-LvSeQuanCheng.xodr
  2. 5814 0
      map/map_xiali.xodr
  3. 7 0
      src/common/common/license/adclicense.pri
  4. 71 0
      src/common/common/license/adclicenseserv.cpp
  5. 14 0
      src/common/common/license/adclicenseserv.h
  6. 22 0
      src/common/common/license/adclicensewithwin.cpp
  7. 5 0
      src/common/common/license/adclicensewithwin.h
  8. 38 0
      src/common/common/xodr/OpenDrive/Lane.cpp
  9. 3 0
      src/common/common/xodr/OpenDrive/Lane.h
  10. 49 2
      src/common/common/xodr/OpenDrive/OpenDrive.cpp
  11. 4 0
      src/common/common/xodr/OpenDrive/OpenDrive.h
  12. 10 1
      src/common/common/xodr/OpenDrive/OpenDriveXmlParser.cpp
  13. 62 1
      src/common/common/xodr/OpenDrive/OpenDriveXmlWriter.cpp
  14. 2 0
      src/common/common/xodr/OpenDrive/OpenDriveXmlWriter.h
  15. 16 1
      src/common/common/xodr/OpenDrive/Road.cpp
  16. 80 16
      src/common/common/xodr/OpenDrive/RoadGeometry.cpp
  17. 4 2
      src/common/common/xodr/OpenDrive/RoadGeometry.h
  18. 0 1164
      src/common/common/xodr/xodrfunc.cpp
  19. 0 71
      src/common/common/xodr/xodrfunc.h
  20. 19 8
      src/common/common/xodr/xodrfunc/xodrdijkstra.cpp
  21. 1 1
      src/common/common/xodr/xodrfunc/xodrdijkstra.h
  22. 118 3
      src/common/common/xodr/xodrfunc/xodrfunc.cpp
  23. 9 0
      src/common/common/xodr/xodrfunc/xodrfunc.h
  24. 7 0
      src/common/common/xodr/xodrfunc/xodrfunc.pri
  25. 5 3
      src/controller/controller_hapo/main.cpp
  26. 2 0
      src/decition/common/common/car_status.h
  27. 52 17
      src/decition/decition_brain_sf/decition/adc_adapter/hapo_adapter.cpp
  28. 10 9
      src/decition/decition_brain_sf/decition/adc_tools/compute_00.cpp
  29. 23 3
      src/decition/decition_brain_sf/decition/brain.cpp
  30. 86 33
      src/decition/decition_brain_sf/decition/decide_gps_00.cpp
  31. 3 3
      src/decition/decition_brain_sf/decition/decition_type.h
  32. 7 1
      src/detection/detection_mobileye/main.cpp
  33. 7 5
      src/driver/driver_map_xodrload/driver_map_xodrload.pro
  34. 52 1
      src/driver/driver_map_xodrload/globalplan.cpp
  35. 1 0
      src/driver/driver_map_xodrload/globalplan.h
  36. 6 0
      src/driver/driver_map_xodrload/main.cpp
  37. 4 4
      src/include/proto/decition.proto
  38. 30 7
      src/tool/map_lanetoxodr/autoconnect.cpp
  39. 1340 0
      src/tool/map_lanetoxodr/autoroadcontact.cpp
  40. 53 0
      src/tool/map_lanetoxodr/autoroadcontact.h
  41. 108 0
      src/tool/map_lanetoxodr/dialogdrawroad.cpp
  42. 30 0
      src/tool/map_lanetoxodr/dialogdrawroad.h
  43. 266 0
      src/tool/map_lanetoxodr/dialogdrawroad.ui
  44. 33 1
      src/tool/map_lanetoxodr/dialogeditlane.cpp
  45. 225 0
      src/tool/map_lanetoxodr/dialoghideroad.cpp
  46. 66 0
      src/tool/map_lanetoxodr/dialoghideroad.h
  47. 104 0
      src/tool/map_lanetoxodr/dialoghideroad.ui
  48. 14 0
      src/tool/map_lanetoxodr/dialogparkingspaceedit.cpp
  49. 22 0
      src/tool/map_lanetoxodr/dialogparkingspaceedit.h
  50. 127 0
      src/tool/map_lanetoxodr/dialogparkingspaceedit.ui
  51. 118 0
      src/tool/map_lanetoxodr/dialogroadborrow.cpp
  52. 16 0
      src/tool/map_lanetoxodr/dialogroadborrow.h
  53. 25 1
      src/tool/map_lanetoxodr/dialogroadborrow.ui
  54. 87 0
      src/tool/map_lanetoxodr/dialogroadobject.cpp
  55. 51 0
      src/tool/map_lanetoxodr/dialogroadobject.h
  56. 127 0
      src/tool/map_lanetoxodr/dialogroadobject.ui
  57. 351 0
      src/tool/map_lanetoxodr/dialogroadoptimize.cpp
  58. 40 0
      src/tool/map_lanetoxodr/dialogroadoptimize.h
  59. 180 0
      src/tool/map_lanetoxodr/dialogroadoptimize.ui
  60. 346 11
      src/tool/map_lanetoxodr/geofit.cpp
  61. 5 0
      src/tool/map_lanetoxodr/geofit.h
  62. 12 0
      src/tool/map_lanetoxodr/main.cpp
  63. 529 84
      src/tool/map_lanetoxodr/mainwindow.cpp
  64. 34 3
      src/tool/map_lanetoxodr/mainwindow.h
  65. 44 15
      src/tool/map_lanetoxodr/mainwindow.ui
  66. 33 3
      src/tool/map_lanetoxodr/map_lanetoxodr.pro
  67. 2 0
      src/tool/map_lanetoxodr/rawtype.h
  68. 135 10
      src/tool/map_lanetoxodr/roaddigit.cpp
  69. 19 0
      src/tool/map_lanetoxodr/roaddigit.h
  70. 58 0
      src/tool/map_lanetoxodr/roadeditdialog.cpp
  71. 6 0
      src/tool/map_lanetoxodr/roadeditdialog.h
  72. 30 4
      src/tool/map_lanetoxodr/roadeditdialog.ui
  73. 154 0
      src/tool/map_lanetoxodr/xodrscenfunc.cpp
  74. 3 0
      src/tool/map_lanetoxodr/xodrscenfunc.h
  75. 1 1
      src/tool/tool_xodrobj/tool_xodrobj.pro
  76. 3 0
      src/ui/ui_ads_hmi/ADCIntelligentVehicle.cpp

+ 4045 - 0
map/map-LvSeQuanCheng.xodr

@@ -0,0 +1,4045 @@
+<?xml version="1.0" ?>
+<OpenDRIVE>
+    <header revMajor="1" revMinor="1" name="adcmap" version="1.1" date="2021-06-21" north="0.0000000000000000e+00" south="0.0000000000000000e+00" east="0.0000000000000000e+00" west="0.0000000000000000e+00" lat0="3.8924592359999998e+01" lon0="1.1726306074000000e+02" hdg0="3.6000000000000000e+02" vendor="adc" />
+    <road name="" length="2.4344983595865477e+02" id="10005" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10006" contactPoint="end" />
+            <successor elementType="road" elementId="10051" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.4124176039871276e+02" y="-3.8830069148003918e+02" hdg="3.9209438606250142e+00" length="1.5859070875613339e+00">
+                <arc curvature="-8.4009275716880077e-02" />
+            </geometry>
+            <geometry s="1.5859070875613597e+00" x="-2.4242560004104411e+02" y="-3.8935288013812107e+02" hdg="3.9015801205032306e+00" length="2.9349263545587636e+01">
+                <arc curvature="5.5249237811702242e-03" />
+            </geometry>
+            <geometry s="3.0935170633148992e+01" x="-2.6195775176204108e+02" y="-4.1121410476181245e+02" hdg="4.1047709274753785e+00" length="1.0809481907880285e+01">
+                <arc curvature="3.1890253070866105e-02" />
+            </geometry>
+            <geometry s="4.1744652541029232e+01" x="-2.6650221368573415e+02" y="-4.2096500005933058e+02" hdg="4.4721473370677982e+00" length="1.0983675847743159e+01">
+                <arc curvature="2.5150848768242660e-02" />
+            </geometry>
+            <geometry s="5.2728328388772375e+01" x="-2.6769773547396062e+02" y="-4.3185898272019989e+02" hdg="4.7397643052409428e+00" length="1.1995350620752554e+01">
+                <line />
+            </geometry>
+            <geometry s="6.4723679009524943e+01" x="-2.6733017248373159e+02" y="-4.4384860743110744e+02" hdg="4.7589400668088233e+00" length="1.2549071147549560e+01">
+                <arc curvature="-1.4467041256249326e-02" />
+            </geometry>
+            <geometry s="7.7272750157074455e+01" x="-2.6787244979800226e+02" y="-4.5636979382330537e+02" hdg="4.5715732334945089e+00" length="1.2869024035543733e+01">
+                <arc curvature="-1.9446990635694671e-02" />
+            </geometry>
+            <geometry s="9.0141774192618158e+01" x="-2.7127124911899199e+02" y="-4.6874434377372751e+02" hdg="4.3477203494335814e+00" length="1.3212792849075075e+01">
+                <arc curvature="-2.4282388500661396e-02" />
+            </geometry>
+            <geometry s="1.0335456704169323e+02" x="-2.7788085627787387e+02" y="-4.8011623513629706e+02" hdg="3.9771075435914396e+00" length="1.3918966820820135e+01">
+                <arc curvature="-4.0026547664141217e-02" />
+            </geometry>
+            <geometry s="1.1727353386251340e+02" x="-2.8955655996883394e+02" y="-4.8739214147318501e+02" hdg="3.3086473742779665e+00" length="1.2351132177821579e+01">
+                <line />
+            </geometry>
+            <geometry s="1.2962466604033497e+02" x="-3.0175046920237423e+02" y="-4.8946130878304905e+02" hdg="3.3689544669874487e+00" length="3.0064450740833366e+00">
+                <line />
+            </geometry>
+            <geometry s="1.3263111111441830e+02" x="-3.0468030750982763e+02" y="-4.9013146387274946e+02" hdg="3.2430468711312228e+00" length="1.1998372365688756e+01">
+                <arc curvature="1.4269779058431941e-02" />
+            </geometry>
+            <geometry s="1.4462948348010704e+02" x="-3.1637080978213862e+02" y="-4.9226064398172571e+02" hdg="3.4314461593400041e+00" length="1.0889249420013451e+01">
+                <line />
+            </geometry>
+            <geometry s="1.5551873290012051e+02" x="-3.2692728328443985e+02" y="-4.9550381697890828e+02" hdg="3.5846866345985653e+00" length="1.0220838800750174e+01">
+                <arc curvature="5.1726642707540037e-02" />
+            </geometry>
+            <geometry s="1.6573957170087064e+02" x="-3.3460898155852198e+02" y="-5.0206664319190014e+02" hdg="4.1211884818975255e+00" length="1.0254049380797502e+01">
+                <arc curvature="4.9356869702600281e-02" />
+            </geometry>
+            <geometry s="1.7599362108166812e+02" x="-3.3798107336778821e+02" y="-5.1163654238698581e+02" hdg="4.6377076537117530e+00" length="2.7830558564528407e+00">
+                <line />
+            </geometry>
+            <geometry s="1.7877667693812097e+02" x="-3.3818872252539006e+02" y="-5.1441184088038847e+02" hdg="4.6421596230538080e+00" length="2.9995010302903355e+00">
+                <line />
+            </geometry>
+            <geometry s="1.8177617796841136e+02" x="-3.3839920243525876e+02" y="-5.1740394793700500e+02" hdg="4.7284604957328682e+00" length="3.0049947684951968e+00">
+                <line />
+            </geometry>
+            <geometry s="1.8478117273690654e+02" x="-3.3836998958881139e+02" y="-5.2040704310811623e+02" hdg="4.6333335061969203e+00" length="1.1272507698574167e+01">
+                <arc curvature="2.3407832495688594e-02" />
+            </geometry>
+            <geometry s="1.9605368043548069e+02" x="-3.3786672437990012e+02" y="-5.3164455167629387e+02" hdg="4.8305298504750711e+00" length="2.5830138969239655e+01">
+                <arc curvature="1.5165244606512645e-02" />
+            </geometry>
+            <geometry s="2.2188381940472036e+02" x="-3.3004187270054251e+02" y="-5.5611026469459716e+02" hdg="5.3066508093991747e+00" length="1.1432583536895137e+01">
+                <line />
+            </geometry>
+            <geometry s="2.3331640294161545e+02" x="-3.2364633558021120e+02" y="-5.6559261005410008e+02" hdg="5.4270442645113413e+00" length="1.0133433017038556e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9937814934624347e+00" b="2.5526606046690620e-04" c="-5.8576238796240964e-07" d="1.4959019636155522e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.8856336251195749e+01" id="10009" junction="800000">
+        <link>
+            <predecessor elementType="road" elementId="10010" contactPoint="end" />
+            <successor elementType="road" elementId="10006" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.9455011500718916e+02" y="-3.7541648780266894e+02" hdg="2.5445639388587575e+00" length="7.0463484146790272e+00">
+                <line />
+            </geometry>
+            <geometry s="7.0463484146790272e+00" x="-2.0037751337630448e+02" y="-3.7145511755631708e+02" hdg="2.5445639388587575e+00" length="2.9895787166736589e+01">
+                <arc curvature="4.5454545454545456e-02" />
+            </geometry>
+            <geometry s="3.6942135581415613e+01" x="-2.2793171847162151e+02" y="-3.7373131910010358e+02" hdg="3.9034633555286025e+00" length="1.9142006697801361e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0104340787872967e+00" b="3.0547860407493496e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.6092404978135619e+01" id="10015" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10013" contactPoint="end" />
+            <successor elementType="road" elementId="10001" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.2069001272135750e+02" y="-7.9570523557363890e+02" hdg="5.5414768077834715e+00" length="7.7068518696822803e+00">
+                <arc curvature="-7.8280712114036324e-02" />
+            </geometry>
+            <geometry s="7.7068518696822856e+00" x="-3.1688225694466456e+02" y="-8.0226710330812239e+02" hdg="4.9402723321089761e+00" length="1.0807309945197824e+01">
+                <arc curvature="-6.9100358814210894e-02" />
+            </geometry>
+            <geometry s="1.8514161814880143e+01" x="-3.1840752584143024e+02" y="-8.1271704631410137e+02" hdg="4.1416949291927967e+00" length="1.1607267044399018e+01">
+                <arc curvature="-4.5854129723354786e-02" />
+            </geometry>
+            <geometry s="3.0121428859279266e+01" x="-3.2692171309980773e+02" y="-8.2040643765650191e+02" hdg="3.5471089426164810e+00" length="4.0520344859098643e+00">
+                <line />
+            </geometry>
+            <geometry s="3.4173463345189134e+01" x="-3.3064844745492593e+02" y="-8.2199225842126634e+02" hdg="3.3980200451994071e+00" length="1.9189416329466340e+00">
+                <arc curvature="4.0645728871546341e-02" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0232179676327329e+00" b="-2.9479436445481081e-04" c="-3.1026864847603289e-07" d="1.4959019636155522e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.6676241348876533e+02" id="10014" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10018" contactPoint="end" />
+            <successor elementType="road" elementId="10008" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-8.0020199503321760e+02" y="-1.0646096180699826e+03" hdg="3.5948202327543193e+00" length="2.8358437261043267e+01">
+                <line />
+            </geometry>
+            <geometry s="2.8358437261043264e+01" x="-8.2567804417009950e+02" y="-1.0769122102406106e+03" hdg="3.6116629897583206e+00" length="3.0199341184397692e+01">
+                <arc curvature="-4.1897527566776309e-03" />
+            </geometry>
+            <geometry s="5.8557778445441045e+01" x="-8.5344068332521420e+02" y="-1.0889134285641780e+03" hdg="3.4917330461032625e+00" length="3.0082400991079876e+01">
+                <line />
+            </geometry>
+            <geometry s="8.8640179436520839e+01" x="-8.8169080755874347e+02" y="-1.0992249507037450e+03" hdg="3.4977499308671298e+00" length="5.9683979039078118e+01">
+                <arc curvature="1.3067035896219886e-03" />
+            </geometry>
+            <geometry s="1.4832415847559901e+02" x="-9.3676672831272003e+02" y="-1.1221826677216204e+03" hdg="3.5638135055838864e+00" length="2.5946672510106954e+01">
+                <arc curvature="1.2529795729418534e-02" />
+            </geometry>
+            <geometry s="1.7427083098570597e+02" x="-9.5833607151983040e+02" y="-1.1364109961819249e+03" hdg="3.8738435775137909e+00" length="2.3483718946988230e+01">
+                <arc curvature="6.7727558880209607e-03" />
+            </geometry>
+            <geometry s="1.9775454993269409e+02" x="-9.7444565848127536e+02" y="-1.1534597659564079e+03" hdg="4.0216971158192854e+00" length="2.3425243711277705e+01">
+                <arc curvature="6.2438120024238333e-03" />
+            </geometry>
+            <geometry s="2.2117979364397183e+02" x="-9.8799794721902504e+02" y="-1.1725426226790089e+03" hdg="4.2064661160060153e+00" length="2.3336360055381387e+01">
+                <arc curvature="1.0891881362554723e-02" />
+            </geometry>
+            <geometry s="2.4451615369935348e+02" x="-9.9663630005428524e+02" y="-1.1941677610004349e+03" hdg="4.2863545872555671e+00" length="2.6338023666665919e+01">
+                <arc curvature="-2.0769740672776694e-02" />
+            </geometry>
+            <geometry s="2.7085417736601926e+02" x="-1.0133573943405963e+03" y="-1.2141100348613036e+03" hdg="3.7037869608304002e+00" length="4.8180496612229376e+01">
+                <arc curvature="-1.1858557640947677e-03" />
+            </geometry>
+            <geometry s="3.1903467397824875e+02" x="-1.0548356958688457e+03" y="-1.2386103903294272e+03" hdg="3.6441477438180225e+00" length="4.5192288083131331e+01">
+                <arc curvature="-1.8456368731156157e-03" />
+            </geometry>
+            <geometry s="3.6422696206137994e+02" x="-1.0952695415378723e+03" y="-1.2587728357556739e+03" hdg="3.5704538143718687e+00" length="2.5354514273855102e+00">
+                <arc curvature="1.4481877833128147e-03" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.2609570073022960e+00" b="-5.0193782921838573e-04" c="-5.7504256539458779e-08" d="1.4959019636155522e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="4.8999999999999994e+02" id="10017" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10001" contactPoint="end" />
+            <successor elementType="road" elementId="10018" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.4979544188318164e+02" y="-8.3137211170898979e+02" hdg="3.6461329585046252e+00" length="3.4497968001415899e+01">
+                <line />
+            </geometry>
+            <geometry s="3.4497968001415821e+01" x="-3.8002368366123244e+02" y="-8.4808094663845259e+02" hdg="3.6435526336722406e+00" length="4.5124213957709735e+01">
+                <arc curvature="-7.1261049338138070e-04" />
+            </geometry>
+            <geometry s="7.9622181959125626e+01" x="-4.1980665720158987e+02" y="-8.6902218809529597e+02" hdg="3.6055430199129672e+00" length="9.3068297979313726e+01">
+                <line />
+            </geometry>
+            <geometry s="1.7269047993843930e+02" x="-5.0310964042754279e+02" y="-9.1076603665445577e+02" hdg="3.6038420198531878e+00" length="4.1814148443982496e+01">
+                <arc curvature="1.3225341663428030e-03" />
+            </geometry>
+            <geometry s="2.1450462838242180e+02" x="-5.3989303973436961e+02" y="-9.3031130921440649e+02" hdg="3.6648633080314017e+00" length="3.9120923799068265e+01">
+                <line />
+            </geometry>
+            <geometry s="2.5362555218149015e+02" x="-5.7380303994256406e+02" y="-9.4988429055795632e+02" hdg="3.6586753800660849e+00" length="8.1141764510995614e+01">
+                <arc curvature="-4.4696359974037676e-04" />
+            </geometry>
+            <geometry s="3.3476731669248574e+02" x="-6.4500725666539984e+02" y="-9.8867845538939127e+02" hdg="3.6344339144378539e+00" length="3.6097967325134874e+01">
+                <line />
+            </geometry>
+            <geometry s="3.7086528401762058e+02" x="-6.7676706436909774e+02" y="-1.0057102106348865e+03" hdg="3.6214598904859963e+00" length="1.5038006196376868e+01">
+                <line />
+            </geometry>
+            <geometry s="3.8590329021399754e+02" x="-6.9009172044517550e+02" y="-1.0126270991436254e+03" hdg="3.6393103632396446e+00" length="1.5316081555616808e+01">
+                <arc curvature="-1.0533949030271878e-02" />
+            </geometry>
+            <geometry s="4.0121937176961461e+02" x="-7.0406959052335196e+02" y="-1.0188552702379880e+03" hdg="3.5246106170774429e+00" length="3.2799745231439999e+01">
+                <arc curvature="2.5417390298837486e-03" />
+            </geometry>
+            <geometry s="4.3401911700105444e+02" x="-7.3399975149204545e+02" y="-1.0323593700536251e+03" hdg="3.5902464899405371e+00" length="5.5980882998945560e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0405581105129738e+00" b="-3.2793700399597335e-04" c="-2.8529492171511889e-07" d="1.4959019636155522e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7661419121436268e+01" id="10018" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10017" contactPoint="end" />
+            <successor elementType="road" elementId="10014" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-7.8444030844687245e+02" y="-1.0566412455048435e+03" hdg="3.6096730217422968e+00" length="1.7661419121436268e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.2521474161630604e+00" b="-4.9880426248098751e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.9699999999999966e+02" id="10003" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10007" contactPoint="end" />
+            <successor elementType="road" elementId="10056" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.5085668796341147e+03" y="-1.4993468945439606e+03" hdg="3.6146984126399149e+00" length="6.0162709891837576e+00">
+                <arc curvature="3.5861025389073735e-03" />
+            </geometry>
+            <geometry s="6.0162709891837363e+00" x="-1.5138898015303446e+03" y="-1.5021510759994994e+03" hdg="3.6493478288239567e+00" length="2.9239815821553631e+01">
+                <arc curvature="6.9940257405472443e-03" />
+            </geometry>
+            <geometry s="3.5256086810737486e+01" x="-1.5378675026824678e+03" y="-1.5188360129869357e+03" hdg="3.8130337358207109e+00" length="1.2109306282075742e+01">
+                <line />
+            </geometry>
+            <geometry s="4.7365393092813008e+01" x="-1.5474383002888576e+03" y="-1.5264716572923498e+03" hdg="3.7354682217264523e+00" length="8.4174067524726919e+00">
+                <line />
+            </geometry>
+            <geometry s="5.5782799845285751e+01" x="-1.5543716025990655e+03" y="-1.5310957071591311e+03" hdg="3.7508537362728323e+00" length="1.6147153740996519e+01">
+                <arc curvature="-7.8174739249315089e-02" />
+            </geometry>
+            <geometry s="7.1929953586282352e+01" x="-1.5694371843759798e+03" y="-1.5307175492628799e+03" hdg="2.7434723534418355e+00" length="2.0113455496757144e+01">
+                <arc curvature="-1.2731505729962267e-02" />
+            </geometry>
+            <geometry s="9.2043409083039421e+01" x="-1.5867607994609721e+03" y="-1.5206154332971225e+03" hdg="2.4357192619734134e+00" length="1.0385949485932001e+01">
+                <arc curvature="-3.5166991062557586e-02" />
+            </geometry>
+            <geometry s="1.0242935856897151e+02" x="-1.5933053444089664e+03" y="-1.5126123536666748e+03" hdg="2.0091376864479749e+00" length="6.3446367406548969e+00">
+                <line />
+            </geometry>
+            <geometry s="1.0877399530962651e+02" x="-1.5960455430607681e+03" y="-1.5068779644489389e+03" hdg="1.8679966314067729e+00" length="1.7516699747618329e+01">
+                <arc curvature="9.5755209813961281e-03" />
+            </geometry>
+            <geometry s="1.2629069505724505e+02" x="-1.6026009737866636e+03" y="-1.4906614463109572e+03" hdg="2.0465530614566667e+00" length="1.3500450605557020e+01">
+                <arc curvature="3.4693307519078606e-02" />
+            </geometry>
+            <geometry s="1.3979114566280208e+02" x="-1.6113272835390485e+03" y="-1.4805257743220882e+03" hdg="2.5182565495273295e+00" length="1.3909981423640128e+01">
+                <arc curvature="2.6902031463222568e-02" />
+            </geometry>
+            <geometry s="1.5370112708644223e+02" x="-1.6238665506612456e+03" y="-1.4746992942464858e+03" hdg="2.8398552694743135e+00" length="2.6117338277454483e+01">
+                <arc curvature="7.5625620441863994e-03" />
+            </geometry>
+            <geometry s="1.7981846536389679e+02" x="-1.6494079454702671e+03" y="-1.4694570390154840e+03" hdg="3.1371871511214096e+00" length="1.1054768322830224e+01">
+                <arc curvature="-5.1972338910235942e-02" />
+            </geometry>
+            <geometry s="1.9087323368672691e+02" x="-1.6598510062502296e+03" y="-1.4663208967216638e+03" hdg="2.3460746540889739e+00" length="6.1267663132730945e+00">
+                <arc curvature="-7.8253024893182256e-04" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.6361859553307418e+00" b="-2.7802175796338204e-04" c="3.2217027597652149e-07" d="1.4959019636155522e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7229229419847104e+02" id="10000" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10008" contactPoint="end" />
+            <successor elementType="road" elementId="10004" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.1257038918810720e+03" y="-1.2736012887205957e+03" hdg="3.6194865176304520e+00" length="3.4752135375922578e+01">
+                <line />
+            </geometry>
+            <geometry s="3.4752135375922578e+01" x="-1.1565625899982731e+03" y="-1.2895841440255122e+03" hdg="3.6194865176304520e+00" length="3.1510506880636072e+01">
+                <arc curvature="1.4285714285714285e-02" />
+            </geometry>
+            <geometry s="6.6262642256558649e+01" x="-1.1804003201013688e+03" y="-1.3097836721935278e+03" hdg="4.0696366159252531e+00" length="2.6321505996489107e+00">
+                <line />
+            </geometry>
+            <geometry s="6.8894792856207559e+01" x="-1.1819780333723381e+03" y="-1.3118905745675925e+03" hdg="4.0696366159252531e+00" length="1.2485696546200733e+01">
+                <line />
+            </geometry>
+            <geometry s="8.1380489402408443e+01" x="-1.1897264763727096e+03" y="-1.3221993947105191e+03" hdg="4.0412231793681981e+00" length="1.5385048986843856e+01">
+                <line />
+            </geometry>
+            <geometry s="9.6765538389252129e+01" x="-1.1991960770633818e+03" y="-1.3341604869806299e+03" hdg="3.9727549435351754e+00" length="1.2468030703304066e+01">
+                <arc curvature="-9.9355701894076366e-03" />
+            </geometry>
+            <geometry s="1.0923356909255622e+02" x="-1.2080041787623252e+03" y="-1.3429956957624770e+03" hdg="3.8089224734734231e+00" length="3.3032926571793929e+01">
+                <arc curvature="-2.7449274402627207e-03" />
+            </geometry>
+            <geometry s="1.4226649566435015e+02" x="-1.2348414584228053e+03" y="-1.3622359469093776e+03" hdg="3.7865273791604741e+00" length="3.6816070488173946e+00">
+                <line />
+            </geometry>
+            <geometry s="1.4594810271316754e+02" x="-1.2377835742281052e+03" y="-1.3644491312781338e+03" hdg="3.6962457320633209e+00" length="2.6344191485303504e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.4604467661269496e+00" b="-4.6315655026639863e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+            <elevation s="6.8894792856207559e+01" a="-5.4923558407175488e+00" b="-4.5798176704137404e-04" c="1.5176602860052569e-07" d="1.4959019636155522e-10" />
+            <elevation s="1.0923356909255622e+02" a="-6.0300000000000002e+00" b="-2.1584536267276819e-04" c="3.1405337369054137e-06" d="0.0000000000000000e+00" />
+            <elevation s="1.4226649566435015e+02" a="-6.0337031345090733e+00" b="5.8776965770732229e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+            <elevation s="1.4594810271316754e+02" a="-5.8173094430194467e+00" b="-5.7378204687863980e-03" c="-1.1614340781669120e-04" d="9.1955400629627031e-06" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="6.5290257632184435e+01" id="10004" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10000" contactPoint="end" />
+            <successor elementType="road" elementId="10007" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.2601014053988174e+03" y="-1.3782162307955782e+03" hdg="3.6866904502013416e+00" length="1.8486894220419384e+01">
+                <arc curvature="-7.2139690581507938e-03" />
+            </geometry>
+            <geometry s="1.8486894220419384e+01" x="-1.2764891270785040e+03" y="-1.3867466495850222e+03" hdg="3.5613053143908564e+00" length="3.1513105779580616e+01">
+                <arc curvature="-1.9065564438621695e-03" />
+            </geometry>
+            <geometry s="5.0000000000000000e+01" x="-1.3056354291540597e+03" y="-1.3987162032247059e+03" hdg="3.5336854270969349e+00" length="1.5290257632184439e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.8810248136676542e+00" b="-6.8818767939367925e-03" c="4.3498368275844712e-04" d="-5.2381346241140124e-06" />
+            <elevation s="5.0000000000000000e+01" a="-5.7924262744826267e+00" b="1.4904074414952265e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.1111706027121511e+02" id="10007" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10004" contactPoint="end" />
+            <successor elementType="road" elementId="10003" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.3197653303388131e+03" y="-1.4045589654967548e+03" hdg="3.5356114032413384e+00" length="4.9445910620316759e+01">
+                <arc curvature="2.3845162343461646e-03" />
+            </geometry>
+            <geometry s="4.9445910620316681e+01" x="-1.3643777266990105e+03" y="-1.4263055866724590e+03" hdg="3.6212587119050186e+00" length="5.0756540706671601e+01">
+                <line />
+            </geometry>
+            <geometry s="1.0020245132698847e+02" x="-1.4093301450391139e+03" y="-1.4496435636331230e+03" hdg="3.6315107244474296e+00" length="4.4953258034333480e+01">
+                <line />
+            </geometry>
+            <geometry s="1.4515570936132190e+02" x="-1.4490968197994168e+03" y="-1.4708861218601010e+03" hdg="3.6516543326935853e+00" length="3.9340599387047376e+01">
+                <arc curvature="-2.5974332188245224e-03" />
+            </geometry>
+            <geometry s="1.8449630874836930e+02" x="-1.4843276507947701e+03" y="-1.4883657216438960e+03" hdg="3.5192336680162137e+00" length="2.6620751522845836e+01">
+                <arc curvature="3.5861025389073735e-03" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.5645391369087580e+00" b="-3.9405115054575108e-04" c="2.2742714847278525e-07" d="1.4959019636155522e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.1319836514422473e+01" id="10008" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10014" contactPoint="end" />
+            <successor elementType="road" elementId="10000" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.0975734414237265e+03" y="-1.2598313970595482e+03" hdg="3.5968060708923271e+00" length="3.1319836514422473e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.4454040819332743e+00" b="-4.8029255155109972e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.2259260182121011e+01" id="10032" junction="800001">
+        <link>
+            <predecessor elementType="road" elementId="10038" contactPoint="end" />
+            <successor elementType="road" elementId="10034" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.3544345441654571e+01" y="-1.2442912608450170e+02" hdg="4.4857913062512171e+00" length="1.0289717766237676e+01">
+                <arc curvature="9.1375140015475861e-03" />
+            </geometry>
+            <geometry s="1.0289717766237672e+01" x="-3.5435126466552070e+01" y="-1.3454557389728629e+02" hdg="4.6278987256103337e+00" length="1.1969542415883296e+01">
+                <arc curvature="4.1668226533797814e-03" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.2604578881821746e+00" b="9.0813846443412317e-04" c="-7.9756348241184815e-07" d="1.4959019636155522e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.7778706452781205e+02" id="10034" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800001" contactPoint="start" />
+            <successor elementType="junction" elementId="800002" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.6147450827205006e+01" y="-1.4649265903584489e+02" hdg="4.6777736860994263e+00" length="2.6482499466912195e+01">
+                <arc curvature="4.1668226533797814e-03" />
+            </geometry>
+            <geometry s="2.6482499466912202e+01" x="-3.5676581791027353e+01" y="-1.7296185724509047e+02" hdg="4.7576544524796631e+00" length="1.8158938189703289e+01">
+                <line />
+            </geometry>
+            <geometry s="4.4641437656615494e+01" x="-3.4920202144837774e+01" y="-1.9110507200597374e+02" hdg="4.7551779980788504e+00" length="1.8535624345415382e+01">
+                <arc curvature="-4.9039227465741044e-03" />
+            </geometry>
+            <geometry s="6.3177062002030880e+01" x="-3.4966164243102000e+01" y="-2.0961773507188158e+02" hdg="4.5527887522196240e+00" length="5.9984140008770925e+00">
+                <line />
+            </geometry>
+            <geometry s="6.9175476002907970e+01" x="-3.5915803464229192e+01" y="-2.1553542560477720e+02" hdg="4.5117442397602225e+00" length="5.9933258420979243e+00">
+                <line />
+            </geometry>
+            <geometry s="7.5168801845005902e+01" x="-3.7123885634932861e+01" y="-2.2142542685934433e+02" hdg="4.5752166060656174e+00" length="6.7414396711638682e+00">
+                <arc curvature="-5.2741385277971710e-02" />
+            </geometry>
+            <geometry s="8.1910241516169776e+01" x="-3.9182503847698840e+01" y="-2.2780865000355163e+02" hdg="4.3496503305816878e+00" length="1.5347340180883872e+01">
+                <arc curvature="-1.0075229726918827e-02" />
+            </geometry>
+            <geometry s="9.7257581697053638e+01" x="-4.5740582447419783e+01" y="-2.4178736305148857e+02" hdg="4.2332950535312479e+00" length="1.5049781892355488e+01">
+                <line />
+            </geometry>
+            <geometry s="1.1230736358940912e+02" x="-5.2723908895432537e+01" y="-2.5519933429058341e+02" hdg="4.2938185640628657e+00" length="1.4535359029493497e+01">
+                <line />
+            </geometry>
+            <geometry s="1.2684272261890258e+02" x="-5.8515462115205914e+01" y="-2.6825905061355206e+02" hdg="4.4144015852073277e+00" length="3.5083465801381806e+01">
+                <arc curvature="7.7989794333238735e-03" />
+            </geometry>
+            <geometry s="1.6192618842028440e+02" x="-6.4220608746408431e+01" y="-3.0280507552410222e+02" hdg="4.6439108273104059e+00" length="3.5980668327519552e+01">
+                <line />
+            </geometry>
+            <geometry s="1.9790685674780394e+02" x="-6.6644301190055657e+01" y="-3.3863686340656210e+02" hdg="4.6687331862272554e+00" length="3.7016929704122091e+01">
+                <arc curvature="-8.2281384951626534e-03" />
+            </geometry>
+            <geometry s="2.3492378645192605e+02" x="-7.3820661582544773e+01" y="-3.7480630587751261e+02" hdg="4.3585483709610156e+00" length="1.5431340276018929e+01">
+                <arc curvature="-7.8590832126283969e-03" />
+            </geometry>
+            <geometry s="2.5035512672794499e+02" x="-8.0048162082026437e+01" y="-3.8891543032765918e+02" hdg="4.2860623622467617e+00" length="1.5562851381941419e+01">
+                <arc curvature="-1.1398084355030421e-02" />
+            </geometry>
+            <geometry s="2.6591797810988641e+02" x="-8.7721171074556167e+01" y="-4.0242948673930573e+02" hdg="4.0794331063236839e+00" length="3.5406826837481070e+01">
+                <arc curvature="-2.1819719593270344e-02" />
+            </geometry>
+            <geometry s="3.0132480494736745e+02" x="-1.1712688373487327e+02" y="-4.2056257122536340e+02" hdg="3.3039370238473058e+00" length="8.8679415003387003e+00">
+                <arc curvature="-5.6864078051481221e-02" />
+            </geometry>
+            <geometry s="3.1019274644770616e+02" x="-1.2581557037999606e+02" y="-4.1973448401915687e+02" hdg="2.6469859228998982e+00" length="3.2760163988942260e+01">
+                <line />
+            </geometry>
+            <geometry s="3.4295291043664844e+02" x="-1.5464355770160103e+02" y="-4.0418471280961307e+02" hdg="2.6463965581703377e+00" length="1.5495368098725114e+01">
+                <arc curvature="-1.1397109656265144e-02" />
+            </geometry>
+            <geometry s="3.5844827853537356e+02" x="-1.6761851412093864e+02" y="-3.9571327530087876e+02" hdg="2.4942478413954250e+00" length="1.9338785992438488e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.2406369205040599e+00" b="8.7285447275737042e-04" c="-7.8757418110732885e-07" d="1.4959019636155522e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="4.3981680349870936e+02" id="10037" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10012" contactPoint="end" />
+            <successor elementType="road" elementId="10020" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.1091147173073676e+01" y="-5.9118980705200350e+00" hdg="2.4669405372762414e+00" length="1.0354997041304410e+01">
+                <arc curvature="1.5982005179963385e-02" />
+            </geometry>
+            <geometry s="1.0354997041304410e+01" x="-1.9659694541556476e+01" y="-1.0684845042630470e-01" hdg="2.5768418464568343e+00" length="7.5866313448621511e+01">
+                <line />
+            </geometry>
+            <geometry s="8.6221310489925926e+01" x="-8.3709498304115399e+01" y="4.0510446196739721e+01" hdg="2.5379618275553533e+00" length="3.4842997023657325e+01">
+                <arc curvature="-2.6438650320800648e-03" />
+            </geometry>
+            <geometry s="1.2106430751358326e+02" x="-1.1146302384665556e+02" y="6.1558436088083283e+01" hdg="2.4508149708177371e+00" length="6.0923134532391281e+01">
+                <arc curvature="5.3940718831447664e-04" />
+            </geometry>
+            <geometry s="1.8198744204597455e+02" x="-1.5907759623024995e+02" y="9.9584843302415365e+01" hdg="2.4762583045359929e+00" length="7.2584657586772124e+01">
+                <line />
+            </geometry>
+            <geometry s="2.5457209963274667e+02" x="-2.1618172912943993e+02" y="1.4439279543742606e+02" hdg="2.4500822080564610e+00" length="4.8343985517909026e+01">
+                <line />
+            </geometry>
+            <geometry s="3.0291608515065570e+02" x="-2.5351434849377071e+02" y="1.7514502348094669e+02" hdg="2.4629220307202457e+00" length="1.6820022117164847e+01">
+                <arc curvature="6.4436144047793570e-03" />
+            </geometry>
+            <geometry s="3.1973610726782056e+02" x="-2.6718198895107884e+02" y="1.8494119697506778e+02" hdg="2.4712929649387121e+00" length="8.5458114832382588e+00">
+                <arc curvature="3.7257107602896251e-02" />
+            </geometry>
+            <geometry s="3.2828191875105881e+02" x="-2.7462706405372904e+02" y="1.8907071544235987e+02" hdg="3.1213897955718304e+00" length="4.4843258036330766e+00">
+                <arc curvature="1.3014494229297241e-01" />
+            </geometry>
+            <geometry s="3.3276624455469187e+02" x="-2.7866093475682032e+02" y="1.8820343851021161e+02" hdg="3.7540936180097755e+00" length="4.1699220587048629e+00">
+                <line />
+            </geometry>
+            <geometry s="3.3693616661339672e+02" x="-2.8233123085949563e+02" y="1.8550393131338973e+02" hdg="3.9435855489840717e+00" length="8.0970027668524480e+00">
+                <arc curvature="4.2122496020062225e-02" />
+            </geometry>
+            <geometry s="3.4503316938024915e+02" x="-2.8693390524461654e+02" y="1.7882556075891722e+02" hdg="4.2026644899078267e+00" length="2.9619090974260825e+01">
+                <line />
+            </geometry>
+            <geometry s="3.7465226035450996e+02" x="-3.0100476781454796e+02" y="1.5343112393556592e+02" hdg="4.1702140303101007e+00" length="1.3566458090876118e+01">
+                <line />
+            </geometry>
+            <geometry s="3.8821871844538606e+02" x="-3.0833428536229508e+02" y="1.4141421028865446e+02" hdg="4.1451547349538957e+00" length="4.7547230694016571e+00">
+                <line />
+            </geometry>
+            <geometry s="3.9297344151478774e+02" x="-3.1061713762145047e+02" y="1.3767660862342200e+02" hdg="4.0972588897300790e+00" length="2.0522469309601224e+01">
+                <arc curvature="-7.8017500891486369e-03" />
+            </geometry>
+            <geometry s="4.1349591082438894e+02" x="-3.2372671098443220e+02" y="1.2191234657922701e+02" hdg="3.9635008364722988e+00" length="1.8999999999997190e+01">
+                <line />
+            </geometry>
+            <geometry s="4.3249591082438616e+02" x="-3.3666238230106990e+02" y="1.0799586686674482e+02" hdg="3.9635008364722966e+00" length="7.3208926743232041e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.1545614097523824e+00" b="-1.7198166055304445e-04" c="1.4945582295758391e-06" d="-1.2495493320986182e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.4000000000000014e+01" id="10011" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10020" contactPoint="end" />
+            <successor elementType="road" elementId="10054" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.5158565227074763e+02" y="9.1941792211765488e+01" hdg="3.9945381348486082e+00" length="3.4000000000000014e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0457281622635985e+00" b="3.7635497866279319e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.4597987309194666e+01" id="10020" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10037" contactPoint="end" />
+            <successor elementType="road" elementId="10011" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.4164662763682912e+02" y="1.0263370610993029e+02" hdg="3.9634678443706672e+00" length="1.4597987309194666e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0511234623984276e+00" b="3.6959205543566633e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="6.0000000000007780e+00" id="10021" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10028" contactPoint="end" />
+            <successor elementType="road" elementId="10036" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.5110121289873376e+02" y="-6.4437840853487714e+01" hdg="4.1080510029031752e+00" length="6.0000000000007780e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9825230465733474e+00" b="2.3511994418733969e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.5183046566690180e+01" id="10019" junction="800003">
+        <link>
+            <predecessor elementType="road" elementId="10036" contactPoint="end" />
+            <successor elementType="junction" elementId="800003" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.5540804325208762e+02" y="-7.0652487093498621e+01" hdg="4.2677672555890611e+00" length="6.7004029458068688e+00">
+                <arc curvature="1.1933567326737524e-01" />
+            </geometry>
+            <geometry s="6.7004029458068688e+00" x="-4.5573909077380517e+02" y="-7.7188187057221285e+01" hdg="5.1667184772225303e+00" length="8.4826436208833105e+00">
+                <arc curvature="4.4567992898558180e-02" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9807078847074076e+00" b="2.1152840199064980e-04" c="-8.9222198699603275e-07" d="-1.2495493320986182e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="7.5534621264821183e+01" id="10029" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800004" contactPoint="start" />
+            <successor elementType="road" elementId="10039" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.6866132303234775e+02" y="-2.8881930221050652e+02" hdg="5.0146642541069788e+00" length="4.6583012486468540e+00">
+                <arc curvature="-2.3952252422430178e-02" />
+            </geometry>
+            <geometry s="4.6583012486468540e+00" x="-2.6751608402661418e+02" y="-2.9333196136139918e+02" hdg="4.9779325006278548e+00" length="1.8344493115388428e+01">
+                <arc curvature="2.6760815568201379e-02" />
+            </geometry>
+            <geometry s="2.3002794364035282e+01" x="-2.5865135194889672e+02" y="-3.0918716127751907e+02" hdg="5.4276722507841253e+00" length="1.3765881694871293e+01">
+                <arc curvature="6.9241285114514687e-03" />
+            </geometry>
+            <geometry s="3.6768676058906578e+01" x="-2.4914924475593412e+02" y="-3.1915360328777859e+02" hdg="5.4797427607500238e+00" length="1.9574723932729796e+01">
+                <line />
+            </geometry>
+            <geometry s="5.6343399991636375e+01" x="-2.3561222636609861e+02" y="-3.3327629620121672e+02" hdg="5.4324877057684713e+00" length="1.9191221273184809e+01">
+                <arc curvature="-1.3911930268895128e-02" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0134256168737226e+00" b="-3.7854729397098219e-03" c="3.2594046274347161e-05" d="-1.2088457701369715e-07" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.9956519635581834e+01" id="10035" junction="800004">
+        <link>
+            <predecessor elementType="road" elementId="10026" contactPoint="end" />
+            <successor elementType="road" elementId="10029" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.8195447028038217e+02" y="-2.7463108610337440e+02" hdg="5.5975084462587237e+00" length="1.3883022872035069e+01">
+                <line />
+            </geometry>
+            <geometry s="1.3883022872035069e+01" x="-2.7120914054902352e+02" y="-2.8342177509968343e+02" hdg="5.5975084462587237e+00" length="2.9142209607587244e+00">
+                <arc curvature="-2.0000000000000001e-01" />
+            </geometry>
+            <geometry s="1.6797243832793793e+01" x="-2.6960181761412122e+02" y="-2.8580326283083377e+02" hdg="5.0146642541069788e+00" length="3.1592758027880401e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0145463102979990e+00" b="5.6156757026826102e-05" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.8650683700079642e+00" id="10028" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10022" contactPoint="end" />
+            <successor elementType="road" elementId="10021" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.4998908840885389e+02" y="-6.2940623720332475e+01" hdg="4.0735154332033581e+00" length="1.8650683700079642e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9825230465733474e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.5611664552876949e+00" id="10036" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10021" contactPoint="end" />
+            <successor elementType="road" elementId="10019" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.5451051751924490e+02" y="-6.9375111557487116e+01" hdg="4.0998983343761557e+00" length="1.5611664552876949e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9807478909947331e+00" b="2.5625894785330014e-05" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="8.7930825381063138e-01" id="10040" junction="800003">
+        <link>
+            <predecessor elementType="road" elementId="10019" contactPoint="end" />
+            <successor elementType="road" elementId="10024" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.5068073429184051e+02" y="-8.3934691883665096e+01" hdg="5.4933574052735095e+00" length="8.7930825381063138e-01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9773229049200607e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="4.1284775543621713e+01" id="10042" junction="800000">
+        <link>
+            <predecessor elementType="road" elementId="10006" contactPoint="start" />
+            <successor elementType="road" elementId="10027" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.2931673066449045e+02" y="-3.7505264624725191e+02" hdg="8.3790662192090259e-01" length="6.0245863284880841e+00">
+                <line />
+            </geometry>
+            <geometry s="6.0245863284880841e+00" x="-2.2528616082374148e+02" y="-3.7057490717621948e+02" hdg="8.3790662192090259e-01" length="2.3707125346626754e+01">
+                <arc curvature="-6.2500000000000000e-02" />
+            </geometry>
+            <geometry s="2.9731711675114838e+01" x="-2.0379057209915814e+02" y="-3.6848199160746634e+02" hdg="5.6393965949363167e+00" length="1.1553063868506877e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9985642994298152e+00" b="-2.8750984354849882e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.2400000000000000e+02" id="10023" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10024" contactPoint="end" />
+            <successor elementType="road" elementId="10026" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.3631883884917079e+02" y="-9.9086764913515708e+01" hdg="5.4450954607378561e+00" length="2.9048427681326885e+01">
+                <arc curvature="-2.4943003419606517e-03" />
+            </geometry>
+            <geometry s="2.9048427681326885e+01" x="-4.1768182066346662e+02" y="-1.2135770823429627e+02" hdg="5.3824338969042840e+00" length="3.6626985412398639e+01">
+                <line />
+            </geometry>
+            <geometry s="6.5675413093725524e+01" x="-3.9485235776792200e+02" y="-1.5001372834844639e+02" hdg="5.3926279149041134e+00" length="3.8123759093561617e+01">
+                <arc curvature="1.5691890128255686e-03" />
+            </geometry>
+            <geometry s="1.0379917218728714e+02" x="-3.7005752121225669e+02" y="-1.7896831857549091e+02" hdg="5.4453595002895270e+00" length="8.3699623391274756e+01">
+                <arc curvature="-2.6310020678374778e-04" />
+            </geometry>
+            <geometry s="1.8749879557856190e+02" x="-3.1467170441192002e+02" y="-2.4172189240978568e+02" hdg="5.4124211946347547e+00" length="2.4932283451310788e+01">
+                <arc curvature="3.1511834807963187e-03" />
+            </geometry>
+            <geometry s="2.1243107902987268e+02" x="-2.9784434768918169e+02" y="-2.6010819488078471e+02" hdg="5.4879009195911621e+00" length="1.1568920970127323e+01">
+                <arc curvature="5.0891322658654248e-03" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9739678370876907e+00" b="1.3742167765078513e-04" c="-1.0362722122048008e-06" d="-1.2495493320986182e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.9997926219779398e+01" id="10024" junction="800003">
+        <link>
+            <predecessor elementType="junction" elementId="800003" contactPoint="start" />
+            <successor elementType="road" elementId="10023" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.5006172980972264e+02" y="-8.4559204858980650e+01" hdg="5.4700384641574589e+00" length="1.9997926219779398e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9773229049200607e+00" b="1.6777078760554356e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="-2.5002592494088902e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="-2.5002592494088902e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="9.9675769525353495e+00" id="10026" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10023" contactPoint="end" />
+            <successor elementType="junction" elementId="800004" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.8950672163674631e+02" y="-2.6812600426261253e+02" hdg="5.5721425674201033e+00" length="9.9675769525353495e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0092255905658769e+00" b="-5.3380272431894672e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.0000000000000000e+00" b="5.0162642574113278e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.0000000000000000e+00" b="5.0162642574113278e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="8.4843970916156053e+01" id="10030" junction="800005">
+        <link>
+            <predecessor elementType="junction" elementId="800004" contactPoint="start" />
+            <successor elementType="road" elementId="10033" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.6177418722624031e+02" y="-2.7414299959812513e+02" hdg="7.1691494385211074e-01" length="1.5344343374365730e+01">
+                <arc curvature="-6.5512985986404555e-03" />
+            </geometry>
+            <geometry s="1.5344343374365730e+01" x="-2.4971153492131398e+02" y="-2.6467004406367028e+02" hdg="5.6969504737527732e-01" length="1.7892134411774570e+01">
+                <arc curvature="-1.8541105971969455e-02" />
+            </geometry>
+            <geometry s="3.3236477786140298e+01" x="-2.3333030839564501e+02" y="-2.5768588232230013e+02" hdg="2.4593851002346589e-01" length="8.0934768431202819e+00">
+                <arc curvature="-2.4104986913145898e-02" />
+            </geometry>
+            <geometry s="4.1329954629260584e+01" x="-2.2533739708106862e+02" y="-2.5651218533747669e+02" hdg="8.6494696372643176e-03" length="1.7355710332092094e+01">
+                <arc curvature="5.8557974131382964e-03" />
+            </geometry>
+            <geometry s="5.8685664961352678e+01" x="-2.0802259603216859e+02" y="-2.5542032130032567e+02" hdg="4.5604390943339013e-02" length="1.7486215091714065e+01">
+                <arc curvature="2.5331518151733051e-02" />
+            </geometry>
+            <geometry s="7.6171880053066744e+01" x="-1.9129907538093735e+02" y="-2.5083330712736421e+02" hdg="4.9434179388404154e-01" length="7.7071140150652733e+00">
+                <arc curvature="2.6213777981909665e-02" />
+            </geometry>
+            <geometry s="8.3878994068132016e+01" x="-1.8503503604947565e+02" y="-2.4664190236853466e+02" hdg="7.3952452405685654e-01" length="9.6497684802403683e-01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9989108191636173e+00" b="5.9667050918087385e-06" c="1.0769478409795320e-05" d="-3.8635635580815497e-08" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.8834294548750375e+02" id="10041" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10033" contactPoint="end" />
+            <successor elementType="junction" elementId="800001" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.7987733505402593e+02" y="-2.4182348872739882e+02" hdg="7.9409636029170816e-01" length="1.4532325558793609e+01">
+                <arc curvature="2.3184557072930625e-02" />
+            </geometry>
+            <geometry s="1.4532325558793605e+01" x="-1.7160966475782806e+02" y="-2.2995318895659091e+02" hdg="1.1853409017390044e+00" length="1.5323214131393778e+01">
+                <arc curvature="2.8883282175917201e-02" />
+            </geometry>
+            <geometry s="2.9855539690187388e+01" x="-1.6907962640954270e+02" y="-2.1495643172031080e+02" hdg="1.5798516747409186e+00" length="8.5111958410417401e+00">
+                <arc curvature="4.4178049316408882e-02" />
+            </geometry>
+            <geometry s="3.8366735531229125e+01" x="-1.7071242631400426e+02" y="-2.0664940138357542e+02" hdg="1.8919922615031142e+00" length="2.5000000000000025e+01">
+                <line />
+            </geometry>
+            <geometry s="6.3366735531229153e+01" x="-1.7860496528831257e+02" y="-1.8292793792663360e+02" hdg="1.8919922615031084e+00" length="1.1000000000000000e+01">
+                <line />
+            </geometry>
+            <geometry s="7.4366735531229153e+01" x="-1.8205261266370692e+02" y="-1.7248144716376487e+02" hdg="1.9171187976397714e+00" length="2.2037843387836062e+01">
+                <arc curvature="-6.6146337749652942e-03" />
+            </geometry>
+            <geometry s="9.6404578919065216e+01" x="-1.8800385785699237e+02" y="-1.5128230155542110e+02" hdg="1.7501923655450744e+00" length="1.0023968652738917e+01">
+                <arc curvature="-1.4568864849133497e-02" />
+            </geometry>
+            <geometry s="1.0642854757180413e+02" x="-1.8904249176919674e+02" y="-1.4132302506348174e+02" hdg="1.5247411485288032e+00" length="9.0516622427255733e+00">
+                <arc curvature="-2.9934130900539764e-02" />
+            </geometry>
+            <geometry s="1.1548020981452970e+02" x="-1.8743537393972585e+02" y="-1.3243914376636809e+02" hdg="1.2161688602103951e+00" length="1.8871899558825181e+01">
+                <arc curvature="-1.7426470972232707e-02" />
+            </geometry>
+            <geometry s="1.3435210937335489e+02" x="-1.7804920856718607e+02" y="-1.1618012023365412e+02" hdg="9.0016300370142055e-01" length="3.8686776122577648e+01">
+                <arc curvature="-7.0058299125662273e-03" />
+            </geometry>
+            <geometry s="1.7303888549593256e+02" x="-1.5018642134673067e+02" y="-8.9522088515933063e+01" hdg="6.3127599520853872e-01" length="1.1226184426562897e+01">
+                <arc curvature="-3.2419501818894872e-02" />
+            </geometry>
+            <geometry s="1.8426506992249546e+02" x="-1.4012648831932194e+02" y="-8.4685751492848453e+01" hdg="2.7961449748952316e-01" length="9.8486950370235053e+00">
+                <arc curvature="-3.5790376238941442e-02" />
+            </geometry>
+            <geometry s="1.9411376495951896e+02" x="-1.3038288587377460e+02" y="-8.3700573705342094e+01" hdg="6.1673011328187215e+00" length="7.8602154374887805e+00">
+                <arc curvature="-5.9605220574748770e-02" />
+            </geometry>
+            <geometry s="2.0197398039700772e+02" x="-1.2302799002261399e+02" y="-8.6343973692429088e+01" hdg="5.6007929889784878e+00" length="3.3047590438852379e+00">
+                <line />
+            </geometry>
+            <geometry s="2.0527873944089293e+02" x="-1.2048302418221473e+02" y="-8.8439120214311757e+01" hdg="5.4374899565248667e+00" length="1.3400360061969355e+01">
+                <arc curvature="-1.9495384620205381e-02" />
+            </geometry>
+            <geometry s="2.1867909950286230e+02" x="-1.1295595059215934e+02" y="-9.9487287050691862e+01" hdg="5.2529436009834640e+00" length="1.2494321055521048e+01">
+                <line />
+            </geometry>
+            <geometry s="2.3117342055838333e+02" x="-1.0650208333999922e+02" y="-1.1018824516363604e+02" hdg="5.2873530608124284e+00" length="1.4533937792585663e+01">
+                <arc curvature="3.0154796792982004e-02" />
+            </geometry>
+            <geometry s="2.4570735835096903e+02" x="-9.6257811522204477e+01" y="-1.2037268915820223e+02" hdg="5.8219424214224595e+00" length="2.1784177643414392e+01">
+                <arc curvature="1.1334751554991224e-02" />
+            </geometry>
+            <geometry s="2.6749153599438347e+02" x="-7.5773460970875945e+01" y="-1.2765011977188453e+02" hdg="6.0173593314790272e+00" length="2.0851409493120286e+01">
+                <arc curvature="4.8151522988937974e-03" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9341386986316191e+00" b="1.0060403280343609e-03" c="-2.5734231883730228e-07" d="-3.8635635580815497e-08" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="6.0933588244484671e+00" id="10033" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10030" contactPoint="end" />
+            <successor elementType="road" elementId="10041" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.8432212168888231e+02" y="-2.4599156904501342e+02" hdg="7.5328212388295479e-01" length="6.0933588244484671e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9538636939332914e+00" b="3.2371301067203521e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7305418925356538e+01" id="10044" junction="800004">
+        <link>
+            <predecessor elementType="road" elementId="10045" contactPoint="end" />
+            <successor elementType="junction" elementId="800005" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.7782589661762171e+02" y="-2.7812897272422049e+02" hdg="5.9062150347151601e+00" length="1.7305418925356538e+01">
+                <arc curvature="7.1082919064061681e-02" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0055391928960340e+00" b="1.8255417444511542e-02" c="-4.1902153069107110e-03" d="1.7529668857708570e-04" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.1661853357265041e-01" id="10043" junction="800005">
+        <link>
+            <predecessor elementType="junction" elementId="800004" contactPoint="start" />
+            <successor elementType="road" elementId="10030" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.6204910487302186e+02" y="-2.7430005876942624e+02" hdg="5.1904567470652840e-01" length="3.1661853357265041e-01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0913492657189430e+00" b="2.9195526083792867e-01" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="5.4111303164064877e+00" id="10045" junction="800004">
+        <link>
+            <predecessor elementType="road" elementId="10026" contactPoint="end" />
+            <successor elementType="road" elementId="10044" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.8195447028038217e+02" y="-2.7463108610337440e+02" hdg="5.5802966132890015e+00" length="5.4111303164064877e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0145463102979990e+00" b="1.6645537762518018e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7099999999999991e+01" id="10046" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10012" contactPoint="start" />
+            <successor elementType="road" elementId="10055" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2095224257613353e+00" y="-2.8798288328090894e+01" hdg="4.5344993170014956e+00" length="1.7100000000000001e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.3590421832182464e+00" b="1.0715812348686367e-03" c="-8.4229200212660270e-07" d="1.4959019636155522e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7613799328225891e+01" id="10002" junction="800004">
+        <link>
+            <predecessor elementType="junction" elementId="800005" contactPoint="start" />
+            <successor elementType="road" elementId="10029" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.6177418722624031e+02" y="-2.7414299959812513e+02" hdg="3.8585075974419039e+00" length="5.4328949195751619e+00">
+                <line />
+            </geometry>
+            <geometry s="5.4328949195751619e+00" x="-2.6586970110320391e+02" y="-2.7771274934996268e+02" hdg="3.8585075974419039e+00" length="1.1561566566650750e+01">
+                <arc curvature="1.0000000000000001e-01" />
+            </geometry>
+            <geometry s="1.6994461486225912e+01" x="-2.6884569562943926e+02" y="-2.8822804413827839e+02" hdg="5.0146642541069788e+00" length="6.1933784199997977e-01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9989108191636173e+00" b="-8.2405831017078979e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.9429579656192633e+01" id="10001" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10015" contactPoint="end" />
+            <successor elementType="road" elementId="10017" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.3248379190053350e+02" y="-8.2255081132329758e+02" hdg="3.6128578809955307e+00" length="1.9429579656192633e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0342549471424691e+00" b="-3.2441069143231160e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.4770509373550475e+01" id="10013" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10048" contactPoint="end" />
+            <successor elementType="road" elementId="10015" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.3953499243208194e+02" y="-7.7962901480109610e+02" hdg="5.5769075341746097e+00" length="2.4770509373550475e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0161031030355430e+00" b="-2.8723125915153919e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.8518556417148123e+01" id="10016" junction="800001">
+        <link>
+            <predecessor elementType="road" elementId="10041" contactPoint="end" />
+            <successor elementType="road" elementId="10034" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-5.5413463074904726e+01" y="-1.3210956418004932e+02" hdg="6.1177620438350013e+00" length="1.2905986647268026e+01">
+                <line />
+            </geometry>
+            <geometry s="1.2905986647268026e+01" x="-4.2683659342409506e+01" y="-1.3423479082010712e+02" hdg="6.1177620438350013e+00" length="1.1519906861884600e+01">
+                <arc curvature="-1.2500000000000000e-01" />
+            </geometry>
+            <geometry s="2.4425893509152626e+01" x="-3.6005810386224134e+01" y="-1.4240244783543471e+02" hdg="4.6777736860994263e+00" length="4.0926629079954955e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.5916739815376939e+00" b="1.2309075392839885e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.7845977507792334e+01" id="10025" junction="800001">
+        <link>
+            <predecessor elementType="road" elementId="10041" contactPoint="end" />
+            <successor elementType="road" elementId="10038" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-5.5413463074904726e+01" y="-1.3210956418004932e+02" hdg="6.1177620438350013e+00" length="1.2096267589615286e+01">
+                <line />
+            </geometry>
+            <geometry s="1.2096267589615286e+01" x="-4.3482324718726339e+01" y="-1.3410145451972821e+02" hdg="6.1177620438350013e+00" length="1.2076975328048071e+01">
+                <arc curvature="1.2500000000000000e-01" />
+            </geometry>
+            <geometry s="2.4173242917663359e+01" x="-3.4369474775984287e+01" y="-1.2800797240016800e+02" hdg="1.3441986526614240e+00" length="3.6727345901289756e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.5916739815376939e+00" b="1.1894575913624608e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7824618836094761e+01" id="10006" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800000" contactPoint="start" />
+            <successor elementType="road" elementId="10005" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.2931673066449042e+02" y="-3.7505264624725191e+02" hdg="3.9794992755106939e+00" length="1.7824618836094761e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9985642994298152e+00" b="2.6832584816317628e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.4384710666384972e+01" id="10010" junction="800002">
+        <link>
+            <predecessor elementType="road" elementId="10034" contactPoint="end" />
+            <successor elementType="road" elementId="10009" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.8304482920543259e+02" y="-3.8405062351943343e+02" hdg="2.4978039413465241e+00" length="1.4384710666384972e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0152230503534581e+00" b="3.3292095178198212e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.4384710666384972e+01" id="10027" junction="800002">
+        <link>
+            <predecessor elementType="road" elementId="10042" contactPoint="end" />
+            <successor elementType="road" elementId="10034" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.9455011500718916e+02" y="-3.7541648780266894e+02" hdg="5.6393965949363167e+00" length="1.4384710666384972e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0104340787872967e+00" b="-3.3292095178198212e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.0284449592691377e+01" id="10039" junction="800000">
+        <link>
+            <predecessor elementType="road" elementId="10029" contactPoint="end" />
+            <successor elementType="road" elementId="10006" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.2502069867914429e+02" y="-3.4921178882604244e+02" hdg="5.1655007736409875e+00" length="9.8157802712381006e+00">
+                <line />
+            </geometry>
+            <geometry s="9.8157802712381006e+00" x="-2.2072368941901200e+02" y="-3.5803705107435917e+02" hdg="5.1655007736409875e+00" length="9.4880119850423483e+00">
+                <arc curvature="-1.2500000000000000e-01" />
+            </geometry>
+            <geometry s="1.9303792256280449e+01" x="-2.2197044929701201e+02" y="-3.6689133595971140e+02" hdg="3.9794992755106939e+00" length="1.0980657336410928e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.1654917967290768e+00" b="5.5119871598903565e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="4.0000000000000000e+00" id="10051" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10005" contactPoint="end" />
+            <successor elementType="road" elementId="10050" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.1700531845587562e+02" y="-5.7324658655426583e+02" hdg="5.4270442645113413e+00" length="4.0000000000000000e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9641954759244111e+00" b="-2.6750807946459058e-05" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.9139461299271474e+00" id="10050" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10051" contactPoint="end" />
+            <successor elementType="road" elementId="10053" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.1438389011538362e+02" y="-5.7626786334656163e+02" hdg="5.4270442645113413e+00" length="3.9139461299271505e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9643024791561974e+00" b="-2.6750807946459058e-05" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.0000000000000000e+00" id="10031" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10053" contactPoint="end" />
+            <successor elementType="road" elementId="10052" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.0642710887170881e+02" y="-6.0399724722829956e+02" hdg="4.1465023471458480e+00" length="2.0000000000000000e+00">
+                <arc curvature="-5.2722209496332287e-02" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9648491089464146e+00" b="-3.5095900761171396e-05" c="-4.6131514907200032e-07" d="1.4959019636155582e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.7046527794491070e+01" id="10053" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10050" contactPoint="end" />
+            <successor elementType="road" elementId="10031" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.1181885778834612e+02" y="-5.7922414199872287e+02" hdg="5.4270442645113413e+00" length="4.5052748904394715e+00">
+                <line />
+            </geometry>
+            <geometry s="4.5052748904394715e+00" x="-3.0886629396846990e+02" y="-5.8262706261607241e+02" hdg="5.4270442645113413e+00" length="2.2541252904051596e+01">
+                <arc curvature="-5.2631578947368418e-02" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9644071803774317e+00" b="-2.6750807946459058e-05" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.3350618593928985e+01" id="10052" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10031" contactPoint="end" />
+            <successor elementType="road" elementId="10049" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.0758637637290457e+02" y="-6.0562586445122417e+02" hdg="4.0410579281531831e+00" length="4.1443234015946313e+00">
+                <arc curvature="-5.2722209496332287e-02" />
+            </geometry>
+            <geometry s="4.1443234015946331e+00" x="-3.1045179698247011e+02" y="-6.0862024519528370e+02" hdg="3.9127078359856577e+00" length="1.6071339015067796e+01">
+                <arc curvature="-1.9046133297160355e-02" />
+            </geometry>
+            <geometry s="2.0215662416662433e+01" x="-3.2349886692007721e+02" y="-6.1789663969004880e+02" hdg="3.5300867573309529e+00" length="8.0278290496395801e+00">
+                <line />
+            </geometry>
+            <geometry s="2.8243491466302011e+01" x="-3.3091985698584136e+02" y="-6.2096812893671563e+02" hdg="3.4159732546111332e+00" length="5.1071271276269812e+00">
+                <arc curvature="-1.0693600154619834e-02" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9649211448118109e+00" b="-3.6939366275103062e-05" c="-4.6041760789383098e-07" d="1.4959019636155582e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.7318645856910598e+02" id="10048" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10049" contactPoint="end" />
+            <successor elementType="road" elementId="10013" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.3707963053836670e+02" y="-6.2241459287639202e+02" hdg="3.3458412010598249e+00" length="2.3649139005120173e+01">
+                <arc curvature="-2.4746658907385524e-03" />
+            </geometry>
+            <geometry s="2.3649139005120219e+01" x="-3.6030024750238982e+02" y="-6.2651530241928219e+02" hdg="3.3186347805723346e+00" length="2.6864553755590656e+01">
+                <line />
+            </geometry>
+            <geometry s="5.0513692760710910e+01" x="-3.8681669947628740e+02" y="-6.3142955587756114e+02" hdg="3.2838147643110274e+00" length="2.6300680123111132e+01">
+                <arc curvature="8.3242597340016065e-03" />
+            </geometry>
+            <geometry s="7.6814372883821989e+01" x="-4.1222180887992585e+02" y="-6.3801294931790403e+02" hdg="3.4499556382043850e+00" length="8.0875374924954677e+00">
+                <arc curvature="3.1652720600973086e-02" />
+            </geometry>
+            <geometry s="8.4901910376317460e+01" x="-4.1950838032545369e+02" y="-6.4145865096049454e+02" hdg="3.7011695875047521e+00" length="8.1819861677593728e+00">
+                <arc curvature="5.0189167716928842e-02" />
+            </geometry>
+            <geometry s="9.3083896544076879e+01" x="-4.2561426060552714e+02" y="-6.4738971006707129e+02" hdg="4.1322541918278333e+00" length="8.2749976866429069e+00">
+                <line />
+            </geometry>
+            <geometry s="1.0135889423071978e+02" x="-4.2988845283393283e+02" y="-6.5398778497988485e+02" hdg="4.1662249536830531e+00" length="8.4663892347779068e+00">
+                <arc curvature="3.9668920291587237e-02" />
+            </geometry>
+            <geometry s="1.0982528346549759e+02" x="-4.3302630223206177e+02" y="-6.6181435707360561e+02" hdg="4.3801662736589959e+00" length="2.2872031949287695e+01">
+                <arc curvature="1.2923378693042031e-02" />
+            </geometry>
+            <geometry s="1.3269731541478529e+02" x="-4.3728186745190271e+02" y="-6.8421997797405322e+02" hdg="4.8088388161770297e+00" length="8.3889614899661442e+00">
+                <line />
+            </geometry>
+            <geometry s="1.4108627690475134e+02" x="-4.3645012534985034e+02" y="-6.9256765506342447e+02" hdg="4.8083859660115404e+00" length="8.1439021062685661e+00">
+                <arc curvature="5.0817386217840946e-02" />
+            </geometry>
+            <geometry s="1.4923017901101991e+02" x="-4.3403744321427365e+02" y="-7.0028889601177980e+02" hdg="5.0832650045491317e+00" length="7.9873375491612730e+00">
+                <arc curvature="3.9820896997345534e-02" />
+            </geometry>
+            <geometry s="1.5721751656018125e+02" x="-4.3003366394585339e+02" y="-7.0716922679058723e+02" hdg="5.4994500985858910e+00" length="2.3308970120451690e+01">
+                <arc curvature="7.7538708267174683e-03" />
+            </geometry>
+            <geometry s="1.8052648668063296e+02" x="-4.1214855343876428e+02" y="-7.2208989921722991e+02" hdg="5.6198230937737712e+00" length="5.0999491901199185e+01">
+                <line />
+            </geometry>
+            <geometry s="2.3152597858183225e+02" x="-3.7203771858432879e+02" y="-7.5357500694689475e+02" hdg="5.6323170351490877e+00" length="4.1660479987273789e+01">
+                <arc curvature="-1.1926984696774342e-03" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9668827205365123e+00" b="-7.0042960652190139e-05" c="-4.4399150229396473e-07" d="1.4959019636155522e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.2244008405171474e+00" id="10049" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10052" contactPoint="end" />
+            <successor elementType="road" elementId="10048" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.3587127661403639e+02" y="-6.2221701197697450e+02" hdg="3.3036707934820022e+00" length="1.2244008405171474e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-4.9666596523464230e+00" b="-1.8218559045990061e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.4482555340905338e+02" id="10022" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10054" contactPoint="end" />
+            <successor elementType="road" elementId="10028" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.7736255481866812e+02" y="6.0327523893490969e+01" hdg="4.4944316352040143e+00" length="5.2069306598600029e-01">
+                <arc curvature="1.5006625521058242e-01" />
+            </geometry>
+            <geometry s="5.2069306598600029e-01" x="-3.7749156304310185e+02" y="5.9820691757737876e+01" hdg="4.4239040628503785e+00" length="1.3715368448267395e+01">
+                <arc curvature="9.7610153548386060e-03" />
+            </geometry>
+            <geometry s="1.4236061514253393e+01" x="-3.8056749253876916e+02" y="4.6458099606751844e+01" hdg="4.4618295512949109e+00" length="2.4465103021367366e+01">
+                <arc curvature="-1.4613807687754452e-02" />
+            </geometry>
+            <geometry s="3.8701164535620762e+01" x="-3.9061514269450339e+02" y="2.4274636118189051e+01" hdg="4.1664349286011202e+00" length="4.2444290736136622e+01">
+                <arc curvature="-1.0931654349569107e-03" />
+            </geometry>
+            <geometry s="8.1145455271757385e+01" x="-4.1310574076690710e+02" y="-1.1049725128965932e+01" hdg="4.1166836180923241e+00" length="3.1586474968039184e+01">
+                <line />
+            </geometry>
+            <geometry s="1.1273193023979657e+02" x="-4.3082738156791999e+02" y="-3.7195145688795286e+01" hdg="4.0725621719621126e+00" length="3.2093623169256801e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0295299842082075e+00" b="3.9687260431118778e-04" c="-3.1822932207012367e-07" d="-1.2495493320986182e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="7.0023656499412317e+00" id="10054" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10011" contactPoint="end" />
+            <successor elementType="road" elementId="10022" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.7394974399902060e+02" y="6.6332274426977079e+01" hdg="3.9945381348486082e+00" length="1.4344873506298403e+00">
+                <line />
+            </geometry>
+            <geometry s="1.4344873506298403e+00" x="-3.7489330301938924e+02" y="6.5251788270565072e+01" hdg="3.9945381348486082e+00" length="5.4988285039094675e+00">
+                <arc curvature="9.0909090909090912e-02" />
+            </geometry>
+            <geometry s="6.9333158545393081e+00" x="-3.7734762378454019e+02" y="6.0394940052272958e+01" hdg="4.4944316352040143e+00" length="6.9049795401923755e-02">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.0322212079343016e+00" b="3.8433064775997245e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.5999321374216979e+01" id="10012" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10046" contactPoint="start" />
+            <successor elementType="road" elementId="10037" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2095224257613353e+00" y="-2.8798288328090894e+01" hdg="1.3929066634117024e+00" length="1.2098327934934378e+01">
+                <line />
+            </geometry>
+            <geometry s="1.2098327934934378e+01" x="-4.0686877897958276e+00" y="-1.6890880302720134e+01" hdg="1.3929066634117024e+00" length="8.5922709909163117e+00">
+                <arc curvature="1.2500000000000000e-01" />
+            </geometry>
+            <geometry s="2.0690598925850690e+01" x="-6.9454368352454985e+00" y="-9.2278624594441307e+00" hdg="2.4669405372762414e+00" length="5.3087224483662894e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.3590421832182464e+00" b="7.8648504136974752e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="7.7220808626400824e+01" id="10038" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10055" contactPoint="end" />
+            <successor elementType="junction" elementId="800001" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.0339692553885774e+01" y="-5.0733624851805232e+01" hdg="4.4864090206444551e+00" length="1.3163688678788272e+01">
+                <line />
+            </geometry>
+            <geometry s="1.3163688678788283e+01" x="-1.3367200953200875e+01" y="-6.3676648994250442e+01" hdg="4.4474986844665043e+00" length="1.8221172639379350e+01">
+                <arc curvature="-8.2616578929269775e-03" />
+            </geometry>
+            <geometry s="3.1384861318167623e+01" x="-1.9307940483732239e+01" y="-8.0893468299935563e+01" hdg="4.3380641164896865e+00" length="3.8659782841659514e+01">
+                <arc curvature="2.3625647238440326e-03" />
+            </geometry>
+            <geometry s="7.0044644159827129e+01" x="-3.1704096353623399e+01" y="-1.1749425980249960e+02" hdg="4.4202190029604917e+00" length="7.1761644665736952e+00">
+                <arc curvature="9.1375140015475861e-03" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.3354098703607029e+00" b="1.0339915014550001e-03" c="-8.3221791018871239e-07" d="1.4959019636155522e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="5.2232508811930911e+00" id="10055" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10046" contactPoint="end" />
+            <successor elementType="road" elementId="10038" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-9.2354176132526931e+00" y="-4.5628438604137649e+01" hdg="4.4993662574078028e+00" length="5.2232508811930911e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.3409636907237887e+00" b="1.0632880727753263e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="6.3500000000000000e+02" id="10047" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10056" contactPoint="end" />
+            <successor elementType="road" elementId="10058" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.6663200630673853e+03" y="-1.4600567685628682e+03" hdg="2.3251969161510213e+00" length="5.2880880090228459e+01">
+                <arc curvature="-5.7377855540426581e-04" />
+            </geometry>
+            <geometry s="5.2880880090228459e+01" x="-1.7019526075311005e+03" y="-1.4209861920624971e+03" hdg="2.2699013680544300e+00" length="3.5060985728306413e+01">
+                <line />
+            </geometry>
+            <geometry s="8.7941865818534865e+01" x="-1.7246074912140116e+03" y="-1.3942162579554106e+03" hdg="2.3819265647267058e+00" length="9.6508910319832850e+00">
+                <arc curvature="1.1806153580152784e-01" />
+            </geometry>
+            <geometry s="9.7592756850518157e+01" x="-1.7334817785450271e+03" y="-1.3924021473785876e+03" hdg="3.6386615386027596e+00" length="2.8901603101597448e+00">
+                <line />
+            </geometry>
+            <geometry s="1.0048291716067790e+02" x="-1.7361493609937713e+03" y="-1.3938751164562354e+03" hdg="3.8101934555649724e+00" length="1.4788025167724138e+01">
+                <arc curvature="1.0969896119398531e-02" />
+            </geometry>
+            <geometry s="1.1527094232840204e+02" x="-1.7469706529863179e+03" y="-1.4039318971587345e+03" hdg="3.9165257081577067e+00" length="9.3234381456157571e+00">
+                <line />
+            </geometry>
+            <geometry s="1.2459438047401780e+02" x="-1.7535892702538058e+03" y="-1.4104056016367592e+03" hdg="3.8814563063446359e+00" length="3.2477876338967768e+01">
+                <line />
+            </geometry>
+            <geometry s="1.5707225681298556e+02" x="-1.7779359760015957e+03" y="-1.4326841950296698e+03" hdg="3.9158482339835468e+00" length="8.6442883586179242e+00">
+                <arc curvature="-1.9910607122484818e-02" />
+            </geometry>
+            <geometry s="1.6571654517160349e+02" x="-1.7846380757278303e+03" y="-1.4381193564738423e+03" hdg="3.7499941186829950e+00" length="1.1434753454032522e+01">
+                <arc curvature="-8.4267609146105454e-02" />
+            </geometry>
+            <geometry s="1.7715129862563600e+02" x="-1.7955558281788767e+03" y="-1.4395259436601609e+03" hdg="2.7358688788123837e+00" length="1.2732430662727600e+01">
+                <arc curvature="-2.5408116813796264e-02" />
+            </geometry>
+            <geometry s="1.8988372928836361e+02" x="-1.8062735184580088e+03" y="-1.4327429894516245e+03" hdg="2.4160385282890675e+00" length="5.9383619076355938e+00">
+                <line />
+            </geometry>
+            <geometry s="1.9582209119599921e+02" x="-1.8106910510887253e+03" y="-1.4287761917319544e+03" hdg="2.3804811480464152e+00" length="7.0187166907610177e+01">
+                <arc curvature="-8.8305438442646048e-04" />
+            </geometry>
+            <geometry s="2.6600925810360940e+02" x="-1.8600555117153044e+03" y="-1.3788935691284194e+03" hdg="2.3182155570952130e+00" length="3.9344593929417158e+01">
+                <arc curvature="3.7387517534390991e-03" />
+            </geometry>
+            <geometry s="3.0535385203302656e+02" x="-1.8888167614936829e+03" y="-1.3520971427280456e+03" hdg="2.4316534921976727e+00" length="2.3246195317935172e+01">
+                <line />
+            </geometry>
+            <geometry s="3.2860004735096174e+02" x="-1.9064467116184533e+03" y="-1.3369455601256341e+03" hdg="2.3815982082096396e+00" length="8.5653050646985349e+00">
+                <line />
+            </geometry>
+            <geometry s="3.3716535241566027e+02" x="-1.9126551859490573e+03" y="-1.3310447722682729e+03" hdg="2.3400523871198788e+00" length="3.9921643292820939e+01">
+                <line />
+            </geometry>
+            <geometry s="3.7708699570848120e+02" x="-1.9404903332872045e+03" y="-1.3024146590933969e+03" hdg="2.3089459215198254e+00" length="5.4348561016865089e+00">
+                <arc curvature="1.1661230699995981e-01" />
+            </geometry>
+            <geometry s="3.8252185181016773e+02" x="-1.9451421924796844e+03" y="-1.2997933880574383e+03" hdg="3.0170175363071756e+00" length="6.8376659502527746e+00">
+                <arc curvature="1.8238712352216754e-01" />
+            </geometry>
+            <geometry s="3.8935951776042049e+02" x="-1.9507821978645679e+03" y="-1.3028498564791198e+03" hdg="4.3018617870856382e+00" length="5.7154259906054046e+00">
+                <arc curvature="1.6311518101875339e-01" />
+            </geometry>
+            <geometry s="3.9507494375102590e+02" x="-1.9504967742078006e+03" y="-1.3083640173701569e+03" hdg="5.3481057468983497e+00" length="3.8556456961545562e+00">
+                <line />
+            </geometry>
+            <geometry s="3.9893058944718047e+02" x="-1.9482074675709009e+03" y="-1.3114664484905079e+03" hdg="5.5570640097388084e+00" length="2.2671881465070715e+01">
+                <line />
+            </geometry>
+            <geometry s="4.2160247091225119e+02" x="-1.9312459306979779e+03" y="-1.3265102789656930e+03" hdg="5.5635635070966583e+00" length="4.5388711953362851e+01">
+                <arc curvature="-2.2658770097496068e-03" />
+            </geometry>
+            <geometry s="4.6699118286561406e+02" x="-1.8986520284317414e+03" y="-1.3580777055780695e+03" hdg="5.4890090837043539e+00" length="5.0433540008064213e+01">
+                <line />
+            </geometry>
+            <geometry s="5.1742472287367832e+02" x="-1.8633014548487508e+03" y="-1.3940496183810278e+03" hdg="5.4720181091009881e+00" length="4.8703072052672731e+01">
+                <line />
+            </geometry>
+            <geometry s="5.6612779492635104e+02" x="-1.8297386299522138e+03" y="-1.4293485334661902e+03" hdg="5.4795767689922155e+00" length="4.1882977205913349e+01">
+                <line />
+            </geometry>
+            <geometry s="6.0801077213226438e+02" x="-1.8007263848858636e+03" y="-1.4595580765660156e+03" hdg="5.5339528406742229e+00" length="9.7450895027771622e+00">
+                <arc curvature="-4.1613687874370260e-02" />
+            </geometry>
+            <geometry s="6.1775586163504158e+02" x="-1.7951712754852842e+03" y="-1.4674672673775945e+03" hdg="5.0873098418377722e+00" length="6.3295249204424282e+00">
+                <arc curvature="-1.1621356317309552e-01" />
+            </geometry>
+            <geometry s="6.2408538655548398e+02" x="-1.7951233203560114e+03" y="-1.4736563406679779e+03" hdg="4.1559549257141848e+00" length="3.1560381505898571e+00">
+                <line />
+            </geometry>
+            <geometry s="6.2724142470607387e+02" x="-1.7967902183942497e+03" y="-1.4763362712152302e+03" hdg="3.9100098681588280e+00" length="2.5147767781529780e+00">
+                <line />
+            </geometry>
+            <geometry s="6.2975620148422684e+02" x="-1.7985983720757067e+03" y="-1.4780840362189338e+03" hdg="3.7964982605912740e+00" length="3.3287928347328508e+00">
+                <line />
+            </geometry>
+            <geometry s="6.3308499431895973e+02" x="-1.8012384557314217e+03" y="-1.4801115519469604e+03" hdg="3.7215506136091268e+00" length="1.9150056810402702e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-3.4485485878351354e+00" b="1.6703829928175113e-02" c="-3.9961537585403601e-05" d="2.8781826235292323e-08" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.8859608431983519e+00" id="10056" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10003" contactPoint="end" />
+            <successor elementType="road" elementId="10047" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.6641287149618356e+03" y="-1.4619347364722794e+03" hdg="2.4330533227250744e+00" length="2.8859608431983519e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-5.6773094625608280e+00" b="7.7227689349231754e-01" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="6.5000000000000000e+01" id="40000" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="40002" contactPoint="end" />
+            <successor elementType="road" elementId="40003" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.0050622136799743e+03" y="-2.4959382905136272e+03" hdg="3.8499018670841729e+00" length="9.7672642867344539e+00">
+                <arc curvature="-1.8283161904032254e-02" />
+            </geometry>
+            <geometry s="9.7672642867344539e+00" x="-3.0129892323135009e+03" y="-2.5016284550723512e+03" hdg="3.6586917968288368e+00" length="3.8914405117780461e+01">
+                <arc curvature="-2.4386281337349840e-03" />
+            </geometry>
+            <geometry s="4.8681669404514913e+01" x="-3.0476676414272420e+03" y="-2.5192589205678228e+03" hdg="3.6603574433491524e+00" length="1.6318330595485087e+01">
+                <arc curvature="7.9062878695442800e-03" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-2.1074976469199318e+00" b="-2.7937977012660611e-03" c="2.3892114563343336e-06" d="1.0591818435537064e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals>
+            <signal s="9.6" t="0" id="5" name="" dynamic="no" orientation="-" zOffset="0" type="5000" country="OpenDrive" countryRevision="2013" subtype="-1" hOffset="0.1" pitch="0" roll="0" height="0.1" width="0.1">
+                <validity fromLane="-2" toLane="0" />
+            </signal>
+            <signal s="61.7" t="0" id="6" name="" dynamic="no" orientation="-" zOffset="0" type="5001" country="OpenDrive" countryRevision="2013" subtype="-1" hOffset="0.1" pitch="0" roll="0" height="0.1" width="0.1">
+                <validity fromLane="-2" toLane="0" />
+            </signal>
+            <signal s="61.8" t="0" id="7" name="" dynamic="no" orientation="-" zOffset="0" type="5001" country="OpenDrive" countryRevision="2013" subtype="-1" hOffset="0.1" pitch="0" roll="0" height="0.1" width="0.1">
+                <validity fromLane="-2" toLane="0" />
+            </signal>
+            <signal s="9.4" t="0" id="8" name="" dynamic="no" orientation="-" zOffset="0" type="5000" country="OpenDrive" countryRevision="2013" subtype="-1" hOffset="0.1" pitch="0" roll="0" height="0.1" width="0.1">
+                <validity fromLane="-2" toLane="0" />
+            </signal>
+            <signal s="9.5" t="0" id="9" name="" dynamic="no" orientation="-" zOffset="0" type="5000" country="OpenDrive" countryRevision="2013" subtype="-1" hOffset="0.1" pitch="0" roll="0" height="0.1" width="0.1">
+                <validity fromLane="-2" toLane="0" />
+            </signal>
+        </signals>
+    </road>
+    <road name="" length="3.3711813441258940e+00" id="40002" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10057" contactPoint="end" />
+            <successor elementType="road" elementId="40000" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.0022267764860303e+03" y="-2.4941147885053524e+03" hdg="3.7131100264016470e+00" length="3.3711813441258940e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-2.4997022297620752e+00" b="1.1634039904899784e-01" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="9.3400000000000000e+02" id="40003" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="40000" contactPoint="end" />
+            <successor elementType="junction" elementId="800006" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.0612079064847662e+03" y="-2.5282406515343614e+03" hdg="3.7379086749227941e+00" length="1.2677056340980144e+01">
+                <arc curvature="2.1692840159659690e-02" />
+            </geometry>
+            <geometry s="1.2677056340980144e+01" x="-3.0705713493480844e+03" y="-2.5367216993777256e+03" hdg="4.0131323651228143e+00" length="6.5456820490290673e+00">
+                <arc curvature="5.0417488052973858e-02" />
+            </geometry>
+            <geometry s="1.9222738390009212e+01" x="-3.0739598608226206e+03" y="-2.5424218241591557e+03" hdg="4.4241266513143493e+00" length="5.2394033181308979e+00">
+                <line />
+            </geometry>
+            <geometry s="2.4462141708140109e+01" x="-3.0753894063844600e+03" y="-2.5473492018906813e+03" hdg="4.4915681453281699e+00" length="1.7615744503201700e+01">
+                <arc curvature="5.4051694632858832e-03" />
+            </geometry>
+            <geometry s="4.2077886211341806e+01" x="-3.0785102713065735e+03" y="-2.5646841934723557e+03" hdg="4.5921091961701777e+00" length="1.6353389226261669e+01">
+                <arc curvature="-4.6788050617794494e-02" />
+            </geometry>
+            <geometry s="5.8431275437603475e+01" x="-3.0861570988409221e+03" y="-2.5787193845501170e+03" hdg="3.8402591039532319e+00" length="1.3977503789233202e+01">
+                <line />
+            </geometry>
+            <geometry s="7.2408779226836671e+01" x="-3.0969556244108535e+03" y="-2.5878122992939630e+03" hdg="3.8766093496694873e+00" length="1.6422134453475856e+01">
+                <arc curvature="1.8147197387471160e-02" />
+            </geometry>
+            <geometry s="8.8830913680312534e+01" x="-3.1074170175975719e+03" y="-2.6005371335730447e+03" hdg="4.1762203663805195e+00" length="6.4289421359910826e+00">
+                <line />
+            </geometry>
+            <geometry s="9.5259855816303613e+01" x="-3.1106802893690201e+03" y="-2.6059399798424174e+03" hdg="4.2625229956099293e+00" length="2.2483090177558413e+01">
+                <arc curvature="-5.0397122752664850e-03" />
+            </geometry>
+            <geometry s="1.1774294599386202e+02" x="-3.1215769872798332e+03" y="-2.6255933394607550e+03" hdg="4.1252185699736685e+00" length="2.5303607957564452e+01">
+                <arc curvature="-2.4124905097360212e-02" />
+            </geometry>
+            <geometry s="1.4304655395142646e+02" x="-3.1409500063661130e+03" y="-2.6412869894607643e+03" hdg="3.5095914724630601e+00" length="1.9175298290751137e+01">
+                <arc curvature="-4.2592065302896505e-03" />
+            </geometry>
+            <geometry s="1.6222185224217759e+02" x="-3.1590964864883840e+03" y="-2.6474700520366750e+03" hdg="3.4289589975638686e+00" length="1.6777732062447157e+01">
+                <arc curvature="5.5921054875062003e-03" />
+            </geometry>
+            <geometry s="1.7899958430462476e+02" x="-3.1749337509032548e+03" y="-2.6529875205556295e+03" hdg="3.5507888439997224e+00" length="1.6768532702239913e+01">
+                <arc curvature="3.4239263777862516e-02" />
+            </geometry>
+            <geometry s="1.9576811700686468e+02" x="-3.1877630115845736e+03" y="-2.6637444380620018e+03" hdg="4.1735520346332864e+00" length="4.0930895032710790e+00">
+                <line />
+            </geometry>
+            <geometry s="1.9986120651013576e+02" x="-3.1897321930676544e+03" y="-2.6670711710738215e+03" hdg="4.2566468292928761e+00" length="2.0625666091119761e+01">
+                <arc curvature="4.6586418442427996e-03" />
+            </geometry>
+            <geometry s="2.2048687260125553e+02" x="-3.1979637308810070e+03" y="-2.6859788185303482e+03" hdg="4.3748382815185618e+00" length="1.5731711715110226e+01">
+                <arc curvature="-1.5996891986712770e-02" />
+            </geometry>
+            <geometry s="2.3621858431636576e+02" x="-3.2050069071223243e+03" y="-2.6999950649217035e+03" hdg="4.0637689064527098e+00" length="7.9718592699999462e+00">
+                <arc curvature="-2.9543546743545465e-02" />
+            </geometry>
+            <geometry s="2.4419044358636572e+02" x="-3.2105176108591259e+03" y="-2.7057313564829528e+03" hdg="3.7659402916137070e+00" length="6.0409655668361397e+00">
+                <line />
+            </geometry>
+            <geometry s="2.5023140915320187e+02" x="-3.2154189159050584e+03" y="-2.7092627122886479e+03" hdg="3.6732833903895501e+00" length="2.3968670172401026e+01">
+                <line />
+            </geometry>
+            <geometry s="2.7420007932560287e+02" x="-3.2360675866436436e+03" y="-2.7214364428805211e+03" hdg="3.6140263056667070e+00" length="1.8405371193762257e+01">
+                <arc curvature="-1.4214186885044448e-02" />
+            </geometry>
+            <geometry s="2.9260545051936515e+02" x="-3.2533162119512272e+03" y="-2.7275798800000171e+03" hdg="3.3745780390699167e+00" length="1.9746268361186171e+01">
+                <line />
+            </geometry>
+            <geometry s="3.1235171888055135e+02" x="-3.2726281543828782e+03" y="-2.7322745953756921e+03" hdg="3.4087281396880531e+00" length="2.2395274653888816e+01">
+                <arc curvature="2.2419963502429262e-02" />
+            </geometry>
+            <geometry s="3.3474699353444015e+02" x="-3.2919165228267361e+03" y="-2.7432174519114442e+03" hdg="3.9671548633513964e+00" length="2.2577854609686092e+01">
+                <arc curvature="9.1551548466511125e-03" />
+            </geometry>
+            <geometry s="3.5732484814412624e+02" x="-3.3054761487059295e+03" y="-2.7612299007996917e+03" hdg="4.1428120662286014e+00" length="2.2274554661974051e+01">
+                <line />
+            </geometry>
+            <geometry s="3.7959940280610027e+02" x="-3.3175269687655045e+03" y="-2.7799622547153604e+03" hdg="4.1260924423395098e+00" length="2.1204022750523862e+01">
+                <arc curvature="-2.3860340551039701e-02" />
+            </geometry>
+            <geometry s="4.0080342555662412e+02" x="-3.3331471095196903e+03" y="-2.7939590573655441e+03" hdg="3.5795980785714625e+00" length="1.9471641991058256e+01">
+                <line />
+            </geometry>
+            <geometry s="4.2027506754768240e+02" x="-3.3507478213406494e+03" y="-2.8023044520402764e+03" hdg="3.5028130717844679e+00" length="1.3647080202840073e+01">
+                <arc curvature="3.9559850987482492e-02" />
+            </geometry>
+            <geometry s="4.3392214775052247e+02" x="-3.3616001790852188e+03" y="-2.8102851760605527e+03" hdg="4.0732493395605349e+00" length="8.0120214079760999e+00">
+                <arc curvature="5.4337498093528308e-02" />
+            </geometry>
+            <geometry s="4.4193416915849855e+02" x="-3.3649016029281634e+03" y="-2.8175318582129730e+03" hdg="4.5750663245036609e+00" length="1.2037958440210254e+01">
+                <arc curvature="4.0379598590851253e-02" />
+            </geometry>
+            <geometry s="4.5397212759870882e+02" x="-3.3637264422476292e+03" y="-2.8294151610704139e+03" hdg="5.0185782176817089e+00" length="4.2348231363861473e+00">
+                <line />
+            </geometry>
+            <geometry s="4.5820695073509495e+02" x="-3.3624930759134040e+03" y="-2.8334721276336777e+03" hdg="5.1294884601960185e+00" length="1.9715980458183488e+01">
+                <arc curvature="-8.6565543547155437e-03" />
+            </geometry>
+            <geometry s="4.7792293119327843e+02" x="-3.3561089607270915e+03" y="-2.8520981831260347e+03" hdg="4.9054900467054638e+00" length="9.7434988113842458e+00">
+                <arc curvature="-1.8664285157966747e-02" />
+            </geometry>
+            <geometry s="4.8766643000466269e+02" x="-3.3551105600148439e+03" y="-2.8617774501089007e+03" hdg="4.6904322624498196e+00" length="3.9089279390197333e+00">
+                <line />
+            </geometry>
+            <geometry s="4.9157535794368243e+02" x="-3.3551963803470135e+03" y="-2.8656854358436540e+03" hdg="4.6070897083737092e+00" length="6.1303352340492463e+00">
+                <line />
+            </geometry>
+            <geometry s="4.9770569317773169e+02" x="-3.3558174495123822e+03" y="-2.8717853018776523e+03" hdg="4.5636239255016591e+00" length="4.7499490151797396e+01">
+                <arc curvature="1.2265291514970496e-03" />
+            </geometry>
+            <geometry s="5.4520518332952906e+02" x="-3.3614014416208720e+03" y="-2.9189450817546312e+03" hdg="4.6727755213458870e+00" length="1.6909655214117905e+01">
+                <arc curvature="5.0363390702090019e-02" />
+            </geometry>
+            <geometry s="5.6211483854364701e+02" x="-3.3552114005396288e+03" y="-2.9341281992147301e+03" hdg="5.5361054781496559e+00" length="8.4947987217185013e+00">
+                <arc curvature="4.4413097661598816e-02" />
+            </geometry>
+            <geometry s="5.7060963726536556e+02" x="-3.3480620372496014e+03" y="-2.9386377903985722e+03" hdg="5.9502992630162774e+00" length="1.4189170347795420e+01">
+                <arc curvature="2.6201594577577137e-02" />
+            </geometry>
+            <geometry s="5.8479880761316099e+02" x="-3.3341043909302098e+03" y="-2.9407540071032108e+03" hdg="6.2628955678495384e+00" length="2.0187665778101586e+01">
+                <arc curvature="1.9137850626522287e-02" />
+            </geometry>
+            <geometry s="6.0498647339126262e+02" x="-3.3142948517392147e+03" y="-2.9374139256291505e+03" hdg="4.1215327655827139e-01" length="1.6325150827088898e+01">
+                <arc curvature="-2.1953082647812285e-02" />
+            </geometry>
+            <geometry s="6.2131162421835154e+02" x="-3.2984924476012516e+03" y="-2.9337051189803460e+03" hdg="6.2761563919461718e+00" length="1.0760089884173585e+01">
+                <arc curvature="-3.1231140765921820e-02" />
+            </geometry>
+            <geometry s="6.3207171410252511e+02" x="-3.2879316546909427e+03" y="-2.9355287137809091e+03" hdg="5.9366818124072056e+00" length="2.7239482602027547e+01">
+                <arc curvature="-4.1698035551217885e-03" />
+            </geometry>
+            <geometry s="6.5931119670455269e+02" x="-3.2628896154688468e+03" y="-2.9462118545038511e+03" hdg="5.8747017792185279e+00" length="1.3528936278059808e+01">
+                <arc curvature="-8.7746987982287826e-03" />
+            </geometry>
+            <geometry s="6.7284013298261254e+02" x="-3.2508425804031417e+03" y="-2.9523452059958477e+03" hdg="5.7519064433461553e+00" length="1.4367703933950054e+01">
+                <arc curvature="-4.3794431926300954e-02" />
+            </geometry>
+            <geometry s="6.8720783691656266e+02" x="-3.2415076651517375e+03" y="-2.9629390719860194e+03" hdg="5.1160727468827982e+00" length="1.1710707253295052e+01">
+                <arc curvature="-5.2091767468291840e-02" />
+            </geometry>
+            <geometry s="6.9891854416985768e+02" x="-3.2403766681689622e+03" y="-2.9744125016217668e+03" hdg="4.4648556941860003e+00" length="7.8713194073723667e+00">
+                <arc curvature="-3.4339513890186010e-02" />
+            </geometry>
+            <geometry s="7.0678986357722999e+02" x="-3.2432948045469820e+03" y="-2.9816991753559560e+03" hdg="4.1682410989233132e+00" length="6.6925130764805774e+00">
+                <line />
+            </geometry>
+            <geometry s="7.1348237665371062e+02" x="-3.2467594465054572e+03" y="-2.9874250802956522e+03" hdg="4.0746563244521825e+00" length="1.2246741470424258e+01">
+                <line />
+            </geometry>
+            <geometry s="7.2572911812413486e+02" x="-3.2538339019441505e+03" y="-2.9970708214428505e+03" hdg="4.0571348141439216e+00" length="1.0918553278864488e+01">
+                <arc curvature="5.2125718610346601e-02" />
+            </geometry>
+            <geometry s="7.3664767140299932e+02" x="-3.2577408125816901e+03" y="-3.0071122676096970e+03" hdg="4.6833080259946769e+00" length="1.1528827445314457e+01">
+                <arc curvature="4.4938796088951106e-02" />
+            </geometry>
+            <geometry s="7.4817649884831383e+02" x="-3.2551796929697930e+03" y="-3.0182322074282952e+03" hdg="5.1474803645893470e+00" length="9.0128974840508054e+00">
+                <arc curvature="2.1369523054523786e-02" />
+            </geometry>
+            <geometry s="7.5718939633236459e+02" x="-3.2506404517356182e+03" y="-3.0260063123294667e+03" hdg="5.3697605479823931e+00" length="1.2787737663647176e+01">
+                <arc curvature="1.5802091773602204e-02" />
+            </geometry>
+            <geometry s="7.6997713399601173e+02" x="-3.2418783532902598e+03" y="-3.0352943497514352e+03" hdg="5.5640193906710556e+00" length="1.5181541893277412e+01">
+                <line />
+            </geometry>
+            <geometry s="7.8515867588928916e+02" x="-3.2304943064047707e+03" y="-3.0453211095054357e+03" hdg="5.4948491347491393e+00" length="2.7611123827071104e+01">
+                <arc curvature="-3.2262938265712818e-02" />
+            </geometry>
+            <geometry s="8.1276979971636024e+02" x="-3.2216341798554176e+03" y="-3.0705292931279064e+03" hdg="4.5817003778124636e+00" length="2.4915789756926284e+01">
+                <arc curvature="-3.2115823042316485e-02" />
+            </geometry>
+            <geometry s="8.3768558947328654e+02" x="-3.2338794800862670e+03" y="-3.0914932265440002e+03" hdg="3.7714932661539895e+00" length="2.5267896524812521e+01">
+                <line />
+            </geometry>
+            <geometry s="8.6295348599809904e+02" x="-3.2544761333250704e+03" y="-3.1065931593822693e+03" hdg="3.8007370003761847e+00" length="8.8391109033199928e+00">
+                <arc curvature="4.0370442445874156e-02" />
+            </geometry>
+            <geometry s="8.7179259690141907e+02" x="-3.2603838265343920e+03" y="-3.1131131045035627e+03" hdg="4.1978738465485677e+00" length="1.0234591538903249e+01">
+                <arc curvature="3.0611991334741198e-02" />
+            </geometry>
+            <geometry s="8.8202718844032233e+02" x="-3.2640138851294705e+03" y="-3.1226474260474356e+03" hdg="4.4871763058061589e+00" length="2.3546021308587459e+01">
+                <arc curvature="4.5331069906615704e-03" />
+            </geometry>
+            <geometry s="9.0557320974890979e+02" x="-3.2681423599054997e+03" y="-3.1458226739619477e+03" hdg="4.5856683352066447e+00" length="2.4868806041391942e+01">
+                <arc curvature="-2.2644908487128700e-02" />
+            </geometry>
+            <geometry s="9.3044201579030175e+02" x="-3.2779034979484168e+03" y="-3.1683350035958515e+03" hdg="3.9657983988497900e+00" length="3.5579842096982475e+00">
+                <arc curvature="-1.4013015564263607e-02" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-2.1753597436172116e+00" b="-2.8817950782485803e-03" c="3.0436298246458683e-06" d="-1.5153263649130709e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals>
+            <signal s="929" t="0" id="0" name="" dynamic="no" orientation="-" zOffset="0" type="5000" country="OpenDrive" countryRevision="2013" subtype="-1" hOffset="0.1" pitch="0" roll="0" height="0.1" width="0.1">
+                <validity fromLane="-2" toLane="0" />
+            </signal>
+            <signal s="929.1" t="0" id="1" name="" dynamic="no" orientation="-" zOffset="0" type="5000" country="OpenDrive" countryRevision="2013" subtype="-1" hOffset="0.1" pitch="0" roll="0" height="0.1" width="0.1">
+                <validity fromLane="-2" toLane="0" />
+            </signal>
+            <signal s="929.2" t="0" id="2" name="" dynamic="no" orientation="-" zOffset="0" type="5000" country="OpenDrive" countryRevision="2013" subtype="-1" hOffset="0.1" pitch="0" roll="0" height="0.1" width="0.1">
+                <validity fromLane="-2" toLane="0" />
+            </signal>
+        </signals>
+    </road>
+    <road name="" length="1.4999999999999929e+00" id="40004" junction="800006">
+        <link>
+            <predecessor elementType="road" elementId="40003" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.2803839579408477e+03" y="-3.1708852874398926e+03" hdg="3.9159403107418842e+00" length="1.5000000000000000e+00">
+                <arc curvature="-1.4013015564263607e-02" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-2.3352934453254508e+00" b="2.4071342202728694e-03" c="2.6190353771972258e-06" d="-1.5153263649130709e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7860450556586738e+02" id="40005" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="40006" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.2859091092123117e+03" y="-3.1994067266310863e+03" hdg="5.2267043228017203e+00" length="1.6854064017680034e+01">
+                <arc curvature="2.8983087881969444e-03" />
+            </geometry>
+            <geometry s="1.6854064017680003e+01" x="-3.2773361813388765e+03" y="-3.2139183333450928e+03" hdg="5.2029943299205375e+00" length="2.3530334862371578e+01">
+                <line />
+            </geometry>
+            <geometry s="4.0384398880051549e+01" x="-3.2662828017271650e+03" y="-3.2346919276663157e+03" hdg="5.2260457451515858e+00" length="4.9590845476575090e+01">
+                <arc curvature="-6.1258335966429193e-04" />
+            </geometry>
+            <geometry s="8.9975244356626717e+01" x="-3.2426560982569463e+03" y="-3.2782922224421782e+03" hdg="5.2238819633059101e+00" length="3.6162816304532562e+01">
+                <arc curvature="-3.4430372802346482e-02" />
+            </geometry>
+            <geometry s="1.2613806066115922e+02" x="-3.2463890880450494e+03" y="-3.3119747763871974e+03" hdg="4.0282973168461815e+00" length="1.7099091130161423e+01">
+                <arc curvature="-3.7419598336623339e-02" />
+            </geometry>
+            <geometry s="1.4323715179132068e+02" x="-3.2605620592944324e+03" y="-3.3210298230340704e+03" hdg="3.3465466871667995e+00" length="1.1371858117990946e+01">
+                <line />
+            </geometry>
+            <geometry s="1.5460900990931168e+02" x="-3.2716945080238565e+03" y="-3.3233649431818844e+03" hdg="3.2091518376504480e+00" length="1.8710945719177939e+01">
+                <arc curvature="1.4343649624711753e-02" />
+            </geometry>
+            <geometry s="1.7331995562848965e+02" x="-3.2899565128081604e+03" y="-3.3271442965590713e+03" hdg="3.5030330134948873e+00" length="5.2845499373778173e+00">
+                <arc curvature="4.7967453136957355e-02" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-2.2478419262406231e+00" b="2.5899098142375698e-03" c="2.6031244503656388e-06" d="-1.5153263649130709e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals>
+            <signal s="47" t="0" id="3" name="" dynamic="no" orientation="-" zOffset="0" type="5001" country="OpenDrive" countryRevision="2013" subtype="-1" hOffset="0.1" pitch="0" roll="0" height="0.1" width="0.1">
+                <validity fromLane="-2" toLane="0" />
+            </signal>
+            <signal s="47.1" t="0" id="4" name="" dynamic="no" orientation="-" zOffset="0" type="5001" country="OpenDrive" countryRevision="2013" subtype="-1" hOffset="0.1" pitch="0" roll="0" height="0.1" width="0.1">
+                <validity fromLane="-2" toLane="0" />
+            </signal>
+        </signals>
+    </road>
+    <road name="" length="3.3877051577187856e+01" id="40006" junction="800006">
+        <link>
+            <predecessor elementType="road" elementId="40003" contactPoint="end" />
+            <successor elementType="road" elementId="40005" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.2803839579408477e+03" y="-3.1708852874398926e+03" hdg="3.9159403107418846e+00" length="1.0272054118702329e+01">
+                <line />
+            </geometry>
+            <geometry s="1.0272054118702329e+01" x="-3.2877272166325838e+03" y="-3.1780680200399411e+03" hdg="3.9159403107418846e+00" length="1.5728784254714657e+01">
+                <arc curvature="8.3335367237104663e-02" />
+            </geometry>
+            <geometry s="2.6000838373416986e+01" x="-3.2897837247233288e+03" y="-3.1925494612087009e+03" hdg="5.2267043228017203e+00" length="7.8762132037708712e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-2.3352934453254508e+00" b="2.5814383192578625e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.5610000000000000e+03" id="10057" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10058" contactPoint="end" />
+            <successor elementType="road" elementId="40002" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.8132463817183443e+03" y="-1.4884013518994279e+03" hdg="3.7826696552093027e+00" length="2.0482653504578426e+01">
+                <line />
+            </geometry>
+            <geometry s="2.0482653504578426e+01" x="-1.8298239434733987e+03" y="-1.5008365208320320e+03" hdg="3.8125335110116763e+00" length="5.0469629964367869e+01">
+                <line />
+            </geometry>
+            <geometry s="7.0952283468946291e+01" x="-1.8691513672058793e+03" y="-1.5319816285279167e+03" hdg="3.8181245097862631e+00" length="5.0639832119215065e+01">
+                <line />
+            </geometry>
+            <geometry s="1.2159211558816136e+02" x="-1.9086901080494579e+03" y="-1.5637951036328502e+03" hdg="3.7993541727349953e+00" length="4.5973840388411176e+01">
+                <arc curvature="1.2133446180173594e-03" />
+            </geometry>
+            <geometry s="1.6756595597657252e+02" x="-1.9442605913886757e+03" y="-1.5929115163797587e+03" hdg="3.8771343271708276e+00" length="3.5963245444642432e+01">
+                <arc curvature="1.2123449171381161e-03" />
+            </geometry>
+            <geometry s="2.0352920142121496e+02" x="-1.9704204888530076e+03" y="-1.6175869234269485e+03" hdg="3.8997625602365455e+00" length="4.0395750386398781e+01">
+                <line />
+            </geometry>
+            <geometry s="2.4392495180761375e+02" x="-1.9997516649328172e+03" y="-1.6453627899130806e+03" hdg="3.8902923242311469e+00" length="2.8524492437906485e+01">
+                <line />
+            </geometry>
+            <geometry s="2.7244944424552023e+02" x="-2.0206479837112129e+03" y="-1.6647790338946506e+03" hdg="3.8110465728345697e+00" length="1.6513446703917236e+01">
+                <line />
+            </geometry>
+            <geometry s="2.8896289094943745e+02" x="-2.0335971789360046e+03" y="-1.6750265831174329e+03" hdg="3.7463511531941625e+00" length="3.6005636780057479e+01">
+                <line />
+            </geometry>
+            <geometry s="3.2496852772949495e+02" x="-2.0631829904207680e+03" y="-1.6955508208772767e+03" hdg="3.7120520860005075e+00" length="4.5624013258987851e+01">
+                <arc curvature="3.8127623692704683e-03" />
+            </geometry>
+            <geometry s="3.7059254098848282e+02" x="-2.0992358620837331e+03" y="-1.7234132149666548e+03" hdg="3.8995743032457240e+00" length="3.4265737739396904e+01">
+                <line />
+            </geometry>
+            <geometry s="4.0485827872787974e+02" x="-2.1236362312491829e+03" y="-1.7464049353646515e+03" hdg="3.9027243739210125e+00" length="3.0205113163951030e+01">
+                <line />
+            </geometry>
+            <geometry s="4.3506339189183075e+02" x="-2.1459168404861948e+03" y="-1.7677170030250713e+03" hdg="3.9099861930479944e+00" length="3.0142576027911350e+01">
+                <line />
+            </geometry>
+            <geometry s="4.6520596791974208e+02" x="-2.1676551024178852e+03" y="-1.7887118427624800e+03" hdg="3.9248874395769899e+00" length="1.5604429032058713e+01">
+                <arc curvature="-9.4172587870318299e-03" />
+            </geometry>
+            <geometry s="4.8081039695180078e+02" x="-2.1794824980608237e+03" y="-1.7988694687398327e+03" hdg="3.7472062606423835e+00" length="1.5187687990363949e+01">
+                <arc curvature="-9.1482071565308909e-03" />
+            </geometry>
+            <geometry s="4.9599808494216472e+02" x="-2.1925210935590180e+03" y="-1.8066366264042956e+03" hdg="3.5945498955910251e+00" length="2.0640743537303496e+01">
+                <arc curvature="7.9903401050929954e-03" />
+            </geometry>
+            <geometry s="5.1663882847946820e+02" x="-2.2101369643365811e+03" y="-1.8170245648106836e+03" hdg="3.7872928433396567e+00" length="1.1563631637543416e+01">
+                <line />
+            </geometry>
+            <geometry s="5.2820246011701158e+02" x="-2.2194275663613380e+03" y="-1.8241545710337336e+03" hdg="3.8012713040912374e+00" length="6.0342795679341634e+01">
+                <arc curvature="6.6779336274690518e-04" />
+            </geometry>
+            <geometry s="5.8854525579635322e+02" x="-2.2663156688405747e+03" y="-1.8621322622644366e+03" hdg="3.8164515918662882e+00" length="6.0741304310971060e+01">
+                <arc curvature="6.6912596846002129e-04" />
+            </geometry>
+            <geometry s="6.4928656010732425e+02" x="-2.3129893096263268e+03" y="-1.9010033935189440e+03" hdg="3.8918172053075315e+00" length="5.9905912553024102e+01">
+                <arc curvature="-6.9185283745590569e-04" />
+            </geometry>
+            <geometry s="7.0919247266034836e+02" x="-2.3574572160481471e+03" y="-1.9406773598835630e+03" hdg="3.8545907064441209e+00" length="1.2114446107360605e+02">
+                <line />
+            </geometry>
+            <geometry s="8.3033693373395442e+02" x="-2.4492893432676792e+03" y="-2.0201477243378758e+03" hdg="3.8526938102458379e+00" length="1.0101015629866706e+02">
+                <line />
+            </geometry>
+            <geometry s="9.3134709003262151e+02" x="-2.5259342347502038e+03" y="-2.0860596769730864e+03" hdg="3.8624114856503793e+00" length="9.0836745380552827e+01">
+                <arc curvature="-2.0036256750319143e-04" />
+            </geometry>
+            <geometry s="1.0221838354131744e+03" x="-2.5947064980209025e+03" y="-2.1454018445635370e+03" hdg="3.8420059030689941e+00" length="8.0631488906940746e+01">
+                <arc curvature="2.9583279255094522e-04" />
+            </geometry>
+            <geometry s="1.1028153243201152e+03" x="-2.6557752301953701e+03" y="-2.1980504659497910e+03" hdg="3.8628338077644004e+00" length="7.0777682745266503e+01">
+                <arc curvature="-8.7964158001192642e-04" />
+            </geometry>
+            <geometry s="1.1735930070653817e+03" x="-2.7103471090793610e+03" y="-2.2431035646395758e+03" hdg="3.7808415745757613e+00" length="1.3107888155920875e+01">
+                <line />
+            </geometry>
+            <geometry s="1.1867008952213025e+03" x="-2.7208523933843471e+03" y="-2.2509446435435830e+03" hdg="3.7416625254891054e+00" length="6.0490948377308598e+01">
+                <arc curvature="5.6406973872150112e-04" />
+            </geometry>
+            <geometry s="1.2471918435986111e+03" x="-2.7701967573128641e+03" y="-2.2859301015501842e+03" hdg="3.7541127803225582e+00" length="5.0153617299353861e+01">
+                <line />
+            </geometry>
+            <geometry s="1.2973454608979648e+03" x="-2.8112167153602627e+03" y="-2.3147878578276477e+03" hdg="3.7466012603205323e+00" length="3.1073880116562218e+01">
+                <arc curvature="2.4746670006958430e-03" />
+            </geometry>
+            <geometry s="1.3284193410145269e+03" x="-2.8356620420458808e+03" y="-2.3329879474285503e+03" hdg="3.8813729355832827e+00" length="1.5312130797651141e+01">
+                <line />
+            </geometry>
+            <geometry s="1.3437314718121781e+03" x="-2.8462772975685621e+03" y="-2.3424921239199821e+03" hdg="3.9485166128331954e+00" length="7.0568418030380371e+01">
+                <line />
+            </geometry>
+            <geometry s="1.4142998898425585e+03" x="-2.8950911027528346e+03" y="-2.3934540120987222e+03" hdg="3.8858454467551753e+00" length="4.7335376539334760e+01">
+                <line />
+            </geometry>
+            <geometry s="1.4616352663818932e+03" x="-2.9301162859201431e+03" y="-2.4257590539716184e+03" hdg="3.9026061547358606e+00" length="5.0372646282216259e+01">
+                <line />
+            </geometry>
+            <geometry s="1.5120079126641094e+03" x="-2.9665930038318038e+03" y="-2.4604988372735679e+03" hdg="3.9029062134215771e+00" length="4.0417487170897125e+01">
+                <line />
+            </geometry>
+            <geometry s="1.5524253998350066e+03" x="-2.9958597233319911e+03" y="-2.4883742581431598e+03" hdg="3.9106941151675736e+00" length="8.5746001649933987e+00">
+                <arc curvature="-8.2577605172661096e-03" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-1.9159898289734323e+00" b="-3.7099053163013678e-03" c="4.8850266168267802e-06" d="-1.7603805058467624e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.2677115938713223e+01" id="10058" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10047" contactPoint="end" />
+            <successor elementType="road" elementId="10057" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.8028403305762263e+03" y="-1.4811609535574028e+03" hdg="3.7494857108199073e+00" length="1.2677115938713223e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-1.5855821301524573e+00" b="-2.6063317588820020e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <junction name="" id="800000">
+        <connection id="0" incomingRoad="10006" connectingRoad="10009" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10006" connectingRoad="10042" contactPoint="start">
+            <laneLink from="1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10006" connectingRoad="10039" contactPoint="end">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800001">
+        <connection id="0" incomingRoad="10038" connectingRoad="10032" contactPoint="start">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10038" connectingRoad="10025" contactPoint="end">
+            <laneLink from="-1" to="1" />
+            <laneLink from="1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10034" connectingRoad="10032" contactPoint="end">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10034" connectingRoad="10016" contactPoint="end">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="4" incomingRoad="10041" connectingRoad="10016" contactPoint="start">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="5" incomingRoad="10041" connectingRoad="10025" contactPoint="start">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800002">
+        <connection id="0" incomingRoad="10034" connectingRoad="10027" contactPoint="end">
+            <laneLink from="1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10034" connectingRoad="10010" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800003">
+        <connection id="0" incomingRoad="10019" connectingRoad="10040" contactPoint="start">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10019" connectingRoad="10024" contactPoint="start">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10024" connectingRoad="10019" contactPoint="end">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10024" connectingRoad="10040" contactPoint="end">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800004">
+        <connection id="0" incomingRoad="10029" connectingRoad="10035" contactPoint="end">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10029" connectingRoad="10002" contactPoint="end">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10026" connectingRoad="10035" contactPoint="start">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10026" connectingRoad="10045" contactPoint="start">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="4" incomingRoad="10030" connectingRoad="10044" contactPoint="end">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="5" incomingRoad="10030" connectingRoad="10043" contactPoint="end">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="6" incomingRoad="10030" connectingRoad="10002" contactPoint="start">
+            <laneLink from="1" to="-1" />
+            <laneLink from="-1" to="1" />
+        </connection>
+        <connection id="7" incomingRoad="10043" connectingRoad="10044" contactPoint="end">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="8" incomingRoad="10043" connectingRoad="10002" contactPoint="start">
+            <laneLink from="1" to="-1" />
+            <laneLink from="-1" to="1" />
+        </connection>
+    </junction>
+    <junction name="" id="800005">
+        <connection id="0" incomingRoad="10002" connectingRoad="10030" contactPoint="start">
+            <laneLink from="-1" to="1" />
+            <laneLink from="1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10002" connectingRoad="10043" contactPoint="start">
+            <laneLink from="-1" to="1" />
+            <laneLink from="1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10044" connectingRoad="10030" contactPoint="start">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10044" connectingRoad="10043" contactPoint="start">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800006">
+        <connection id="0" incomingRoad="40003" connectingRoad="40004" contactPoint="start">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="40003" connectingRoad="40006" contactPoint="start">
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+</OpenDRIVE>

+ 5814 - 0
map/map_xiali.xodr

@@ -0,0 +1,5814 @@
+<?xml version="1.0" ?>
+<OpenDRIVE>
+    <header revMajor="1" revMinor="1" name="adcmap" version="1.1" date="2021-07-13" north="0.0000000000000000e+00" south="0.0000000000000000e+00" east="0.0000000000000000e+00" west="0.0000000000000000e+00" lat0="3.9120727400000000e+01" lon0="1.1702800329999999e+02" hdg0="3.6000000000000000e+02" vendor="adc" />
+    <road name="" length="9.8123049174829617e+00" id="10006" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800000" contactPoint="start" />
+            <successor elementType="road" elementId="10010" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2922055620312971e+00" y="1.1143548527359218e+02" hdg="3.1212654674415643e+00" length="9.8123049174829617e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0802331163271353e+00" b="8.1644787494951473e-04" c="-1.5669410571624728e-04" d="-1.8764429254450244e-05" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.6000000000000001e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7547186589348652e+01" id="10038" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10003" contactPoint="end" />
+            <successor elementType="junction" elementId="800001" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="2.3215434825641115e+00" y="7.2863487045871381e+01" hdg="1.5757858689239848e+00" length="1.7547186589348652e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0029291563072196e+00" b="-2.3934629103147679e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.1933265366356722e+00" b="3.8031529045110955e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7157470143663382e+01" id="10039" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800002" contactPoint="start" />
+            <successor elementType="road" elementId="10002" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="2.0359406375824358e+00" y="9.4616579326085343e+01" hdg="4.7096381007894914e+00" length="1.7157470143663382e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0160664985947596e+00" b="3.1701995816770271e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.2000000000000002e+00" b="3.1423834397359641e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.0000000000000000e+01" id="10017" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800004" contactPoint="start" />
+            <successor elementType="road" elementId="10103" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.7167104289893782e+01" y="1.1127347613999456e+02" hdg="6.2683113663239842e+00" length="6.0937961938811611e+00">
+                <line />
+            </geometry>
+            <geometry s="6.0937961938811611e+00" x="-1.1073982161394069e+01" y="1.1118284071784819e+02" hdg="1.1584550415060601e-02" length="2.2742608317028012e+00">
+                <line />
+            </geometry>
+            <geometry s="8.3680570255839619e+00" x="-8.7998739329427220e+00" y="1.1120918641782740e+02" hdg="3.2148263368206799e-03" length="1.6319429744160381e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.1442000283034632e+00" b="-2.2046349132878520e-04" c="8.3386205971477346e-05" d="-8.7508541649427298e-07" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3965255275269968e+00" b="5.5734346844116367e-05" c="-3.1206482870550730e-06" d="4.5778186391315538e-08" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                        <speed sOffset="0.0000000000000000e+00" max="2.2222000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="5.0447377729926608e+01" id="10003" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10001" contactPoint="end" />
+            <successor elementType="road" elementId="10038" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="1.8804068400617120e+00" y="2.2418038110526012e+01" hdg="1.5620517243091332e+00" length="5.0447377729926608e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-8.3352068635971346e+00" b="2.6409255886844157e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.9973402686128270e+00" b="-1.5937671454034654e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="4.7951497757699208e+01" id="10002" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10039" contactPoint="end" />
+            <successor elementType="junction" elementId="800003" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="1.9887425625863604e+00" y="7.7459174100573620e+01" hdg="4.7216533607098068e+00" length="4.7951497757699208e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0106272381275518e+00" b="-1.6392468939879179e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.2539153500472122e+00" b="9.2569555274851101e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.1868227219236729e+01" id="10047" junction="800000">
+        <link>
+            <predecessor elementType="road" elementId="10004" contactPoint="end" />
+            <successor elementType="road" elementId="10006" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="2.3057789674186120e+00" y="9.5666838165648073e+01" hdg="1.5571399615355670e+00" length="9.6308675783741204e+00">
+                <line />
+            </geometry>
+            <geometry s="9.6308675783741204e+00" x="2.4372975247898570e+00" y="1.0529680769733636e+02" hdg="1.5571399615355670e+00" length="9.3847530354359847e+00">
+                <arc curvature="1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="1.9015620613810107e+01" x="-3.4401882769875742e+00" y="1.1137750380124604e+02" hdg="3.1212654674415643e+00" length="2.8526066054266219e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0614531579848991e+00" b="-8.5877827013412539e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.2000000000000002e+00" b="1.8291377530965731e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <speed sOffset="0.0000000000000000e+00" max="2.2220000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.0000000000000000e+01" id="10000" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10058" contactPoint="end" />
+            <successor elementType="road" elementId="10057" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.8306303303593307e+01" y="-1.3465294060130626e+02" hdg="3.4208910765264780e-03" length="1.0000000000000000e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0289140658371805e+00" b="7.4606344656080541e-04" c="-6.7025844970307066e-06" d="1.2805673660038153e-08" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.6968663153572963e+00" b="2.7909838711280815e-05" c="-2.3867213465126168e-07" d="5.0048169264979740e-10" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.9412100228148994e+01" id="10001" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10057" contactPoint="end" />
+            <successor elementType="road" elementId="10003" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="2.0430973328390047e+00" y="-6.9936121599746519e+00" hdg="1.5763277686557067e+00" length="2.9412100228148994e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0227568492073322e+00" b="-4.4622791443288901e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.6974174505678290e+00" b="1.0197259485670983e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.8000000000000000e+01" id="10018" junction="800003">
+        <link>
+            <predecessor elementType="road" elementId="10002" contactPoint="end" />
+            <successor elementType="road" elementId="10016" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="2.4329771202267798e+00" y="2.9509734136540359e+01" hdg="4.7159049337553425e+00" length="1.8000000000000000e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0184876725036895e+00" b="-2.4020463782798507e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.6978002322665358e+00" b="-6.8374744122837628e-05" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.5422327563728081e+02" id="10012" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10022" contactPoint="end" />
+            <successor elementType="junction" elementId="800006" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2510104476141152e+01" y="3.5996792269123341e+02" hdg="1.5260316505673917e+00" length="3.0659405321949066e+01">
+                <arc curvature="-3.3207446901489081e-03" />
+            </geometry>
+            <geometry s="3.0659405321949066e+01" x="-5.9587570586170543e+01" y="3.9047554700671674e+02" hdg="1.4693203160431452e+00" length="6.3790000793905371e+01">
+                <arc curvature="-5.0252274126746021e-03" />
+            </geometry>
+            <geometry s="9.4449406115854430e+01" x="-4.3114778251777281e+01" y="4.5181303110631654e+02" hdg="1.1491956551029472e+00" length="2.0284988270735944e+01">
+                <arc curvature="-6.5858642742968416e-03" />
+            </geometry>
+            <geometry s="1.1473439438659037e+02" x="-3.3601904079104131e+01" y="4.6971185757951952e+02" hdg="1.0281465353320307e+00" length="1.7572274325714787e+01">
+                <arc curvature="-7.5204227534940941e-03" />
+            </geometry>
+            <geometry s="1.3230666871230517e+02" x="-2.3539907070391433e+01" y="4.8410182390758098e+02" hdg="9.3867970757958785e-01" length="2.1916606924975632e+01">
+                <arc curvature="-9.3739499714007041e-03" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5574779992973573e+00" b="-5.5169888209276915e-04" c="2.0958468974071489e-05" d="-1.1132511109888540e-07" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.2999999999999998e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.2631143294552672e+02" id="10021" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800006" contactPoint="start" />
+            <successor elementType="road" elementId="10083" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="1.5416123031234681e+01" y="5.2110484035202421e+02" hdg="6.8337266938321850e-01" length="4.5044716848050058e+01">
+                <arc curvature="2.0354760453554110e-02" />
+            </geometry>
+            <geometry s="4.5044716848050058e+01" x="3.3444811710284249e+01" y="5.6064655529817173e+02" hdg="1.5833137514882252e+00" length="3.1198261326997052e+01">
+                <arc curvature="2.2341358430248967e-02" />
+            </geometry>
+            <geometry s="7.6242978175047114e+01" x="2.2646922180907321e+01" y="5.8924717793190325e+02" hdg="2.2586688773241663e+00" length="9.2545776119653581e+01">
+                <arc curvature="2.1007254312512352e-02" />
+            </geometry>
+            <geometry s="1.6878875429470071e+02" x="-5.5717938784739836e+01" y="5.8226400126994815e+02" hdg="4.2066061566016870e+00" length="2.3707902505277524e+01">
+                <arc curvature="1.7277576042640588e-02" />
+            </geometry>
+            <geometry s="1.9249665679997824e+02" x="-6.2727178156093551e+01" y="5.5978267697334627e+02" hdg="4.5929023217228213e+00" length="1.4500060256873031e+01">
+                <arc curvature="7.8771299747025861e-03" />
+            </geometry>
+            <geometry s="2.0699671705685128e+02" x="-6.3655031179030104e+01" y="5.4531876430766602e+02" hdg="4.7090316433801931e+00" length="1.9314715888675408e+01">
+                <arc curvature="5.0627345822375763e-05" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.4028538673402657e+00" b="-2.0467052343770315e-03" c="5.6638739802616114e-06" d="-3.1982523142946352e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.2999999999999998e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="5.4626250750034764e+00" id="10013" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10014" contactPoint="end" />
+            <successor elementType="road" elementId="10085" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2736744400827170e+01" y="-1.8353430478874384e+02" hdg="4.7103075748931547e+00" length="5.4626250750034773e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.4999999999999982e+00" b="6.2219687656040032e-04" c="-3.3445934279537933e-05" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.2999999999999998e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.5007399517231494e+02" id="10041" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10037" contactPoint="end" />
+            <successor elementType="road" elementId="10015" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2819719631235145e+01" y="-2.5168135274667236e+02" hdg="4.6595597917102820e+00" length="9.5757100493138232e+00">
+                <arc curvature="2.9632566711770558e-02" />
+            </geometry>
+            <geometry s="9.5757100493138232e+00" x="-6.1971009448290737e+01" y="-2.6118715768402666e+02" hdg="4.8844226128996571e+00" length="1.1598750025040326e+01">
+                <arc curvature="2.7193637041909312e-02" />
+            </geometry>
+            <geometry s="2.1174460074354151e+01" x="-5.8234927609498804e+01" y="-2.7211833650347211e+02" hdg="5.3094865833754570e+00" length="5.2861859126771556e+01">
+                <arc curvature="5.6497814117088208e-02" />
+            </geometry>
+            <geometry s="7.4036319201125707e+01" x="-2.7572595268299427e+01" y="-2.5458156125144703e+02" hdg="2.0436752759201786e+00" length="9.3998484248240857e+00">
+                <arc curvature="4.6081116204608641e-02" />
+            </geometry>
+            <geometry s="8.3436167625949793e+01" x="-3.3484017298444797e+01" y="-2.4735966215432197e+02" hdg="2.4467401128820221e+00" length="2.4081177193239416e+01">
+                <arc curvature="-1.2019766248210009e-02" />
+            </geometry>
+            <geometry s="1.0751734481918920e+02" x="-4.9493592321869791e+01" y="-2.2948697182629070e+02" hdg="2.1389723235661151e+00" length="1.5989372129507068e+01">
+                <arc curvature="-1.7510642087434612e-02" />
+            </geometry>
+            <geometry s="1.2350671694869627e+02" x="-5.6094504177152068e+01" y="-2.1498297302755128e+02" hdg="1.8970972469075762e+00" length="2.6567278223618683e+01">
+                <arc curvature="-8.6674193678651611e-03" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5094070960315538e+00" b="-7.1182131500477381e-03" c="1.3171462261135126e-04" d="-5.7566274029468096e-07" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.2999999999999998e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.6000000000000014e+00" id="10007" junction="800009">
+        <link>
+            <predecessor elementType="junction" elementId="800008" contactPoint="start" />
+            <successor elementType="road" elementId="10009" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.5474708687328853e+01" y="1.1138159196882887e+02" hdg="1.6236135188197529e+00" length="3.6000000000000001e+00">
+                <arc curvature="1.6655735815549505e-01" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1536690905273908e+00" b="3.2882788386959733e-03" c="3.0390530926396165e-04" d="-1.0484087177712869e-05" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.1640839084026366e+01" id="10010" junction="800009">
+        <link>
+            <predecessor elementType="road" elementId="10006" contactPoint="end" />
+            <successor elementType="road" elementId="10009" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.6102483354119510e+01" y="1.1163492808675211e+02" hdg="3.1212654674415643e+00" length="5.4884962625734062e+00">
+                <line />
+            </geometry>
+            <geometry s="5.4884962625734062e+00" x="-2.1589845747510658e+01" y="1.1174648608905950e+02" hdg="3.1212654674415643e+00" length="5.3882727555721743e+00">
+                <arc curvature="-1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="1.0876769018145581e+01" x="-2.6235579126150228e+01" y="1.1410256206927995e+02" hdg="2.2232200081795352e+00" length="7.6407006588078585e-01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1050361370444612e+00" b="-2.8645428552211763e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.6000000000000001e+00" b="1.2026624454598714e-01" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="7.1999999999999993e+00" id="10027" junction="800011">
+        <link>
+            <predecessor elementType="junction" elementId="800010" contactPoint="start" />
+            <successor elementType="road" elementId="10008" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.6566356574839503e+01" y="1.1423909022215734e+02" hdg="4.1552853627832782e+00" length="7.2000000000000002e+00">
+                <arc curvature="1.6655735815549505e-01" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0702910707502564e+00" b="5.2602697357040616e-03" c="-1.7416906603974529e-04" d="-1.0484087177712869e-05" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="none" />
+                        <roadMark sOffset="4.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="5.2000000000000000e+01" id="10040" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800012" contactPoint="start" />
+            <successor elementType="road" elementId="10105" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-5.7407460442262000e+01" y="1.2100510632660712e+02" hdg="1.5728257333720501e+00" length="5.2000000000000000e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.7149999999999981e+00" b="-4.2936143362966599e-04" c="5.5230531423637017e-06" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="5.2568731393443366e+00" id="10004" junction="800001">
+        <link>
+            <predecessor elementType="road" elementId="10038" contactPoint="end" />
+            <successor elementType="road" elementId="10047" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="2.2339914191064878e+00" y="9.0410455212412330e+01" hdg="1.5571399615355672e+00" length="5.2568731393443366e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0449276965891983e+00" b="-3.1435914388000656e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.2000000000000002e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.7239918797206601e+00" id="10031" junction="800004">
+        <link>
+            <predecessor elementType="road" elementId="10054" contactPoint="end" />
+            <successor elementType="road" elementId="10007" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.6407082553397171e+01" y="1.0783768500591580e+02" hdg="1.0032015552088955e+00" length="3.7224717816651456e+00">
+                <arc curvature="1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="3.7224717816651456e+00" x="-2.5474628437341742e+01" y="1.1138007399055566e+02" hdg="1.6236135188197529e+00" length="1.5200980555144924e-03">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1037002900029949e+00" b="-1.3418074512059477e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.0593142906552302e+01" id="10048" junction="800004">
+        <link>
+            <predecessor elementType="road" elementId="10054" contactPoint="end" />
+            <successor elementType="road" elementId="10017" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.6407082553397174e+01" y="1.0783768500591580e+02" hdg="7.2863868623884818e+00" length="8.4933704948925670e-01">
+                <line />
+            </geometry>
+            <geometry s="8.4933704948925670e-01" x="-2.5950474262477243e+01" y="1.0855384301382907e+02" hdg="7.2863868623884818e+00" length="6.1084529763869853e+00">
+                <arc curvature="-1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="6.9577900258762417e+00" x="-2.0802055045942065e+01" y="1.1132754616999028e+02" hdg="6.2683113663239842e+00" length="3.6353528806760598e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1037002900029949e+00" b="9.0577486791577275e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.0000000000000000e+00" b="-5.6968406618939225e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.9000083657893722e+01" id="10049" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10051" contactPoint="end" />
+            <successor elementType="road" elementId="10050" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-5.7365298911929095e+01" y="8.4016682709567249e+01" hdg="1.5752848239970620e+00" length="1.9000083657893722e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.7529999999999983e+00" b="4.2105077767258298e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7988583033480850e+01" id="10050" junction="800012">
+        <link>
+            <predecessor elementType="road" elementId="10049" contactPoint="end" />
+            <successor elementType="road" elementId="10040" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-5.7450580447912188e+01" y="1.0301657497417182e+02" hdg="1.5683992482220903e+00" length="1.7988583033480850e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.7449999999999983e+00" b="1.6677244641316892e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="5.0000000000000000e+00" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7356862310555908e+01" id="10051" junction="800013">
+        <link>
+            <predecessor elementType="road" elementId="10104" contactPoint="end" />
+            <successor elementType="road" elementId="10049" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-5.7335504468754614e+01" y="6.6659845971303213e+01" hdg="1.5725129076649691e+00" length="1.7356862310555908e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.7220000140657366e+00" b="-1.7860362881030952e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="7.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.0000000000000000e+00" id="10008" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10027" contactPoint="end" />
+            <successor elementType="road" elementId="10029" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.6278432940758066e+01" y="1.0746895390327825e+02" hdg="5.3544983415028424e+00" length="5.8564409599659870e-03">
+                <line />
+            </geometry>
+            <geometry s="5.8564409599659870e-03" x="-3.6274925600133564e+01" y="1.0746426386463648e+02" hdg="5.3544983415028424e+00" length="1.9941435590400340e+00">
+                <arc curvature="1.6666666666666666e-01" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0453592176075945e+00" b="-5.0276722234281809e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.5000000000000000e+00" id="10029" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10008" contactPoint="end" />
+            <successor elementType="junction" elementId="800014" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.4839576674092832e+01" y="1.0609316526043241e+02" hdg="5.6868556013428480e+00" length="3.5000000000000000e+00">
+                <arc curvature="1.6666666666666666e-01" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0554145620544508e+00" b="-5.0276722234281809e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.6039928226704738e+00" id="10054" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10061" contactPoint="end" />
+            <successor elementType="junction" elementId="800004" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.8230425724361833e+01" y="1.0600726543638076e+02" hdg="5.7033696082992869e-01" length="2.5971875662738029e+00">
+                <arc curvature="1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="2.5971875662738029e+00" x="-2.6410741096839288e+01" y="1.0783194683769706e+02" hdg="1.0032015552088955e+00" length="6.8052563966711560e-03">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0906082676184479e+00" b="-5.0276722234281809e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.2474413084257229e+01" id="10011" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800015" contactPoint="start" />
+            <successor elementType="road" elementId="10084" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.3388797208123322e+01" y="2.9776168148195262e+02" hdg="4.7161913826936690e+00" length="2.2474413084257229e+01">
+                <arc curvature="-1.0229823849540102e-05" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5021156069396673e+00" b="-5.9795414235605830e-04" c="2.7341126526881566e-06" d="-3.4941962244029351e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="2" type="driving" level="false">
+                        <link>
+                            <successor id="2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="1" type="stop" level="false">
+                        <link>
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="1.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="white" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="4.4821070928817747e+01" id="10014" junction="800018">
+        <link>
+            <predecessor elementType="road" elementId="10073" contactPoint="end" />
+            <successor elementType="road" elementId="10013" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2703589107506559e+01" y="-1.3871324612283729e+02" hdg="4.7116492547231363e+00" length="4.4821070928817747e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5327838800083953e+00" b="7.3143901582500175e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="-4.4621869994500738e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="5.0349302375132709e+01" id="10015" junction="800018">
+        <link>
+            <predecessor elementType="road" elementId="10041" contactPoint="end" />
+            <successor elementType="road" elementId="10073" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.1650716170308918e+01" y="-1.8906318340467811e+02" hdg="1.5718464538867534e+00" length="5.0349302375132709e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5569005930458957e+00" b="4.7898802763574213e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="stop" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="1.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.2999999999999998e+00" b="3.9722496750775093e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="6.2202557088711302e+01" id="10022" junction="800015">
+        <link>
+            <predecessor elementType="road" elementId="10011" contactPoint="start" />
+            <successor elementType="road" elementId="10012" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2388804437246272e+01" y="2.9776548387509894e+02" hdg="1.5727464092585857e+00" length="6.2202557088711302e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5021156069396673e+00" b="-8.9003402671587837e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="stop" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="1.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="2" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="-3.2153019001255295e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="6.2089480535512301e+01" id="10023" junction="800015">
+        <link>
+            <predecessor elementType="road" elementId="10083" contactPoint="end" />
+            <successor elementType="road" elementId="10011" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.3406958700743417e+01" y="3.5985115936129984e+02" hdg="4.7126814855356818e+00" length="6.2089480535512301e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5270515458998117e+00" b="4.0161294224199952e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.2999999999999998e+00" b="3.2211575660648258e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.6000000000000000e+01" id="10034" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800019" contactPoint="start" />
+            <successor elementType="junction" elementId="800020" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2682512850820785e+01" y="-6.5237422846289746e+01" hdg="4.7124779566362855e+00" length="1.0000000000000000e+01">
+                <arc curvature="-1.0229823849540102e-05" />
+            </geometry>
+            <geometry s="1.0000000000000000e+01" x="-6.2682134579503327e+01" y="-7.5237422834775018e+01" hdg="4.7123756583977903e+00" length="1.6000000000000000e+01">
+                <arc curvature="-1.0229823849540102e-05" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5260365779353373e+00" b="5.7314166154921352e-06" c="-1.0710670356866402e-06" d="-3.4941962244029351e-09" />
+            <elevation s="1.0000000000000000e+01" a="-6.5260898646689753e+00" b="-1.6738182965561550e-05" c="-1.1758929224187282e-06" d="-3.4941962244029351e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="2" type="driving" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="1" type="stop" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="1.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="white" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="-2" type="driving" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="white" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="5.0000000000000000e+00" id="10042" junction="800019">
+        <link>
+            <predecessor elementType="road" elementId="10034" contactPoint="start" />
+            <successor elementType="road" elementId="10045" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.1682512854779169e+01" y="-6.5237333870038270e+01" hdg="1.2876609232321585e+00" length="5.0000000000000000e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5260365779353373e+00" b="-1.2249318406988353e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="2" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="-1.2190594966129603e-01" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="4.8762485087576897e+00" id="10030" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800013" contactPoint="start" />
+            <successor elementType="road" elementId="10028" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.9912209246868350e+01" y="7.8255196782831646e+01" hdg="7.6696778748601121e-03" length="4.8762485087576897e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.8259999999999996e+00" b="-1.5029967944439646e-02" c="6.1139886381543366e-03" d="-8.8915854868154825e-04" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.6443648491944845e+01" id="10025" junction="800013">
+        <link>
+            <predecessor elementType="road" elementId="10104" contactPoint="end" />
+            <successor elementType="road" elementId="10030" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-5.7335504468754614e+01" y="6.6659845971303213e+01" hdg="1.5728310456682986e+00" length="5.5719740836759248e+00">
+                <line />
+            </geometry>
+            <geometry s="5.5719740836759248e+00" x="-5.7346841861761824e+01" y="7.2231808520771395e+01" hdg="1.5728310456682986e+00" length="9.3909682067606308e+00">
+                <arc curvature="-1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="1.4962942290436555e+01" x="-5.1392871898089894e+01" y="7.8243840354576861e+01" hdg="7.6696778748601121e-03" length="1.4807062015082921e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.7220000140657366e+00" b="-6.3246295969662048e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="3.0406877174790747e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="4.5146516189320467e+00" id="10035" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10032" contactPoint="end" />
+            <successor elementType="road" elementId="10026" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.5194293339244552e+01" y="1.0898330675393356e+02" hdg="3.1259367317381943e+00" length="4.5146516189320467e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9528546578528667e+00" b="8.4989551278735406e-03" c="1.5889994000994187e-03" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7036010661545081e+01" id="10026" junction="800012">
+        <link>
+            <predecessor elementType="road" elementId="10035" contactPoint="end" />
+            <successor elementType="road" elementId="10040" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.9708391681113788e+01" y="1.0905398489948901e+02" hdg="3.1259367317381943e+00" length="1.7811842222882335e+00">
+                <line />
+            </geometry>
+            <geometry s="1.7811842222882335e+00" x="-5.1489357616708382e+01" y="1.0908186984130735e+02" hdg="3.1259367317381943e+00" length="9.3186659901968660e+00">
+                <arc curvature="-1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="1.1099850212485100e+01" x="-5.7395413567472794e+01" y="1.1506895810155480e+02" hdg="1.5728257333720501e+00" length="5.9361604490599813e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.8820977246399258e+00" b="9.8085008256723373e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="5.0000000000000000e+00" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.0000000000000000e+00" b="-2.9349594217420647e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.0982778221427731e+01" id="10032" junction="800011">
+        <link>
+            <predecessor elementType="junction" elementId="800010" contactPoint="start" />
+            <successor elementType="road" elementId="10035" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.6566356574839496e+01" y="1.1423909022215736e+02" hdg="4.1552853627832782e+00" length="2.8968271787230098e+00">
+                <line />
+            </geometry>
+            <geometry s="2.8968271787230098e+00" x="-3.8097996004683452e+01" y="1.1178029206851896e+02" hdg="4.1552853627832782e+00" length="6.1760917862705034e+00">
+                <arc curvature="-1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="9.0729189649935122e+00" x="-4.3284668138814865e+01" y="1.0895340736813142e+02" hdg="3.1259367317381943e+00" length="1.9098592564342192e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0702910707502564e+00" b="1.0692778323454418e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="5.9800000000000004e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.0000000000000000e+00" b="-9.1051642839238056e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.2000000000000000e+02" id="10043" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10016" contactPoint="end" />
+            <successor elementType="road" elementId="10056" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="3.2293238626193155e+00" y="2.0862078746619783e+00" hdg="4.7009935598744939e+00" length="1.4799461643285099e+01">
+                <line />
+            </geometry>
+            <geometry s="1.4799461643285099e+01" x="3.0606814237859497e+00" y="-1.2712292882471875e+01" hdg="4.7123889803846897e+00" length="0.0000000000000000e+00">
+                <line />
+            </geometry>
+            <geometry s="1.4799461643285099e+01" x="3.0606814237859497e+00" y="-1.2712292882471875e+01" hdg="4.7230547758403558e+00" length="2.2383786345018968e+00">
+                <line />
+            </geometry>
+            <geometry s="1.7037840277786994e+01" x="3.0845550598069456e+00" y="-1.4950544200107522e+01" hdg="4.7158441398816251e+00" length="5.4144398255122560e+01">
+                <line />
+            </geometry>
+            <geometry s="7.1182238532909551e+01" x="3.2716322194183047e+00" y="-6.9094619264196211e+01" hdg="4.7123889803846897e+00" length="0.0000000000000000e+00">
+                <line />
+            </geometry>
+            <geometry s="7.1182238532909551e+01" x="3.2716322194183047e+00" y="-6.9094619264196211e+01" hdg="4.6951523894229705e+00" length="2.2653922389618577e+00">
+                <line />
+            </geometry>
+            <geometry s="7.3447630771871403e+01" x="3.2325865135081289e+00" y="-7.1359674987395664e+01" hdg="4.7173434561020686e+00" length="4.6552369228128597e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0843415012651132e+00" b="1.3267297301346444e-03" c="-6.3022016341560296e-06" d="7.6510229408601026e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.6959256894884334e+00" b="2.3759826792620469e-05" c="-1.1782544252449519e-07" d="1.8067657676066428e-10" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.0742201990002314e+01" id="10046" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10056" contactPoint="end" />
+            <successor elementType="road" elementId="10044" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-7.7816255359317372e+00" y="-1.3618683848748037e+02" hdg="3.1066993632461606e+00" length="1.0001052940673000e+01">
+                <arc curvature="3.5316427749270888e-03" />
+            </geometry>
+            <geometry s="1.0001052940672992e+01" x="-1.7887175754812265e+01" y="-1.3597417945001644e+02" hdg="3.1232496817746127e+00" length="7.4114904932931436e-01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0011656667680482e+00" b="-2.4245532016794344e-05" c="-2.9510535860593050e-06" d="7.6510229408601026e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.6974453471461981e+00" b="9.0870330615883584e-07" c="-3.8689101903324228e-08" d="1.8067657676066428e-10" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.7191523390815487e+01" id="10056" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10043" contactPoint="end" />
+            <successor elementType="road" elementId="10046" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="3.4632281528458022e+00" y="-1.1791147286015476e+02" hdg="4.7173434561020686e+00" length="1.2427373307621579e+01">
+                <line />
+            </geometry>
+            <geometry s="1.2427373307621579e+01" x="3.5247990202335604e+00" y="-1.3033869364178065e+02" hdg="4.7173434561020686e+00" length="9.6638645571354473e+00">
+                <arc curvature="-1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="2.2091237864757026e+01" x="-2.6844446000397717e+00" y="-1.3636476811992230e+02" hdg="3.1066993632461606e+00" length="5.1002855260584594e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0026646695389969e+00" b="5.5127575950931854e-05" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.6973923914558378e+00" b="1.9475073021555148e-06" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="9.4521066769914679e+00" id="10016" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10018" contactPoint="end" />
+            <successor elementType="road" elementId="10043" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="2.4962641505067191e+00" y="1.1509845393778686e+01" hdg="4.7900221051246108e+00" length="9.4521066769914679e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0617245073127268e+00" b="-2.3927992695470910e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.6965694868723249e+00" b="-6.8111523271174816e-05" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.0742201990002314e+01" id="10019" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10044" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.2772494899566485e+01" y="-1.3566354533595137e+02" hdg="3.1066993632461606e+00" length="1.0001052940673000e+01">
+                <arc curvature="3.5316427749270888e-03" />
+            </geometry>
+            <geometry s="1.0001052940672992e+01" x="-3.2878045118447012e+01" y="-1.3545088629848743e+02" hdg="3.1232496817746127e+00" length="7.4114904932931436e-01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0011656667680482e+00" b="-2.4245532016794344e-05" c="-2.9510535860593050e-06" d="7.6510229408601026e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.6974453471461981e+00" b="9.0870330615883584e-07" c="-3.8689101903324228e-08" d="1.8067657676066428e-10" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="4.1549262281821626e+00" id="10044" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10046" contactPoint="end" />
+            <successor elementType="road" elementId="10019" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.8628200122422779e+01" y="-1.3596058533624671e+02" hdg="3.0700405742686869e+00" length="4.1549262281821626e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0017571695418317e+00" b="1.4236179929536170e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.6974508680613245e+00" b="-1.3287636947565394e-06" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.3535822471209801e+02" id="10057" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10000" contactPoint="end" />
+            <successor elementType="road" elementId="10001" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-8.3063618160150323e+00" y="-1.3461873175726257e+02" hdg="3.4208910765264780e-03" length="4.1173097982303588e+00">
+                <line />
+            </geometry>
+            <geometry s="4.1173097982303588e+00" x="-4.1890761091614017e+00" y="-1.3460464691638583e+02" hdg="1.7282948120910871e-01" length="8.2487337779924108e-01">
+                <line />
+            </geometry>
+            <geometry s="4.9421831760295998e+00" x="-3.3764915926641947e+00" y="-1.3446279314325685e+02" hdg="6.1902312470437924e+00" length="7.1883796925288683e+00">
+                <arc curvature="2.2073985908974117e-01" />
+            </geometry>
+            <geometry s="1.2130562868558467e+01" x="1.5608047935570579e+00" y="-1.3030056140782412e+02" hdg="1.4199355226074766e+00" length="2.2640075476928403e+00">
+                <line />
+            </geometry>
+            <geometry s="1.4394570416251309e+01" x="1.9010607113040114e+00" y="-1.2806226828884968e+02" hdg="1.5528679499571352e+00" length="6.0531043758623895e+01">
+                <arc curvature="5.3056914068110971e-04" />
+            </geometry>
+            <geometry s="7.4925614174875207e+01" x="2.0142745512190015e+00" y="-6.7533931776210920e+01" hdg="1.5157654891970440e+00" length="2.2476352053962048e+00">
+                <line />
+            </geometry>
+            <geometry s="7.7173249380271415e+01" x="2.1379013786949073e+00" y="-6.5289699073467133e+01" hdg="1.5777263602994931e+00" length="5.7019268315820050e+01">
+                <arc curvature="-2.3450756310700838e-04" />
+            </geometry>
+            <geometry s="1.3419251769609147e+02" x="2.0434571155435872e+00" y="-8.1593191204596884e+00" hdg="1.5711049658485818e+00" length="1.1657070160065337e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0221108841476152e+00" b="6.1585345871820272e-04" c="-6.3184142872295622e-06" d="1.2805673660038153e-08" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.6971220470126362e+00" b="2.3286540526050521e-05" c="-2.2365768387176776e-07" d="5.0048169264979740e-10" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.5000000000000000e+00" id="10061" junction="800014">
+        <link>
+            <predecessor elementType="road" elementId="10029" contactPoint="end" />
+            <successor elementType="road" elementId="10054" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.1547895998705208e+01" y="1.0505808670138465e+02" hdg="6.2701889346761810e+00" length="3.5000000000000000e+00">
+                <arc curvature="1.6666666666666666e-01" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0730114148364498e+00" b="-5.0276722234281809e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="2.5000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.4524747683055489e+01" id="10065" junction="800004">
+        <link>
+            <predecessor elementType="road" elementId="10060" contactPoint="end" />
+            <successor elementType="road" elementId="10007" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.5430535914795918e+01" y="9.6856911455213691e+01" hdg="1.5738375390478752e+00" length="1.4524747683055489e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9559999999999977e+00" b="-1.3609123878825995e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.2999999999999998e+00" b="4.8193608266022911e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.0140633552730900e+01" id="10066" junction="800004">
+        <link>
+            <predecessor elementType="road" elementId="10060" contactPoint="end" />
+            <successor elementType="road" elementId="10017" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.5430535914795918e+01" y="9.6856911455213691e+01" hdg="1.5711007134289545e+00" length="8.4477818775522113e+00">
+                <line />
+            </geometry>
+            <geometry s="8.4477818775522113e+00" x="-2.5433107306647173e+01" y="1.0530469294141724e+02" hdg="1.5711007134289545e+00" length="9.5158479257073392e+00">
+                <arc curvature="-1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="1.7963629803259550e+01" x="-1.9343867230053991e+01" y="1.1130585557107970e+02" hdg="6.2683113663239842e+00" length="2.1770037494713499e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9559999999999977e+00" b="4.0306575737606889e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="5.0000000000000000e+00" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.2999999999999998e+00" b="4.7925765231902990e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.4925219574005148e+01" id="10028" junction="800021">
+        <link>
+            <predecessor elementType="road" elementId="10030" contactPoint="end" />
+            <successor elementType="road" elementId="10060" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.5036104157528072e+01" y="7.8292595671470622e+01" hdg="7.6696778748601121e-03" length="1.3655779806283057e+01">
+                <line />
+            </geometry>
+            <geometry s="1.3655779806283057e+01" x="-3.1380725992789863e+01" y="7.8397330076892388e+01" hdg="7.6696778748601121e-03" length="9.3805862133245661e+00">
+                <arc curvature="1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="2.3036366019607623e+01" x="-2.5426743886833204e+01" y="8.4398979925657486e+01" hdg="1.5711007134289545e+00" length="1.8888535543975227e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.8570074482818102e+00" b="-3.2093017869184045e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.0000000000000000e+00" b="1.2036002295156265e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.0139859629395648e+01" id="10053" junction="800021">
+        <link>
+            <predecessor elementType="road" elementId="10070" contactPoint="end" />
+            <successor elementType="road" elementId="10060" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.5609751221577724e+01" y="6.6148800041526329e+01" hdg="1.5617379276172747e+00" length="2.0139859629395648e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.8364828134711200e+00" b="-4.9909576520665569e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.9989923412483845e+00" b="1.4945866768220760e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.9882774488200628e+01" id="10062" junction="800019">
+        <link>
+            <predecessor elementType="road" elementId="10059" contactPoint="end" />
+            <successor elementType="road" elementId="10030" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2815861160066561e+01" y="8.7762503426293136e+01" hdg="4.7140431196852655e+00" length="3.5699644781052307e+00">
+                <line />
+            </geometry>
+            <geometry s="3.5699644781052307e+00" x="-6.2809955944214614e+01" y="8.4192543832213829e+01" hdg="4.7140431196852655e+00" length="9.4608711922150857e+00">
+                <arc curvature="1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="1.3030835670320316e+01" x="-5.6763946536653542e+01" y="7.8202645134502319e+01" hdg="7.6696778748601121e-03" length="6.8519388178803116e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5394713600850878e+00" b="-1.4410898241840010e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="1.3000000000000000e+01" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="-7.5442187451764869e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.0569078552280001e+01" id="10063" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10064" contactPoint="end" />
+            <successor elementType="road" elementId="10112" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.6430535868470308e+01" y="9.6856607068584339e+01" hdg="4.7126933670187476e+00" length="1.0569078552280001e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9559999999999977e+00" b="1.7976969237209742e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.2999999999999998e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.0569078552280001e+01" id="10060" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800021" contactPoint="start" />
+            <successor elementType="junction" elementId="800004" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.5427318828599976e+01" y="8.6287833392552713e+01" hdg="1.5711007134289543e+00" length="1.0569078552280001e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9369999999999985e+00" b="-1.7976969237209889e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="3.2999999999999998e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.1169925928718296e+01" id="10064" junction="800014">
+        <link>
+            <predecessor elementType="road" elementId="10029" contactPoint="end" />
+            <successor elementType="road" elementId="10063" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.1547895998705208e+01" y="1.0505808670138465e+02" hdg="6.2701889346761810e+00" length="1.8138135113543508e-01">
+                <line />
+            </geometry>
+            <geometry s="1.8138135113543508e-01" x="-3.1366529965526045e+01" y="1.0505572946813979e+02" hdg="6.2701889346761810e+00" length="7.7874778382871668e+00">
+                <arc curvature="-2.0000000000000001e-01" />
+            </geometry>
+            <geometry s="7.9688591894226022e+00" x="-2.6431510230385431e+01" y="1.0005767365958866e+02" hdg="4.7126933670187476e+00" length="3.2010667392956931e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0730114148364498e+00" b="1.0475576613772464e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="6.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.0000000000000000e+00" b="-6.2668275910431420e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.0139859629395648e+01" id="10068" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10071" contactPoint="end" />
+            <successor elementType="road" elementId="10070" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.5845266379314886e+01" y="4.0149866743975906e+01" hdg="1.5617379276172747e+00" length="2.0139859629395648e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.8364828134711200e+00" b="-4.9909576520665569e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.9989923412483845e+00" b="1.4945866768220760e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="9.3978838262509292e+00" id="10071" junction="800022">
+        <link>
+            <predecessor elementType="junction" elementId="800022" contactPoint="start" />
+            <successor elementType="road" elementId="10068" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.1157784135528019e+01" y="3.3906979483055643e+01" hdg="3.0442389825832201e-04" length="3.0257670161461225e-01">
+                <line />
+            </geometry>
+            <geometry s="3.0257670161461225e-01" x="-3.0855207447933889e+01" y="3.3907071594633251e+01" hdg="3.0442389825832201e-04" length="7.8071675185950813e+00">
+                <arc curvature="2.0000000000000001e-01" />
+            </geometry>
+            <geometry s="8.1097442202096932e+00" x="-2.5856934702488129e+01" y="3.8861779986460562e+01" hdg="1.5617379276172747e+00" length="1.2881396060412353e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9469615536789409e+00" b="1.1755703970208989e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.0000000000000000e+00" b="-1.0722187784454038e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="5.8601403706043529e+00" id="10070" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10068" contactPoint="end" />
+            <successor elementType="road" elementId="10053" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.5662833986337137e+01" y="6.0288900095002290e+01" hdg="1.5617379276172751e+00" length="5.8601403706043529e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9369999999999985e+00" b="1.7152692627141329e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.2999999999999998e+00" b="-5.1365264262530373e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7971206220218968e+02" id="40000" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="40002" contactPoint="end" />
+            <successor elementType="road" elementId="10058" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.5609054724907203e+01" y="1.1924738768806094e+01" hdg="3.0935284845171771e+00" length="7.7765168975009411e+00">
+                <line />
+            </geometry>
+            <geometry s="7.7765168975009411e+00" x="-3.3376590835485743e+01" y="1.2298366695995796e+01" hdg="3.0545085488979100e+00" length="2.3108430525918005e+00">
+                <line />
+            </geometry>
+            <geometry s="1.0087359950092742e+01" x="-3.5678677121796945e+01" y="1.2499350138322995e+01" hdg="3.0535901947486481e+00" length="5.7380298287725324e+00">
+                <line />
+            </geometry>
+            <geometry s="1.5825389778865274e+01" x="-4.1394502393164053e+01" y="1.3003659352084213e+01" hdg="3.1731250241323026e+00" length="8.1546805386875265e-01">
+                <line />
+            </geometry>
+            <geometry s="1.6640857832734028e+01" x="-4.2209565074597151e+01" y="1.2977949972169881e+01" hdg="3.0424477796831577e+00" length="8.5884885362324734e+00">
+                <arc curvature="2.0013622076108173e-01" />
+            </geometry>
+            <geometry s="2.5229346368966503e+01" x="-4.7694758422775976e+01" y="7.7615224459379277e+00" hdg="4.5843090940650306e+00" length="2.4101586419164294e+00">
+                <line />
+            </geometry>
+            <geometry s="2.7639505010882932e+01" x="-4.8002607969869992e+01" y="5.3711054665055826e+00" hdg="4.6791687349458195e+00" length="1.6810915832101749e+01">
+                <arc curvature="3.3066013849550025e-03" />
+            </geometry>
+            <geometry s="4.4450420842984684e+01" x="-4.8093824358470904e+01" y="-1.1437398599083039e+01" hdg="4.7115814100937783e+00" length="2.4007727983958409e+00">
+                <line />
+            </geometry>
+            <geometry s="4.6851193641380526e+01" x="-4.8095763151047379e+01" y="-1.3838170614623195e+01" hdg="4.6907210425082599e+00" length="3.4892172334333779e+01">
+                <arc curvature="1.2982080944977917e-03" />
+            </geometry>
+            <geometry s="8.1743365975714312e+01" x="-4.8061546895798124e+01" y="-4.8727343191285485e+01" hdg="4.6540191007222456e+00" length="2.4049717864489444e+00">
+                <line />
+            </geometry>
+            <geometry s="8.4148337762163251e+01" x="-4.8201845110881500e+01" y="-5.1128219219834193e+01" hdg="4.7145806506200554e+00" length="2.4211695219044714e+01">
+                <arc curvature="-2.2873571847546650e-03" />
+            </geometry>
+            <geometry s="1.0836003298120797e+02" x="-4.8819066742048314e+01" y="-7.5328950862453524e+01" hdg="4.7030182903141062e+00" length="2.2890306304684027e+00">
+                <line />
+            </geometry>
+            <geometry s="1.1064906361167637e+02" x="-4.8840516224732710e+01" y="-7.7617880993959318e+01" hdg="4.6998082251662261e+00" length="3.7813158462342543e+01">
+                <arc curvature="7.3693066062670244e-04" />
+            </geometry>
+            <geometry s="1.4846222207401891e+02" x="-4.8789391376879593e+01" y="-1.1542978149890300e+02" hdg="4.6638926877676852e+00" length="2.3141831077331450e+00">
+                <line />
+            </geometry>
+            <geometry s="1.5077640518175207e+02" x="-4.8901576691378501e+01" y="-1.1774124378743988e+02" hdg="4.7439086072389189e+00" length="6.9934543576118271e+00">
+                <arc curvature="-8.0800203272157721e-03" />
+            </geometry>
+            <geometry s="1.5776985953936389e+02" x="-4.8878739147552473e+01" y="-1.2473373044731514e+02" hdg="4.7400315847171637e+00" length="2.4119325791490063e+00">
+                <line />
+            </geometry>
+            <geometry s="1.6018179211851290e+02" x="-4.8812075540108573e+01" y="-1.2714474158992792e+02" hdg="4.6713308643338571e+00" length="4.3988987825033137e+00">
+                <arc curvature="8.2342213925257313e-02" />
+            </geometry>
+            <geometry s="1.6458069090101623e+02" x="-4.8201375560040923e+01" y="-1.3147679838846793e+02" hdg="5.3027569233075287e+00" length="2.2668295469772661e+00">
+                <line />
+            </geometry>
+            <geometry s="1.6684752044799350e+02" x="-4.6939506982287185e+01" y="-1.3335993510350667e+02" hdg="5.7611979818298051e+00" length="5.8830384835484919e+00">
+                <arc curvature="1.2992214369401367e-01" />
+            </geometry>
+            <geometry s="1.7273055893154199e+02" x="-4.1254655716858267e+01" y="-1.3416000482214176e+02" hdg="6.2747223105490653e+00" length="2.3019172283025502e+00">
+                <line />
+            </geometry>
+            <geometry s="1.7503247615984455e+02" x="-3.8952820922380631e+01" y="-1.3417948570734234e+02" hdg="4.4876764906902622e-02" length="3.9441512821637486e+00">
+                <arc curvature="-1.3235532776948092e-02" />
+            </geometry>
+            <geometry s="1.7897662744200829e+02" x="-3.4892175352386360e+01" y="-1.3408635570713051e+02" hdg="1.5743895267895405e-02" length="7.3543476018140497e-01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.1012291413374848e+00" b="-1.3600575014283128e-04" c="4.6689738115078108e-07" d="-5.0351956773422345e-10" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.9976737385769523e+00" b="1.6907086431856629e-05" c="-6.8483651196457894e-08" d="7.8674009189405147e-11" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                        <speed sOffset="0.0000000000000000e+00" max="2.2222000000000000e+00" />
+                        <speed sOffset="6.0000000000000000e+01" max="4.1666999999999996e+00" />
+                        <speed sOffset="1.2000000000000000e+02" max="2.2222000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.3455758890919814e+01" id="40001" junction="800003">
+        <link>
+            <predecessor elementType="road" elementId="10002" contactPoint="end" />
+            <successor elementType="road" elementId="40002" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="2.4329771202267785e+00" y="2.9509734136540359e+01" hdg="4.7169548407478530e+00" length="9.4144606985787718e+00">
+                <line />
+            </geometry>
+            <geometry s="9.4144606985787718e+00" x="2.4759620838187777e+00" y="2.0095371569802808e+01" hdg="4.6248162013235632e+00" length="1.0514386397527329e+00">
+                <line />
+            </geometry>
+            <geometry s="1.0465899338331505e+01" x="2.3840023251431313e+00" y="1.9047962091160670e+01" hdg="4.7779465089970161e+00" length="6.3080072792756496e+00">
+                <arc curvature="-1.6404283002052103e-01" />
+            </geometry>
+            <geometry s="1.6773906617607153e+01" x="-2.4893150810802944e-01" y="1.3622803233485200e+01" hdg="3.5411803482765922e+00" length="2.3106801724942829e+00">
+                <line />
+            </geometry>
+            <geometry s="1.9084586790101437e+01" x="-2.3775797047780554e+00" y="1.2723859567635301e+01" hdg="3.3607346426019715e+00" length="3.5716344365897919e+00">
+                <arc curvature="-5.8323345434007440e-02" />
+            </geometry>
+            <geometry s="2.2656221226691230e+01" x="-6.0269605343213666e+00" y="1.2303697702603571e+01" hdg="3.1741139883430454e+00" length="7.9953766422858452e-01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0184876725036895e+00" b="3.3998922190735933e-03" c="-9.6652625199068767e-05" d="6.1480840129642999e-07" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="1.6000000000000000e+01" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.6978002322665358e+00" b="-2.5673168393174336e-05" c="3.3653520318819636e-07" d="-2.8208852672988349e-10" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                        <speed sOffset="0.0000000000000000e+00" max="2.2222000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.8786295355254445e+01" id="40002" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="40001" contactPoint="end" />
+            <successor elementType="road" elementId="40000" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.8260754254197433e+00" y="1.2277700253787771e+01" hdg="3.1603820022822195e+00" length="1.8786295355254445e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9839823208052501e+00" b="4.6989210101014568e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.6973795608024829e+00" b="1.5984746970907088e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                        <speed sOffset="1.5000000000000000e+01" max="2.2220000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.5861069449595158e+01" id="10058" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="40000" contactPoint="end" />
+            <successor elementType="road" elementId="10000" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.4156831736516864e+01" y="-1.3407477757761598e+02" hdg="6.2467255250111320e+00" length="1.5861069449595158e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.1135143551421773e+00" b="-5.7713618467156266e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.9989569972691541e+00" b="-1.9046047485755665e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.7077548889865405e+01" id="10020" junction="800006">
+        <link>
+            <predecessor elementType="road" elementId="10012" contactPoint="end" />
+            <successor elementType="road" elementId="10021" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-8.8472605572609382e+00" y="5.0031047895629143e+02" hdg="9.3640731827898271e-01" length="1.0147036059615383e+01">
+                <arc curvature="8.1816913776240452e-02" />
+            </geometry>
+            <geometry s="1.0147036059615383e+01" x="-6.7012320972075692e+00" y="5.0993364062266056e+02" hdg="1.4334839444945899e+00" length="3.5740927998619818e+00">
+                <arc curvature="-1.4769044369365614e-01" />
+            </geometry>
+            <geometry s="1.3721128859477364e+01" x="-5.1521568413154881e+00" y="5.1338562228061869e+02" hdg="6.9253467699738469e-01" length="9.6894896762756257e+00">
+                <line />
+            </geometry>
+            <geometry s="2.3410618535752988e+01" x="2.2929167851680021e+00" y="5.1955506651183543e+02" hdg="7.3232871464419702e-01" length="3.9865743912854108e+00">
+                <arc curvature="-2.0223947679859999e-01" />
+            </geometry>
+            <geometry s="2.7397192927038400e+01" x="5.9600808039782178e+00" y="5.2080412388851983e+02" hdg="6.1886662183592600e+00" length="5.2587191001524083e+00">
+                <line />
+            </geometry>
+            <geometry s="3.2655912027190809e+01" x="1.1200570963450003e+01" y="5.2032829133707730e+02" hdg="6.0777567102786003e+00" length="4.4216368626745952e+00">
+                <arc curvature="1.6893628179925826e-01" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5496825432811976e+00" b="8.9419909330874878e-03" c="-8.6698055642717565e-04" d="1.9096938893473213e-05" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.2999999999999998e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="none" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                        <roadMark sOffset="7.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                        <roadMark sOffset="3.0000000000000000e+01" type="none" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.8000000000000000e+01" id="10077" junction="800007">
+        <link>
+            <predecessor elementType="road" elementId="10085" contactPoint="end" />
+            <successor elementType="road" elementId="10041" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2777480245444146e+01" y="-2.1785457347102505e+02" hdg="4.7371419253085829e+00" length="5.6929153963417125e+00">
+                <arc curvature="1.5105690345836312e-01" />
+            </geometry>
+            <geometry s="5.6929153963417125e+00" x="-6.0346223003239359e+01" y="-2.2280824659530643e+02" hdg="5.4782757761874485e+00" length="6.4669325366978745e+00">
+                <line />
+            </geometry>
+            <geometry s="1.2159847933039586e+01" x="-5.5909066547083413e+01" y="-2.2749918761222921e+02" hdg="5.3083882858350488e+00" length="2.9810145176634406e+00">
+                <arc curvature="-1.7319853557039083e-01" />
+            </geometry>
+            <geometry s="1.5140862450703027e+01" x="-5.4931931782513836e+01" y="-2.3028055302239952e+02" hdg="4.7145020063520731e+00" length="8.7517571314330436e+00">
+                <line />
+            </geometry>
+            <geometry s="2.3892619582136071e+01" x="-5.4922195188899245e+01" y="-2.3903247222939294e+02" hdg="4.7331273961163802e+00" length="6.0831845466311121e+00">
+                <arc curvature="-1.3605114638820964e-01" />
+            </geometry>
+            <geometry s="2.9975804128767184e+01" x="-5.7139631251714128e+01" y="-2.4442432241977374e+02" hdg="3.9266516758795840e+00" length="6.1856195494228672e+00">
+                <line />
+            </geometry>
+            <geometry s="3.6161423678190047e+01" x="-6.1974344386683846e+01" y="-2.4933960704275145e+02" hdg="4.3361511749483848e+00" length="1.8385763218099527e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5191122238646164e+00" b="1.1695637415079683e-03" c="-3.7689157724095671e-04" d="9.3559296571541193e-06" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.2999999999999998e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="7.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="3.0000000000000000e+01" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="5.0000000000000000e-01" id="10088" junction="800010">
+        <link>
+            <predecessor elementType="road" elementId="10009" contactPoint="end" />
+            <successor elementType="junction" elementId="800010" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.0957048817758835e+01" y="1.1704659012786813e+02" hdg="3.0560067989570103e+00" length="5.0000000000000000e-01">
+                <arc curvature="1.6655735815549505e-01" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1095815223953505e+00" b="6.1892408950451824e-03" c="3.3415860078969516e-05" d="-1.0484087177712869e-05" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="5.0002036590768633e+00" id="10009" junction="800010">
+        <link>
+            <predecessor elementType="junction" elementId="800009" contactPoint="start" />
+            <successor elementType="junction" elementId="800010" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.6699456821121984e+01" y="1.1470970336229399e+02" hdg="2.2232200081795352e+00" length="1.7414572060291740e-03">
+                <line />
+            </geometry>
+            <geometry s="1.7414572060291740e-03" x="-2.6700514084311180e+01" y="1.1471108714975932e+02" hdg="2.2232200081795352e+00" length="4.9967207446648505e+00">
+                <arc curvature="1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="4.9984622018708800e+00" x="-3.0955313734694055e+01" y="1.1704644126565471e+02" hdg="3.0560067989570103e+00" length="1.7414572059832956e-03">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1383818194713884e+00" b="5.7598248070869643e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="4.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="2.0000000000000000e+00" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="8.3280423065523266e+01" id="10090" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800000" contactPoint="start" />
+            <successor elementType="road" elementId="10093" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="1.8995314178266383e+00" y="1.2247977374634822e+02" hdg="1.5724353391217241e+00" length="8.3280423065523266e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0269999999999992e+00" b="2.1142311344107931e-03" c="-2.7261271223843930e-05" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.7000000000000002e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.7000000000000002e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.2071062575529048e+01" id="10091" junction="800000">
+        <link>
+            <predecessor elementType="road" elementId="10038" contactPoint="end" />
+            <successor elementType="road" elementId="10090" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="2.2339914191064878e+00" y="9.0410455212412330e+01" hdg="1.5812252317720492e+00" length="3.2071062575529048e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0449276965891983e+00" b="5.5899914594280571e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.2000000000000002e+00" b="1.5590378361255526e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.7863528326050211e+01" id="10092" junction="800000">
+        <link>
+            <predecessor elementType="road" elementId="10090" contactPoint="start" />
+            <successor elementType="road" elementId="10039" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="1.8995314178266383e+00" y="1.2247977374634822e+02" hdg="4.7172846189791287e+00" length="2.7863528326050211e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0269999999999992e+00" b="3.9239472034191975e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.7000000000000002e+00" b="-1.7944604651254425e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="8.3280423065523266e+01" id="10093" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10090" contactPoint="end" />
+            <successor elementType="road" elementId="10094" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="1.7630338767571583e+00" y="2.0576006188574698e+02" hdg="1.5724353391217241e+00" length="8.3280423065523266e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0269999999999992e+00" b="2.1142311344107931e-03" c="-2.7261271223843930e-05" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.7000000000000002e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.7000000000000002e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.8000000000000000e+01" id="10094" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10093" contactPoint="end" />
+            <successor elementType="road" elementId="10099" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="1.6265363356876783e+00" y="2.8904035002514576e+02" hdg="1.5724353391217241e+00" length="3.8000000000000000e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0269999999999992e+00" b="2.1142311344107931e-03" c="-2.7261271223843930e-05" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.7000000000000002e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.7000000000000002e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.0000000000000000e+01" id="10096" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800016" contactPoint="start" />
+            <successor elementType="junction" elementId="800023" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.3102548800598015e+01" y="2.1276216615025771e+02" hdg="4.7153218476664582e+00" length="2.0000000000000000e+01">
+                <arc curvature="-1.0229823849540102e-05" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5353336183805713e+00" b="-2.0889169456300534e-04" c="1.8430926154654082e-06" d="-3.4941962244029351e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="2" type="driving" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="1" type="stop" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="1.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="-2" type="driving" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="white" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.6000000000000000e+01" id="10098" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10113" contactPoint="end" />
+            <successor elementType="road" elementId="10074" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2684446983999806e+01" y="-9.5237422666199819e+01" hdg="4.7121710619207997e+00" length="1.0000000000000000e+01">
+                <arc curvature="-1.0229823849540102e-05" />
+            </geometry>
+            <geometry s="1.0000000000000000e+01" x="-6.2687137659784639e+01" y="-1.0523742229991561e+02" hdg="4.7120687636823035e+00" length="6.0000000000000000e+00">
+                <arc curvature="-1.0229823849540102e-05" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5269229390670489e+00" b="-6.7966935331594206e-05" c="-1.3855446958829043e-06" d="-3.4941962244029351e-09" />
+            <elevation s="1.0000000000000000e+01" a="-6.5277446570861786e+00" b="-9.6726088116573170e-05" c="-1.4903705826149925e-06" d="-3.4941962244029351e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="2" type="driving" level="false">
+                        <link>
+                            <predecessor id="2" />
+                            <successor id="2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="1" type="stop" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="1.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.0413812651491097e+00" id="10103" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10017" contactPoint="end" />
+            <successor elementType="junction" elementId="800005" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-7.1679393916731726e+00" y="1.1121443282204470e+02" hdg="1.6836350375144851e-01" length="3.0413812651491097e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.1389411280360973e+00" b="-3.6503959983422707e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3968165843531239e+00" b="-4.9808780100496712e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.1000000000000000e+01" id="10097" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10099" contactPoint="end" />
+            <successor elementType="junction" elementId="800024" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.5840964726685307e+00" y="3.3586143748011182e+02" hdg="3.1286034623329280e+00" length="1.1000000000000000e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1159999999999961e+00" b="-1.0063264301991460e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="6.0999999999999996e+00" id="10106" junction="800010">
+        <link>
+            <predecessor elementType="junction" elementId="800010" contactPoint="start" />
+            <successor elementType="junction" elementId="800011" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.1456421737210057e+01" y="1.1706854996621483e+02" hdg="3.1392854780347577e+00" length="6.0999999999999996e+00">
+                <arc curvature="1.6655735815549505e-01" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1064798584937057e+00" b="6.2147936897408666e-03" c="1.7689729312400212e-05" d="-1.0484087177712869e-05" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="4.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.2802073325068001e+01" id="10099" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10094" contactPoint="end" />
+            <successor elementType="road" elementId="10097" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="1.5642538951537683e+00" y="3.2704029898429042e+02" hdg="1.5724353391217241e+00" length="3.8140809848710888e+00">
+                <line />
+            </geometry>
+            <geometry s="3.8140809848710888e+00" x="1.5580025722029325e+00" y="3.3085437484616267e+02" hdg="1.5724353391217241e+00" length="7.7808406160560200e+00">
+                <arc curvature="2.0000000000000001e-01" />
+            </geometry>
+            <geometry s="1.1594921600927108e+01" x="-3.3770465818657547e+00" y="3.3584575799640430e+02" hdg="3.1286034623329280e+00" length="1.2071517241408918e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9860244925396193e+00" b="-1.0152692002307867e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.7000000000000002e+00" b="-5.4678643234242055e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.7000000000000002e+00" b="-5.4678643234242055e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.1499338797750305e+01" id="10101" junction="800024">
+        <link>
+            <predecessor elementType="road" elementId="10097" contactPoint="end" />
+            <successor elementType="road" elementId="10081" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-1.5583168530723142e+01" y="3.3600431456617628e+02" hdg="3.1286034623329280e+00" length="1.0531770885725056e+00">
+                <line />
+            </geometry>
+            <geometry s="1.0531770885725056e+00" x="-1.6636256775005066e+01" y="3.3601799410013308e+02" hdg="3.1286034623329280e+00" length="7.9307508681620114e+00">
+                <arc curvature="2.0000000000000001e-01" />
+            </geometry>
+            <geometry s="8.9839279567345169e+00" x="-2.1701186926050838e+01" y="3.3100659262504172e+02" hdg="4.7147536359653301e+00" length="1.2515410841015790e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.2266959073219024e+00" b="6.8355159477917254e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.0000000000000000e+00" b="6.5118281690900004e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.0544081192507308e+01" id="10005" junction="800005">
+        <link>
+            <predecessor elementType="road" elementId="10103" contactPoint="end" />
+            <successor elementType="road" elementId="10100" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.1695623047219996e+00" y="1.1172407470066752e+02" hdg="1.6836350375144851e-01" length="7.5239420193409801e-01">
+                <line />
+            </geometry>
+            <geometry s="7.5239420193409801e-01" x="-3.4278067210715846e+00" y="1.1185015280831306e+02" hdg="1.6836350375144851e-01" length="8.9312626638142092e+00">
+                <arc curvature="-2.0000000000000001e-01" />
+            </geometry>
+            <geometry s="9.6836568657483078e+00" x="2.4044960843319374e+00" y="1.0668547475316191e+02" hdg="4.6652962781681930e+00" length="8.6042432675900071e-01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.2499635880334319e+00" b="-3.5097877178787304e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.2453290937155415e+00" b="-4.7890213751777808e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.1214224290794025e+01" id="10100" junction="800002">
+        <link>
+            <predecessor elementType="road" elementId="10005" contactPoint="end" />
+            <successor elementType="road" elementId="10039" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="2.3639913529829277e+00" y="1.0582600434132854e+02" hdg="4.6831317163256223e+00" length="1.1214224290794025e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.6200384546912145e+00" b="-3.5314796069189754e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.7403707915902662e+00" b="-4.8186194388306187e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.6000000000000000e+01" id="10109" junction="800025">
+        <link>
+            <predecessor elementType="road" elementId="40003" contactPoint="end" />
+            <successor elementType="road" elementId="10110" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.1230241009735764e+01" y="1.3184649405057891e+02" hdg="4.7147536359653301e+00" length="6.7735522735101981e+00">
+                <line />
+            </geometry>
+            <geometry s="6.7735522735101981e+00" x="-2.1214223906478320e+01" y="1.2507296071454385e+02" hdg="4.7147536359653301e+00" length="9.2264477264898019e+00">
+                <arc curvature="-1.6666666666666666e-01" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1743959692380042e+00" b="3.3203016259738738e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.6345684462190877e+00" b="1.7865318978130408e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="7.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.1597242683236088e+01" id="10110" junction="800010">
+        <link>
+            <predecessor elementType="road" elementId="10109" contactPoint="end" />
+            <successor elementType="junction" elementId="800011" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.7001733397094149e+01" y="1.1906253606512421e+02" hdg="3.1770123482170298e+00" length="3.5185923143779654e+00">
+                <line />
+            </geometry>
+            <geometry s="3.5185923143779654e+00" x="-3.0518118808828518e+01" y="1.1893793465686009e+02" hdg="3.1770123482170298e+00" length="5.8696380873974903e+00">
+                <arc curvature="1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="9.3882304017754556e+00" x="-3.5398385514589322e+01" y="1.1611407791866684e+02" hdg="4.1552853627832782e+00" length="2.2090122814606321e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1212711432224225e+00" b="4.3958787329559119e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.9204135498691741e+00" b="6.8625320953116528e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.5000000000000000e+01" id="10107" junction="800026">
+        <link>
+            <predecessor elementType="junction" elementId="800026" contactPoint="start" />
+            <successor elementType="road" elementId="10069" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.9217607623927393e+01" y="5.9219890861669910e+01" hdg="4.0166184135834655e+00" length="1.1081159623875630e+01">
+                <line />
+            </geometry>
+            <geometry s="1.1081159623875630e+01" x="-3.6320377029526682e+01" y="5.0714435825007016e+01" hdg="4.0166184135834655e+00" length="3.9188403761243702e+00">
+                <arc curvature="1.4285714285714285e-01" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9424101071904394e+00" b="4.6951058245677099e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.9948512433069814e+00" b="9.5542761446237336e-05" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.1779999999999999e+01" id="10108" junction="800026">
+        <link>
+            <predecessor elementType="road" elementId="10112" contactPoint="end" />
+            <successor elementType="junction" elementId="800026" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.6305673887367327e+01" y="7.0662845796216999e+01" hdg="4.7264378056620817e+00" length="3.0531107864707185e+00">
+                <line />
+            </geometry>
+            <geometry s="3.0531107864707185e+00" x="-2.6262782678310856e+01" y="6.7610036300252744e+01" hdg="4.6704631629034861e+00" length="8.1165499536278651e-01">
+                <line />
+            </geometry>
+            <geometry s="3.8647657818335048e+00" x="-2.6296802009076430e+01" y="6.6799094553496772e+01" hdg="4.6700850378358449e+00" length="7.9152342181664945e+00">
+                <arc curvature="-8.2558090669330883e-02" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0179560885158478e+00" b="7.3697475459141588e-03" c="-8.4168842091816347e-05" d="2.5101416274440726e-07" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.9937325706099305e+00" b="9.7916601754956874e-05" c="-2.2550423636125348e-07" d="-2.1361883946554477e-09" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <speed sOffset="0.0000000000000000e+00" max="2.2222000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.4750569062696030e-01" id="10111" junction="800026">
+        <link>
+            <predecessor elementType="road" elementId="10108" contactPoint="end" />
+            <successor elementType="road" elementId="10107" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.9101436972516950e+01" y="5.9547403586260870e+01" hdg="4.3715281096227807e+00" length="3.4750569062696030e-01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9424101071904394e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.9948512433069814e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.5625156731506307e+01" id="10112" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10063" contactPoint="end" />
+            <successor elementType="road" elementId="10108" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.6427318782274366e+01" y="8.6287529005923361e+01" hdg="4.7201742542115133e+00" length="1.5625156731506307e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9369999999999985e+00" b="-5.1811376939733880e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.2999999999999998e+00" b="-1.9600918867745933e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="9.0000000000000000e+00" id="10052" junction="800022">
+        <link>
+            <predecessor elementType="road" elementId="10069" contactPoint="end" />
+            <successor elementType="junction" elementId="800022" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.7589156892832051e+01" y="3.8912013916628602e+01" hdg="4.7126925139772755e+00" length="6.9880588062743946e-03">
+                <line />
+            </geometry>
+            <geometry s="6.9880588062743946e-03" x="-3.7589154771721489e+01" y="3.8905025858144242e+01" hdg="4.7126925139772755e+00" length="7.8539860855028465e+00">
+                <arc curvature="2.0000000000000001e-01" />
+            </geometry>
+            <geometry s="7.8609741443091208e+00" x="-3.2587632882585311e+01" y="3.3906543757768638e+01" hdg="3.0442389825832201e-04" length="1.1390258556908792e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9369999999999985e+00" b="-1.0174378315206418e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.9082295775710731e-01" id="10067" junction="800022">
+        <link>
+            <predecessor elementType="road" elementId="10052" contactPoint="end" />
+            <successor elementType="road" elementId="10071" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.1448607079673423e+01" y="3.3906890504454488e+01" hdg="3.0595453409160757e-04" length="2.9082295775710731e-01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9461569404836840e+00" b="-2.7666770239261024e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="8.2694261190820129e+00" id="10069" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10107" contactPoint="end" />
+            <successor elementType="road" elementId="10052" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.7882881159864233e+01" y="4.7176221948491801e+01" hdg="4.7479157581009481e+00" length="8.2694261190820129e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.8719835198219235e+00" b="-7.8622723320602699e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.9962843847286749e+00" b="4.4931960426506648e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7390555797032032e+01" id="10072" junction="800000">
+        <link>
+            <predecessor elementType="road" elementId="10090" contactPoint="start" />
+            <successor elementType="road" elementId="10006" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="1.8995314178266383e+00" y="1.2247977374634822e+02" hdg="4.7140279927115172e+00" length="6.6112653326508122e+00">
+                <line />
+            </geometry>
+            <geometry s="6.6112653326508122e+00" x="1.9103673583512353e+00" y="1.1586851729381944e+02" hdg="4.7140279927115172e+00" length="7.1674313637147877e+00">
+                <arc curvature="-2.2222222222222221e-01" />
+            </geometry>
+            <geometry s="1.3778696696365600e+01" x="-2.6810926358230343e+00" y="1.1136207139725715e+02" hdg="3.1212654674415643e+00" length="3.6118591006664333e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0269999999999992e+00" b="-3.0610359409111621e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.7000000000000002e+00" b="-5.7502475002591136e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.4600077301381784e+01" id="10033" junction="800000">
+        <link>
+            <predecessor elementType="road" elementId="10103" contactPoint="end" />
+            <successor elementType="road" elementId="10090" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.1695623047219996e+00" y="1.1172407470066752e+02" hdg="1.6836350375144851e-01" length="2.3663156798456333e+00">
+                <line />
+            </geometry>
+            <geometry s="2.3663156798456333e+00" x="-1.8367055872020444e+00" y="1.1212059636742146e+02" hdg="1.6836350375144851e-01" length="6.3183232591662399e+00">
+                <arc curvature="2.2222222222222221e-01" />
+            </geometry>
+            <geometry s="8.6846389390118723e+00" x="1.9092268898802254e+00" y="1.1656434332947919e+02" hdg="1.5724353391217241e+00" length="5.9154383623699127e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.2499635880334319e+00" b="-5.3221390265723242e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.2453290937155415e+00" b="-3.7351110028981158e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7364524454615108e+02" id="10081" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800024" contactPoint="start" />
+            <successor elementType="road" elementId="40003" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.1671592317541823e+01" y="3.1849121677457032e+02" hdg="4.7147536359653301e+00" length="1.7364524454615108e+02">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.2120000000000024e+00" b="3.0370243396012894e-04" c="-1.8816402484528965e-06" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.9498450349100776e+02" id="10102" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="40014" contactPoint="end" />
+            <successor elementType="road" elementId="10079" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.3645944552153651e+01" y="3.2461918238686945e+02" hdg="4.7148144570840111e+00" length="1.9498450349100776e+02">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1249999999999991e+00" b="-5.9262491775700595e-04" c="1.2776856988601469e-05" d="-4.7781496303476045e-08" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.3000000000000000e+01" id="40003" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10081" contactPoint="end" />
+            <successor elementType="junction" elementId="800025" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.1260981503636000e+01" y="1.4484645770522175e+02" hdg="4.7147536359653301e+00" length="1.3000000000000000e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.2159999958501828e+00" b="2.9717161865841974e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="1.6754889015649126e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.3069254162637492e+02" id="40005" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="40007" contactPoint="end" />
+            <successor elementType="road" elementId="40013" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.8736922748140287e+01" y="1.8976937387942823e+02" hdg="1.5739277428782623e+00" length="1.3069254162637492e+02">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9118089432774799e+00" b="-1.9207015222732053e-04" c="-1.1175824479450720e-06" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.0000000000000001e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="5.0000000000000000e+00" id="40006" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="40011" contactPoint="end" />
+            <successor elementType="road" elementId="40007" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.5408563858435237e+01" y="1.7045093858087557e+02" hdg="2.0182883822211397e+00" length="4.0000000000000027e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9770508485072451e+00" b="8.3585576961438916e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.6044624940792644e+01" id="40007" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="40006" contactPoint="end" />
+            <successor elementType="road" elementId="40005" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.7139387446974943e+01" y="1.7405707913628305e+02" hdg="2.0182883822211397e+00" length="2.9240273332251596e+00">
+                <line />
+            </geometry>
+            <geometry s="2.9240273332251596e+00" x="-4.8404631317445180e+01" y="1.7669319252414886e+02" hdg="2.0182883822211397e+00" length="1.3330819180286322e+00">
+                <arc curvature="-3.3333333333333331e-01" />
+            </geometry>
+            <geometry s="4.2571092512537918e+00" x="-4.8700011192251559e+01" y="1.7798191598265649e+02" hdg="1.5739277428782623e+00" length="1.1787515689538852e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9352580600265252e+00" b="1.4614936052152385e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.4000000000000000e+01" id="40008" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800010" contactPoint="start" />
+            <successor elementType="road" elementId="40011" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.2324277892749258e+01" y="1.3016516908874695e+02" hdg="1.5988142018223830e+00" length="3.1000000000000000e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0210174299115335e+00" b="5.0111290093546714e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="9.7536291232589711e+00" id="40011" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="40008" contactPoint="end" />
+            <successor elementType="road" elementId="40006" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.3192718387038774e+01" y="1.6115300236420973e+02" hdg="1.5988142018223830e+00" length="4.3348991988284604e+00">
+                <line />
+            </geometry>
+            <geometry s="4.3348991988284604e+00" x="-4.3314157161326705e+01" y="1.6548620022353984e+02" hdg="1.5988142018223830e+00" length="1.2584225411962702e+00">
+                <arc curvature="3.3333333333333331e-01" />
+            </geometry>
+            <geometry s="5.5933217400247308e+00" x="-4.3608374319815880e+01" y="1.6670027528646500e+02" hdg="2.0182883822211397e+00" length="4.1603073832342412e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0039795912797276e+00" b="2.7608946815772298e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="7.0000000000000000e+00" id="40012" junction="800027">
+        <link>
+            <predecessor elementType="road" elementId="40013" contactPoint="end" />
+            <successor elementType="junction" elementId="800024" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.9605859805912814e+01" y="3.3782352334346831e+02" hdg="8.1888778663930873e-04" length="4.0000000000000018e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0119999999999978e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.4791531171749529e+01" id="40013" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="40005" contactPoint="end" />
+            <successor elementType="junction" elementId="800027" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-4.9146174806125927e+01" y="3.2046127473604128e+02" hdg="1.5739277428782623e+00" length="1.2342900711911566e+01">
+                <line />
+            </geometry>
+            <geometry s="1.2342900711911566e+01" x="-4.9184825500763907e+01" y="3.3280411493219998e+02" hdg="1.5739277428782623e+00" length="7.8655442754581149e+00">
+                <arc curvature="-2.0000000000000001e-01" />
+            </geometry>
+            <geometry s="2.0208444987369681e+01" x="-4.4188944453636182e+01" y="3.3781977031058562e+02" hdg="8.1888778663930873e-04" length="4.5830861843798489e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.9559999918361743e+00" b="-2.2588362040194044e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.6999114347914414e+01" id="40014" junction="800027">
+        <link>
+            <predecessor elementType="road" elementId="40013" contactPoint="end" />
+            <successor elementType="road" elementId="10102" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.9605859805912814e+01" y="3.3782352334346768e+02" hdg="8.1888778663930873e-04" length="9.3590508189881128e-01">
+                <line />
+            </geometry>
+            <geometry s="9.3590508189881128e-01" x="-3.8669955037812294e+01" y="3.3782428974462306e+02" hdg="8.1888778663930873e-04" length="7.8459486894110730e+00">
+                <arc curvature="-2.0000000000000001e-01" />
+            </geometry>
+            <geometry s="8.7818537713098834e+00" x="-3.3665875306672540e+01" y="3.3283641879267179e+02" hdg="4.7148144570840111e+00" length="8.2172605766045308e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0119999999999978e+00" b="-6.6474051346013243e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="8.8420162189180065e+00" id="40015" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="40016" contactPoint="end" />
+            <successor elementType="road" elementId="40017" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.6713222296418074e+01" y="3.3753768908660913e+02" hdg="6.2798496536519188e+00" length="7.3449716213428733e+00">
+                <arc curvature="-2.1106736119733752e-01" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0691935114380007e+00" b="-6.4314405022805323e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="8.8973372538612256e+00" id="40016" junction="800024">
+        <link>
+            <predecessor elementType="road" elementId="40012" contactPoint="end" />
+            <successor elementType="road" elementId="40015" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.5605861147067152e+01" y="3.3782679889424878e+02" hdg="6.2506856165345122e+00" length="8.8973372538612256e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0119999999999978e+00" b="-6.4281604491481211e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.4393616257263634e+01" id="40017" junction="800024">
+        <link>
+            <predecessor elementType="road" elementId="40015" contactPoint="end" />
+            <successor elementType="road" elementId="10081" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.1991900971463473e+01" y="3.3288126859266976e+02" hdg="4.7346443393755875e+00" length="1.4393616257263634e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1260604126701717e+00" b="-5.9706737899492051e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="7.8981136646422669e+00" id="10075" junction="800010">
+        <link>
+            <predecessor elementType="junction" elementId="800025" contactPoint="start" />
+            <successor elementType="road" elementId="40008" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.8183655094189547e+01" y="1.2464112759996735e+02" hdg="3.1042562785674566e+00" length="2.4600217158606830e-01">
+                <line />
+            </geometry>
+            <geometry s="2.4600217158606830e-01" x="-3.8429485821576897e+01" y="1.2465031029550121e+02" hdg="3.1042562785674566e+00" length="6.0217683069802943e+00">
+                <arc curvature="-2.5000000000000000e-01" />
+            </geometry>
+            <geometry s="6.2677704785663622e+00" x="-4.2278605117188697e+01" y="1.2853546577158866e+02" hdg="1.5988142018223830e+00" length="1.6303431860759050e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0901360846695223e+00" b="8.7512864074639450e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="3.0000000000000000e+00" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.4183731382338003e+00" b="-2.3262691591856835e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                        <roadMark sOffset="3.0000000000000000e+00" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="8.3261295844946517e+00" id="10079" junction="800025">
+        <link>
+            <predecessor elementType="road" elementId="10102" contactPoint="end" />
+            <successor elementType="road" elementId="10075" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.3173014645910627e+01" y="1.2963525243637687e+02" hdg="4.7148144570840111e+00" length="1.0194803069483631e+00">
+                <line />
+            </geometry>
+            <geometry s="1.0194803069483631e+00" x="-3.3170541922605182e+01" y="1.2861577512819636e+02" hdg="4.7148144570840111e+00" length="6.4422327140662183e+00">
+                <arc curvature="-2.5000000000000000e-01" />
+            </geometry>
+            <geometry s="7.4617130210145817e+00" x="-3.7319840961184426e+01" y="1.2460886091685140e+02" hdg="3.1042562785674566e+00" length="8.6441656348007034e-01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1089992666842470e+00" b="2.2655402877529906e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="2.2066841558670653e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.1606001016223985e+01" id="10078" junction="800010">
+        <link>
+            <predecessor elementType="junction" elementId="800010" contactPoint="start" />
+            <successor elementType="road" elementId="40008" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.0957048817758835e+01" y="1.1704659012786813e+02" hdg="3.0560067989570103e+00" length="6.6046319870229286e+00">
+                <line />
+            </geometry>
+            <geometry s="6.6046319870229286e+00" x="-3.7537506304977832e+01" y="1.1761116336750129e+02" hdg="3.0560067989570103e+00" length="7.2859629856731365e+00">
+                <arc curvature="-2.0000000000000001e-01" />
+            </geometry>
+            <geometry s="1.3890594972696064e+01" x="-4.2108136891520694e+01" y="1.2245279114909079e+02" hdg="1.5988142018223830e+00" length="7.7154060435279206e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1095815223953505e+00" b="4.0990506488134465e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="8.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.0000000000000000e+00" b="-2.7770062565000298e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.1957920153005038e+01" id="10080" junction="800006">
+        <link>
+            <predecessor elementType="road" elementId="10012" contactPoint="end" />
+            <successor elementType="road" elementId="10021" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-8.8713551054238877e+00" y="5.0033401787752462e+02" hdg="7.0750926697624450e-01" length="3.1957920153005038e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5524291509286821e+00" b="4.6803822924737981e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="1.0000000000000000e+01" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="2.0000000000000000e+01" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.2999999999999998e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="3.3787662325735674e+01" id="10037" junction="800007">
+        <link>
+            <predecessor elementType="road" elementId="10085" contactPoint="end" />
+            <successor elementType="road" elementId="10041" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2808260322087435e+01" y="-2.1789369236418699e+02" hdg="4.7120498237642368e+00" length="3.3787662325735674e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5181070046265290e+00" b="2.5748773357275591e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="1.0000000000000000e+01" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="2.0000000000000000e+01" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.2999999999999998e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.6615324643086564e+02" id="10083" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10021" contactPoint="end" />
+            <successor elementType="road" elementId="10023" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.3710433636719245e+01" y="5.2600412864707334e+02" hdg="4.7142154575148565e+00" length="1.6615324643086564e+02">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.6130316156872357e+00" b="5.1747451003432106e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.2999999999999998e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="4.5000000000000000e+01" id="10084" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10011" contactPoint="end" />
+            <successor elementType="junction" elementId="800016" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.3305924174055690e+01" y="2.7528742124234287e+02" hdg="4.7156416605364999e+00" length="4.5000000000000000e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5142129425562647e+00" b="-3.3779252984546498e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="2" type="driving" level="false">
+                        <link>
+                            <predecessor id="2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                    <lane id="1" type="stop" level="false">
+                        <link>
+                            <predecessor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="1.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.5299998438296447e+02" id="10055" junction="800019">
+        <link>
+            <predecessor elementType="road" elementId="10059" contactPoint="end" />
+            <successor elementType="road" elementId="10034" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2815861160066561e+01" y="8.7762503426293136e+01" hdg="4.7132605381607622e+00" length="1.5299998438296447e+02">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5394713600850878e+00" b="8.7809042621355595e-05" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="2" type="driving" level="false">
+                        <link>
+                            <predecessor id="2" />
+                            <successor id="2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="1" type="stop" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="1.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="-2" type="driving" level="false">
+                        <link>
+                            <predecessor id="-2" />
+                            <successor id="-2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="9.9999995639643984e+01" id="10059" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10036" contactPoint="end" />
+            <successor elementType="junction" elementId="800019" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.3032424030650873e+01" y="1.8776226456826737e+02" hdg="4.7145546108777463e+00" length="9.9999995639643984e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5394585746759866e+00" b="-1.2785409658701888e-07" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="2" type="driving" level="false">
+                        <link>
+                            <predecessor id="2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="1" type="stop" level="false">
+                        <link>
+                            <predecessor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="1.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="-2" type="driving" level="false">
+                        <link>
+                            <predecessor id="-2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.7525585849897084e+01" id="10024" junction="800016">
+        <link>
+            <predecessor elementType="road" elementId="10084" contactPoint="end" />
+            <successor elementType="road" elementId="10096" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.3159553825322519e+01" y="2.3028765929051681e+02" hdg="4.7156416605364999e+00" length="1.7525585849897084e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5294136063993102e+00" b="-3.3779252984546498e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="2" type="driving" level="false">
+                        <link>
+                            <predecessor id="2" />
+                            <successor id="2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                    <lane id="1" type="stop" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="1.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.0105463653809796e+01" id="10082" junction="800024">
+        <link>
+            <predecessor elementType="road" elementId="40012" contactPoint="end" />
+            <successor elementType="road" elementId="10097" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-3.5605861147067152e+01" y="3.3782679889424878e+02" hdg="6.1924144875744203e+00" length="2.0105463653809796e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.0119999999999978e+00" b="-1.0678485759825874e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.3999999999999999e+00" b="-6.9632813453407383e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.8896836927282170e+01" id="10085" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10013" contactPoint="end" />
+            <successor elementType="junction" elementId="800007" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2748114330446917e+01" y="-1.8899691803102607e+02" hdg="4.7103075748931547e+00" length="2.8896836927282170e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.4975992075404552e+00" b="2.5679167805575583e-04" c="-3.3445934279537933e-05" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.2999999999999998e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="9.2504871616288433e+00" id="10086" junction="800016">
+        <link>
+            <predecessor elementType="road" elementId="10084" contactPoint="end" />
+            <successor elementType="road" elementId="10089" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.3159553825322519e+01" y="2.3028765929051681e+02" hdg="4.7156416605364999e+00" length="2.0000000000000000e+00">
+                <line />
+            </geometry>
+            <geometry s="2.0000000000000000e+00" x="-6.3153048476489936e+01" y="2.2828766987043565e+02" hdg="4.7156416605364999e+00" length="7.2504871616288424e+00">
+                <arc curvature="-4.4296640705592062e-02" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5294136063993102e+00" b="-3.1998379533011603e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="9.2504871616288433e+00" id="10089" junction="800016">
+        <link>
+            <predecessor elementType="road" elementId="10086" contactPoint="end" />
+            <successor elementType="road" elementId="10096" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.4284215630771115e+01" y="2.2115747424624246e+02" hdg="4.3944694357973191e+00" length="7.2504871616288424e+00">
+                <arc curvature="-4.4296640705592062e-02" />
+            </geometry>
+            <geometry s="7.2504871616288424e+00" x="-6.7608395172917596e+01" y="2.1474895966470618e+02" hdg="4.7153218476664582e+00" length="2.0000000000000000e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5323736123899412e+00" b="-3.1998379533011603e-04" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.3475828029070726e+01" id="10073" junction="-1">
+        <link>
+            <predecessor elementType="junction" elementId="800017" contactPoint="start" />
+            <successor elementType="junction" elementId="800018" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2690851317922352e+01" y="-1.1523742160599247e+02" hdg="4.7119664654438083e+00" length="2.3475828029070726e+01">
+                <arc curvature="-1.0229823849540102e-05" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5288644492218308e+00" b="-1.2758175863619389e-04" c="-1.5951964693470804e-06" d="-3.4941962244029351e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="2" type="driving" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="1" type="stop" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="1.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link />
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="white" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.1114455123841505e+02" id="10104" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10045" contactPoint="end" />
+            <successor elementType="junction" elementId="800013" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-5.7109356708719105e+01" y="-4.4484475193474694e+01" hdg="1.5728310456682986e+00" length="1.1114455123841505e+02">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.7208040277713952e+00" b="1.0897339069081899e-03" c="-2.9031514794522888e-05" d="1.7211859361704880e-07" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="none" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.6382709390520041e+01" id="10045" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10042" contactPoint="end" />
+            <successor elementType="road" elementId="10104" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.0285674945374531e+01" y="-6.0436412723544599e+01" hdg="1.2876609232321585e+00" length="9.6833790357884197e+00">
+                <line />
+            </geometry>
+            <geometry s="9.6833790357884197e+00" x="-5.7580452759709857e+01" y="-5.1138584887058578e+01" hdg="1.2876609232321585e+00" length="3.4220414692336805e+00">
+                <arc curvature="8.3333333333333329e-02" />
+            </geometry>
+            <geometry s="1.3105420505022099e+01" x="-5.7102688351771455e+01" y="-4.7761757294854426e+01" hdg="1.5728310456682986e+00" length="3.2772888854979412e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5872831699702790e+00" b="-8.1501084233587713e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.8904702516935199e+00" b="-8.4874254834681029e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.2537690941273357e+01" id="10105" junction="-1">
+        <link>
+            <predecessor elementType="road" elementId="10040" contactPoint="end" />
+            <successor elementType="road" elementId="10095" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-5.7512989511837191e+01" y="1.7300499924587643e+02" hdg="1.5728257333720501e+00" length="1.2350923120356971e+00">
+                <line />
+            </geometry>
+            <geometry s="1.2350923120356971e+00" x="-5.7515496014578126e+01" y="1.7424008901455468e+02" hdg="1.5728257333720501e+00" length="2.4505346147428604e+00">
+                <arc curvature="1.4285714285714285e-01" />
+            </geometry>
+            <geometry s="3.6856269267785575e+00" x="-5.7944941657019129e+01" y="1.7664000928505368e+02" hdg="1.9229021069067445e+00" length="8.8520640144948004e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.7223924588517896e+00" b="1.1253942998521621e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="2.5000000000000000e+00" b="1.2295993302516171e-01" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="5.0000000000000000e+00" id="10036" junction="800023">
+        <link>
+            <predecessor elementType="road" elementId="10096" contactPoint="end" />
+            <successor elementType="road" elementId="10059" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.3045937495422550e+01" y="1.9276224630631003e+02" hdg="4.7151172511894677e+00" length="5.0000000000000000e+00">
+                <arc curvature="-1.0229823849540102e-05" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5388021687954403e+00" b="-1.3936102541367253e-04" c="1.6334408420012320e-06" d="-3.4941962244029351e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="2" type="driving" level="false">
+                        <link>
+                            <predecessor id="2" />
+                            <successor id="2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                    </lane>
+                    <lane id="1" type="stop" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="1.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="white" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="-2" type="driving" level="false">
+                        <link>
+                            <predecessor id="-2" />
+                            <successor id="-2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="white" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="7.9748540773366745e+00" id="10095" junction="800023">
+        <link>
+            <predecessor elementType="road" elementId="10105" contactPoint="end" />
+            <successor elementType="road" elementId="10096" contactPoint="end" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.0997798633640564e+01" y="1.8494898645417669e+02" hdg="1.9229021069067445e+00" length="1.7642229909081415e+00">
+                <line />
+            </geometry>
+            <geometry s="1.7642229909081415e+00" x="-6.1606235316575827e+01" y="1.8660497182986924e+02" hdg="1.9229021069067445e+00" length="2.4456425651494893e+00">
+                <arc curvature="-1.4285714285714285e-01" />
+            </geometry>
+            <geometry s="4.2098655560576308e+00" x="-6.2035669321631197e+01" y="1.8900000006471615e+02" hdg="1.5735245975996746e+00" length="3.7649885212790442e+00">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5812939996656183e+00" b="5.3282267560146816e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.0416336384291487e+00" b="5.7476457515813234e-02" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="4.0000000000000000e+00" id="10113" junction="800020">
+        <link>
+            <predecessor elementType="road" elementId="10034" contactPoint="end" />
+            <successor elementType="road" elementId="10098" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2683657148736529e+01" y="-9.1237422744446221e+01" hdg="4.7122119812161980e+00" length="4.0000000000000000e+00">
+                <arc curvature="-1.0229823849540102e-05" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5266730164122988e+00" b="-5.7050299183302309e-05" c="-1.3436143411900691e-06" d="-3.4941962244029351e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="2" type="driving" level="false">
+                        <link>
+                            <predecessor id="2" />
+                            <successor id="2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="1" type="stop" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="1.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="white" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="-2" type="driving" level="false">
+                        <link>
+                            <predecessor id="-2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="white" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.3000000000000000e+01" id="10114" junction="800020">
+        <link>
+            <predecessor elementType="road" elementId="10034" contactPoint="end" />
+            <successor elementType="road" elementId="10076" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.7183657078246938e+01" y="-9.1236626248192167e+01" hdg="4.7122119812161980e+00" length="9.8218806360441100e+00">
+                <line />
+            </geometry>
+            <geometry s="9.8218806360441100e+00" x="-6.7185395542943468e+01" y="-1.0105850673038287e+02" hdg="4.7122119812161980e+00" length="2.3310064175087906e+00">
+                <arc curvature="1.4285714285714285e-01" />
+            </geometry>
+            <geometry s="1.2152887053552901e+01" x="-6.6801260165317615e+01" y="-1.0334673867366688e+02" hdg="5.0452128980031681e+00" length="8.4711294644709945e-01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5266730164122988e+00" b="-8.4296592326521308e-05" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-2" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="4.0000000000000000e+00" id="10074" junction="800017">
+        <link>
+            <predecessor elementType="road" elementId="10098" contactPoint="end" />
+            <successor elementType="road" elementId="10073" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.2689243096800055e+01" y="-1.1123742192955584e+02" hdg="4.7120073847392066e+00" length="4.0000000000000000e+00">
+                <arc curvature="-1.0229823849540102e-05" />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5283794217022368e+00" b="-1.1498790830018860e-04" c="-1.5532661146542454e-06" d="-3.4941962244029351e-09" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <left>
+                    <lane id="2" type="driving" level="false">
+                        <link>
+                            <predecessor id="2" />
+                            <successor id="2" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                    <lane id="1" type="stop" level="false">
+                        <link>
+                            <predecessor id="1" />
+                            <successor id="1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="1.0000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </left>
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="yellow" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="1.1733976095835539e+01" id="10076" junction="800017">
+        <link>
+            <predecessor elementType="road" elementId="10114" contactPoint="end" />
+            <successor elementType="road" elementId="10073" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-6.6524497117371155e+01" y="-1.0414736502804804e+02" hdg="5.0452128980022461e+00" length="1.1733976095835539e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-6.5277688721125440e+00" b="-9.3367934307936657e-05" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="4.5000000000000000e+00" b="0.0000000000000000e+00" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="false" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <road name="" length="2.2000000000000000e+01" id="10087" junction="800025">
+        <link>
+            <predecessor elementType="road" elementId="40003" contactPoint="end" />
+            <successor elementType="road" elementId="10075" contactPoint="start" />
+        </link>
+        <planView>
+            <geometry s="0.0000000000000000e+00" x="-2.1230241009735764e+01" y="1.3184649405057891e+02" hdg="4.7147536359653301e+00" length="1.5962910860877095e+00">
+                <line />
+            </geometry>
+            <geometry s="1.5962910860877095e+00" x="-2.1226466334628466e+01" y="1.3025020742739656e+02" hdg="4.7147536359653301e+00" length="9.6629841443872415e+00">
+                <arc curvature="-1.6666666666666666e-01" />
+            </geometry>
+            <geometry s="1.1259275230474952e+01" x="-2.7450415766520109e+01" y="1.2424020103604450e+02" hdg="3.1042562785674566e+00" length="1.0740724769525047e+01">
+                <line />
+            </geometry>
+        </planView>
+        <elevationProfile>
+            <elevation s="0.0000000000000000e+00" a="-7.1773676854245885e+00" b="3.9650727615939182e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+        </elevationProfile>
+        <lateralProfile />
+        <lanes>
+            <laneSection s="0.0000000000000000e+00">
+                <center>
+                    <lane id="0" type="none" level="false">
+                        <link />
+                        <roadMark sOffset="0.0000000000000000e+00" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="9.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </center>
+                <right>
+                    <lane id="-1" type="driving" level="false">
+                        <link>
+                            <predecessor id="-1" />
+                            <successor id="-1" />
+                        </link>
+                        <width sOffset="0.0000000000000000e+00" a="3.6178135572034384e+00" b="-9.0654735895290064e-03" c="0.0000000000000000e+00" d="0.0000000000000000e+00" />
+                        <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                        <roadMark sOffset="1.5000000000000000e+01" type="none" weight="standard" color="standard" width="1.4999999999999999e-01" laneChange="both" />
+                    </lane>
+                </right>
+            </laneSection>
+        </lanes>
+        <objects />
+        <signals />
+    </road>
+    <junction name="" id="800000">
+        <connection id="0" incomingRoad="10006" connectingRoad="10047" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10006" connectingRoad="10072" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10090" connectingRoad="10092" contactPoint="start">
+            <laneLink from="1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10090" connectingRoad="10072" contactPoint="start">
+            <laneLink from="1" to="-1" />
+        </connection>
+        <connection id="4" incomingRoad="10090" connectingRoad="10091" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="5" incomingRoad="10090" connectingRoad="10033" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800001">
+        <connection id="0" incomingRoad="10038" connectingRoad="10004" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10038" connectingRoad="10091" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800002">
+        <connection id="0" incomingRoad="10039" connectingRoad="10092" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10039" connectingRoad="10100" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800003">
+        <connection id="0" incomingRoad="10002" connectingRoad="10018" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10002" connectingRoad="40001" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800004">
+        <connection id="0" incomingRoad="10017" connectingRoad="10048" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10017" connectingRoad="10066" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10054" connectingRoad="10031" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10054" connectingRoad="10048" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="4" incomingRoad="10060" connectingRoad="10065" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="5" incomingRoad="10060" connectingRoad="10066" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800005">
+        <connection id="0" incomingRoad="10103" connectingRoad="10005" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10103" connectingRoad="10033" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800006">
+        <connection id="0" incomingRoad="10012" connectingRoad="10020" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10012" connectingRoad="10080" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10021" connectingRoad="10020" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10021" connectingRoad="10080" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800007">
+        <connection id="0" incomingRoad="10085" connectingRoad="10077" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10085" connectingRoad="10037" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800008">
+        <connection id="0" incomingRoad="10007" connectingRoad="10031" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10007" connectingRoad="10065" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800009">
+        <connection id="0" incomingRoad="10009" connectingRoad="10007" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10009" connectingRoad="10010" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800010">
+        <connection id="0" incomingRoad="10009" connectingRoad="10088" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10009" connectingRoad="10106" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10009" connectingRoad="10078" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10027" connectingRoad="10106" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="4" incomingRoad="10027" connectingRoad="10110" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="5" incomingRoad="10106" connectingRoad="10088" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="6" incomingRoad="10106" connectingRoad="10009" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="7" incomingRoad="10032" connectingRoad="10106" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="8" incomingRoad="10032" connectingRoad="10110" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="9" incomingRoad="10088" connectingRoad="10106" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="10" incomingRoad="10088" connectingRoad="10078" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="11" incomingRoad="10078" connectingRoad="10088" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="12" incomingRoad="10078" connectingRoad="10009" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="13" incomingRoad="40008" connectingRoad="10075" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="14" incomingRoad="40008" connectingRoad="10078" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800011">
+        <connection id="0" incomingRoad="10106" connectingRoad="10027" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10106" connectingRoad="10032" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10110" connectingRoad="10027" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10110" connectingRoad="10032" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800012">
+        <connection id="0" incomingRoad="10040" connectingRoad="10050" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10040" connectingRoad="10026" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800013">
+        <connection id="0" incomingRoad="10104" connectingRoad="10051" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10104" connectingRoad="10025" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10030" connectingRoad="10025" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10030" connectingRoad="10062" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800014">
+        <connection id="0" incomingRoad="10029" connectingRoad="10061" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10029" connectingRoad="10064" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800015">
+        <connection id="0" incomingRoad="10011" connectingRoad="10022" contactPoint="start">
+            <laneLink from="2" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10011" connectingRoad="10023" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800016">
+        <connection id="0" incomingRoad="10084" connectingRoad="10024" contactPoint="start">
+            <laneLink from="2" to="2" />
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10084" connectingRoad="10086" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10096" connectingRoad="10024" contactPoint="end">
+            <laneLink from="2" to="2" />
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10096" connectingRoad="10089" contactPoint="end">
+            <laneLink from="-2" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800017">
+        <connection id="0" incomingRoad="10073" connectingRoad="10074" contactPoint="end">
+            <laneLink from="2" to="2" />
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10073" connectingRoad="10076" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800018">
+        <connection id="0" incomingRoad="10073" connectingRoad="10014" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10073" connectingRoad="10015" contactPoint="end">
+            <laneLink from="2" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800019">
+        <connection id="0" incomingRoad="10034" connectingRoad="10042" contactPoint="start">
+            <laneLink from="2" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10034" connectingRoad="10055" contactPoint="end">
+            <laneLink from="2" to="2" />
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+            <laneLink from="-2" to="-2" />
+        </connection>
+        <connection id="2" incomingRoad="10059" connectingRoad="10062" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10059" connectingRoad="10055" contactPoint="start">
+            <laneLink from="2" to="2" />
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+            <laneLink from="-2" to="-2" />
+        </connection>
+    </junction>
+    <junction name="" id="800020">
+        <connection id="0" incomingRoad="10034" connectingRoad="10113" contactPoint="start">
+            <laneLink from="2" to="2" />
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+            <laneLink from="-2" to="-2" />
+        </connection>
+        <connection id="1" incomingRoad="10034" connectingRoad="10114" contactPoint="start">
+            <laneLink from="-2" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800021">
+        <connection id="0" incomingRoad="10060" connectingRoad="10028" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10060" connectingRoad="10053" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800022">
+        <connection id="0" incomingRoad="10071" connectingRoad="10052" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10071" connectingRoad="10067" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10052" connectingRoad="10071" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10052" connectingRoad="10067" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800023">
+        <connection id="0" incomingRoad="10096" connectingRoad="10036" contactPoint="start">
+            <laneLink from="2" to="2" />
+            <laneLink from="1" to="1" />
+            <laneLink from="-1" to="-1" />
+            <laneLink from="-2" to="-2" />
+        </connection>
+        <connection id="1" incomingRoad="10096" connectingRoad="10095" contactPoint="end">
+            <laneLink from="2" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800024">
+        <connection id="0" incomingRoad="10097" connectingRoad="10082" contactPoint="end">
+            <laneLink from="1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10097" connectingRoad="10101" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10081" connectingRoad="10101" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10081" connectingRoad="40017" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="4" incomingRoad="40012" connectingRoad="40016" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="5" incomingRoad="40012" connectingRoad="10082" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800025">
+        <connection id="0" incomingRoad="40003" connectingRoad="10109" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="40003" connectingRoad="10087" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10075" connectingRoad="10079" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10075" connectingRoad="10087" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800026">
+        <connection id="0" incomingRoad="10107" connectingRoad="10108" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="10107" connectingRoad="10111" contactPoint="end">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="2" incomingRoad="10108" connectingRoad="10107" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="3" incomingRoad="10108" connectingRoad="10111" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+    <junction name="" id="800027">
+        <connection id="0" incomingRoad="40013" connectingRoad="40012" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+        <connection id="1" incomingRoad="40013" connectingRoad="40014" contactPoint="start">
+            <laneLink from="-1" to="-1" />
+        </connection>
+    </junction>
+</OpenDRIVE>

+ 7 - 0
src/common/common/license/adclicense.pri

@@ -0,0 +1,7 @@
+HEADERS += \
+    $$PWD/adclicenseserv.h \
+    $$PWD/adclicensewithwin.h
+
+SOURCES += \
+    $$PWD/adclicenseserv.cpp \
+    $$PWD/adclicensewithwin.cpp

+ 71 - 0
src/common/common/license/adclicenseserv.cpp

@@ -0,0 +1,71 @@
+#include "adclicenseserv.h"
+
+#include <QProcess>
+#include "modulecomm.h"
+#include <thread>
+#include <iostream>
+
+namespace iv {
+struct ivlicensekey
+{
+    bool linshikey;
+    bool yongjiukey;
+};
+}
+
+
+iv::ivlicensekey gkey;
+void * gpa;
+bool gbHaveRecvKey = false;
+
+
+
+ADCLicenseServ::ADCLicenseServ()
+{
+
+}
+
+void ListenKey(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
+{
+
+    std::cout<<"key len is "<<nSize<<std::endl;
+    if(nSize >= sizeof (iv::ivlicensekey))
+    {
+        memcpy(&gkey,strdata,sizeof(iv::ivlicensekey));
+        std::cout<<" key 1:"<<gkey.linshikey<<"key 2:"<<gkey.yongjiukey<<std::endl;
+        gbHaveRecvKey = true;
+    }
+
+}
+
+
+int ADCLicenseServ::CheckLincese()
+{
+    gpa = iv::modulecomm::RegisterRecv("keyfeedback",ListenKey);
+    std::this_thread::sleep_for(std::chrono::milliseconds(100));
+    QProcess * pProc = new QProcess();
+    pProc->start("adc_key_win_exe.exe");
+    QTime xTime;
+    xTime.start();
+    while(gbHaveRecvKey == false)
+    {
+        std::this_thread::sleep_for(std::chrono::milliseconds(1));
+        if(xTime.elapsed()>10000)
+        {
+            break;
+        }
+    }
+    if(gbHaveRecvKey)
+    {
+        if((gkey.yongjiukey == true)||(gkey.linshikey == true))
+        {
+            return  0;
+        }
+        else
+        {
+            return  -1;
+        }
+    }
+    return -2;
+
+}

+ 14 - 0
src/common/common/license/adclicenseserv.h

@@ -0,0 +1,14 @@
+#ifndef ADCLICENSESERV_H
+#define ADCLICENSESERV_H
+
+
+class ADCLicenseServ
+{
+public:
+    ADCLicenseServ();
+
+public:
+    static int CheckLincese();
+};
+
+#endif // ADCLICENSESERV_H

+ 22 - 0
src/common/common/license/adclicensewithwin.cpp

@@ -0,0 +1,22 @@
+
+#include <QMessageBox>
+#include "adclicenseserv.h"
+
+int ADCLicenseCheckWithWin()
+{
+    int nRtn = ADCLicenseServ::CheckLincese();
+    if(nRtn == -1)
+    {
+        QMessageBox::warning(NULL,"Warning","license 错误,请申请license",QMessageBox::YesAll);
+        return nRtn;
+    }
+    else
+    {
+        if(nRtn == -2)
+        {
+            QMessageBox::warning(NULL,"Warning","license服务启动失败",QMessageBox::YesAll);
+            return nRtn;
+        }
+    }
+    return nRtn;
+}

+ 5 - 0
src/common/common/license/adclicensewithwin.h

@@ -0,0 +1,5 @@
+#ifndef ADCLICENSEWITHWIN_H
+#define ADCLICENSEWITHWIN_H
+
+int ADCLicenseCheckWithWin();
+#endif // ADCLICENSEWITHWIN_H

+ 38 - 0
src/common/common/xodr/OpenDrive/Lane.cpp

@@ -420,6 +420,44 @@ bool LaneSection::FillLaneSectionSample(double s_check, LaneSectionSample& laneS
 	return true;
 	return true;
 }
 }
 
 
+//Examp i= 1 return lane id = 1 lane
+Lane * LaneSection::GetLeftLaneAt(unsigned int index)
+{
+    int nlaneid = index;
+    Lane * pRtn = NULL;
+
+    unsigned int i;
+    for(i=0;i<mLaneVector.size();i++)
+    {
+        if(mLaneVector.at(i).GetId() == nlaneid)
+        {
+            pRtn = &mLaneVector.at(i);
+            break;
+        }
+    }
+    return pRtn;
+
+}
+
+//Examp i= 1 return lane id = -1 lane
+Lane * LaneSection::GetRightLaneAt(unsigned int index)
+{
+    int nlaneid = index;
+    nlaneid = nlaneid *(-1);
+    Lane * pRtn = NULL;
+
+    unsigned int i;
+    for(i=0;i<mLaneVector.size();i++)
+    {
+        if(mLaneVector.at(i).GetId() == nlaneid)
+        {
+            pRtn = &mLaneVector.at(i);
+            break;
+        }
+    }
+    return pRtn;
+}
+
 /**
 /**
 * Destructor. Delete all the members of the vectors: mLeft, mCenter, mRight
 * Destructor. Delete all the members of the vectors: mLeft, mCenter, mRight
 */
 */

+ 3 - 0
src/common/common/xodr/OpenDrive/Lane.h

@@ -182,6 +182,9 @@ public:
 
 
     void SetSingleSide(string singleSide);
     void SetSingleSide(string singleSide);
     string GetSingleSide();
     string GetSingleSide();
+
+    Lane * GetLeftLaneAt(unsigned int index);
+    Lane * GetRightLaneAt(unsigned int index);
 };
 };
 
 
 
 

+ 49 - 2
src/common/common/xodr/OpenDrive/OpenDrive.cpp

@@ -162,7 +162,8 @@ OpenDrive::OpenDrive (const OpenDrive& openDrive)
 {
 {
     mRoadVector = openDrive.mRoadVector;
     mRoadVector = openDrive.mRoadVector;
     mJunctionVector = openDrive.mJunctionVector;
     mJunctionVector = openDrive.mJunctionVector;
-    Header * pHeader = openDrive.mHeader;
+    Header * pHeader = new Header();
+    if(openDrive.mHeader != NULL)*pHeader = *(openDrive.mHeader);
     if(pHeader != NULL)
     if(pHeader != NULL)
     {
     {
         unsigned short int revMajor,revMinor;
         unsigned short int revMajor,revMinor;
@@ -184,7 +185,8 @@ const OpenDrive& OpenDrive::operator=(const OpenDrive& rhs)
 {
 {
     mRoadVector = rhs.mRoadVector;
     mRoadVector = rhs.mRoadVector;
     mJunctionVector = rhs.mJunctionVector;
     mJunctionVector = rhs.mJunctionVector;
-    Header * pHeader = rhs.mHeader;
+    Header * pHeader = new Header();
+    if(rhs.mHeader != NULL)*pHeader = *(rhs.mHeader);
     if(pHeader != NULL)
     if(pHeader != NULL)
     {
     {
         unsigned short int revMajor,revMinor;
         unsigned short int revMajor,revMinor;
@@ -239,6 +241,51 @@ Header::Header(unsigned short int revMajor, unsigned short int revMinor, string
 
 
 }
 }
 
 
+Header::Header()
+{
+    mRevMajor=1;
+    mRevMinor=1;
+    mName="adcmap";
+    mVersion=1.1;
+}
+
+Header::Header(const Header& pHeader)
+{
+    mRevMajor = pHeader.mRevMajor;
+    mRevMinor=pHeader.mRevMajor;
+    mName=pHeader.mName;
+    mVersion=pHeader.mVersion;
+    mDate=pHeader.mDate;
+    mNorth=pHeader.mNorth;
+    mSouth=pHeader.mSouth;
+    mEast=pHeader.mEast;
+    mWest=pHeader.mWest;
+
+    mLat0=pHeader.mLat0;
+    mLon0=pHeader.mLon0;
+    mHdg0=pHeader.mHdg0;
+    mgeoReference = pHeader.mgeoReference;
+    muserData = pHeader.muserData;
+}
+const Header& Header::operator=(const Header& rhs)
+{
+    mRevMajor = rhs.mRevMajor;
+    mRevMinor=rhs.mRevMajor;
+    mName=rhs.mName;
+    mVersion=rhs.mVersion;
+    mDate=rhs.mDate;
+    mNorth=rhs.mNorth;
+    mSouth=rhs.mSouth;
+    mEast=rhs.mEast;
+    mWest=rhs.mWest;
+
+    mLat0=rhs.mLat0;
+    mLon0=rhs.mLon0;
+    mHdg0=rhs.mHdg0;
+    mgeoReference = rhs.mgeoReference;
+    muserData = rhs.muserData;
+}
+
 Header::Header(unsigned short int revMajor, unsigned short int revMinor, string name, float version, string date,
 Header::Header(unsigned short int revMajor, unsigned short int revMinor, string name, float version, string date,
                double north, double south, double east,double west,double lat0,double lon0,double hdg0)
                double north, double south, double east,double west,double lat0,double lon0,double hdg0)
 {
 {

+ 4 - 0
src/common/common/xodr/OpenDrive/OpenDrive.h

@@ -168,6 +168,10 @@ public:
     Header(unsigned short int revMajor, unsigned short int revMinor, string name, float version, string date,
     Header(unsigned short int revMajor, unsigned short int revMinor, string name, float version, string date,
         double north, double south, double east,double west,double lat0,double lon0, double hdg0);
         double north, double south, double east,double west,double lat0,double lon0, double hdg0);
 	
 	
+
+    Header();
+    Header(const Header& pHeader);
+    const Header& operator=(const Header& rhs);
 	/**
 	/**
 	 * Getter for all properties
 	 * Getter for all properties
 	 */
 	 */

+ 10 - 1
src/common/common/xodr/OpenDrive/OpenDriveXmlParser.cpp

@@ -547,6 +547,8 @@ bool OpenDriveXmlParser::ReadGeometry(GeometryBlock* geomBlock, TiXmlElement *no
     case 4:		//parampoly3,add by Yuchuli 2019.11.1
     case 4:		//parampoly3,add by Yuchuli 2019.11.1
         checker=TIXML_SUCCESS;
         checker=TIXML_SUCCESS;
         double ua,ub,uc,ud,va,vb,vc,vd;
         double ua,ub,uc,ud,va,vb,vc,vd;
+        bool bNormal = true;
+        std::string strpRange;
         checker+=subNode->QueryDoubleAttribute("aU",&ua);
         checker+=subNode->QueryDoubleAttribute("aU",&ua);
         checker+=subNode->QueryDoubleAttribute("bU",&ub);
         checker+=subNode->QueryDoubleAttribute("bU",&ub);
         checker+=subNode->QueryDoubleAttribute("cU",&uc);
         checker+=subNode->QueryDoubleAttribute("cU",&uc);
@@ -561,7 +563,14 @@ bool OpenDriveXmlParser::ReadGeometry(GeometryBlock* geomBlock, TiXmlElement *no
             return false;
             return false;
         }
         }
 
 
-        geomBlock->AddGeometryParamPoly3(s,x,y,hdg,length,ua,ub,uc,ud,va,vb,vc,vd);
+        if(subNode->QueryStringAttribute("pRange",&strpRange) == TIXML_SUCCESS)
+        {
+            if(strpRange == "arcLength")
+            {
+                bNormal = false;
+            }
+        }
+        geomBlock->AddGeometryParamPoly3(s,x,y,hdg,length,ua,ub,uc,ud,va,vb,vc,vd,bNormal);
         break;
         break;
 	}
 	}
 
 

+ 62 - 1
src/common/common/xodr/OpenDrive/OpenDriveXmlWriter.cpp

@@ -169,6 +169,21 @@ bool OpenDriveXmlWriter::WriteRoad(TiXmlElement *node, Road *road)
 	//Proceed to Signals
 	//Proceed to Signals
 	WriteSignals(nodeRoad, road);
 	WriteSignals(nodeRoad, road);
 
 
+
+    vector<string> * puserDataVector = road->GetUserData();
+    unsigned int luserDataCount = puserDataVector->size();
+    for(unsigned int i=0;i<luserDataCount;i++)
+    {
+        TiXmlElement * nodeuserData = new TiXmlElement("userData");
+        nodeuserData->Parse(puserDataVector->at(i).data(),0,TIXML_ENCODING_UTF8);
+        nodeRoad->LinkEndChild(nodeuserData);
+    }
+
+    if(road->GetRoadBorrowCount()>0)
+    {
+        WriteRoadBorrows(nodeRoad,road);
+    }
+
 	/*
 	/*
 	//Proceed to Surface
 	//Proceed to Surface
 	subNode=node->FirstChildElement("surface");
 	subNode=node->FirstChildElement("surface");
@@ -420,7 +435,19 @@ bool OpenDriveXmlWriter::WriteGeometry(TiXmlElement *node, RoadGeometry* roadGeo
 			break;
 			break;
 		}
 		}
 	case 3:
 	case 3:
-		{		
+        {
+            double ua,ub,uc,ud;
+            GeometryPoly3 * lp3 = static_cast<GeometryPoly3 *>(roadGeometry);
+            ua = lp3->GetA();
+            ub = lp3->GetB();
+            uc = lp3->GetC();
+            ud = lp3->GetD();
+            TiXmlElement *nodePoly3 = new TiXmlElement("poly3");
+            nodeGeometry->LinkEndChild(nodePoly3);
+            nodePoly3->SetDoubleAttribute("a",ua);
+            nodePoly3->SetDoubleAttribute("b",ub);
+            nodePoly3->SetDoubleAttribute("c",uc);
+            nodePoly3->SetDoubleAttribute("d",ud);
 			//poly3
 			//poly3
 			break;
 			break;
 		}
 		}
@@ -428,6 +455,7 @@ bool OpenDriveXmlWriter::WriteGeometry(TiXmlElement *node, RoadGeometry* roadGeo
     case 4:
     case 4:
         {   //paramPoly3 add by Yu Chuli. 2019.11.1
         {   //paramPoly3 add by Yu Chuli. 2019.11.1
             double ua,ub,uc,ud,va,vb,vc,vd;
             double ua,ub,uc,ud,va,vb,vc,vd;
+            bool bNormal;
             GeometryParamPoly3 *lpp3=static_cast<GeometryParamPoly3 *>(roadGeometry);
             GeometryParamPoly3 *lpp3=static_cast<GeometryParamPoly3 *>(roadGeometry);
 
 
             ua = lpp3->GetuA();
             ua = lpp3->GetuA();
@@ -438,6 +466,7 @@ bool OpenDriveXmlWriter::WriteGeometry(TiXmlElement *node, RoadGeometry* roadGeo
             vb = lpp3->GetvB();
             vb = lpp3->GetvB();
             vc = lpp3->GetvC();
             vc = lpp3->GetvC();
             vd = lpp3->GetvD();
             vd = lpp3->GetvD();
+            bNormal = lpp3->GetNormal();
 
 
             TiXmlElement *nodeParamPoly3 = new TiXmlElement("paramPoly3");
             TiXmlElement *nodeParamPoly3 = new TiXmlElement("paramPoly3");
             nodeGeometry->LinkEndChild(nodeParamPoly3);
             nodeGeometry->LinkEndChild(nodeParamPoly3);
@@ -473,6 +502,11 @@ bool OpenDriveXmlWriter::WriteGeometry(TiXmlElement *node, RoadGeometry* roadGeo
             std::stringstream svd;
             std::stringstream svd;
             svd << setprecision(16) << setiosflags (ios_base::scientific) << vd;
             svd << setprecision(16) << setiosflags (ios_base::scientific) << vd;
             nodeParamPoly3->SetAttribute("dV",svd.str());
             nodeParamPoly3->SetAttribute("dV",svd.str());
+
+            if(bNormal == false)
+            {
+                nodeParamPoly3->SetAttribute("pRange","arcLength");
+            }
             break;
             break;
 
 
         }
         }
@@ -1318,6 +1352,33 @@ bool OpenDriveXmlWriter::WriteObjectParkingSpace(TiXmlElement *node, Object_park
 }
 }
 //--------------
 //--------------
 
 
+bool OpenDriveXmlWriter::WriteRoadBorrow(TiXmlElement *node, RoadBorrow *pRoadBorrow)
+{
+    TiXmlElement* nodeRoadBorrow = new TiXmlElement("roadborrow");
+    node->LinkEndChild(nodeRoadBorrow);
+
+    nodeRoadBorrow->SetDoubleAttribute("sOffset",pRoadBorrow->GetS());
+    nodeRoadBorrow->SetDoubleAttribute("length",pRoadBorrow->GetLength());
+    nodeRoadBorrow->SetAttribute("mode",pRoadBorrow->GetMode());
+    return true;
+}
+//--------------
+bool OpenDriveXmlWriter::WriteRoadBorrows(TiXmlElement *node, Road *road)
+{
+    TiXmlElement* nodeRoadBorrows = new TiXmlElement("userData");
+    nodeRoadBorrows->SetAttribute("code","roadborrow");
+    node->LinkEndChild(nodeRoadBorrows);
+
+    unsigned int lRoadBorrowCount = road->GetRoadBorrowCount();
+    for(unsigned int i=0; i<lRoadBorrowCount; i++)
+    {
+        WriteRoadBorrow(nodeRoadBorrows, road->GetRoadBorrow(i));
+    }
+
+    return true;
+}
+//--------------
+
 bool OpenDriveXmlWriter::WriteSignals (TiXmlElement *node, Road* road)
 bool OpenDriveXmlWriter::WriteSignals (TiXmlElement *node, Road* road)
 {
 {
 	TiXmlElement* nodeSignals = new TiXmlElement("signals");
 	TiXmlElement* nodeSignals = new TiXmlElement("signals");

+ 2 - 0
src/common/common/xodr/OpenDrive/OpenDriveXmlWriter.h

@@ -67,6 +67,8 @@ public:
     bool WriteLaneBorder(TiXmlElement *node, LaneBorder* laneWidth);
     bool WriteLaneBorder(TiXmlElement *node, LaneBorder* laneWidth);
 	//--------------
 	//--------------
 
 
+    bool WriteRoadBorrows(TiXmlElement *node, Road* road);
+    bool WriteRoadBorrow(TiXmlElement *node,RoadBorrow * pRoadBorrow);
 	bool WriteObjects (TiXmlElement *node, Road* road);
 	bool WriteObjects (TiXmlElement *node, Road* road);
     bool WriteObject(TiXmlElement * node, Object * pObject);
     bool WriteObject(TiXmlElement * node, Object * pObject);
     bool WriteObjectParkingSpace(TiXmlElement * node,Object_parkingSpace * pObject_parkingSpace);
     bool WriteObjectParkingSpace(TiXmlElement * node,Object_parkingSpace * pObject_parkingSpace);

+ 16 - 1
src/common/common/xodr/OpenDrive/Road.cpp

@@ -62,6 +62,8 @@ Road::Road (const Road& road)
 	mObjectsVector=road.mObjectsVector;
 	mObjectsVector=road.mObjectsVector;
 	mSignalsVector=road.mSignalsVector;
 	mSignalsVector=road.mSignalsVector;
     mLaneOffsetVector=road.mLaneOffsetVector;
     mLaneOffsetVector=road.mLaneOffsetVector;
+    mRoadBorrowVector = road.mRoadBorrowVector;
+
 }
 }
 
 
 /**
 /**
@@ -104,6 +106,7 @@ const Road& Road::operator=(const Road& otherRoad)
 		mObjectsVector=otherRoad.mObjectsVector;
 		mObjectsVector=otherRoad.mObjectsVector;
 		mSignalsVector=otherRoad.mSignalsVector;
 		mSignalsVector=otherRoad.mSignalsVector;
         mLaneOffsetVector=otherRoad.mLaneOffsetVector;
         mLaneOffsetVector=otherRoad.mLaneOffsetVector;
+        mRoadBorrowVector = otherRoad.mRoadBorrowVector;
 	}
 	}
 	return *this;
 	return *this;
 }
 }
@@ -938,6 +941,7 @@ void Road::DeleteSignal(unsigned int index)
 
 
 void Road::DeleteRoadBorrow(unsigned int index)
 void Road::DeleteRoadBorrow(unsigned int index)
 {
 {
+    if(mRoadBorrowVector.size() == 0)return;
     mRoadBorrowVector.erase(mRoadBorrowVector.begin()+index);
     mRoadBorrowVector.erase(mRoadBorrowVector.begin()+index);
 }
 }
 
 
@@ -1134,6 +1138,17 @@ int  Road::CheckLaneSectionInterval(double s_check)
 //-----------
 //-----------
 int Road::CheckRoadBorrowInterval(double s_check)
 int Road::CheckRoadBorrowInterval(double s_check)
 {
 {
+    int res=-1;
+    //Go through all the lane section records
+    for (unsigned int i=0;i<mRoadBorrowVector.size();i++)
+    {
+        //check if the s_check belongs to the current record
+        if (mRoadBorrowVector.at(i).CheckInterval(s_check))
+            res=i;	//assign it to the result id
+        else
+            break;	//if not, break;
+    }
+    return res;		//return the result: 0 to MaxInt as the index to the record containing s_check or -1 if nothing found
 
 
 }
 }
 //-----------
 //-----------
@@ -1144,7 +1159,7 @@ int Road::CheckLaneOffsetInterval(double s_check)
     for (unsigned int i=0;i<mLaneOffsetVector.size();i++)
     for (unsigned int i=0;i<mLaneOffsetVector.size();i++)
     {
     {
         //check if the s_check belongs to the current record
         //check if the s_check belongs to the current record
-        if (mRoadBorrowVector.at(i).CheckInterval(s_check))
+        if (mLaneOffsetVector.at(i).CheckInterval(s_check))
             res=i;	//assign it to the result id
             res=i;	//assign it to the result id
         else
         else
             break;	//if not, break;
             break;	//if not, break;

+ 80 - 16
src/common/common/xodr/OpenDrive/RoadGeometry.cpp

@@ -168,7 +168,8 @@ double RoadGeometry::GetLength()
  */
  */
 bool RoadGeometry::CheckInterval (double s_check)
 bool RoadGeometry::CheckInterval (double s_check)
 {
 {
-	if ((s_check >= mS) && (s_check<=mS2))
+//    if ((s_check >= mS) && (s_check<=mS2))
+    if ((s_check >= mS) && (s_check<=(mS2+0.00001)))   //Solve End Problem.
 		return true;
 		return true;
 	else
 	else
 		return false;
 		return false;
@@ -718,7 +719,7 @@ void GeometryPoly3::GetCoords(double s_check, double &retX, double &retY, double
 {
 {
     if(mbHaveSample &&(mvectorgeosample.size() > 1))
     if(mbHaveSample &&(mvectorgeosample.size() > 1))
     {
     {
-        double fpos = s_check/0.1;
+        double fpos = (s_check - mS)/0.1;
         unsigned int ipos = fpos;
         unsigned int ipos = fpos;
         double temX,temY,temHDG;
         double temX,temY,temHDG;
         if(ipos<=0)
         if(ipos<=0)
@@ -788,9 +789,9 @@ void GeometryPoly3::GetCoords(double s_check, double &retX, double &retY, double
 /**
 /**
  * Constructor that initializes the base properties of the record
  * Constructor that initializes the base properties of the record
  */
  */
-GeometryParamPoly3::GeometryParamPoly3 (double s, double x, double y, double hdg, double length,double ua,double ub,double uc,double ud,double va, double vb, double vc,double vd  ):	RoadGeometry(s, x, y, hdg, length)
+GeometryParamPoly3::GeometryParamPoly3 (double s, double x, double y, double hdg, double length,double ua,double ub,double uc,double ud,double va, double vb, double vc,double vd,bool bNormal  ):	RoadGeometry(s, x, y, hdg, length)
 {
 {
-    SetGeomType(4); muA=ua; muB=ub; muC=uc; muD=ud;mvA=va; mvB=vb; mvC=vc; mvD=vd;
+    SetGeomType(4); muA=ua; muB=ub; muC=uc; muD=ud;mvA=va; mvB=vb; mvC=vc; mvD=vd;mbNormal = bNormal;
 }
 }
 
 
 /**
 /**
@@ -798,7 +799,7 @@ GeometryParamPoly3::GeometryParamPoly3 (double s, double x, double y, double hdg
  */
  */
 RoadGeometry* GeometryParamPoly3::Clone() const
 RoadGeometry* GeometryParamPoly3::Clone() const
 {
 {
-    GeometryParamPoly3* ret=new GeometryParamPoly3(mS,mX,mY, mHdg, mLength, muA, muB, muC, muD,mvA,mvB,mvC,mvD);
+    GeometryParamPoly3* ret=new GeometryParamPoly3(mS,mX,mY, mHdg, mLength, muA, muB, muC, muD,mvA,mvB,mvC,mvD,mbNormal);
     return ret;
     return ret;
 }
 }
 
 
@@ -832,6 +833,7 @@ double GeometryParamPoly3::GetvA(){return mvA;}
 double GeometryParamPoly3::GetvB(){return mvB;}
 double GeometryParamPoly3::GetvB(){return mvB;}
 double GeometryParamPoly3::GetvC(){return mvC;}
 double GeometryParamPoly3::GetvC(){return mvC;}
 double GeometryParamPoly3::GetvD(){return mvD;}
 double GeometryParamPoly3::GetvD(){return mvD;}
+bool GeometryParamPoly3::GetNormal(){return mbNormal;}
 
 
 void GeometryParamPoly3::GetCoords(double s_check, double &retX, double &retY, double &retHDG)
 void GeometryParamPoly3::GetCoords(double s_check, double &retX, double &retY, double &retHDG)
 {
 {
@@ -844,13 +846,13 @@ void GeometryParamPoly3::GetCoords(double s_check, double &retX, double &retY, d
     }
     }
     if(mbNormal)
     if(mbNormal)
     {
     {
-        pRange = s_check/mLength;
+        pRange = (s_check - mS)/mLength;
         if(pRange<0)pRange = 0.0;
         if(pRange<0)pRange = 0.0;
         if(pRange>1.0)pRange = 1.0;
         if(pRange>1.0)pRange = 1.0;
     }
     }
     else
     else
     {
     {
-        pRange = s_check;
+        pRange = (s_check -mS);
     }
     }
     double xtem,ytem;
     double xtem,ytem;
     xtem = muA + muB * pRange +  muC * pRange*pRange +  muD * pRange*pRange*pRange;
     xtem = muA + muB * pRange +  muC * pRange*pRange +  muD * pRange*pRange*pRange;
@@ -865,19 +867,81 @@ void GeometryParamPoly3::GetCoords(double s_check, double &retX, double &retY, d
     {
     {
         if(mbNormal)
         if(mbNormal)
         {
         {
-            pRange = (s_check-0.1)/mLength;
+            pRange = (s_check -mS)/mLength;
             if(pRange<0)pRange = 0.0;
             if(pRange<0)pRange = 0.0;
             if(pRange>1.0)pRange = 1.0;
             if(pRange>1.0)pRange = 1.0;
         }
         }
         else
         else
         {
         {
-            pRange = s_check - 0.1;
+            pRange = s_check-mS;
         }
         }
-        xtem = muA + muB * pRange + muC * pRange*pRange + muD * pRange*pRange*pRange;
-        ytem = mvA + mvB * pRange + mvC * pRange*pRange + mvD * pRange*pRange*pRange;
-        double x = xtem*cos(mHdg) - ytem * sin(mHdg) + mX;
-        double y = xtem*sin(mHdg) + ytem * cos(mHdg) + mY;
-        retHDG = CalcHdg(x,y,retX,retY);
+
+        double a,b;
+        a = muB + 2 * muC*pRange + 3*muD*pRange*pRange;
+        b = mvB + 2 * mvC*pRange + 3*mvD*pRange*pRange;
+
+
+        if(a == 0)
+        {
+            if(b>0)
+            {
+                retHDG = M_PI/2.0;
+            }
+            else
+            {
+                retHDG = M_PI*3.0/2.0;
+            }
+        }
+        else
+        {
+            double ratio = b/a;
+            double hdg = atan(ratio);
+            if(ratio > 0)
+            {
+                if(b>0)
+                {
+
+                }
+                else
+                {
+                    hdg = hdg + M_PI;
+                }
+            }
+            else
+            {
+                if(b>0)
+                {
+                    hdg = hdg + M_PI;
+                }
+                else
+                {
+                    hdg = hdg + 2.0*M_PI;
+                }
+            }
+            retHDG = hdg;
+        }
+
+        retHDG = retHDG + mHdg;
+        while(retHDG<0)retHDG = retHDG + 2.0*M_PI;
+        while(retHDG>=2.0*M_PI)retHDG = retHDG - 2.0*M_PI;
+
+
+
+//        if(mbNormal)
+//        {
+//            pRange = (s_check -mS-0.001)/mLength;
+//            if(pRange<0)pRange = 0.0;
+//            if(pRange>1.0)pRange = 1.0;
+//        }
+//        else
+//        {
+//            pRange = s_check-mS - 0.001;
+//        }
+//        xtem = muA + muB * pRange + muC * pRange*pRange + muD * pRange*pRange*pRange;
+//        ytem = mvA + mvB * pRange + mvC * pRange*pRange + mvD * pRange*pRange*pRange;
+//        double x = xtem*cos(mHdg) - ytem * sin(mHdg) + mX;
+//        double y = xtem*sin(mHdg) + ytem * cos(mHdg) + mY;
+//        retHDG = CalcHdg(x,y,retX,retY);
     }
     }
 }
 }
 
 
@@ -961,9 +1025,9 @@ void GeometryBlock::AddGeometryPoly3(double s, double x, double y, double hdg, d
 {	
 {	
 	mGeometryBlockElement.push_back(new GeometryPoly3(s, x, y, hdg, length, a, b, c, d));	
 	mGeometryBlockElement.push_back(new GeometryPoly3(s, x, y, hdg, length, a, b, c, d));	
 }
 }
-void GeometryBlock::AddGeometryParamPoly3(double s, double x, double y, double hdg, double length, double ua, double ub, double uc, double ud, double va, double vb, double vc, double vd)
+void GeometryBlock::AddGeometryParamPoly3(double s, double x, double y, double hdg, double length, double ua, double ub, double uc, double ud, double va, double vb, double vc, double vd,bool bNormal)
 {
 {
-    mGeometryBlockElement.push_back(new GeometryParamPoly3(s,x,y,hdg,length,ua,ub,uc,ud,va,vb,vc,vd));
+    mGeometryBlockElement.push_back(new GeometryParamPoly3(s,x,y,hdg,length,ua,ub,uc,ud,va,vb,vc,vd,bNormal));
 }
 }
 
 
 //-------------------------------------------------
 //-------------------------------------------------

+ 4 - 2
src/common/common/xodr/OpenDrive/RoadGeometry.h

@@ -356,7 +356,7 @@ public:
     /**
     /**
      * Constructor that initializes the base properties of the record
      * Constructor that initializes the base properties of the record
      */
      */
-    GeometryParamPoly3 (double s, double x, double y, double hdg, double length, double ua,double ub,double uc,double ud,double va, double vb, double vc,double vd );
+    GeometryParamPoly3 (double s, double x, double y, double hdg, double length, double ua,double ub,double uc,double ud,double va, double vb, double vc,double vd,bool bNormal = true );
 
 
     /**
     /**
      * Clones and returns the new geometry record
      * Clones and returns the new geometry record
@@ -379,6 +379,8 @@ public:
     double GetvC();
     double GetvC();
     double GetvD();
     double GetvD();
 
 
+    bool GetNormal();
+
     void GetCoords(double s_check, double &retX, double &retY, double &retHDG);
     void GetCoords(double s_check, double &retX, double &retY, double &retHDG);
 };
 };
 
 
@@ -423,7 +425,7 @@ public:
 	void AddGeometryArc(double s, double x, double y, double hdg, double length, double curvature);
 	void AddGeometryArc(double s, double x, double y, double hdg, double length, double curvature);
 	void AddGeometrySpiral(double s, double x, double y, double hdg, double length, double curvatureStart,double curvatureEnd);
 	void AddGeometrySpiral(double s, double x, double y, double hdg, double length, double curvatureStart,double curvatureEnd);
 	void AddGeometryPoly3(double s, double x, double y, double hdg, double length, double a,double b,double c,double d);
 	void AddGeometryPoly3(double s, double x, double y, double hdg, double length, double a,double b,double c,double d);
-    void AddGeometryParamPoly3(double s, double x, double y, double hdg, double length, double ua,double ub,double uc,double ud,double va,double vb,double vc,double vd);
+    void AddGeometryParamPoly3(double s, double x, double y, double hdg, double length, double ua,double ub,double uc,double ud,double va,double vb,double vc,double vd,bool bNormal = true);
 	
 	
 	//-------------------------------------------------
 	//-------------------------------------------------
 
 

+ 0 - 1164
src/common/common/xodr/xodrfunc.cpp

@@ -1,1164 +0,0 @@
-#include "xodrfunc.h"
-
-#include "limits"
-#include <iostream>
-
-#include <Eigen/Dense>
-#include <Eigen/Cholesky>
-#include <Eigen/LU>
-#include <Eigen/QR>
-#include <Eigen/SVD>
-
-#include <QDebug>
-#include <QPointF>
-
-xodrfunc::xodrfunc()
-{
-
-}
-
-
-inline double xodrfunc::calcpointdis(QPointF p1,QPointF p2)
-{
-    return sqrt(pow(p1.x()-p2.x(),2)+pow(p1.y()-p2.y(),2));
-}
-
-bool xodrfunc::pointinarc(GeometryArc * parc,QPointF poingarc,QPointF point1)
-{
-    double hdg = CalcHdg(poingarc,point1);
-    if(parc->GetCurvature() >0)hdg = hdg + M_PI/2.0;
-    else hdg = hdg - M_PI/2.0;
-    if(hdg >= 2.0*M_PI)hdg = hdg - 2.0*M_PI;
-    if(hdg < 0)hdg = hdg + 2.0*M_PI;
-
-    double hdgrange = parc->GetLength()/(1.0/parc->GetCurvature());
-
-    double hdgdiff = hdg - parc->GetHdg();
-
-    if(hdgrange >= 0 )
-    {
-        if(hdgdiff < 0)hdgdiff = hdgdiff + M_PI*2.0;
-    }
-    else
-    {
-        if(hdgdiff > 0)hdgdiff = hdgdiff - M_PI*2.0;
-    }
-
-    if(fabs(hdgdiff ) < fabs(hdgrange))return true;
-    return false;
-
-}
-
-/**
-  * @brief CalcHdg
-  * 计算点0到点1的航向
-  * @param p0        Point 0
-  * @param p1        Point 1
-**/
-double xodrfunc::CalcHdg(QPointF p0, QPointF p1)
-{
-    double x0,y0,x1,y1;
-    x0 = p0.x();
-    y0 = p0.y();
-    x1 = p1.x();
-    y1 = p1.y();
-    if(x0 == x1)
-    {
-        if(y0 < y1)
-        {
-            return M_PI/2.0;
-        }
-        else
-            return M_PI*3.0/2.0;
-    }
-
-    double ratio = (y1-y0)/(x1-x0);
-
-    double hdg = atan(ratio);
-
-    if(ratio > 0)
-    {
-        if(y1 > y0)
-        {
-
-        }
-        else
-        {
-            hdg = hdg + M_PI;
-        }
-    }
-    else
-    {
-        if(y1 > y0)
-        {
-            hdg = hdg + M_PI;
-        }
-        else
-        {
-            hdg = hdg + 2.0*M_PI;
-        }
-    }
-
-    return hdg;
-}
-
-/**
- * @brief GetParamPoly3Dis 获得点到贝塞尔曲线的距离。
- * @param parc
- * @param xnow
- * @param ynow
- * @param nearx
- * @param neary
- * @param nearhead
- * @return
- */
-double xodrfunc::GetParamPoly3Dis(GeometryParamPoly3 * parc,double xnow,double ynow,double & nearx,
-                        double & neary,double & nearhead,double & frels)
-{
-
-    double s = 0.1;
-    double fdismin = 100000.0;
-    frels = 0;
-
-    double xold,yold;
-    xold = parc->GetX();
-    yold = parc->GetY();
-
-    double fdis = calcpointdis(QPointF(parc->GetX(),parc->GetY()),QPointF(xnow,ynow));
-    if(fdis<fdismin)
-    {
-        fdismin = fdis;
-        nearhead = parc->GetHdg();
-        nearx = parc->GetX();
-        neary = parc->GetY();
-    }
-
-    while(s < parc->GetLength())
-    {
-
-        double x, y,xtem,ytem;
-        xtem = parc->GetuA() + parc->GetuB() * s + parc->GetuC() * s*s + parc->GetuD() * s*s*s;
-        ytem = parc->GetvA() + parc->GetvB() * s + parc->GetvC() * s*s + parc->GetvD() * s*s*s;
-        x = xtem*cos(parc->GetHdg()) - ytem * sin(parc->GetHdg()) + parc->GetX();
-        y = xtem*sin(parc->GetHdg()) + ytem * cos(parc->GetHdg()) + parc->GetY();
-
-        double hdg = CalcHdg(QPointF(xold,yold),QPointF(x,y));
-        double fdis = calcpointdis(QPointF(x,y),QPointF(xnow,ynow));
-        if(fdis<fdismin)
-        {
-            fdismin = fdis;
-            nearhead = hdg;
-            nearx = x;
-            neary = y;
-            frels = s;
-        }
-
-        xold = x;
-        yold = y;
-        s = s+ 0.1;
-    }
-
-    return fdismin;
-
-}
-
-
-/**
-  * @brief GetArcDis
-  * 计算点到圆弧的最短距离,首先用点和圆弧中心点的直线与圆的交点,计算点到交点的距离,如果交点在圆弧上,则最短距离是交点之一,否则计算点到圆弧两个端点的距离。
-  * @param parc        pointer to a arc geomery
-  * @param x           current x
-  * @param y           current y
-  * @param nearx       near x
-  * @param neary       near y
-  * @param nearhead    nearhead
-**/
-
-double xodrfunc::GetArcDis(GeometryArc * parc,double x,double y,double & nearx,
-                        double & neary,double & nearhead,double & frels)
-{
-    frels = 0.0;
-
-    if((parc->GetS()>370)&&(parc->GetS()<370.1))
-    {
-        int a = 1;
-    }
-
-    if(parc->GetCurvature() == 0.0)return 1000.0;
-
-    double R = fabs(1.0/parc->GetCurvature());
-
-
-
-    //calculate arc center
-    double x_center,y_center;
-    if(parc->GetCurvature() > 0)
-    {
-        x_center = parc->GetX() + R * cos(parc->GetHdg() + M_PI/2.0);
-        y_center = parc->GetY() + R * sin(parc->GetHdg()+ M_PI/2.0);
-    }
-    else
-    {
-        x_center = parc->GetX() + R * cos(parc->GetHdg() - M_PI/2.0);
-        y_center = parc->GetY() + R * sin(parc->GetHdg() - M_PI/2.0);
-    }
-
-    double hdgltoa = CalcHdg(QPointF(x,y),QPointF(x_center,y_center));
-
-
-    QPointF arcpoint;
-    arcpoint.setX(x_center);arcpoint.setY(y_center);
-
-    QPointF pointnow;
-    pointnow.setX(x);pointnow.setY(y);
-    QPointF point1,point2;
-    point1.setX(x_center + (R * cos(hdgltoa)));
-    point1.setY(y_center + (R * sin(hdgltoa)));
-    point2.setX(x_center + (R * cos(hdgltoa + M_PI)));
-    point2.setY(y_center + (R * sin(hdgltoa + M_PI)));
-
-    //calculat dis
-    bool bp1inarc,bp2inarc;
-    bp1inarc =pointinarc(parc,arcpoint,point1);
-    bp2inarc =pointinarc(parc,arcpoint,point2);
-    double fdis[4];
-    fdis[0] = calcpointdis(pointnow,point1);
-    fdis[1] = calcpointdis(pointnow,point2);
-    fdis[2] = calcpointdis(pointnow,QPointF(parc->GetX(),parc->GetY()));
-    QPointF pointend;
-    double hdgrange = parc->GetLength()*parc->GetCurvature();
-    double hdgend = parc->GetHdg() + hdgrange;
-    while(hdgend <0.0)hdgend = hdgend + 2.0 *M_PI;
-    while(hdgend >= 2.0*M_PI) hdgend = hdgend -2.0*M_PI;
-
-    if(parc->GetCurvature() >0)
-    {
-        pointend.setX(arcpoint.x() + R*cos(hdgend -M_PI/2.0 ));
-        pointend.setY(arcpoint.y() + R*sin(hdgend -M_PI/2.0) );
-    }
-    else
-    {
-        pointend.setX(arcpoint.x() + R*cos(hdgend +M_PI/2.0 ));
-        pointend.setY(arcpoint.y() + R*sin(hdgend +M_PI/2.0) );
-    }
-
-    fdis[3] = calcpointdis(pointnow,pointend);
-    int indexmin = -1;
-    double fdismin = 1000000.0;
-    if(bp1inarc)
-    {
-        indexmin = 0;fdismin = fdis[0];
-    }
-    if(bp2inarc)
-    {
-        if(indexmin == -1)
-        {
-            indexmin = 1;fdismin = fdis[1];
-        }
-        else
-        {
-            if(fdis[1]<fdismin)
-            {
-                indexmin = 1;fdismin = fdis[1];
-            }
-        }
-    }
-    if(indexmin == -1)
-    {
-        indexmin = 2;fdismin = fdis[2];
-    }
-    else
-    {
-        if(fdis[2]<fdismin)
-        {
-            indexmin = 2;fdismin = fdis[2];
-        }
-    }
-    if(fdis[3]<fdismin)
-    {
-        indexmin = 3;fdismin = fdis[3];
-    }
-
-    double hdgdiff;
-    switch (indexmin) {
-    case 0:
-        nearx = point1.x();
-        neary = point1.y();
-        if(parc->GetCurvature()<0)
-        {
-            nearhead = CalcHdg(arcpoint,point1) - M_PI/2.0;
-
-        }
-        else
-        {
-            nearhead = CalcHdg(arcpoint,point1) + M_PI/2.0;
-        }
-        while(nearhead>2.0*M_PI)nearhead = nearhead -2.0*M_PI;
-        while(nearhead<0)nearhead = nearhead + 2.0*M_PI;
-        hdgdiff = (nearhead-parc->GetHdg())*(parc->GetCurvature()/fabs(parc->GetCurvature()));
-        if(hdgdiff>=2.0*M_PI)hdgdiff = hdgdiff - 2.0*M_PI;
-        if(hdgdiff<0)hdgdiff = hdgdiff + 2.0*M_PI;
-        frels = hdgdiff * R;
-        break;
-    case 1:
-        nearx = point2.x();
-        neary = point2.y();
-        if(parc->GetCurvature()<0)
-        {
-            nearhead = CalcHdg(arcpoint,point2) - M_PI/2.0;
-        }
-        else
-        {
-            nearhead = CalcHdg(arcpoint,point2) + M_PI/2.0;
-        }
-        while(nearhead>2.0*M_PI)nearhead = nearhead -2.0*M_PI;
-        while(nearhead<0)nearhead = nearhead + 2.0*M_PI;
-        hdgdiff = (nearhead-parc->GetHdg())*(parc->GetCurvature()/fabs(parc->GetCurvature()));
-        if(hdgdiff>=2.0*M_PI)hdgdiff = hdgdiff - 2.0*M_PI;
-        if(hdgdiff<0)hdgdiff = hdgdiff + 2.0*M_PI;
-        frels = hdgdiff * R;
-        break;
-    case 2:
-        nearx = parc->GetX();
-        neary = parc->GetY();
-        nearhead = parc->GetHdg();
-        frels = 0;
-        break;
-    case 3:
-        nearx = pointend.x();
-        neary = pointend.y();
-        nearhead = hdgend;
-        frels = parc->GetLength();
-        break;
-    default:
-        std::cout<<"error in arcdis "<<std::endl;
-        break;
-    }
-
-
-    while(nearhead>2.0*M_PI)nearhead = nearhead -2.0*M_PI;
-    while(nearhead<0)nearhead = nearhead + 2.0*M_PI;
-    return fdismin;
-}
-
-
-double xodrfunc::GetPoly3Dis(GeometryPoly3 * ppoly,double xnow,double ynow,double & nearx,
-                        double & neary,double & nearhead,double & frels)
-{
-    double x,y,hdg;
-//    double s = 0.0;
-    double fdismin = 100000.0;
- //   double s0 = ppoly->GetS();
-
-    x = ppoly->GetX();
-    y = ppoly->GetY();
-    double A,B,C,D;
-    A = ppoly->GetA();
-    B = ppoly->GetB();
-    C = ppoly->GetC();
-    D = ppoly->GetD();
-    const double steplim = 0.3;
-    double du = steplim;
-    double u = 0;
-    double v = 0;
-    double oldx,oldy;
-    oldx = x;
-    oldy = y;
-    double xstart,ystart;
-    xstart = x;
-    ystart = y;
-
-    frels = 0;
-
-    double hdgstart = ppoly->GetHdg();
-    double flen = 0;
-    u = u+du;
-    while(flen < ppoly->GetLength())
-    {
-        double fdis = 0;
-        v = A + B*u + C*u*u + D*u*u*u;
-        x = xstart + u*cos(hdgstart) - v*sin(hdgstart);
-        y = ystart + u*sin(hdgstart) + v*cos(hdgstart);
-        fdis = sqrt(pow(x- oldx,2)+pow(y-oldy,2));
-
-        if(fdis>(steplim*2.0))du = du/2.0;
-        flen = flen + fdis;
-        u = u + du;
-        hdg = xodrfunc::CalcHdg(QPointF(oldx,oldy),QPointF(x,y));
-
-        double fdisnow = calcpointdis(QPointF(x,y),QPointF(xnow,ynow));
-        if(fdisnow<fdismin)
-        {
-            fdismin = fdisnow;
-            nearhead = hdg;
-            nearx = x;
-            neary = y;
-            frels = flen;
-        }
-
-        oldx = x;
-        oldy = y;
-    }
-
-    return fdismin;
-}
-
-double xodrfunc::GetSpiralDis(GeometrySpiral * pspiral,double xnow,double ynow,double & nearx,
-                        double & neary,double & nearhead,double & frels)
-{
-
-    double x,y,hdg;
-    double s = 0.0;
-    double fdismin = 100000.0;
-    double s0 = pspiral->GetS();
-
-    frels = 0;
-    while(s<pspiral->GetLength())
-    {
-        pspiral->GetCoords(s0+s,x,y,hdg);
-
-
-        double fdis = calcpointdis(QPointF(x,y),QPointF(xnow,ynow));
-        if(fdis<fdismin)
-        {
-            fdismin = fdis;
-            nearhead = hdg;
-            nearx = x;
-            neary = y;
-            frels = s;
-        }
-        s = s+0.1;
-    }
-
-    return fdismin;
-}
-
-/**
- * @brief GetLineDis 获得点到直线Geometry的距离。
- * @param pline
- * @param x
- * @param y
- * @param nearx
- * @param neary
- * @param nearhead
- * @return
- */
-double xodrfunc::GetLineDis(GeometryLine * pline,const double x,const double y,double & nearx,
-                         double & neary,double & nearhead,double & frels)
-{
-    double fRtn = 1000.0;
-
-    double a1,a2,a3,a4,b1,b2;
-    double ratio = pline->GetHdg();
-    while(ratio >= 2.0* M_PI)ratio = ratio-2.0*M_PI;
-    while(ratio<0)ratio = ratio+2.0*M_PI;
-
-    double dis1,dis2,dis3;
-    double x1,x2,x3,y1,y2,y3;
-    x1 = pline->GetX();y1=pline->GetY();
-    if((ratio == 0)||(ratio == M_PI))
-    {
-        a1 = 0;a4=0;
-        a2 = 1;b1= pline->GetY();
-        a3 = 1;b2= x;
-    }
-    else
-    {
-        if((ratio == 0.5*M_PI)||(ratio == 1.5*M_PI))
-        {
-            a2=0;a3=0;
-            a1=1,b1=pline->GetX();
-            a4 = 1;b2 = y;
-        }
-        else
-        {
-            a1 = tan(ratio) *(-1.0);
-            a2 = 1;
-            a3 = tan(ratio+M_PI/2.0)*(-1.0);
-            a4 = 1;
-            b1 = a1*pline->GetX() + a2 * pline->GetY();
-            b2 = a3*x+a4*y;
-        }
-    }
-
-    y2 = y1 + pline->GetLength() * sin(ratio);
-    x2 = x1 + pline->GetLength() * cos(ratio);
-
-    Eigen::Matrix2d A;
-    A<<a1,a2,
-            a3,a4;
-    Eigen::Vector2d B(b1,b2);
-
-    Eigen::Vector2d opoint  = A.lu().solve(B);
-
-    x3 = opoint(0);
-    y3 = opoint(1);
-
-    dis1 = sqrt(pow(x1-x,2)+pow(y1-y,2));
-    dis2 = sqrt(pow(x2-x,2)+pow(y2-y,2));
-    dis3 = sqrt(pow(x3-x,2)+pow(y3-y,2));
-
-
-    if((dis1>pline->GetLength())||(dis2>pline->GetLength()))  //Outoff line
-    {
- //       std::cout<<" out line"<<std::endl;
-        if(dis1<dis2)
-        {
-            fRtn = dis1;
-            nearx = x1;neary=y1;nearhead = pline->GetHdg();
-        }
-        else
-        {
-            fRtn = dis2;
-            nearx = x2;neary=y2;nearhead = pline->GetHdg();
-        }
-    }
-    else
-    {
-        fRtn = dis3;
-        nearx = x3;neary=y3;nearhead = pline->GetHdg();
-    }
-
-    frels = sqrt(pow(nearx - pline->GetX(),2)+pow(neary - pline->GetY(),2));
-
-//    qDebug("frels is %f",frels);
-
-    return fRtn;
-
-
-
-}
-
-
-namespace iv {
-struct nearoption
-{
-    Road * pRoad;
-    GeometryBlock * pgeob;
-    double fdis;
-    double nearx;
-    double neary;
-    double nearhead;
-    double fs;
-    int nlane;
-    double fgeodis;
-};
-}
-
-int xodrfunc::GetNearPoint(const double x, const double y, OpenDrive *pxodr, Road **pObjRoad, GeometryBlock **pgeo,
-                           double &fdis, double &nearx, double &neary, double &nearhead,
-                           const double nearthresh,double * pfs,int * pnlane,bool bnotuselane)
-{
-    double dismin = std::numeric_limits<double>::infinity();
-    fdis = dismin;
-    unsigned int i;
-    *pObjRoad = 0;
-    std::vector<iv::nearoption> xvectornearopt;
-    for(i=0;i<pxodr->GetRoadCount();i++)
-    {
-        unsigned int j;
-        Road * proad = pxodr->GetRoad(i);
-        double nx,ny,nh,frels;
-
-        for(j=0;j<proad->GetGeometryBlockCount();j++)
-        {
-            GeometryBlock * pgb = proad->GetGeometryBlock(j);
-            double dis;
-            RoadGeometry * pg;
-            int nlane = 1000;
-            pg = pgb->GetGeometryAt(0);
-
-            if((sqrt(pow(x-pg->GetX(),2)+pow(y- pg->GetY(),2))-pg->GetLength())>nearthresh)
-            {
-                continue;
-            }
-
-            switch (pg->GetGeomType()) {
-            case 0:   //line
-                dis = GetLineDis((GeometryLine *) pg,x,y,nx,ny,nh,frels);
-                break;
-            case 1:
-                dis = GetSpiralDis((GeometrySpiral *)pg,x,y,nx,ny,nh,frels);
-                break;
-            case 2:  //arc
-                dis = GetArcDis((GeometryArc *)pg,x,y,nx,ny,nh,frels);
-                break;
-
-            case 3:
-                dis = GetPoly3Dis((GeometryPoly3 *)pg,x,y,nx,ny,nh,frels);
-                break;
-            case 4:
-                dis = GetParamPoly3Dis((GeometryParamPoly3 *)pg,x,y,nx,ny,nh,frels);
-                break;
-            default:
-                dis = 100000.0;
-                break;
-            }
-
-            double fgeodis;
-
-            fgeodis = dis;
-            if((dis < 100)&&(bnotuselane == false))
-            {
-                double faccuratedis;
-                faccuratedis = GetAcurateDis(x,y,proad,frels+pg->GetS(),nx,ny,nh,&nlane);
-                if(faccuratedis < dis)dis = faccuratedis;
-
-            }
-
-            if(dis == 0)
-            {
-                iv::nearoption xopt;
-                xopt.fdis = dis;
-                xopt.fgeodis = fgeodis;
-                xopt.fs = frels +pg->GetS();
-                xopt.nearhead = nh;
-                xopt.nearx = nx;
-                xopt.neary = ny;
-                xopt.nlane = nlane;
-                xopt.pgeob = pgb;
-                xopt.pRoad = proad;
-                xvectornearopt.push_back(xopt);
-            }
-
-            if(dis < dismin)
-            {
-                dismin = dis;
-                nearx = nx;
-                neary = ny;
-                nearhead = nh;
-                fdis = dis;
-                *pObjRoad = proad;
-                *pgeo = pgb;
-                if(pfs != 0)*pfs = frels +pg->GetS();
-                if(pnlane != 0)*pnlane = nlane;
-            }
-        }
-    }
-
-    if(xvectornearopt.size() > 1)
-    {
-        double fgeodismin = 1000;
-        int nindex = 0;
-        for(i=0;i<xvectornearopt.size();i++)
-        {
-            if(xvectornearopt.at(i).fgeodis < fgeodismin)
-            {
-                fgeodismin = xvectornearopt.at(i).fgeodis;
-                nindex = i;
-            }
-        }
-        dismin = xvectornearopt.at(nindex).fdis;
-        nearx = xvectornearopt.at(nindex).nearx;
-        neary = xvectornearopt.at(nindex).neary;
-        nearhead = xvectornearopt.at(nindex).nearhead;
-        fdis = dismin;
-        *pObjRoad = xvectornearopt.at(nindex).pRoad;
-        *pgeo = xvectornearopt.at(nindex).pgeob;
-        if(pfs != 0)*pfs = xvectornearopt.at(nindex).fs;
-        if(pnlane != 0)*pnlane = xvectornearopt.at(nindex).nlane;
-
-    }
-
-
-    if(fdis > nearthresh)return -1;
-    return 0;
-}
-
-
-std::vector<iv::LanePoint> xodrfunc::GetAllLanePoint(Road *pRoad,  const double s,const double x, const double y,const double fhdg)
-{
-    int i;
-    int nLSCount = pRoad->GetLaneSectionCount();
-    double s_section = 0;
-
-
-    std::vector<iv::LanePoint> xvectorlanepoint;
-    for(i=0;i<nLSCount;i++)
-    {
-//        if((pRoad->GetRoadId() == "30012")&&(s>35))
-//        {
-//            int a= 1;
-//        }
-        LaneSection * pLS = pRoad->GetLaneSection(i);
-        if(i<(nLSCount -1))
-        {
-            if(pRoad->GetLaneSection(i+1)->GetS()<s)
-            {
-                continue;
-            }
-        }
-        s_section = pLS->GetS();
-        int nlanecount = pLS->GetLaneCount();
-        int j;
-        for(j=0;j<nlanecount;j++)
-        {
-            Lane * pLane = pLS->GetLane(j);
-
-            int nlanemarktype = -1; //default no lanetype
-            int nlanetype = 2; //driving
-            int nlanecolor = 0;
-            int k;
-            double s_lane = s-s_section;
-            for(k=0;k<pLane->GetLaneRoadMarkCount();k++)
-            {
-                 LaneRoadMark * plrm = pLane->GetLaneRoadMark(k);
-                 if(k<(pLane->GetLaneRoadMarkCount()-1))
-                 {
-                     if(pLane->GetLaneRoadMark(k+1)->GetS()<s_lane)
-                     {
-                         continue;
-                     }
-                 }
-                 else
-                 {
-                     if(s_lane<plrm->GetS())
-                     {
-                         continue;
-                     }
-                 }
-                 if(plrm->GetType() == "solid")
-                 {
-                     nlanemarktype = 0;
-                 }
-                 if(plrm->GetType() == "broken")
-                 {
-                     nlanemarktype = 1;
-                 }
-                 if(plrm->GetType() == "solid solid")
-                 {
-                     nlanemarktype = 2;
-                 }
-                 if(plrm->GetType() == "solid broken")
-                 {
-                     nlanemarktype = 3;
-                 }
-                 if(plrm->GetType() == "broken solid")
-                 {
-                     nlanemarktype = 4;
-                 }
-                 if(plrm->GetType() == "broken broken")
-                 {
-                     nlanemarktype = 5;
-                 }
-
-                 if(plrm->GetColor() == "standard")nlanecolor = 0;
-                 if(plrm->GetColor() == "blue")nlanecolor = 1;
-                 if(plrm->GetColor() == "green")nlanecolor = 2;
-                 if(plrm->GetColor() == "red")nlanecolor = 3;
-                 if(plrm->GetColor() == "white")nlanecolor = 4;
-                 if(plrm->GetColor() == "yellow")nlanecolor = 5;
-                 if(plrm->GetColor() == "orange")nlanecolor = 6;
-                 break;
-            }
-
-            if(pLane->GetType() == "shoulder")
-            {
-                nlanetype = 0;
-            }
-            if(pLane->GetType() == "border")
-            {
-                nlanetype = 1;
-            }
-            if(pLane->GetType() == "driving")
-            {
-                nlanetype = 2;
-            }
-            if(pLane->GetType() == "none")
-            {
-                nlanetype = 4;
-            }
-            if(pLane->GetType() == "biking")
-            {
-                nlanetype = 8;
-            }
-            if(pLane->GetType() == "sidewalk")
-            {
-                nlanetype = 9;
-            }
-
-
-            if(pLane->GetId() != 0)
-            {
-
-//                        if((pRoad->GetRoadId() == "10012")&&(pLane->GetId()==1))
-//                        {
-//                            int a= 1;
-//                        }
-
-//                int k;
-//                double s_lane = 0;
-                for(k=0;k<pLane->GetLaneWidthCount();k++)
-                {
-                    if(k<(pLane->GetLaneWidthCount()-1))
-                    {
-                        if((pLane->GetLaneWidth(k+1)->GetS()+s_section)<s)
-                        {
-                            continue;
-                        }
-                    }
-                    s_lane = pLane->GetLaneWidth(k)->GetS();
-                    break;
-                }
-                LaneWidth * pLW  = pLane->GetLaneWidth(k);
-                if(pLW == 0)
-                {
-                    std::cout<<"not find LaneWidth"<<std::endl;
-                    break;
-                }
-
-
-
-                iv::LanePoint lp;
-                lp.mnlanetype = nlanetype;
-                lp.mnlanemarktype = nlanemarktype;
-                lp.mnlanecolor = nlanecolor;
-                lp.mnlane = pLane->GetId();
-                lp.mnLaneSection = i;
-                double fds = s - s_lane - s_section;
-                lp.mflanewidth = pLW->GetA() + pLW->GetB() * fds
-                        +pLW->GetC() * pow(fds,2) + pLW->GetD() * pow(fds,3);
-                lp.mflanetocenter = 0;
-                lp.mnlanetype = nlanetype;
-                lp.mfhdg = fhdg;
-                lp.mS = s;
-                lp.mfGeoX = x;
-                lp.mfGeoY = y;
-                xvectorlanepoint.push_back(lp);
-
-            }
-            else
-            {
-                iv::LanePoint lp;
-                lp.mnlanetype = nlanetype;
-                lp.mnlanemarktype = nlanemarktype;
-                lp.mnlanecolor = nlanecolor;
-                lp.mnlane = 0;
-                lp.mnLaneSection = i;
-                lp.mflanewidth = 0;
-                lp.mflanetocenter = 0;
-                lp.mfhdg = fhdg;
-                lp.mS = s;
-                lp.mfGeoX = x;
-                lp.mfGeoY = y;
-                xvectorlanepoint.push_back(lp);
-            }
-        }
-
-        for(j=0;j<xvectorlanepoint.size();j++)
-        {
-            int k;
-            for(k=0;k<xvectorlanepoint.size();k++)
-            {
-                if(abs(xvectorlanepoint[k].mnlane)>abs((xvectorlanepoint[j].mnlane)))
-                {
-                    continue;
-                }
-                if(xvectorlanepoint[k].mnlane * xvectorlanepoint[j].mnlane <= 0)
-                {
-                    continue;
-                }
-                xvectorlanepoint[j].mflanetocenter = xvectorlanepoint[j].mflanetocenter + xvectorlanepoint[k].mflanewidth;
-            }
-        }
-
-        for(j=0;j<xvectorlanepoint.size();j++)
-        {
-            if(xvectorlanepoint[j].mnlane < 0)
-            {
-                xvectorlanepoint[j].mfX = x + xvectorlanepoint[j].mflanetocenter * cos(fhdg-M_PI/2.0);
-                xvectorlanepoint[j].mfY = y + xvectorlanepoint[j].mflanetocenter * sin(fhdg-M_PI/2.0);
-            }
-            else
-            {
-                xvectorlanepoint[j].mfX = x + xvectorlanepoint[j].mflanetocenter * cos(fhdg+M_PI/2.0);
-                xvectorlanepoint[j].mfY = y + xvectorlanepoint[j].mflanetocenter * sin(fhdg+M_PI/2.0);
-            }
-        }
-
-        break;
-
-    }
-
-    std::vector<iv::LanePoint> xvectorlanepointrtn;
-    bool bIsSort = true;
-    for(i=0;i<(xvectorlanepoint.size()-1);i++)
-    {
-        if(xvectorlanepoint[i].mnlane < xvectorlanepoint[i+1].mnlane)
-        {
-            bIsSort = false;
-            break;
-        }
-    }
-    if(bIsSort == false)
-    {
-        while(xvectorlanepoint.size() > 0)
-        {
-            int nlanemin;
-            nlanemin = 0;
-            int nlanenum = xvectorlanepoint[0].mnlane;
-            for(i=1;i<xvectorlanepoint.size();i++)
-            {
-                if(xvectorlanepoint[i].mnlane >= nlanenum)
-                {
-                    nlanenum = xvectorlanepoint[i].mnlane;
-                    nlanemin = i;
-                }
-            }
-            xvectorlanepointrtn.push_back(xvectorlanepoint[nlanemin]);
-            xvectorlanepoint.erase(xvectorlanepoint.begin() + nlanemin);
-        }
-    }
-    else
-    {
-        xvectorlanepointrtn = xvectorlanepoint;
-    }
-    return xvectorlanepointrtn;
-
-}
-
-double xodrfunc::GetAcurateDis(const double x, const double y, Road *pRoad,  const double s, const double nearx, const double neary, const double nearhead,int * pnlane)
-{
-    double fdismin = 1000;
-    if(pRoad->GetLaneSectionCount() < 1)return 1000;
-
-    std::vector<iv::LanePoint> xvectorlanepoint = GetAllLanePoint(pRoad,s,nearx,neary,nearhead);
-
-    double fdistoref = sqrt(pow(x-nearx,2)+pow(y-neary,2));
-
-    int i;
-    std::vector<double> xvectordis;
-    int nsize = xvectorlanepoint.size();
-    for(i=0;i<nsize;i++)
-    {
-        double fdis = sqrt(pow(x-xvectorlanepoint[i].mfX,2)+pow(y-xvectorlanepoint[i].mfY,2));
-        xvectordis.push_back(fdis);
-        if(fdismin>fdis)fdismin = fdis;
-
-    }
-    int nlane = -1000;
-    for(i=0;i<nsize;i++)
-    {
-        if((xvectordis[i]<=xvectorlanepoint[i].mflanewidth)&&(fdistoref <= xvectorlanepoint[i].mflanetocenter))
-        {
-            nlane = xvectorlanepoint[i].mnlane;
-            fdismin = 0; //On Lane, is very near.
-            break;
-        }
-    }
-
-    if(pnlane != 0)*pnlane = nlane;
-
-    return fdismin;
-
-
-}
-
-
-
-int xodrfunc::GetLineXY(GeometryLine *pline, double soff, double &x, double &y, double &hdg)
-{
-    if(soff<0)return -1;
-
-    hdg = pline->GetHdg();
-    x = pline->GetX() + soff*cos(hdg);
-    y = pline->GetY() + soff*sin(hdg);
-    return 0;
-}
-
-Road * xodrfunc::GetRoadByID(OpenDrive * pxodr,std::string strroadid)
-{
-    Road * pRoad = 0;
-    int nroadcount = pxodr->GetRoadCount();
-    int i;
-    for(i=0;i<nroadcount;i++)
-    {
-        if(pxodr->GetRoad(i)->GetRoadId() == strroadid)
-        {
-            pRoad = pxodr->GetRoad(i);
-            break;
-        }
-    }
-    return pRoad;
-}
-
-int xodrfunc::GetSpiralXY(GeometrySpiral *pspira, double soff, double &x, double &y, double &hdg)
-{
-    pspira->GetCoords(pspira->GetS() + soff,x,y,hdg);
-    return 0;
-}
-
-int xodrfunc::GetArcXY(GeometryArc *parc, double soff, double &x, double &y, double &hdg)
-{
-    if(parc->GetCurvature() == 0)return -1;
-    double R = fabs(1.0/parc->GetCurvature());
-
-    //calculate arc center
-    double x_center = parc->GetX() + (1.0/parc->GetCurvature()) * cos(parc->GetHdg() + M_PI/2.0);
-    double y_center = parc->GetY() + (1.0/parc->GetCurvature()) * sin(parc->GetHdg()+ M_PI/2.0);
-
-    double arcdiff = soff/R;
-
-    if(parc->GetCurvature() > 0)
-    {
-        x = x_center + R * cos(parc->GetHdg() + arcdiff - M_PI/2.0);
-        y = y_center + R * sin(parc->GetHdg() + arcdiff - M_PI/2.0);
-        hdg = parc->GetHdg() + arcdiff;
-    }
-    else
-    {
-        x = x_center + R * cos(parc->GetHdg() -arcdiff + M_PI/2.0);
-        y = y_center + R * sin(parc->GetHdg() -arcdiff + M_PI/2.0);
-        hdg = parc->GetHdg() - arcdiff;
-    }
-
-
-
-    return 0;
-}
-
-int xodrfunc::GetParamPoly3XY(GeometryParamPoly3 *pparam3d, double soff, double &x, double &y, double &hdg)
-{
-    double xtem,ytem;
-    double ua,ub,uc,ud,va,vb,vc,vd;
-    ua = pparam3d->GetuA();ub= pparam3d->GetuB();uc= pparam3d->GetuC();ud = pparam3d->GetuD();
-    va = pparam3d->GetvA();vb= pparam3d->GetvB();vc= pparam3d->GetvC();vd = pparam3d->GetvD();
-//        xtem = parc->GetuA() + parc->GetuB() * s * len + parc->GetuC() * s*s *pow(len,2) + parc->GetuD() * s*s*s *pow(len,3);
-//        ytem = parc->GetvA() + parc->GetvB() * s* len + parc->GetvC() * s*s *pow(len,2) + parc->GetvD() * s*s*s *pow(len,3);
-    xtem = ua + ub * soff  + uc * soff * soff  + ud * soff *soff*soff ;
-    ytem = va + vb * soff + vc * soff*soff  + vd * soff*soff*soff ;
-    x = xtem*cos(pparam3d->GetHdg()) - ytem * sin(pparam3d->GetHdg()) + pparam3d->GetX();
-    y = xtem*sin(pparam3d->GetHdg()) + ytem * cos(pparam3d->GetHdg()) + pparam3d->GetY();
-    if(soff<0.3)hdg = pparam3d->GetHdg();
-    else
-    {
-        double soff1 = soff - 0.1;
-        double x1,y1;
-        xtem = ua + ub * soff1  + uc * soff1 * soff1  + ud * soff1 *soff1*soff1 ;
-        ytem = va + vb * soff1 + vc * soff1*soff1  + vd * soff1*soff1*soff1 ;
-        x1 = xtem*cos(pparam3d->GetHdg()) - ytem * sin(pparam3d->GetHdg()) + pparam3d->GetX();
-        y1 = xtem*sin(pparam3d->GetHdg()) + ytem * cos(pparam3d->GetHdg()) + pparam3d->GetY();
-        hdg = CalcHdg(QPointF(x1,y1),QPointF(x,y));
-    }
-    return 0;
-}
-
-int xodrfunc::GetRoadXYByS(Road *pRoad, const double s, double &x, double &y, double &hdg)
-{
-    if(s<0)return -1;
-    if(s>(pRoad->GetRoadLength()+0.1))return -2;
-    if(pRoad == 0)return -3;
-    if(pRoad->GetGeometryBlockCount()<1)return -4;
-    int i;
-    int nroadgeosize = pRoad->GetGeometryBlockCount();
-    RoadGeometry * pgeosel = pRoad->GetGeometryBlock(nroadgeosize -1)->GetGeometryAt(0);
-    for(i=0;i<(nroadgeosize-1);i++)
-    {
-        if(s<pRoad->GetGeometryBlock(i+1)->GetGeometryAt(0)->GetS())
-        {
-
-            pgeosel = pRoad->GetGeometryBlock(0)->GetGeometryAt(0);
-            break;
-        }
-    }
-
-
-    switch (pgeosel->GetGeomType()) {
-    case 0:
-        return GetLineXY((GeometryLine *)pgeosel,(s-pgeosel->GetS()),x,y,hdg);
-        break;
-    case 1:
-        return GetSpiralXY((GeometrySpiral *)pgeosel,(s-pgeosel->GetS()),x,y,hdg);
-        break;
-    case 2:
-        return GetArcXY((GeometryArc *)pgeosel,(s-pgeosel->GetS()),x,y,hdg);
-
-        break;
-    case 3:
-        break;
-    case 4:
-        return GetParamPoly3XY((GeometryParamPoly3 *)pgeosel,(s-pgeosel->GetS()),x,y,hdg);
-        break;
-    default:
-        break;
-    }
-    return -5;
-}
-
-int xodrfunc::GetRoadIndex(OpenDrive * pxodr, Road *pRoad)
-{
-    int nroadcount = pxodr->GetRoadCount();
-    int i;
-    for(i=0;i<nroadcount;i++)
-    {
-        if(pxodr->GetRoad(i) == pRoad)
-        {
-            return i;
-        }
-    }
-    return -1;
-}
-
-int xodrfunc::GetDrivingLane(Road *pRoad, const int nLS, const int nsuggestlane)
-{
-    int nrtn = nsuggestlane;
-    int nLSCount = pRoad->GetLaneSectionCount();
-    if(nLS<0)
-    {
-        qDebug("xodrfunc::GetDrivingLane nLS=%d is Error.",nLS);
-        return nrtn;
-
-    }
-
-    if(nLS>=(nLSCount))
-    {
-        qDebug("xodrfunc::GetDrivingLane nLS=%d is Error. LaneSection Count is %d.",nLS,nLSCount);
-        return nrtn;;
-    }
-
-    LaneSection * pLS = pRoad->GetLaneSection(nLS);
-    int nLaneCount = pLS->GetLaneCount();
-    int i;
-    for(i=0;i<nLaneCount;i++)
-    {
-        if(pLS->GetLane(i)->GetId() == nsuggestlane)
-        {
-            if(pLS->GetLane(i)->GetType() == "driving")
-            {
-                return nsuggestlane;
-                break;
-            }
-        }
-    }
-
-    nrtn = 1000;
-    int ndiff;
-    for(i=0;i<nLaneCount;i++)
-    {
-        Lane * pLane = pLS->GetLane(i);
-        if((pLane->GetId()*nsuggestlane>0)&&(pLane->GetType() == "driving"))
-        {
-            ndiff = pLane->GetId() - nrtn;
-            int xdiff = pLane->GetId() - nsuggestlane;
-            if(abs(xdiff)<abs(ndiff))
-            {
-                nrtn = pLane->GetId();
-            }
-        }
-    }
-    return nrtn;
-}
-
-Lane * xodrfunc::GetLaneByID(LaneSection *pLS, int nlane)
-{
-    int nlanecount = pLS->GetLaneCount();
-    int i;
-    for(i=0;i<nlanecount;i++)
-    {
-        if(pLS->GetLane(i)->GetId() == nlane)
-        {
-            return pLS->GetLane(i);
-        }
-    }
-    return 0;
-}

+ 0 - 71
src/common/common/xodr/xodrfunc.h

@@ -1,71 +0,0 @@
-#ifndef XODRFUNC_H
-#define XODRFUNC_H
-
-#include <OpenDrive/OpenDrive.h>
-
-#include <QPointF>
-
-
-namespace iv {
-struct LanePoint
-{
-    int mnlane;
-    int mnLaneSection;
-    double mS;
-    double mflanewidth;
-    double mflanetocenter;
-    double mfX;
-    double mfY;
-    double mfhdg;
-    int mnlanetype;  //0 driving 1 border 2 none 3 bike
-    int mnlanemarktype; // -1 no 0 solid 1 broken 2 solidsolid
-    int mnlanecolor;
-    double mfGeoX;
-    double mfGeoY;
-
-};
-
-}
-
-class xodrfunc
-{
-public:
-    xodrfunc();
-
-public:
-    static inline double calcpointdis(QPointF p1,QPointF p2);
-    static bool pointinarc(GeometryArc * parc,QPointF poingarc,QPointF point1);
-    static double CalcHdg(QPointF p0, QPointF p1);
-    static double GetParamPoly3Dis(GeometryParamPoly3 * parc,double xnow,double ynow,double & nearx,
-                            double & neary,double & nearhead,double & frels);
-    static double GetArcDis(GeometryArc * parc,double x,double y,double & nearx,
-                            double & neary,double & nearhead,double & frels);
-    static double GetPoly3Dis(GeometryPoly3 * ppoly,double xnow,double ynow,double & nearx,
-                            double & neary,double & nearhead,double & frels);
-    static double GetSpiralDis(GeometrySpiral * pspiral,double xnow,double ynow,double & nearx,
-                            double & neary,double & nearhead,double & frels);
-    static double GetLineDis(GeometryLine * pline,const double x,const double y,double & nearx,
-                             double & neary,double & nearhead,double & frels);
-    static int GetNearPoint(const double x,const double y,OpenDrive * pxodr,Road ** pObjRoad,GeometryBlock ** pgeo, double & fdis,double & nearx,
-                     double & neary,double & nearhead,const double nearthresh,double * pfs=0,int * pnlane= 0,bool bnotuselane = false);
-
-    static double GetAcurateDis(const double x,const double y,Road * pRoad,const  double  s,const double nearx,
-                                const double neary,const double nearhead,int * pnlane= 0);
-
-    static int GetDrivingLane(Road * pRoad,const int nLS,const int nsuggestlane);
-    static Lane * GetLaneByID(LaneSection * pLS,int nlane);
-    static std::vector<iv::LanePoint> GetAllLanePoint(Road * pRoad,const double s,const double x, const double y,const double fhdg);
-
-public:
-    static Road * GetRoadByID(OpenDrive * pxodr,std::string strroadid);
-    static int GetRoadXYByS(Road * pRoad,const double s,double &x, double & y, double & hdg);
-
-    static int GetLineXY(GeometryLine * pline,double soff,double &x, double & y, double & hdg);
-    static int GetSpiralXY(GeometrySpiral * pspira,double soff,double &x, double & y, double & hdg);
-    static int GetArcXY(GeometryArc * parc,double soff,double &x, double & y, double & hdg);
-    static int GetParamPoly3XY(GeometryParamPoly3 * pparam3d,double soff,double &x, double & y, double & hdg);
-
-    static int GetRoadIndex(OpenDrive * pxodr, Road * pRoad);
-};
-
-#endif // XODRFUNC_H

+ 19 - 8
src/driver/driver_map_xodrload/xodrdijkstra.cpp → src/common/common/xodr/xodrfunc/xodrdijkstra.cpp

@@ -171,10 +171,10 @@ xodrdijkstra::xodrdijkstra(OpenDrive  * pxodr)
                 {
                 {
                     fseclen = px->GetRoadLength() - px->GetLaneSection(j)->GetS();
                     fseclen = px->GetRoadLength() - px->GetLaneSection(j)->GetS();
                 }
                 }
-//                if((px->GetRoadId() == "10019")||(px->GetRoadId() == "10020"))
-//                {
-//                    int axy = 1;
-//                }
+                if((px->GetRoadId() == "10098")||(px->GetRoadId() == "10113")||(px->GetRoadId() == "10074"))
+                {
+                    int axy = 1;
+                }
                 roadedge xroad(atoi(px->GetRoadId().data()),atoi(px->GetRoadJunction().data()),fseclen,2,j,px);
                 roadedge xroad(atoi(px->GetRoadId().data()),atoi(px->GetRoadJunction().data()),fseclen,2,j,px);
 
 
 //                roadedge xroad(atoi(px->GetRoadId().data()),atoi(px->GetRoadJunction().data()),px->GetRoadLength(),2,j,px);
 //                roadedge xroad(atoi(px->GetRoadId().data()),atoi(px->GetRoadJunction().data()),px->GetRoadLength(),2,j,px);
@@ -204,6 +204,7 @@ xodrdijkstra::xodrdijkstra(OpenDrive  * pxodr)
         mroadedge[i].mbvertex = true;
         mroadedge[i].mbvertex = true;
         mroadedge[i].mvertexstart = 2*i;
         mroadedge[i].mvertexstart = 2*i;
         mroadedge[i].mvertexend = 2*i + 1;
         mroadedge[i].mvertexend = 2*i + 1;
+//        std::cout<<"road id "<<mroadedge[i].mroadid<<" lenght "<<mroadedge[i].mfedgelen<<std::endl;
     }
     }
 
 
 
 
@@ -1066,7 +1067,8 @@ inline double xodrdijkstra::getedgedis(int vs, int vd)
     {
     {
         if((vs == mvectorvertexedge[vs].mvectorroadedge[i]->mvertexstart)&&(vd == mvectorvertexedge[vs].mvectorroadedge[i]->mvertexend))
         if((vs == mvectorvertexedge[vs].mvectorroadedge[i]->mvertexstart)&&(vd == mvectorvertexedge[vs].mvectorroadedge[i]->mvertexend))
         {
         {
-            dis = mroadedge[i].mlen;
+            dis = mvectorvertexedge[vs].mvectorroadedge[i]->mlen;
+  //          dis = mroadedge[i].mlen;
             return dis;
             return dis;
         }
         }
     }
     }
@@ -1113,9 +1115,11 @@ double xodrdijkstra::getpathlength(std::vector<int> xvectorpath)
     return flen;
     return flen;
 }
 }
 
 
-std::vector<int> xodrdijkstra::getpath(int srcroadid, int nsrclr, int dstroadid, int ndstlr,const double s_src ,const double s_obj )
+std::vector<int> xodrdijkstra::getpath(int srcroadid, int nsrclr, int dstroadid, int ndstlr,bool & bSuccess,
+                                       const double s_src ,const double s_obj )
 {
 {
 
 
+    bSuccess = false;
     std::vector<int> rtnpath;
     std::vector<int> rtnpath;
     int nvertexnum = mvertexnum;
     int nvertexnum = mvertexnum;
     int i;
     int i;
@@ -1248,7 +1252,14 @@ std::vector<int> xodrdijkstra::getpath(int srcroadid, int nsrclr, int dstroadid,
             rtnpath.push_back(nedge);
             rtnpath.push_back(nedge);
             nend = nstart;
             nend = nstart;
         }
         }
+        bSuccess = true;
     }
     }
+    else
+    {
+        bSuccess = false;
+    }
+
+    qDebug("innner path distance is %f ",getpathlength(rtnpath));
 
 
     std::vector<int> rtnpath2;
     std::vector<int> rtnpath2;
 
 
@@ -1259,8 +1270,8 @@ std::vector<int> xodrdijkstra::getpath(int srcroadid, int nsrclr, int dstroadid,
     {
     {
         givlog->debug("%d %d %d %d",i,mroadedge[rtnpath[rtnpath.size()-1-i]].mroadid,mroadedge[rtnpath[rtnpath.size()-1-i]].mnleftright,
         givlog->debug("%d %d %d %d",i,mroadedge[rtnpath[rtnpath.size()-1-i]].mroadid,mroadedge[rtnpath[rtnpath.size()-1-i]].mnleftright,
                 mroadedge[rtnpath[rtnpath.size()-1-i]].mnsectionid);
                 mroadedge[rtnpath[rtnpath.size()-1-i]].mnsectionid);
-//        qDebug("%d %d %d %d",i,mroadedge[rtnpath[rtnpath.size()-1-i]].mroadid,mroadedge[rtnpath[rtnpath.size()-1-i]].mnleftright,
-//                mroadedge[rtnpath[rtnpath.size()-1-i]].mnsectionid);
+//        qDebug("%d %d %d %f",i,mroadedge[rtnpath[rtnpath.size()-1-i]].mroadid,mroadedge[rtnpath[rtnpath.size()-1-i]].mnleftright,
+//                mroadedge[rtnpath[rtnpath.size()-1-i]].mlen);
         rtnpath2.push_back(rtnpath[rtnpath.size()-1-i]);
         rtnpath2.push_back(rtnpath[rtnpath.size()-1-i]);
     }
     }
 
 

+ 1 - 1
src/driver/driver_map_xodrload/xodrdijkstra.h → src/common/common/xodr/xodrfunc/xodrdijkstra.h

@@ -115,7 +115,7 @@ class xodrdijkstra
 public:
 public:
     xodrdijkstra(OpenDrive  * pxodr);
     xodrdijkstra(OpenDrive  * pxodr);
 
 
-    std::vector<int> getpath(int srcroadid,int nsrclr,int dstroadid,int ndstlr,const double s_src = 0,const double s_obj = 0);  //nsrclr 1 left 2 right ndstlr 1 left 2 right
+    std::vector<int> getpath(int srcroadid,int nsrclr,int dstroadid,int ndstlr,bool & bSuccess,const double s_src = 0,const double s_obj = 0);  //nsrclr 1 left 2 right ndstlr 1 left 2 right
 
 
     std::vector<pathsection> getgpspoint(int srcroadid,int nsrclr,int dstroadid,int ndstlr,std::vector<int> xvectorpath,int nSel);
     std::vector<pathsection> getgpspoint(int srcroadid,int nsrclr,int dstroadid,int ndstlr,std::vector<int> xvectorpath,int nSel);
 
 

+ 118 - 3
src/tool/map_lanetoxodr/xodrfunc.cpp → src/common/common/xodr/xodrfunc/xodrfunc.cpp

@@ -120,6 +120,8 @@ double xodrfunc::GetParamPoly3Dis(GeometryParamPoly3 * parc,double xnow,double y
     double fdismin = 100000.0;
     double fdismin = 100000.0;
     frels = 0;
     frels = 0;
 
 
+    bParamNormal = parc->GetNormal();
+
     double xold,yold;
     double xold,yold;
     xold = parc->GetX();
     xold = parc->GetX();
     yold = parc->GetY();
     yold = parc->GetY();
@@ -652,9 +654,12 @@ int xodrfunc::GetNearPointAtRoad(const double x, const double y, Road *pRoad, Ge
 
 
 }
 }
 
 
-int xodrfunc::GetNearPoint(const double x, const double y, OpenDrive *pxodr, Road **pObjRoad, GeometryBlock **pgeo,
-                           double &fdis, double &nearx, double &neary, double &nearhead,
-                           const double nearthresh,double * pfs,int * pnlane,bool bnotuselane)
+
+int xodrfunc::GetNearPointWithHide(const double x, const double y, OpenDrive *pxodr, Road **pObjRoad,
+                                   GeometryBlock **pgeo, double &fdis, double &nearx, double &neary,
+                                   double &nearhead, const double nearthresh,
+                                   std::vector<int> &xvectorhideroad, double *pfs,
+                                   int *pnlane, bool bnotuselane)
 {
 {
     double dismin = std::numeric_limits<double>::infinity();
     double dismin = std::numeric_limits<double>::infinity();
     fdis = dismin;
     fdis = dismin;
@@ -667,6 +672,22 @@ int xodrfunc::GetNearPoint(const double x, const double y, OpenDrive *pxodr, Roa
         Road * proad = pxodr->GetRoad(i);
         Road * proad = pxodr->GetRoad(i);
         double nx,ny,nh,frels;
         double nx,ny,nh,frels;
 
 
+        if(xvectorhideroad.size() > 0)
+        {
+            int nroadid = atoi(proad->GetRoadId().data());
+            unsigned int k;
+            bool bIsHiden = false;
+            for(k = 0;k<xvectorhideroad.size();k++)
+            {
+                if(xvectorhideroad[k] == nroadid)
+                {
+                    bIsHiden = true;
+                    break;
+                }
+            }
+            if(bIsHiden)continue;
+        }
+
         for(j=0;j<proad->GetGeometryBlockCount();j++)
         for(j=0;j<proad->GetGeometryBlockCount();j++)
         {
         {
             GeometryBlock * pgb = proad->GetGeometryBlock(j);
             GeometryBlock * pgb = proad->GetGeometryBlock(j);
@@ -773,6 +794,20 @@ int xodrfunc::GetNearPoint(const double x, const double y, OpenDrive *pxodr, Roa
 }
 }
 
 
 
 
+
+int xodrfunc::GetNearPoint(const double x, const double y, OpenDrive *pxodr, Road **pObjRoad, GeometryBlock **pgeo,
+                           double &fdis, double &nearx, double &neary, double &nearhead,
+                           const double nearthresh,double * pfs,int * pnlane,bool bnotuselane)
+{
+
+    std::vector<int> xvectorroadhide;
+    xvectorroadhide.clear();
+    return GetNearPointWithHide(x,y,pxodr,pObjRoad,pgeo,fdis,nearx,neary,nearhead,
+                                nearthresh,xvectorroadhide,pfs,pnlane,bnotuselane);
+
+}
+
+
 std::vector<iv::LanePoint> xodrfunc::GetAllLanePoint(Road *pRoad,  const double s,const double x, const double y,const double fhdg)
 std::vector<iv::LanePoint> xodrfunc::GetAllLanePoint(Road *pRoad,  const double s,const double x, const double y,const double fhdg)
 {
 {
     int i;
     int i;
@@ -1117,6 +1152,22 @@ Road * xodrfunc::GetRoadByID(OpenDrive * pxodr,std::string strroadid)
     return pRoad;
     return pRoad;
 }
 }
 
 
+Junction * xodrfunc::GetJunctionByID(OpenDrive * pxodr,std::string strjunctionid)
+{
+    Junction * pJunction = 0;
+    int njunctioncount = pxodr->GetJunctionCount();
+    int i;
+    for(i=0;i<njunctioncount;i++)
+    {
+        if(pxodr->GetJunction(i)->GetId() == strjunctionid)
+        {
+            pJunction = pxodr->GetJunction(i);
+            break;
+        }
+    }
+    return pJunction;
+}
+
 int xodrfunc::GetSpiralXY(GeometrySpiral *pspira, double soff, double &x, double &y, double &hdg)
 int xodrfunc::GetSpiralXY(GeometrySpiral *pspira, double soff, double &x, double &y, double &hdg)
 {
 {
     pspira->GetCoords(pspira->GetS() + soff,x,y,hdg);
     pspira->GetCoords(pspira->GetS() + soff,x,y,hdg);
@@ -1259,3 +1310,67 @@ int xodrfunc::GetRoadIndex(OpenDrive * pxodr, Road *pRoad)
     }
     }
     return -1;
     return -1;
 }
 }
+
+int xodrfunc::GetDrivingLane(Road *pRoad, const int nLS, const int nsuggestlane)
+{
+    int nrtn = nsuggestlane;
+    int nLSCount = pRoad->GetLaneSectionCount();
+    if(nLS<0)
+    {
+        qDebug("xodrfunc::GetDrivingLane nLS=%d is Error.",nLS);
+        return nrtn;
+
+    }
+
+    if(nLS>=(nLSCount))
+    {
+        qDebug("xodrfunc::GetDrivingLane nLS=%d is Error. LaneSection Count is %d.",nLS,nLSCount);
+        return nrtn;;
+    }
+
+    LaneSection * pLS = pRoad->GetLaneSection(nLS);
+    int nLaneCount = pLS->GetLaneCount();
+    int i;
+    for(i=0;i<nLaneCount;i++)
+    {
+        if(pLS->GetLane(i)->GetId() == nsuggestlane)
+        {
+            if(pLS->GetLane(i)->GetType() == "driving")
+            {
+                return nsuggestlane;
+                break;
+            }
+        }
+    }
+
+    nrtn = 1000;
+    int ndiff;
+    for(i=0;i<nLaneCount;i++)
+    {
+        Lane * pLane = pLS->GetLane(i);
+        if((pLane->GetId()*nsuggestlane>0)&&(pLane->GetType() == "driving"))
+        {
+            ndiff = pLane->GetId() - nrtn;
+            int xdiff = pLane->GetId() - nsuggestlane;
+            if(abs(xdiff)<abs(ndiff))
+            {
+                nrtn = pLane->GetId();
+            }
+        }
+    }
+    return nrtn;
+}
+
+Lane * xodrfunc::GetLaneByID(LaneSection *pLS, int nlane)
+{
+    int nlanecount = pLS->GetLaneCount();
+    int i;
+    for(i=0;i<nlanecount;i++)
+    {
+        if(pLS->GetLane(i)->GetId() == nlane)
+        {
+            return pLS->GetLane(i);
+        }
+    }
+    return 0;
+}

+ 9 - 0
src/tool/map_lanetoxodr/xodrfunc.h → src/common/common/xodr/xodrfunc/xodrfunc.h

@@ -49,6 +49,10 @@ public:
     static int GetNearPoint(const double x,const double y,OpenDrive * pxodr,Road ** pObjRoad,GeometryBlock ** pgeo, double & fdis,double & nearx,
     static int GetNearPoint(const double x,const double y,OpenDrive * pxodr,Road ** pObjRoad,GeometryBlock ** pgeo, double & fdis,double & nearx,
                      double & neary,double & nearhead,const double nearthresh,double * pfs=0,int * pnlane= 0,bool bnotuselane = false);
                      double & neary,double & nearhead,const double nearthresh,double * pfs=0,int * pnlane= 0,bool bnotuselane = false);
 
 
+    static int GetNearPointWithHide(const double x,const double y,OpenDrive * pxodr,Road ** pObjRoad,GeometryBlock ** pgeo, double & fdis,double & nearx,
+                     double & neary,double & nearhead,const double nearthresh,std::vector<int> & xvectorhideroad,
+                                    double * pfs=0,int * pnlane= 0,bool bnotuselane = false);
+
     static int GetNearPointAtRoad(const double x,const double y,Road *pRoad,GeometryBlock ** pgeo, double & fdis,double & nearx,
     static int GetNearPointAtRoad(const double x,const double y,Road *pRoad,GeometryBlock ** pgeo, double & fdis,double & nearx,
                      double & neary,double & nearhead,const double nearthresh,double * pfs=0,int * pnlane= 0,bool bnotuselane = false);
                      double & neary,double & nearhead,const double nearthresh,double * pfs=0,int * pnlane= 0,bool bnotuselane = false);
 
 
@@ -57,8 +61,10 @@ public:
 
 
     static std::vector<iv::LanePoint> GetAllLanePoint(Road * pRoad,const double s,const double x, const double y,const double fhdg);
     static std::vector<iv::LanePoint> GetAllLanePoint(Road * pRoad,const double s,const double x, const double y,const double fhdg);
 
 
+
 public:
 public:
     static Road * GetRoadByID(OpenDrive * pxodr,std::string strroadid);
     static Road * GetRoadByID(OpenDrive * pxodr,std::string strroadid);
+    static Junction * GetJunctionByID(OpenDrive * pxodr,std::string strjunctionid);
     static int GetRoadXYByS(Road * pRoad,const double s,double &x, double & y, double & hdg);
     static int GetRoadXYByS(Road * pRoad,const double s,double &x, double & y, double & hdg);
 
 
     static int GetLineXY(GeometryLine * pline,double soff,double &x, double & y, double & hdg);
     static int GetLineXY(GeometryLine * pline,double soff,double &x, double & y, double & hdg);
@@ -69,6 +75,9 @@ public:
     static int GetRoadIndex(OpenDrive * pxodr, Road * pRoad);
     static int GetRoadIndex(OpenDrive * pxodr, Road * pRoad);
 
 
     static int GetRoadHeightByS(Road * pRoad,const double s,double & fheight);
     static int GetRoadHeightByS(Road * pRoad,const double s,double & fheight);
+
+    static int GetDrivingLane(Road * pRoad,const int nLS,const int nsuggestlane);
+    static Lane * GetLaneByID(LaneSection * pLS,int nlane);
 };
 };
 
 
 #endif // XODRFUNC_H
 #endif // XODRFUNC_H

+ 7 - 0
src/common/common/xodr/xodrfunc/xodrfunc.pri

@@ -0,0 +1,7 @@
+HEADERS += \
+    $$PWD/xodrdijkstra.h \
+    $$PWD/xodrfunc.h
+
+SOURCES += \
+    $$PWD/xodrdijkstra.cpp \
+    $$PWD/xodrfunc.cpp

+ 5 - 3
src/controller/controller_hapo/main.cpp

@@ -82,7 +82,7 @@ void executeDecition(const iv::brain::decition decition)
     gcontroller->control_handBrake(decition.handbrake());
     gcontroller->control_handBrake(decition.handbrake());
     gcontroller->control_mode(decition.mode());
     gcontroller->control_mode(decition.mode());
     //   gcontroller->control_mode(1);
     //   gcontroller->control_mode(1);
-    //  gcontroller->control_near_light(1);
+    gcontroller->control_near_light(decition.dippedlight());
 
 
 
 
     gcontroller->control_air_enable(decition.air_enable());
     gcontroller->control_air_enable(decition.air_enable());
@@ -90,11 +90,13 @@ void executeDecition(const iv::brain::decition decition)
     gcontroller->control_air_temp(decition.air_temp());
     gcontroller->control_air_temp(decition.air_temp());
     gcontroller->control_air_mode(decition.air_mode());
     gcontroller->control_air_mode(decition.air_mode());
     gcontroller->control_wind_level(decition.wind_level());
     gcontroller->control_wind_level(decition.wind_level());
-    gcontroller->control_roof_light(0);
+    gcontroller->control_roof_light(decition.roof_light());
     gcontroller->control_home_light(decition.home_light());
     gcontroller->control_home_light(decition.home_light());
     gcontroller->control_air_worktime(decition.air_worktime());
     gcontroller->control_air_worktime(decition.air_worktime());
     gcontroller->control_air_offtime(decition.air_offtime());
     gcontroller->control_air_offtime(decition.air_offtime());
     gcontroller->control_turnsignals(decition.leftlamp(),decition.rightlamp());
     gcontroller->control_turnsignals(decition.leftlamp(),decition.rightlamp());
+    gcontroller->control_door(decition.door());
+
     /*if(decition.has_door())
     /*if(decition.has_door())
     {
     {
         if(decition.door())
         if(decition.door())
@@ -106,7 +108,7 @@ void executeDecition(const iv::brain::decition decition)
     }*/
     }*/
 
 
 
 
-
+qDebug("door is %d",decition.door());
 
 
 
 
 
 

+ 2 - 0
src/decition/common/common/car_status.h

@@ -42,6 +42,8 @@ namespace iv {
          float torque_st=0;
          float torque_st=0;
         bool mbRunPause = false;
         bool mbRunPause = false;
         bool mbBrainCtring = false;
         bool mbBrainCtring = false;
+        bool mbdoor=false,has_mbdoor=false;//false: door close    true:door open
+        bool mbjinguang=false,has_mbjinguang=false;//false: off    true:on
         bool status[6] = { true, false, false, false, true, false };	//bool arrive = false;	//  x4:是否到达站点(0:未到 1:到达)
         bool status[6] = { true, false, false, false, true, false };	//bool arrive = false;	//  x4:是否到达站点(0:未到 1:到达)
                                                                 //bool people = false;	//	x3:车上是否有人(0:无人 1:有人)
                                                                 //bool people = false;	//	x3:车上是否有人(0:无人 1:有人)
                                                                 //bool stop = false;	    //	x2:是否停车(0:否   1:是)
                                                                 //bool stop = false;	    //	x2:是否停车(0:否   1:是)

+ 52 - 17
src/decition/decition_brain_sf/decition/adc_adapter/hapo_adapter.cpp

@@ -76,7 +76,7 @@ iv::decition::Decition iv::decition::HapoAdapter::getAdapterDeciton(GPS_INS now_
 
 
         //斜坡刹车加大 lsn 0217
         //斜坡刹车加大 lsn 0217
         if (abs(now_gps_ins.ins_pitch_angle)>2.5 &&(controlBrake>0||dSpeed==0)){
         if (abs(now_gps_ins.ins_pitch_angle)>2.5 &&(controlBrake>0||dSpeed==0)){
-            controlBrake=max(2.0f,controlBrake);
+            controlBrake=max(0.5f,controlBrake);
         }
         }
         //斜坡刹车加大 end
         //斜坡刹车加大 end
 
 
@@ -143,8 +143,8 @@ iv::decition::Decition iv::decition::HapoAdapter::getAdapterDeciton(GPS_INS now_
 
 
         if(((now_gps_ins.ins_pitch_angle<-2.5 && ServiceCarStatus.daocheMode)||
         if(((now_gps_ins.ins_pitch_angle<-2.5 && ServiceCarStatus.daocheMode)||
             (now_gps_ins.ins_pitch_angle>2.5 && !ServiceCarStatus.daocheMode))
             (now_gps_ins.ins_pitch_angle>2.5 && !ServiceCarStatus.daocheMode))
-                && abs(realSpeed)<1.0){
-            controlSpeed=max((float)20.0,controlSpeed);
+                && (dSpeed-realSpeed)>3.0){
+            controlSpeed=max((float)30.0,controlSpeed);
             controlSpeed=min((float)40.0,controlSpeed);
             controlSpeed=min((float)40.0,controlSpeed);
         }
         }
         // 斜坡加大油门  end
         // 斜坡加大油门  end
@@ -161,10 +161,20 @@ iv::decition::Decition iv::decition::HapoAdapter::getAdapterDeciton(GPS_INS now_
     if(controlSpeed>0){
     if(controlSpeed>0){
         controlSpeed=max(controlSpeed,3.2f);
         controlSpeed=max(controlSpeed,3.2f);
     }
     }
+    static bool emergency_brake=false;
     //0227 10m nei xianzhi shache
     //0227 10m nei xianzhi shache
-    if(obsDistance<10 &&obsDistance>0){
+    if(obsDistance<8 &&obsDistance>0){
+        emergency_brake=true;
+    }
+    if(emergency_brake==true){
         controlSpeed=0;
         controlSpeed=0;
-        controlBrake=max(controlBrake,0.6f);//0.8   zj-0.6
+        if(realSpeed<6)
+            controlBrake=max(controlBrake,0.5f);//0.8   zj-0.6
+        else
+            controlBrake=max(controlBrake,0.6f);
+        if(obsDistance>12 || (obsDistance==-1)){
+            emergency_brake=false;
+        }
     }
     }
 
 
     if(DecideGps00::minDecelerate<0){
     if(DecideGps00::minDecelerate<0){
@@ -172,9 +182,6 @@ iv::decition::Decition iv::decition::HapoAdapter::getAdapterDeciton(GPS_INS now_
         controlSpeed=0;
         controlSpeed=0;
     }
     }
 
 
-    if(DecideGps00::minDecelerate==-0.4){
-        controlBrake =0.4;
-    }
 
 
     controlBrake=limitBrake(realSpeed,controlBrake,dSpeed,obsDistance,ttc);
     controlBrake=limitBrake(realSpeed,controlBrake,dSpeed,obsDistance,ttc);
     controlSpeed = limitSpeed(realSpeed, controlBrake, dSpeed, controlSpeed);
     controlSpeed = limitSpeed(realSpeed, controlBrake, dSpeed, controlSpeed);
@@ -248,15 +255,43 @@ iv::decition::Decition iv::decition::HapoAdapter::getAdapterDeciton(GPS_INS now_
 
 
     (*decition)->wheel_angle=max((float)-870.0,(*decition)->wheel_angle);
     (*decition)->wheel_angle=max((float)-870.0,(*decition)->wheel_angle);
     (*decition)->wheel_angle=min((float)870.0,(*decition)->wheel_angle);
     (*decition)->wheel_angle=min((float)870.0,(*decition)->wheel_angle);
-     lastDangWei= (*decition)->dangWei;
-
-     (*decition)->topLight=0; //1116
-     (*decition)->nearLight=0;
-     (*decition)->farLight=0;
-
-
-
-     (*decition)->door=3;
+    lastDangWei= (*decition)->dangWei;
+
+    (*decition)->topLight=0; //1116
+    (*decition)->nearLight=0;
+    (*decition)->farLight=0;
+    (*decition)->home_light=0;
+    (*decition)->roof_light=0;
+
+     static int64_t DoorTimeStart=-1;
+     static int32_t door=0;
+     if(ServiceCarStatus.has_mbdoor){
+         if(ServiceCarStatus.mbdoor){
+             door=2;
+             //(*decition)->door=2;
+             DoorTimeStart=QDateTime::currentSecsSinceEpoch();
+             ServiceCarStatus.has_mbdoor=0;
+         }else{
+             door=3;
+            // (*decition)->door=3;
+             DoorTimeStart=QDateTime::currentSecsSinceEpoch();
+             ServiceCarStatus.has_mbdoor=0;
+         }
+     }
+
+     if((QDateTime::currentSecsSinceEpoch()-DoorTimeStart)>10)
+             (*decition)->door=0;
+     else
+              (*decition)->door=door;
+
+
+     if(ServiceCarStatus.has_mbjinguang){
+         if(ServiceCarStatus.mbjinguang){
+             (*decition)->nearLight=1;
+         }else{
+             (*decition)->nearLight=0;
+         }
+     }
 
 
 //std::cout<<"==========================================="<<std::endl;
 //std::cout<<"==========================================="<<std::endl;
 //     std::cout<<"dSpeed:"<<dSpeed<<"   realSpeed:"<<realSpeed<<"   acc:"<<accAim<<"  torque_st:"<<ServiceCarStatus.torque_st
 //     std::cout<<"dSpeed:"<<dSpeed<<"   realSpeed:"<<realSpeed<<"   acc:"<<accAim<<"  torque_st:"<<ServiceCarStatus.torque_st

+ 10 - 9
src/decition/decition_brain_sf/decition/adc_tools/compute_00.cpp

@@ -198,6 +198,7 @@ int iv::decition::Compute00::getMapDelta(std::vector<GPSData> MapTrace){
     doubledata.clear();
     doubledata.clear();
     for (int i = 0; i < MapTrace.size(); i++) {   //                                       1225/14:25
     for (int i = 0; i < MapTrace.size(); i++) {   //                                       1225/14:25
                  std::vector<double> temp;
                  std::vector<double> temp;
+                 temp.clear();
                  temp.push_back(0);temp.push_back(0);temp.push_back(0);temp.push_back(0);temp.push_back(0);//先push四个空量,然后就可以给量赋值了
                  temp.push_back(0);temp.push_back(0);temp.push_back(0);temp.push_back(0);temp.push_back(0);//先push四个空量,然后就可以给量赋值了
                  doubledata.push_back(temp);
                  doubledata.push_back(temp);
                  doubledata[i][0] = MapTrace.at(i)->gps_x;
                  doubledata[i][0] = MapTrace.at(i)->gps_x;
@@ -341,15 +342,15 @@ int iv::decition::Compute00::getPlanSpeed(std::vector<GPSData> MapTrace)
                     }
                     }
                 }
                 }
 
 
-                for(int i=0;i<MapTrace.size();i++){
-                    //将数据写入文件开始
-                    ofstream outfile;
-                    outfile.open("ctr0108003.txt", ostream::app);
-                    outfile<<"Delta"<< ","  <<doubledata[i][3]<< ","<<"roadMode"<< ","  <<MapTrace[i]->roadMode<< ","
-                           <<"plan_speed"<< ","  << doubledata[i][4]<< ","<<endl;
-                    outfile.close();
-                    //将数据写入文件结束
-                }
+//                for(int i=0;i<MapTrace.size();i++){
+//                    //将数据写入文件开始
+//                    ofstream outfile;
+//                    outfile.open("ctr0108003.txt", ostream::app);
+//                    outfile<<"Delta"<< ","  <<doubledata[i][3]<< ","<<"roadMode"<< ","  <<MapTrace[i]->roadMode<< ","
+//                           <<"plan_speed"<< ","  << doubledata[i][4]<< ","<<endl;
+//                    outfile.close();
+//                    //将数据写入文件结束
+//                }
 
 
 }
 }
 
 

+ 23 - 3
src/decition/decition_brain_sf/decition/brain.cpp

@@ -1165,8 +1165,10 @@ void iv::decition::BrainDecition::UpdateMap(const char *mapdata, const int mapda
 
 
         mmpcapi.SetMAP(xvectorMAP);
         mmpcapi.SetMAP(xvectorMAP);
 
 
-        if(ServiceCarStatus.speed_control==true){
-        Compute00().getDesiredSpeed(navigation_data);}
+//        if(ServiceCarStatus.speed_control==true){
+//        Compute00().getDesiredSpeed(navigation_data);
+//            Compute00().getPlanSpeed(navigation_data);
+//        }
         mMutexMap.unlock();
         mMutexMap.unlock();
         //        mpasd->SaveState("map",mapdata,mapdatasize);
         //        mpasd->SaveState("map",mapdata,mapdatasize);
     }
     }
@@ -1203,7 +1205,8 @@ void iv::decition::BrainDecition::ShareDecition(iv::decition::Decition decition)
     xdecition.set_air_worktime(decition->air_worktime);
     xdecition.set_air_worktime(decition->air_worktime);
     xdecition.set_air_offtime(decition->air_offtime);
     xdecition.set_air_offtime(decition->air_offtime);
     xdecition.set_air_on(decition->air_on);
     xdecition.set_air_on(decition->air_on);
-
+    xdecition.set_door(decition->door);
+    xdecition.set_dippedlight(decition->nearLight);
 
 
     std::cout<<"===================shareDecition========================"<<std::endl;
     std::cout<<"===================shareDecition========================"<<std::endl;
          std::cout<<"  torque_st:"<<ServiceCarStatus.torque_st
          std::cout<<"  torque_st:"<<ServiceCarStatus.torque_st
@@ -1292,6 +1295,23 @@ void iv::decition::BrainDecition::UpdateHMI(const char *pdata, const int ndatasi
 
 
     //    mpasd->SaveState("runstate",(char *)&bRun,sizeof(bool));
     //    mpasd->SaveState("runstate",(char *)&bRun,sizeof(bool));
 
 
+
+
+    ServiceCarStatus.has_mbdoor = xhmimsg.has_mbchemen();
+    if(ServiceCarStatus.has_mbdoor){
+        ServiceCarStatus.mbdoor = xhmimsg.mbchemen();
+
+    }
+
+    ServiceCarStatus.has_mbjinguang = xhmimsg.has_mbjinguang();
+    if(ServiceCarStatus.has_mbjinguang){
+        ServiceCarStatus.mbjinguang = xhmimsg.mbjinguang();
+    }
+
+    givlog->debug("decition_brain_bool","mbdoor: %d,mbjinguang: %d",
+                    ServiceCarStatus.mbdoor,ServiceCarStatus.mbjinguang);
+
+
 }
 }
 
 
 void iv::decition::BrainDecition::UpdatePlatform(const char *pdata, const int ndatasize)
 void iv::decition::BrainDecition::UpdatePlatform(const char *pdata, const int ndatasize)

+ 86 - 33
src/decition/decition_brain_sf/decition/decide_gps_00.cpp

@@ -106,6 +106,7 @@ int obsLostTimeAvoid = 0;
 
 
 
 
 double avoidX =0;
 double avoidX =0;
+int    turnLampFlag=0;  //  if <0:left , if >0:right
 float roadWidth = 3.5;
 float roadWidth = 3.5;
 int roadSum =10;
 int roadSum =10;
 int roadNow = 0;
 int roadNow = 0;
@@ -189,6 +190,8 @@ std::vector<double> lastDistanceVector(roadSum, -1);
 std::vector<iv::Point2D> traceOriLeft,traceOriRight;
 std::vector<iv::Point2D> traceOriLeft,traceOriRight;
 
 
 bool qiedianCount = false;
 bool qiedianCount = false;
+
+static int obstacle_avoid_flag=0;
 //日常展示
 //日常展示
 
 
 iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_gps_ins,
 iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_gps_ins,
@@ -273,7 +276,11 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
         readyParkMode=false;
         readyParkMode=false;
         finishPointNum=-1;
         finishPointNum=-1;
         roadNowStart=true;
         roadNowStart=true;
-        isFirstRun = false;       
+        isFirstRun = false;
+        obstacle_avoid_flag=0;
+
+        givlog->debug("decition_brain_bool","DoorTimeStart: %d,current: %d",
+                        0,0);
     }
     }
 
 
 
 
@@ -930,10 +937,10 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
 
 
     if (!isFirstRun)
     if (!isFirstRun)
     {
     {
-        //   PathPoint = Compute00().getNearestPointIndex(now_gps_ins, gpsMapLine, DecideGps00::lastGpsIndex, DecideGps00::minDis, DecideGps00::maxAngle);
-        //    if(PathPoint<0){
-        PathPoint = Compute00().getFirstNearestPointIndex(now_gps_ins, gpsMapLine, DecideGps00::lastGpsIndex, DecideGps00::minDis, DecideGps00::maxAngle);
-        //    }
+            PathPoint = Compute00().getNearestPointIndex(now_gps_ins, gpsMapLine, DecideGps00::lastGpsIndex, DecideGps00::minDis, DecideGps00::maxAngle);
+            if(PathPoint<0){
+                PathPoint = Compute00().getFirstNearestPointIndex(now_gps_ins, gpsMapLine, DecideGps00::lastGpsIndex, DecideGps00::minDis, DecideGps00::maxAngle);
+            }
 
 
     }
     }
 
 
@@ -982,8 +989,10 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
                     }else{
                     }else{
                                 dSpeed=min(dSpeed, 3.0);
                                 dSpeed=min(dSpeed, 3.0);
                                 final_brake_lock=true;
                                 final_brake_lock=true;
-                                if(gpsMapLine[PathPoint]->mode2==23){
-                                            minDecelerate=-0.7;
+                                if(PathPoint+50<gpsMapLine.size()){
+                                    if(gpsMapLine[PathPoint+50]->mode2==23){
+                                                minDecelerate=-0.5;
+                                    }
                                 }
                                 }
                     }
                     }
             }
             }
@@ -1016,14 +1025,16 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
 
 
     if(!ServiceCarStatus.inRoadAvoid){
     if(!ServiceCarStatus.inRoadAvoid){
         roadOri = gpsMapLine[PathPoint]->roadOri;
         roadOri = gpsMapLine[PathPoint]->roadOri;
-        roadSum = gpsMapLine[PathPoint]->roadSum;
+        roadSum = gpsMapLine[PathPoint]->roadSum;      
+        givlog->debug("decition_brain","roadOri: %d",
+                        roadOri);
     }else{
     }else{
         roadOri=gpsMapLine[PathPoint]->roadOri*3+1;
         roadOri=gpsMapLine[PathPoint]->roadOri*3+1;
         roadSum = gpsMapLine[PathPoint]->roadSum*3;
         roadSum = gpsMapLine[PathPoint]->roadSum*3;
     }
     }
 
 
-    roadOri =0;
-    roadSum =2;
+//    roadOri =0;
+//    roadSum =2;
 
 
     if(roadNowStart){
     if(roadNowStart){
         roadNow=roadOri;
         roadNow=roadOri;
@@ -1036,9 +1047,15 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
     }else{
     }else{
          gpsMapLine[PathPoint]->runMode=0;
          gpsMapLine[PathPoint]->runMode=0;
     }
     }
-
-    avoidX=computeAvoidX(roadNow,roadOri,gpsMapLine[PathPoint],ServiceCarStatus.msysparam.vehWidth);
-
+    if(obstacle_avoid_flag==1){
+        avoidX=computeAvoidX(roadNow,roadOri,gpsMapLine[PathPoint],ServiceCarStatus.msysparam.vehWidth);
+    }else{
+        avoidX=0;
+        roadNow = roadOri;
+        if(vehState==backOri){
+            vehState=normalRun;
+        }
+    }
     if ( gpsMapLine[PathPoint]->runMode == 0 &&(vehState == avoidObs||vehState ==stopObs||vehState == preAvoid
     if ( gpsMapLine[PathPoint]->runMode == 0 &&(vehState == avoidObs||vehState ==stopObs||vehState == preAvoid
                                                 ||vehState == avoiding||vehState == backOri||vehState ==preBack||vehState ==waitAvoid ) )
                                                 ||vehState == avoiding||vehState == backOri||vehState ==preBack||vehState ==waitAvoid ) )
     {
     {
@@ -1048,7 +1065,7 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
 
 
     gpsTraceOri= getGpsTrace(now_gps_ins, gpsMapLine, lastGpsIndex,circleMode);
     gpsTraceOri= getGpsTrace(now_gps_ins, gpsMapLine, lastGpsIndex,circleMode);
 
 
-    if((vehState == avoiding || vehState == backOri)&&(gpsTraceAvoidXY.size()>0))
+    if((vehState == avoiding || vehState == backOri)&&(gpsTraceAvoidXY.size()>0)&&(obstacle_avoid_flag==1))
     {
     {
         gpsTraceOri=getGpsTraceAvoid(now_gps_ins, gpsTraceAvoidXY, lastGpsIndex,circleMode);
         gpsTraceOri=getGpsTraceAvoid(now_gps_ins, gpsTraceAvoidXY, lastGpsIndex,circleMode);
     }
     }
@@ -1139,6 +1156,21 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
         }
         }
     }
     }
 
 
+    if(vehState==normalRun)
+    {
+        if(gpsTraceNow.size()>200){
+            if(gpsTraceNow[200].x<-3){
+                gps_decition->leftlamp = true;
+                gps_decition->rightlamp = false;
+            }else if(gpsTraceNow[200].x>3){
+                gps_decition->leftlamp = false;
+                gps_decition->rightlamp = true;
+            }else{
+                gps_decition->leftlamp = false;
+                gps_decition->rightlamp = false;
+            }
+        }
+    }
 
 
     //  dSpeed = getSpeed(gpsTraceNow);
     //  dSpeed = getSpeed(gpsTraceNow);
     dSpeed =80;
     dSpeed =80;
@@ -1364,10 +1396,10 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
     if((gpsMapLine[PathPoint]->speed)>0.001)
     if((gpsMapLine[PathPoint]->speed)>0.001)
     {
     {
         dSpeed = min((gpsMapLine[PathPoint]->speed*3.6),dSpeed);
         dSpeed = min((gpsMapLine[PathPoint]->speed*3.6),dSpeed);
-        if((gpsMapLine[PathPoint]->speed)>4.5)
-        {
-            dSpeed =gpsMapLine[PathPoint]->speed*3.6;
-        }
+//        if((gpsMapLine[PathPoint]->speed)>4.5)
+//        {
+//            dSpeed =gpsMapLine[PathPoint]->speed*3.6;
+//        }
     }
     }
 
 
 
 
@@ -1468,13 +1500,14 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
         else if (useOldAvoid && avoidDistance>35) {    //zj 2021.06.21   gpsTraceNow[60].x)<0.02
         else if (useOldAvoid && avoidDistance>35) {    //zj 2021.06.21   gpsTraceNow[60].x)<0.02
             // vehState = avoidObs; 0929
             // vehState = avoidObs; 0929
             vehState = normalRun;
             vehState = normalRun;
+            turnLampFlag=0;
         }
         }
-        else if (gpsTraceNow[0].x>0)
+        else if (turnLampFlag>0)
         {
         {
             gps_decition->leftlamp = false;
             gps_decition->leftlamp = false;
             gps_decition->rightlamp = true;
             gps_decition->rightlamp = true;
         }
         }
-        else if(gpsTraceNow[0].x<0)
+        else if(turnLampFlag<0)
         {
         {
             gps_decition->leftlamp = true;
             gps_decition->leftlamp = true;
             gps_decition->rightlamp = false;
             gps_decition->rightlamp = false;
@@ -1494,19 +1527,21 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
         //若车辆到达变道后的路径,改变车辆状态,关闭frenet规划
         //若车辆到达变道后的路径,改变车辆状态,关闭frenet规划
         if (useFrenet && abs(gpsTraceAim[0].x)<1.0) {
         if (useFrenet && abs(gpsTraceAim[0].x)<1.0) {
             vehState = normalRun;
             vehState = normalRun;
+            turnLampFlag=0;
             //            useFrenet = false;
             //            useFrenet = false;
             //            useOldAvoid = true;
             //            useOldAvoid = true;
         }
         }
         else if (useOldAvoid && backDistance>35 ) {//abs(gpsTraceNow[60].x)<0.05
         else if (useOldAvoid && backDistance>35 ) {//abs(gpsTraceNow[60].x)<0.05
             // vehState = avoidObs; 0929
             // vehState = avoidObs; 0929
             vehState = normalRun;
             vehState = normalRun;
+            obstacle_avoid_flag=0;
         }
         }
-        else if (gpsTraceNow[0].x>0)
+        else if (turnLampFlag>0)
         {
         {
             gps_decition->leftlamp = false;
             gps_decition->leftlamp = false;
             gps_decition->rightlamp = true;
             gps_decition->rightlamp = true;
         }
         }
-        else if (gpsTraceNow[0].x<0)
+        else if (turnLampFlag<0)
         {
         {
             gps_decition->leftlamp = true;
             gps_decition->leftlamp = true;
             gps_decition->rightlamp = false;
             gps_decition->rightlamp = false;
@@ -1516,7 +1551,7 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
     std::cout<<"\n原始RoadOri:%d\n"<<roadOri<<endl;
     std::cout<<"\n原始RoadOri:%d\n"<<roadOri<<endl;
     //   计算回归原始路线
     //   计算回归原始路线
 
 
-    if (roadNow!=roadOri)
+    if ((roadNow!=roadOri))
     {
     {
         if(useFrenet){
         if(useFrenet){
             if ((GetDistance(now_gps_ins, startAvoidGpsInsVector[roadOri])>max(avoidMinDistanceVector[roadOri],30.0)))
             if ((GetDistance(now_gps_ins, startAvoidGpsInsVector[roadOri])>max(avoidMinDistanceVector[roadOri],30.0)))
@@ -1532,12 +1567,20 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
              avoidX=computeAvoidX(roadNow,roadOri,gpsMapLine[PathPoint],ServiceCarStatus.msysparam.vehWidth);
              avoidX=computeAvoidX(roadNow,roadOri,gpsMapLine[PathPoint],ServiceCarStatus.msysparam.vehWidth);
         }
         }
     }
     }
-    if (roadNow != roadOri && roadPre!=-1)
+    if ((roadNow != roadOri && roadPre!=-1))
     {
     {
 
 
         roadNow = roadPre;
         roadNow = roadPre;
    //     avoidX = (roadOri - roadNow)*roadWidth;
    //     avoidX = (roadOri - roadNow)*roadWidth;
         avoidX=computeAvoidX(roadNow,roadOri,gpsMapLine[PathPoint],ServiceCarStatus.msysparam.vehWidth);
         avoidX=computeAvoidX(roadNow,roadOri,gpsMapLine[PathPoint],ServiceCarStatus.msysparam.vehWidth);
+
+        if(avoidX<0)
+            turnLampFlag<0;
+        else if(avoidX>0)
+            turnLampFlag>0;
+        else
+            turnLampFlag=0;
+
         if(useOldAvoid){
         if(useOldAvoid){
             //gpsTraceNow = getGpsTraceOffset(gpsTraceOri, avoidX);
             //gpsTraceNow = getGpsTraceOffset(gpsTraceOri, avoidX);
             gpsTraceAvoidXY.clear();
             gpsTraceAvoidXY.clear();
@@ -1689,6 +1732,14 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
                     roadNow = roadPre;
                     roadNow = roadPre;
                   //  avoidX = (roadOri - roadNow)*roadWidth;
                   //  avoidX = (roadOri - roadNow)*roadWidth;
                      avoidX=computeAvoidX(roadNow,roadOri,gpsMapLine[PathPoint],ServiceCarStatus.msysparam.vehWidth);
                      avoidX=computeAvoidX(roadNow,roadOri,gpsMapLine[PathPoint],ServiceCarStatus.msysparam.vehWidth);
+
+                     if(avoidX<0)
+                         turnLampFlag<0;
+                     else if(avoidX>0)
+                         turnLampFlag>0;
+                     else
+                         turnLampFlag=0;
+
                     gpsTraceNow.clear();
                     gpsTraceNow.clear();
                     //gpsTraceNow = getGpsTraceOffset(gpsTraceOri, avoidX);
                     //gpsTraceNow = getGpsTraceOffset(gpsTraceOri, avoidX);
                     gpsTraceAvoidXY.clear();
                     gpsTraceAvoidXY.clear();
@@ -1708,6 +1759,7 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
 
 
 
 
                 vehState = avoiding;
                 vehState = avoiding;
+                obstacle_avoid_flag=1;
 
 
                 hasCheckedAvoidLidar = false;
                 hasCheckedAvoidLidar = false;
 
 
@@ -1951,7 +2003,10 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
         dSpeed = ServiceCarStatus.group_comm_speed;
         dSpeed = ServiceCarStatus.group_comm_speed;
     }
     }
     if(dSpeed==0){
     if(dSpeed==0){
-        minDecelerate=min(-1.0f,minDecelerate);
+        if(realspeed<6)
+            minDecelerate=min(-0.5f,minDecelerate);
+        else
+            minDecelerate=min(-0.6f,minDecelerate); //1.0f    zj-0.6
     }
     }
 
 
     gps_decition->wheel_angle = 0.0 - controlAng;
     gps_decition->wheel_angle = 0.0 - controlAng;
@@ -2470,8 +2525,6 @@ double iv::decition::DecideGps00::getSpeed(std::vector<Point2D> gpsTrace) {
 }
 }
 
 
 
 
-
-
 //void iv::decition::DecideGps00::getEsrObs(std::vector<iv::ObstacleBasic> obsRadars) {
 //void iv::decition::DecideGps00::getEsrObs(std::vector<iv::ObstacleBasic> obsRadars) {
 //
 //
 //	if (!obsRadars.empty())
 //	if (!obsRadars.empty())
@@ -3775,20 +3828,20 @@ void iv::decition::DecideGps00::transferGpsMode2( const std::vector<GPSData> gps
         }
         }
     }
     }
 
 
-    givlog->debug("decition_brain","PATHFORE: %d,Forecast: %d,cross: %d",
-                PathPoint+forecast_point_num,forecast_point_num,cross);
-
+    //givlog->debug("decition_brain","PATHFORE: %d,Forecast: %d,cross: %d",
+                //PathPoint+forecast_point_num,forecast_point_num,cross);
     if(  gpsMapLine[PathPoint]->mode2==3000){
     if(  gpsMapLine[PathPoint]->mode2==3000){
         if(obsDistance>4){       //7   zj-5
         if(obsDistance>4){       //7   zj-5
             obsDistance=200;
             obsDistance=200;
         }else{
         }else{
             lock_flag=false;
             lock_flag=false;
+            obsSpeed=-realspeed/3.6;
         }
         }
         if((realspeed>3)&&(lock_flag==false)){
         if((realspeed>3)&&(lock_flag==false)){
             minDecelerate=-0.5;
             minDecelerate=-0.5;
         }else{
         }else{
-        dSpeed=min(dSpeed,3.0);
-        lock_flag=true;
+            dSpeed=min(dSpeed,3.0);
+            lock_flag=true;
         }
         }
     }
     }
     else if(gpsMapLine[PathPoint]->mode2==3001){
     else if(gpsMapLine[PathPoint]->mode2==3001){
@@ -3796,7 +3849,7 @@ void iv::decition::DecideGps00::transferGpsMode2( const std::vector<GPSData> gps
     }else if(gpsMapLine[PathPoint]->mode2==3002){
     }else if(gpsMapLine[PathPoint]->mode2==3002){
              obstacle_disable=0;
              obstacle_disable=0;
     }else if(gpsMapLine[PathPoint]->mode2==4000){
     }else if(gpsMapLine[PathPoint]->mode2==4000){
-        ServiceCarStatus.msysparam.vehWidth=5.6;
+        //ServiceCarStatus.msysparam.vehWidth=5.6;
     }else if(cross==true){
     }else if(cross==true){
             speed_slowdown_flag=1;
             speed_slowdown_flag=1;
             lock_flag=false;
             lock_flag=false;

+ 3 - 3
src/decition/decition_brain_sf/decition/decition_type.h

@@ -18,7 +18,7 @@ struct DecitionBasic {
     int  mode;
     int  mode;
     int handBrake;
     int handBrake;
     bool speak;
     bool speak;
-    bool door;
+    int door;
     bool bright;
     bool bright;
     int dangWei;
     int dangWei;
 
 
@@ -46,8 +46,8 @@ struct DecitionBasic {
     float   air_temp ;                  //空调温度
     float   air_temp ;                  //空调温度
     float   air_mode ;                  //空调模式
     float   air_mode ;                  //空调模式
     float   wind_level ;                  //空调风力
     float   wind_level ;                  //空调风力
-    float   roof_light ;                  //顶灯
-    float   home_light ;                  //日光灯
+    int   roof_light ;                  //顶灯
+    int   home_light ;                  //日光灯
     float   air_worktime ;                  //空调工作时间
     float   air_worktime ;                  //空调工作时间
     float   air_offtime ;                  //空调关闭时间
     float   air_offtime ;                  //空调关闭时间
 
 

+ 7 - 1
src/detection/detection_mobileye/main.cpp

@@ -158,6 +158,12 @@ void ProcCANMsg(iv::can::canraw xmsg)
         //std::cout << ServiceCarStatus.obstacleStatus.num_obstacles<< std::endl;
         //std::cout << ServiceCarStatus.obstacleStatus.num_obstacles<< std::endl;
         gnum_obstacles = num_obstacles;
         gnum_obstacles = num_obstacles;
 
 
+        gobs_count = 0;
+        gmobileye.clear_xobj();
+        gmobileye.clear_xmsgtime();
+        gmobileye.clear_numobstacles();
+        glane_sig = 0;
+
         //timestamp
         //timestamp
         msgtime = xdata[1];
         msgtime = xdata[1];
 
 
@@ -355,7 +361,7 @@ void ProcCANMsg(iv::can::canraw xmsg)
 
 
             iv::mobileye::obs * pxobs = gmobileye.add_xobj();
             iv::mobileye::obs * pxobs = gmobileye.add_xobj();
             pxobs->CopyFrom(gobs);
             pxobs->CopyFrom(gobs);
-            gobs_count++;
+            gobs_count=(xmsg.id()-0x73b)/3+1;
             gMobEyeIvlog->verbose("mobileyeobs", "nums:%d cur_count:%d, obs_id:%d, pos_x:%f, pos_y:%f \n",\
             gMobEyeIvlog->verbose("mobileyeobs", "nums:%d cur_count:%d, obs_id:%d, pos_x:%f, pos_y:%f \n",\
                                   gnum_obstacles, gobs_count, gobs.id(), gobs.pos_x(), gobs.pos_y());
                                   gnum_obstacles, gobs_count, gobs.id(), gobs.pos_x(), gobs.pos_y());
         }
         }

+ 7 - 5
src/driver/driver_map_xodrload/driver_map_xodrload.pro

@@ -20,14 +20,12 @@ QMAKE_CXXFLAGS +=  -g
 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
 
 SOURCES += main.cpp     \
 SOURCES += main.cpp     \
-    ../../common/common/xodr/xodrfunc.cpp \
     ../../include/msgtype/v2x.pb.cc \
     ../../include/msgtype/v2x.pb.cc \
     fresnl.cpp \
     fresnl.cpp \
     const.cpp \
     const.cpp \
     polevl.c \
     polevl.c \
     globalplan.cpp \
     globalplan.cpp \
     dubins.c \
     dubins.c \
-    xodrdijkstra.cpp \
     ../../include/msgtype/gps.pb.cc \
     ../../include/msgtype/gps.pb.cc \
     ../../include/msgtype/gpsimu.pb.cc \
     ../../include/msgtype/gpsimu.pb.cc \
     ../../include/msgtype/imu.pb.cc \
     ../../include/msgtype/imu.pb.cc \
@@ -35,13 +33,11 @@ SOURCES += main.cpp     \
 
 
 HEADERS += \
 HEADERS += \
     ../../../include/ivexit.h \
     ../../../include/ivexit.h \
-    ../../common/common/xodr/xodrfunc.h \
     ../../include/msgtype/v2x.pb.h \
     ../../include/msgtype/v2x.pb.h \
     mconf.h \
     mconf.h \
     globalplan.h \
     globalplan.h \
     gps_type.h \
     gps_type.h \
     dubins.h \
     dubins.h \
-    xodrdijkstra.h \
     ../../include/msgtype/gps.pb.h \
     ../../include/msgtype/gps.pb.h \
     ../../include/msgtype/gpsimu.pb.h \
     ../../include/msgtype/gpsimu.pb.h \
     ../../include/msgtype/imu.pb.h \
     ../../include/msgtype/imu.pb.h \
@@ -64,7 +60,6 @@ HEADERS += \
     error( "Couldn't find the iveigen.pri file!" )
     error( "Couldn't find the iveigen.pri file!" )
 }
 }
 
 
-INCLUDEPATH += $$PWD/../../common/common/xodr
 
 
 !include(../../common/common/xodr/OpenDrive/OpenDrive.pri ) {
 !include(../../common/common/xodr/OpenDrive/OpenDrive.pri ) {
     error( "Couldn't find the OpenDrive.pri file!" )
     error( "Couldn't find the OpenDrive.pri file!" )
@@ -74,5 +69,12 @@ INCLUDEPATH += $$PWD/../../common/common/xodr
     error( "Couldn't find the TinyXML.pri file!" )
     error( "Couldn't find the TinyXML.pri file!" )
 }
 }
 
 
+!include(../../common/common/xodr/xodrfunc/xodrfunc.pri ) {
+    error( "Couldn't find the xodrfunc.pri file!" )
+}
+
+INCLUDEPATH += $$PWD/../../common/common/xodr
+INCLUDEPATH += $$PWD/../../common/common/xodr/xodrfunc
+
 
 
 
 

+ 52 - 1
src/driver/driver_map_xodrload/globalplan.cpp

@@ -1259,6 +1259,7 @@ static std::vector<PlanPoint> getparampoly3dpoint(GeometryParamPoly3 * parc,cons
 std::vector<PlanPoint> GetPoint(pathsection xpath,const double fspace = 0.1)
 std::vector<PlanPoint> GetPoint(pathsection xpath,const double fspace = 0.1)
 {
 {
     Road * pRoad = xpath.mpRoad;
     Road * pRoad = xpath.mpRoad;
+    //s_start  s_end for select now section data.
     double s_start,s_end;
     double s_start,s_end;
     LaneSection * pLS = pRoad->GetLaneSection(xpath.msectionid);
     LaneSection * pLS = pRoad->GetLaneSection(xpath.msectionid);
     s_start = pLS->GetS();
     s_start = pLS->GetS();
@@ -1268,6 +1269,12 @@ std::vector<PlanPoint> GetPoint(pathsection xpath,const double fspace = 0.1)
         s_end = pRoad->GetLaneSection(xpath.msectionid+1)->GetS();
         s_end = pRoad->GetLaneSection(xpath.msectionid+1)->GetS();
     }
     }
 
 
+//    if(xpath.mroadid == 10190)
+//    {
+//        int a = 1;
+//        a++;
+//    }
+
     std::vector<PlanPoint> xvectorPPS;
     std::vector<PlanPoint> xvectorPPS;
     double s = 0;
     double s = 0;
 
 
@@ -1760,6 +1767,40 @@ std::vector<int> GetLWIndex(std::vector<iv::lanewidthabcd> xvectorLWA,int nlane)
     return xvectorindex;
     return xvectorindex;
 }
 }
 
 
+void CalcBorringRoad(pathsection xps,std::vector<PlanPoint> & xvectorPP)
+{
+    if(xps.mpRoad->GetRoadBorrowCount() == 0)
+    {
+        return;
+    }
+
+    Road * pRoad = xps.mpRoad;
+    unsigned int nborrowsize = pRoad->GetRoadBorrowCount();
+    unsigned int i;
+    unsigned int nPPCount = xvectorPP.size();
+    for(i=0;i<nborrowsize;i++)
+    {
+        RoadBorrow * pborrow = pRoad->GetRoadBorrow(i);
+        if(pborrow == NULL)
+        {
+            std::cout<<"warning:can't get borrow"<<std::endl;
+            continue;
+        }
+        if((pborrow->GetMode() == "All")||((pborrow->GetMode()=="R2L")&&(xps.mainsel<0))||((pborrow->GetMode()=="L2R")&&(xps.mainsel>0)))
+        {
+            unsigned int j;
+            double soffset = pborrow->GetS();
+            double borrowlen = pborrow->GetLength();
+            for(j=0;j<xvectorPP.size();j++)
+            {
+                if((xvectorPP[j].mS>=soffset)&&(xvectorPP[j].mS<=(soffset + borrowlen)))
+                {
+                    xvectorPP[j].mbBoringRoad = true;
+                }
+            }
+        }
+    }
+}
 
 
 void CalcInLaneAvoid(pathsection xps,std::vector<PlanPoint> & xvectorPP,const double fvehiclewidth,
 void CalcInLaneAvoid(pathsection xps,std::vector<PlanPoint> & xvectorPP,const double fvehiclewidth,
                      const int nchang1,const int nchang2,const int nchangpoint)
                      const int nchang1,const int nchang2,const int nchangpoint)
@@ -2271,6 +2312,11 @@ std::vector<PlanPoint> GetLanePoint(pathsection xps,std::vector<PlanPoint> xvPP,
 
 
     CalcInLaneAvoid(xps,xvectorPP,fvehiclewidth,nchange1,nchange2,nchangepoint);
     CalcInLaneAvoid(xps,xvectorPP,fvehiclewidth,nchange1,nchange2,nchangepoint);
 
 
+    if(xps.mpRoad->GetRoadBorrowCount()>0)
+    {
+        CalcBorringRoad(xps,xvectorPP);
+    }
+
 
 
     if(xps.mnStartLaneSel > 0)
     if(xps.mnStartLaneSel > 0)
     {
     {
@@ -2843,8 +2889,13 @@ int MakePlan(xodrdijkstra * pxd,OpenDrive * pxodr,const double x_now,const doubl
 
 
     if(bNeedDikstra)
     if(bNeedDikstra)
     {
     {
-    std::vector<int> xpath = pxd->getpath(atoi(pRoad->GetRoadId().data()),lr_start,atoi(pRoad_obj->GetRoadId().data()),lr_end,fs1,fs2);
+        bool bSuc = false;
+    std::vector<int> xpath = pxd->getpath(atoi(pRoad->GetRoadId().data()),lr_start,atoi(pRoad_obj->GetRoadId().data()),lr_end,bSuc,fs1,fs2);
     if(xpath.size()<1)return -1;
     if(xpath.size()<1)return -1;
+    if(bSuc == false)
+    {
+        return -1;
+    }
     double flen = pxd->getpathlength(xpath);
     double flen = pxd->getpathlength(xpath);
     std::vector<pathsection> xpathsection = pxd->getgpspoint(atoi(pRoad->GetRoadId().data()),lr_start,atoi(pRoad_obj->GetRoadId().data()),lr_end,xpath,nlanesel);
     std::vector<pathsection> xpathsection = pxd->getgpspoint(atoi(pRoad->GetRoadId().data()),lr_start,atoi(pRoad_obj->GetRoadId().data()),lr_end,xpath,nlanesel);
 
 

+ 1 - 0
src/driver/driver_map_xodrload/globalplan.h

@@ -39,6 +39,7 @@ public:
     double mfSecx;
     double mfSecx;
     double mfSecy;
     double mfSecy;
     int nlrchange; //1 left 2 right
     int nlrchange; //1 left 2 right
+    bool mbBoringRoad = false;
 };
 };
 
 
 class LaneChangePoint
 class LaneChangePoint

+ 6 - 0
src/driver/driver_map_xodrload/main.cpp

@@ -537,6 +537,12 @@ void SetPlan(xodrobj xo)
 
 
         data->mbInLaneAvoid = xPlan[i].bInlaneAvoid;
         data->mbInLaneAvoid = xPlan[i].bInlaneAvoid;
 
 
+        if(xPlan[i].mbBoringRoad)
+        {
+            data->roadOri = 0;
+            data->roadSum = 2;
+        }
+
         data->mode2 = xPlan[i].nSignal;
         data->mode2 = xPlan[i].nSignal;
         if(data->mode2 == 3000)
         if(data->mode2 == 3000)
         {
         {

+ 4 - 4
src/include/proto/decition.proto

@@ -16,7 +16,7 @@ message decition
     optional bool  doubleSpark = 10;          //双闪
     optional bool  doubleSpark = 10;          //双闪
     optional bool  headLight = 11;            //前灯
     optional bool  headLight = 11;            //前灯
     optional bool  highBeam = 12;             //远光灯
     optional bool  highBeam = 12;             //远光灯
-    optional bool  dippedLight = 13;          //近光灯
+    optional int32  dippedLight = 13;          //近光灯
     optional bool  tailLight = 14;            //尾灯
     optional bool  tailLight = 14;            //尾灯
     optional bool  domeLight = 15;            //顶灯
     optional bool  domeLight = 15;            //顶灯
     optional bool  fogLamp = 16;              //雾灯
     optional bool  fogLamp = 16;              //雾灯
@@ -26,7 +26,7 @@ message decition
     optional int32   mode = 20;                 //模式:自动or手动
     optional int32   mode = 20;                 //模式:自动or手动
     optional int32  handBrake = 21;            //手刹
     optional int32  handBrake = 21;            //手刹
     optional bool  speak = 22;                //喇叭
     optional bool  speak = 22;                //喇叭
-    optional bool  door = 23;                 //车门
+    optional int32  door = 23;                 //车门
     optional int32   gear = 24;                 //挡位
     optional int32   gear = 24;                 //挡位
     optional int32   wiper = 25;                //雨刷
     optional int32   wiper = 25;                //雨刷
     optional int32   grade = 26;                 //GE3使用的一个指标
     optional int32   grade = 26;                 //GE3使用的一个指标
@@ -35,8 +35,8 @@ message decition
     optional float   air_temp = 29;                  //空调温度 
     optional float   air_temp = 29;                  //空调温度 
     optional float   air_mode = 30;                  //空调模式 
     optional float   air_mode = 30;                  //空调模式 
     optional float   wind_level = 31;                  //空调风力 
     optional float   wind_level = 31;                  //空调风力 
-    optional float   roof_light = 32;                  //顶灯 
-    optional float   home_light = 33;                  //日光灯 
+    optional int32   roof_light = 32;                  //顶灯 
+    optional int32   home_light = 33;                  //日光灯 
     optional float   air_worktime = 34;                  //空调工作时间
     optional float   air_worktime = 34;                  //空调工作时间
     optional float   air_offtime = 35;                  //空调关闭时间 
     optional float   air_offtime = 35;                  //空调关闭时间 
     optional bool   air_on = 36;                  //空调使能 
     optional bool   air_on = 36;                  //空调使能 

+ 30 - 7
src/tool/map_lanetoxodr/autoconnect.cpp

@@ -304,6 +304,8 @@ static std::vector<iv::roadpoint> getstartpoint(Road * p1)
 
 
 int GetEndPoint(Road *proad, double &x, double &y, double &hdg)
 int GetEndPoint(Road *proad, double &x, double &y, double &hdg)
 {
 {
+    proad->GetGeometryCoords(proad->GetRoadLength(),x,y,hdg);
+    return 0;
     GeometryBlock * pblock = proad->GetLastGeometryBlock();
     GeometryBlock * pblock = proad->GetLastGeometryBlock();
 
 
     RoadGeometry * pgeo = pblock->GetLastGeometry();
     RoadGeometry * pgeo = pblock->GetLastGeometry();
@@ -346,8 +348,18 @@ int GetEndPoint(Road *proad, double &x, double &y, double &hdg)
         double xtem1,ytem1,x1,y1;
         double xtem1,ytem1,x1,y1;
         GeometryParamPoly3 * ppoly3 = (GeometryParamPoly3* )pgeo;
         GeometryParamPoly3 * ppoly3 = (GeometryParamPoly3* )pgeo;
         double s = ppoly3->GetLength();
         double s = ppoly3->GetLength();
-        xtem = ppoly3->GetuA() + ppoly3->GetuB() * s  + ppoly3->GetuC() * s*s  + ppoly3->GetuD() * s*s*s ;
-        ytem = ppoly3->GetvA() + ppoly3->GetvB() * s + ppoly3->GetvC() * s*s  + ppoly3->GetvD() * s*s*s ;
+        if(ppoly3->GetNormal())
+        {
+            xtem = ppoly3->GetuA() + ppoly3->GetuB()  + ppoly3->GetuC()   + ppoly3->GetuD()  ;
+            ytem = ppoly3->GetvA() + ppoly3->GetvB() + ppoly3->GetvC()   + ppoly3->GetvD() ;
+        }
+        else
+        {
+            xtem = ppoly3->GetuA() + ppoly3->GetuB() * s  + ppoly3->GetuC() * s*s  + ppoly3->GetuD() * s*s*s ;
+            ytem = ppoly3->GetvA() + ppoly3->GetvB() * s + ppoly3->GetvC() * s*s  + ppoly3->GetvD() * s*s*s ;
+        }
+//        xtem = ppoly3->GetuA() + ppoly3->GetuB() * s  + ppoly3->GetuC() * s*s  + ppoly3->GetuD() * s*s*s ;
+//        ytem = ppoly3->GetvA() + ppoly3->GetvB() * s + ppoly3->GetvC() * s*s  + ppoly3->GetvD() * s*s*s ;
         x = xtem*cos(ppoly3->GetHdg()) - ytem * sin(ppoly3->GetHdg()) + ppoly3->GetX();
         x = xtem*cos(ppoly3->GetHdg()) - ytem * sin(ppoly3->GetHdg()) + ppoly3->GetX();
         y = xtem*sin(ppoly3->GetHdg()) + ytem * cos(ppoly3->GetHdg()) + ppoly3->GetY();
         y = xtem*sin(ppoly3->GetHdg()) + ytem * cos(ppoly3->GetHdg()) + ppoly3->GetY();
         s = ppoly3->GetLength()*0.999;
         s = ppoly3->GetLength()*0.999;
@@ -355,12 +367,23 @@ int GetEndPoint(Road *proad, double &x, double &y, double &hdg)
         double fr = 1.0;
         double fr = 1.0;
         if(s>0)
         if(s>0)
         {
         {
+            double frel = 0.99;
+            if(ppoly3->GetNormal() == false)
+            {
+                xtem1 = ppoly3->GetuA() + ppoly3->GetuB() * s  + ppoly3->GetuC() * s*s  + ppoly3->GetuD() * s*s*s ;
+                ytem1 = ppoly3->GetvA() + ppoly3->GetvB() * s + ppoly3->GetvC() * s*s  + ppoly3->GetvD() * s*s*s ;
+            }
+            else
+            {
+                xtem1 = ppoly3->GetuA() + ppoly3->GetuB() * frel + ppoly3->GetuC() *frel*frel   + ppoly3->GetuD()*frel*frel*frel  ;
+                ytem1 = ppoly3->GetvA() + ppoly3->GetvB()*frel + ppoly3->GetvC()*frel*frel   + ppoly3->GetvD()*frel*frel*frel ;
+            }
             fr = 1.0;
             fr = 1.0;
-            xtem1 = ppoly3->GetuA() + ppoly3->GetuB() * fr  + ppoly3->GetuC() * fr*fr  + ppoly3->GetuD() * fr*fr*fr ;
-            ytem1 = ppoly3->GetvA() + ppoly3->GetvB() * fr + ppoly3->GetvC() * fr*fr  + ppoly3->GetvD() * fr*fr*fr ;
-            x1 = xtem*cos(ppoly3->GetHdg()) - ytem * sin(ppoly3->GetHdg()) + ppoly3->GetX();
-            y1 = xtem*sin(ppoly3->GetHdg()) + ytem * cos(ppoly3->GetHdg()) + ppoly3->GetY();
-            hdg = geofit::CalcHdg(xtem1,ytem1,x1,y1);
+//            xtem1 = ppoly3->GetuA() + ppoly3->GetuB() * fr  + ppoly3->GetuC() * fr*fr  + ppoly3->GetuD() * fr*fr*fr ;
+//            ytem1 = ppoly3->GetvA() + ppoly3->GetvB() * fr + ppoly3->GetvC() * fr*fr  + ppoly3->GetvD() * fr*fr*fr ;
+            x1 = xtem1*cos(ppoly3->GetHdg()) - ytem1 * sin(ppoly3->GetHdg()) + ppoly3->GetX();
+            y1 = xtem1*sin(ppoly3->GetHdg()) + ytem1 * cos(ppoly3->GetHdg()) + ppoly3->GetY();
+            hdg = geofit::CalcHdg(x1,y1,x,y);
         }
         }
         else
         else
         {
         {

+ 1340 - 0
src/tool/map_lanetoxodr/autoroadcontact.cpp

@@ -0,0 +1,1340 @@
+#include "autoroadcontact.h"
+
+#include "mainwindow.h"
+
+#include <math.h>
+#include <iostream>
+
+extern MainWindow * gw;
+
+#include "xodrfunc.h"
+#include "xodrdijkstra.h"
+
+AutoRoadContact::AutoRoadContact()
+{
+
+}
+
+/**
+ * @brief AutoRoadContact::CalcContact
+ * @param pRoad1
+ * @param pRoad2
+ * @param contacttype 0:start to start  1:start to end 2:end to start 3:end to end
+ * @param turnstraight  0: turn  1:straight 2:u-turn
+ * @param xARCLane   right lane contact
+ * @param xARCOpLane left lane contact
+ * @param fDisTolerance    distance must below this value
+ * @return
+ */
+int AutoRoadContact::CalcContact(Road *pRoad1, Road *pRoad2,int & contacttype,int & turnstraight,
+                                 std::vector<iv::ARC> & xARCLane,std::vector<iv::ARC> & xARCOpLane, const double fDisTolerance)
+{
+
+    double road1_start_x,road1_start_y,road1_end_x,road1_end_y,road1_start_hdg,road1_end_hdg;
+    double road2_start_x,road2_start_y,road2_end_x,road2_end_y,road2_start_hdg,road2_end_hdg;
+    int ngeo = pRoad1->GetGeometryCoords(0,road1_start_x,road1_start_y,road1_start_hdg);
+    ngeo+=pRoad1->GetGeometryCoords(pRoad1->GetRoadLength(),road1_end_x,road1_end_y,road1_end_hdg);
+    ngeo+=pRoad2->GetGeometryCoords(0,road2_start_x,road2_start_y,road2_start_hdg);
+    ngeo+=pRoad2->GetGeometryCoords(pRoad2->GetRoadLength(),road2_end_x,road2_end_y,road2_end_hdg);
+    if(ngeo<0)
+    {
+        return -1;
+    }
+
+    double dis_1s_2s = sqrt(pow(road1_start_x-road2_start_x,2)
+                            +pow(road1_start_y-road2_start_y,2));
+    double dis_1s_2e = sqrt(pow(road1_start_x-road2_end_x,2)
+                            +pow(road1_start_y-road2_end_y,2));
+    double dis_1e_2s = sqrt(pow(road1_end_x-road2_start_x,2)
+                            +pow(road1_end_y-road2_start_y,2));
+    double dis_1e_2e = sqrt(pow(road1_end_x-road2_end_x,2)
+                            +pow(road1_end_y-road2_end_y,2));
+    double fdis[4];
+    fdis[0] = dis_1s_2s;
+    fdis[1] = dis_1s_2e;
+    fdis[2] = dis_1e_2s;
+    fdis[3] = dis_1e_2e;
+
+    double fdismin = 100000;
+    int index = -1;
+    unsigned int i;
+    for(i=0;i<4;i++)
+    {
+        if(fdismin>fdis[i])
+        {
+            fdismin = fdis[i];
+            index = i;
+        }
+    }
+
+    if(fdismin > fDisTolerance)
+    {
+        std::cout<<"dis is grater than Distance Tolerance. Tolerance is "<<fDisTolerance<<std::endl;
+        return -3;
+    }
+
+    if(fdismin < 0.1)
+    {
+        std::cout<<"dis is less than 0.1"<<std::endl;
+        return -4;
+    }
+
+    contacttype = index;
+
+    if(contacttype == -1)
+    {
+        return -2;
+    }
+
+    LaneSection * pLS1 = 0;
+    LaneSection * pLS2 = 0;
+    double from_x,from_y,from_hdg,to_x,to_y,to_hdg;
+    switch (contacttype) {
+    case 0:
+        from_x = road1_start_x;
+        from_y = road1_start_y;
+        to_x = road2_start_x;
+        to_y = road2_start_y;
+        from_hdg = road1_start_hdg + M_PI;
+        to_hdg = road2_start_hdg;
+        pLS1 = pRoad1->GetLaneSection(0);
+        pLS2 = pRoad2->GetLaneSection(0);
+        break;
+    case 1:
+        from_x = road1_start_x;
+        from_y = road1_start_y;
+        to_x = road2_end_x;
+        to_y = road2_end_y;
+        from_hdg = road1_start_hdg + M_PI;
+        to_hdg = road2_end_hdg+ M_PI;
+        pLS1 = pRoad1->GetLaneSection(0);
+        pLS2 = pRoad2->GetLastLaneSection();
+        break;
+    case 2:
+        from_x = road1_end_x;
+        from_y = road1_end_y;
+        to_x = road2_start_x;
+        to_y = road2_start_y;
+        from_hdg = road1_end_hdg ;
+        to_hdg = road2_start_hdg;
+        pLS1 = pRoad1->GetLastLaneSection();
+        pLS2 = pRoad2->GetLaneSection(0);
+        break;
+    case 3:
+        from_x = road1_end_x;
+        from_y = road1_end_y;
+        to_x = road2_end_x;
+        to_y = road2_end_y;
+        from_hdg = road1_end_hdg ;
+        to_hdg = road2_end_hdg + M_PI;
+        pLS1 = pRoad1->GetLastLaneSection();
+        pLS2 = pRoad2->GetLastLaneSection();
+        break;
+    default:
+        break;
+    }
+
+    if(from_hdg >= 2.0*M_PI)from_hdg = from_hdg - 2.0*M_PI;
+    if(to_hdg >= 2.0*M_PI)to_hdg = to_hdg - 2.0*M_PI;
+
+    double hdgdiff = to_hdg - from_hdg;
+    while(hdgdiff>=2.0*M_PI)hdgdiff = hdgdiff - 2.0*M_PI;
+    while(hdgdiff<0)hdgdiff = hdgdiff + 2.0*M_PI;
+    bool bTurnRight = true;
+    if((hdgdiff<0.5)||(hdgdiff>(2.0*M_PI-0.5)))
+    {
+        turnstraight = 1;
+    }
+    else
+    {
+        if((hdgdiff>(M_PI-0.3))&&(hdgdiff<(M_PI+0.3)))
+        {
+            turnstraight = 2;
+        }
+        else
+        {
+            if(hdgdiff>M_PI)
+            {
+                std::cout<<"turn right"<<std::endl;
+                bTurnRight = true;
+            }
+            else
+            {
+                std::cout<<"turn left"<<std::endl;
+                bTurnRight = false;
+            }
+            turnstraight = 0;
+        }
+    }
+
+
+    vector<Lane *> xroad1lane1,xroad1lane2;
+    vector<Lane *> xroad2lane1,xroad2lane2;
+    for(i=0;i<pLS1->GetLeftLaneCount();i++)
+    {
+        Lane * pLane = pLS1->GetLeftLaneAt(i+1);
+        if(pLane == NULL)
+        {
+            std::cout<<"GetLeftLaneError i:"<<i<<std::endl;
+            break;
+        }
+        xroad1lane1.push_back(pLane);
+    }
+    for(i=0;i<pLS1->GetRightLaneCount();i++)
+    {
+        Lane * pLane = pLS1->GetRightLaneAt(i+1);
+        if(pLane == NULL)
+        {
+            std::cout<<"GetRightLaneAt i:"<<i<<std::endl;
+            break;
+        }
+        xroad1lane2.push_back(pLane);
+    }
+    for(i=0;i<pLS2->GetLeftLaneCount();i++)
+    {
+        Lane * pLane = pLS2->GetLeftLaneAt(i+1);
+        if(pLane == NULL)
+        {
+            std::cout<<"GetLeftLaneError i:"<<i<<std::endl;
+            break;
+        }
+        xroad2lane1.push_back(pLane);
+    }
+    for(i=0;i<pLS2->GetRightLaneCount();i++)
+    {
+        Lane * pLane = pLS2->GetRightLaneAt(i+1);
+        if(pLane == NULL)
+        {
+            std::cout<<"GetRightLaneAt i:"<<i<<std::endl;
+            break;
+        }
+        xroad2lane2.push_back(pLane);
+    }
+
+    vector<Lane *> xroad1leftlane,xroad1rightlane;
+    vector<Lane *> xroad2leftlane,xroad2rightlane;
+
+    if((contacttype == 0)||(contacttype == 1))
+    {
+        xroad1leftlane = xroad1lane2;
+        xroad1rightlane = xroad1lane1;
+    }
+    else
+    {
+        xroad1leftlane = xroad1lane1;
+        xroad1rightlane = xroad1lane2;
+    }
+
+    if((contacttype == 1)||(contacttype == 3))
+    {
+        xroad2leftlane = xroad2lane2;
+        xroad2rightlane = xroad2lane1;
+    }
+    else
+    {
+        xroad2leftlane = xroad2lane1;
+        xroad2rightlane = xroad2lane2;
+    }
+
+    if(turnstraight == 1)  //
+    {
+        for(i=0;i<xroad1rightlane.size();i++)
+        {
+            Lane * pLane1 = xroad1rightlane.at(i);
+            if(i>=xroad2rightlane.size())
+            {
+                break;
+            }
+            Lane * pLane2 = xroad2rightlane.at(i);
+            if((pLane1 == NULL)||(pLane2 == NULL))
+            {
+                break;
+            }
+            if(pLane1->GetType() != pLane2->GetType())
+            {
+                break;
+            }
+            iv::ARC xARC;
+            xARC.from = pLane1->GetId();
+            xARC.to = pLane2->GetId();
+            xARCLane.push_back(xARC);
+        }
+        for(i=0;i<xroad1leftlane.size();i++)
+        {
+            Lane * pLane1 = xroad1leftlane.at(i);
+            if(i>=xroad2leftlane.size())
+            {
+                break;
+            }
+            Lane * pLane2 = xroad2leftlane.at(i);
+            if((pLane1 == NULL)||(pLane2 == NULL))
+            {
+                break;
+            }
+            if(pLane1->GetType() != pLane2->GetType())
+            {
+                break;
+            }
+            iv::ARC xARC;
+            xARC.from = pLane1->GetId();
+            xARC.to = pLane2->GetId();
+            xARCOpLane.push_back(xARC);
+        }
+    }
+    else
+    {
+        if(turnstraight == 0)
+        {
+            int nindex1 = -1;
+            int nindex2 = -1;
+            for(i=0;i<xroad1rightlane.size();i++)
+            {
+                if(xroad1rightlane.at(i)->GetType() == "driving")
+                {
+                    nindex1 = i;
+                    if(bTurnRight == false)
+                    {
+                        break;
+                    }
+                }
+            }
+            for(i=0;i<xroad2rightlane.size();i++)
+            {
+                if(xroad2rightlane.at(i)->GetType() == "driving")
+                {
+                    nindex2 = i;
+                    if(bTurnRight == false)
+                    {
+                        break;
+                    }
+                }
+            }
+            if((nindex1<0)||(nindex2<0))
+            {
+                std::cout<<"can't find driving lane"<<std::endl;
+                return -3;
+            }
+            if(bTurnRight)
+            {
+                for(i=nindex1;i<xroad1rightlane.size();i++)
+                {
+                    Lane * pLane1 = xroad1rightlane.at(i);
+                    if(nindex2 >= xroad2rightlane.size())
+                    {
+                        break;
+                    }
+                    Lane * pLane2 = xroad2rightlane.at(nindex2);nindex2++;
+                    if((pLane1 == NULL)||(pLane2 == NULL))
+                    {
+                        break;
+                    }
+                    if(pLane1->GetType() != pLane2->GetType())
+                    {
+                        break;
+                    }
+                    iv::ARC xARC;
+                    xARC.from = pLane1->GetId();
+                    xARC.to = pLane2->GetId();
+                    xARCLane.push_back(xARC);
+                }
+
+            }
+            else
+            {
+                Lane * pLane1 = xroad1rightlane.at(nindex1);
+                Lane * pLane2 = xroad2rightlane.at(nindex2);
+                if((pLane1 == NULL)||(pLane2 == NULL))
+                {
+                    std::cout<<"Lane NULL"<<std::endl;
+                }
+                if(pLane1->GetType() != pLane2->GetType())
+                {
+                    std::cout<<"Type Not Rigth"<<std::endl;
+                }
+                iv::ARC xARC;
+                xARC.from = pLane1->GetId();
+                xARC.to = pLane2->GetId();
+                xARCLane.push_back(xARC);
+            }
+        }
+        else
+        {
+            int nindex1 = -1;
+            int nindex2 = -1;
+            for(i=0;i<xroad1rightlane.size();i++)
+            {
+                if(xroad1rightlane.at(i)->GetType() == "driving")
+                {
+                    nindex1 = i;
+                    break;
+                }
+            }
+            for(i=0;i<xroad2rightlane.size();i++)
+            {
+                if(xroad2rightlane.at(i)->GetType() == "driving")
+                {
+                    nindex2 = i;
+                    break;
+                }
+            }
+            if((nindex1<0)||(nindex2<0))
+            {
+                std::cout<<"can't find driving lane"<<std::endl;
+                return -3;
+            }
+            Lane * pLane1 = xroad1rightlane.at(nindex1);
+            Lane * pLane2 = xroad2rightlane.at(nindex2);
+            if((pLane1 == NULL)||(pLane2 == NULL))
+            {
+                std::cout<<"Lane NULL"<<std::endl;
+            }
+            if(pLane1->GetType() != pLane2->GetType())
+            {
+                std::cout<<"Type Not Rigth"<<std::endl;
+            }
+            iv::ARC xARC;
+            xARC.from = pLane1->GetId();
+            xARC.to = pLane2->GetId();
+            xARCLane.push_back(xARC);
+        }
+    }
+
+    std::cout<<"Lane Contact"<<std::endl;
+    for(i=0;i<xARCLane.size();i++)
+    {
+        std::cout<<" From "<<xARCLane.at(i).from<<" To"<<xARCLane.at(i).to<<std::endl;
+    }
+    std::cout<<"OpLane Contact"<<std::endl;
+    for(i=0;i<xARCOpLane.size();i++)
+    {
+        std::cout<<" From "<<xARCOpLane.at(i).from<<" To"<<xARCOpLane.at(i).to<<std::endl;
+    }
+
+    return 0;
+
+}
+
+std::vector<Road *> AutoRoadContact::GetRelaRoad(OpenDrive *pxodr, Road *pRoad)
+{
+    std::vector<Road *> xvectorRoadRela;
+    unsigned int i;
+    if(pRoad->GetPredecessor() != 0)
+    {
+        if(pRoad->GetPredecessor()->GetElementType() == "road")
+        {
+            std::string roadid = pRoad->GetPredecessor()->GetElementId();
+            Road * pRoadTem = xodrfunc::GetRoadByID(pxodr,roadid);
+            if(pRoadTem != 0)
+            {
+                xvectorRoadRela.push_back(pRoadTem);
+            }
+        }
+        if(pRoad->GetPredecessor()->GetElementType() == "junction")
+        {
+            std::string junctionid = pRoad->GetPredecessor()->GetElementId();
+            Junction * pJunction = xodrfunc::GetJunctionByID(pxodr,junctionid);
+            if(pJunction != 0)
+            {
+                unsigned int njucntionconcount = pJunction->GetJunctionConnectionCount();
+                for(i=0;i<njucntionconcount;i++)
+                {
+                    JunctionConnection * pJC = pJunction->GetJunctionConnection(i);
+                    if(pJC == NULL)continue;
+                    if(pJC->GetIncomingRoad() == pRoad->GetRoadId())
+                    {
+                        std::string roadid = pJC->GetConnectingRoad();
+                        Road * pRoadTem = xodrfunc::GetRoadByID(pxodr,roadid);
+                        if(pRoadTem != 0)
+                        {
+                            xvectorRoadRela.push_back(pRoadTem);
+                        }
+                    }
+                    else
+                    {
+                        if(pJC->GetConnectingRoad() == pRoad->GetRoadId())
+                        {
+                            std::string roadid = pJC->GetIncomingRoad();
+                            Road * pRoadTem = xodrfunc::GetRoadByID(pxodr,roadid);
+                            if(pRoadTem != 0)
+                            {
+                                xvectorRoadRela.push_back(pRoadTem);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+    if(pRoad->GetSuccessor() != 0)
+    {
+        if(pRoad->GetSuccessor()->GetElementType() == "road")
+        {
+            std::string roadid = pRoad->GetSuccessor()->GetElementId();
+            Road * pRoadTem = xodrfunc::GetRoadByID(pxodr,roadid);
+            if(pRoadTem != 0)
+            {
+                xvectorRoadRela.push_back(pRoadTem);
+            }
+        }
+        if(pRoad->GetSuccessor()->GetElementType() == "junction")
+        {
+            std::string junctionid = pRoad->GetSuccessor()->GetElementId();
+            Junction * pJunction = xodrfunc::GetJunctionByID(pxodr,junctionid);
+            if(pJunction != 0)
+            {
+                unsigned int njucntionconcount = pJunction->GetJunctionConnectionCount();
+                for(i=0;i<njucntionconcount;i++)
+                {
+                    JunctionConnection * pJC = pJunction->GetJunctionConnection(i);
+                    if(pJC == NULL)continue;
+                    if(pJC->GetIncomingRoad() == pRoad->GetRoadId())
+                    {
+                        std::string roadid = pJC->GetConnectingRoad();
+                        Road * pRoadTem = xodrfunc::GetRoadByID(pxodr,roadid);
+                        if(pRoadTem != 0)
+                        {
+                            xvectorRoadRela.push_back(pRoadTem);
+                        }
+                    }
+                    else
+                    {
+                        if(pJC->GetConnectingRoad() == pRoad->GetRoadId())
+                        {
+                            std::string roadid = pJC->GetIncomingRoad();
+                            Road * pRoadTem = xodrfunc::GetRoadByID(pxodr,roadid);
+                            if(pRoadTem != 0)
+                            {
+                                xvectorRoadRela.push_back(pRoadTem);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    return xvectorRoadRela;
+
+
+}
+
+bool AutoRoadContact::RoadToRoad(OpenDrive * pxodr,Road * pRoad1,bool bRoad1Start,Road * pRoad2,bool bRoad2Start,std::vector<Road *> & xvectorthroughroad)
+{
+    RoadLink * pLink;
+    if(bRoad1Start == false)
+    {
+        pLink = pRoad1->GetSuccessor();
+    }
+    else
+    {
+        pLink = pRoad1->GetPredecessor();
+    }
+
+    if(pLink->GetElementType() == "road")
+    {
+        std::string strroadid = pLink->GetElementId();
+        Road * pcenterroad = xodrfunc::GetRoadByID(pxodr,strroadid);
+
+    }
+    return false;
+}
+bool AutoRoadContact::IsExist(OpenDrive *pxodr, iv::RoadContactUnit xRCU)
+{
+    Road * pRoad1 = xRCU.mpRoad1;
+    Road * pRoad2 = xRCU.mpRoad2;
+    std::vector<Road *> xvectorRoad1Rela;
+    std::vector<Road *> xvectorRoad2Rela;
+    xvectorRoad1Rela = AutoRoadContact::GetRelaRoad(pxodr,pRoad1);
+    xvectorRoad2Rela = AutoRoadContact::GetRelaRoad(pxodr,pRoad2);
+
+    if((xRCU.mcontactype ==0)||(xRCU.mcontactype == 1))
+    {
+        if(pRoad1->GetPredecessor() == NULL)
+        {
+            return false;
+        }
+        RoadLink * pLink = pRoad1->GetPredecessor();
+        if(pLink->GetElementType() == "road")
+        {
+            Road * pRoadCenter = xodrfunc::GetRoadByID(pxodr,pLink->GetElementId());
+            if(pRoadCenter != 0)
+            {
+                if(pRoadCenter == pRoad2)
+                {
+                    return true;
+                }
+                else
+                {
+                    if(pLink->GetContactPoint() == "end")
+                    {
+                        RoadLink * pLinkCenter = pRoadCenter->GetPredecessor();
+                        if(pLinkCenter == NULL)
+                        {
+                            return false;
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    //Not turn
+    if(xRCU.mturnstraight != 0)
+    {
+        unsigned int i;
+        for(i=0;i<xvectorRoad2Rela.size();i++)
+        {
+            if(xvectorRoad2Rela[i] == pRoad1)
+            {
+                return true;
+            }
+        }
+        for(i=0;i<xvectorRoad1Rela.size();i++)
+        {
+            if(xvectorRoad1Rela[i] == pRoad2)
+            {
+                return true;
+            }
+        }
+    }
+    return false;
+}
+
+int AutoRoadContact::MakeAllContact(OpenDrive *pxodr, const double fDisTolerance)
+{
+    unsigned int nRoadCount = pxodr->GetRoadCount();
+    int i;
+    std::vector<iv::RoadContactUnit> xvectorRCU;
+    for(i=0;i<nRoadCount;i++)
+    {
+        Road * pnowRoad = pxodr->GetRoad(i);
+        unsigned int j;
+        for(j=0;j<nRoadCount;j++)
+        {
+            if(j != i)
+            {
+                Road * potherRoad = pxodr->GetRoad(j);
+                int contactype;
+                int turnstraight;
+                std::vector<iv::ARC> xARCLane,xARCOpLane;
+                int nARCRtn = CalcContact(pnowRoad,potherRoad,contactype,turnstraight,xARCLane,xARCOpLane);
+                if(nARCRtn == 0)
+                {
+                    std::cout<<" Road:"<<pnowRoad->GetRoadId()<<" Road:"<<potherRoad->GetRoadId()
+                            <<" contact type: "<<turnstraight<<std::endl;
+
+                    if(xARCLane.size()>0 || (xARCOpLane.size()>0))
+                    {
+                        iv::RoadContactUnit rcu;
+                        rcu.mARCLane = xARCLane;
+                        rcu.mARCOpLane = xARCOpLane;
+                        rcu.mcontactype = contactype;
+                        rcu.mturnstraight = turnstraight;
+                        rcu.mpRoad1 = pnowRoad;
+                        rcu.mpRoad2 = potherRoad;
+                        xvectorRCU.push_back(rcu);
+                    }
+                }
+            }
+        }
+    }
+
+    xodrdijkstra * pxodrdj = new xodrdijkstra(pxodr);
+
+    //Delete Repeate strait
+    for(i=0;i<xvectorRCU.size();i++)
+    {
+        unsigned int j;
+        for(j=(i+1);j<xvectorRCU.size();j++)
+        {
+            if((xvectorRCU[i].mpRoad1 == xvectorRCU[j].mpRoad2)&&(xvectorRCU[i].mpRoad2 == xvectorRCU[j].mpRoad1))
+            {
+                if((xvectorRCU[i].mturnstraight == 1)&&(xvectorRCU[j].mturnstraight == 1))
+                {
+                    std::cout<<"because repeate straight.erase Road:"<<xvectorRCU[j].mpRoad1->GetRoadId()
+                            <<" Road:"<<xvectorRCU[j].mpRoad2->GetRoadId()
+                            <<" contact type: "<<xvectorRCU[j].mturnstraight<<std::endl;
+                    xvectorRCU.erase(xvectorRCU.begin()+j);
+                    j = j-1;
+                }
+            }
+        }
+    }
+
+    int RCUSize = xvectorRCU.size();
+    for(i=0;i<xvectorRCU.size();i++)
+    {
+        int nlr1 = 0;
+        int nlr2 = 0;
+        if((xvectorRCU[i].mcontactype == 0)||(xvectorRCU[i].mcontactype == 1))
+        {
+            nlr1 = 1;
+        }
+        else
+        {
+            nlr1 = 2;
+        }
+
+        if((xvectorRCU[i].mcontactype == 1)||(xvectorRCU[i].mcontactype == 3))
+        {
+            nlr2 = 1;
+        }
+        else
+        {
+            nlr2 = 2;
+        }
+
+        bool bPath;
+        Road * pRoad1 = xvectorRCU[i].mpRoad1;
+        Road * pRoad2 = xvectorRCU[i].mpRoad2;
+        std::vector<int> xvectorpath = pxodrdj->getpath(atoi(pRoad1->GetRoadId().data()),nlr1,
+                         atoi(pRoad2->GetRoadId().data()),nlr2,
+                         bPath);
+        if(bPath)
+        {
+            if((xvectorpath.size()==2)||(xvectorpath.size() == 3))
+            {
+               std::vector<pathsection> xvp = pxodrdj->getgpspoint(atoi(pRoad1->GetRoadId().data()),nlr1,
+                                                                   atoi(pRoad2->GetRoadId().data()),nlr2,
+                                                                   xvectorpath,1);
+                unsigned int j;
+                std::cout<<"path have ";
+                for(j=0;j<xvp.size();j++)
+                {
+                    std::cout<<j<<": "<<xvp[j].mroadid<<" ";
+                }
+                std::cout<<std::endl;
+                xvectorRCU.erase(xvectorRCU.begin()+i);
+                i = i-1;
+
+                    if(xvp.size() == 3)
+                    {
+                        int nroadid = xvp[1].mroadid;
+                        std::cout<<" found junction road . id: "<<nroadid<<std::endl;
+                        int k = 0;
+                        bool bdel = false;
+                        for(k=0;k<xvectorRCU.size();k++)
+                        {
+                            if((atoi(xvectorRCU[k].mpRoad1->GetRoadId().data()) == nroadid)||(atoi(xvectorRCU[k].mpRoad2->GetRoadId().data()) == nroadid))
+                            {
+                               xvectorRCU.erase(xvectorRCU.begin() + k);
+                               k = k-1;
+                               bdel = true;
+                            }
+                        }
+                        if(bdel)
+                        {
+                            i = -1;
+                        }
+
+                    }
+
+            }
+        }
+
+    }
+
+    std::cout<<" RCU Size is "<<xvectorRCU.size()<<std::endl;
+
+//    for(i=0;i<xvectorRCU.size();i++)
+    std::vector<std::vector<iv::roadcontact>> xvectorrcs;
+    for(i=0;i<xvectorRCU.size();i++)
+    {
+        std::vector<iv::roadcontact> xvectorrc;
+        xvectorrc.clear();
+        iv::roadcontact rc;
+        if((xvectorRCU[i].mcontactype == 0) ||(xvectorRCU[i].mcontactype == 1))
+        {
+            rc.mncon1 = 0;
+        }
+        else
+        {
+            rc.mncon1 = 1;
+        }
+        if((xvectorRCU[i].mcontactype == 0) ||(xvectorRCU[i].mcontactype == 2))
+        {
+            rc.mncon2 = 0;
+        }
+        else
+        {
+            rc.mncon2 = 1;
+        }
+        rc.mnroad1id = atoi(xvectorRCU[i].mpRoad1->GetRoadId().data());
+        rc.mnroad2id = atoi(xvectorRCU[i].mpRoad2->GetRoadId().data());
+        unsigned int j;
+        for(j=0;j<xvectorRCU[i].mARCLane.size();j++)
+        {
+             iv::lanecontact lt;
+             lt.ml1 = xvectorRCU[i].mARCLane[j].from;
+             lt.ml2 = xvectorRCU[i].mARCLane[j].to;
+             rc.mvectorlc.push_back(lt);
+        }
+        for(j=0;j<xvectorRCU[i].mARCOpLane.size();j++)
+        {
+             iv::lanecontact lt;
+             lt.ml1 = xvectorRCU[i].mARCOpLane[j].from;
+             lt.ml2 = xvectorRCU[i].mARCOpLane[j].to;
+             rc.mvectorlcop.push_back(lt);
+        }
+        xvectorrc.push_back(rc);
+        xvectorrcs.push_back(xvectorrc);
+//        CreateContactRoad(xvectorrc,pxodr,xvectorRCU[i].mturnstraight);
+    }
+
+    for(i=0;i<xvectorrcs.size();i++)
+    {
+        CreateContactRoad(xvectorrcs[i],pxodr,xvectorRCU[i].mturnstraight);
+    }
+
+    return 0;
+}
+
+void AutoRoadContact::CreateContactRoad(std::vector<iv::roadcontact> & xvectorrc,OpenDrive * pxodr,int nConType)
+{
+    if(xvectorrc.size()<1)return;
+
+    Road * p1, *p2;
+    int nroad1index;
+    int nroad2index;
+
+    int i;
+    bool bhavep1 = false;
+    bool bhavep2 = false;
+    for(i=0;i<pxodr->GetRoadCount();i++)
+    {
+        if(xvectorrc[0].mnroad1id == atoi(pxodr->GetRoad(i)->GetRoadId().data()))
+        {
+            bhavep1 = true;
+            p1 = pxodr->GetRoad(i);
+            nroad1index = i;
+            break;
+        }
+    }
+
+    if(bhavep1 == false)
+    {
+        std::cout<<"Road not found"<<std::endl;
+        return;
+    }
+
+    double off1,off2;
+
+
+
+    for(i=0;i<pxodr->GetRoadCount();i++)
+    {
+        if(xvectorrc[0].mnroad2id == atoi(pxodr->GetRoad(i)->GetRoadId().data()))
+        {
+            bhavep2 = true;
+            p2 = pxodr->GetRoad(i);
+            nroad2index = i;
+            break;
+        }
+    }
+
+    if(bhavep2 == false)
+    {
+        std::cout<<"Road not found"<<std::endl;
+        return;
+    }
+
+    if(xvectorrc[0].mvectorlc.size()<1)
+    {
+        std::cout<<"No Lane Contact."<<std::endl;;
+        return;
+    }
+
+    double startx,starty,starthdg;
+    double endx,endy,endhdg;
+
+    double startheight,endheight;
+
+    bool bFromstart,bTostart;
+    if(xvectorrc[0].mncon1 == 0)
+    {
+        bFromstart = true;
+        starthdg = p1->GetGeometryBlock(0)->GetGeometryAt(0)->GetHdg();
+        off1 = MainWindow::getoff(p1,xvectorrc[0].mvectorlc[0].ml1,true);
+        startx = p1->GetGeometryBlock(0)->GetGeometryAt(0)->GetX();
+        starty = p1->GetGeometryBlock(0)->GetGeometryAt(0)->GetY();
+
+        if(p1->GetLaneOffsetCount()>0)
+        {
+            off1 = off1 - p1->GetLaneOffset(0)->Geta();
+        }
+        startx = startx + off1 * cos(starthdg -M_PI/2.0);
+        starty = starty + off1 * sin(starthdg -M_PI/2.0);
+
+        startheight = 0;
+        if(p1->GetElevationCount()>0)
+        {
+            startheight = p1->GetElevation(0)->GetA();
+        }
+
+ //       if(mvectorrc[0].mvectorlc[0].ml1<0)
+            starthdg = starthdg +M_PI;if(starthdg >=2.0*M_PI)starthdg = starthdg -2.0*M_PI;
+    }
+    else
+    {
+        bFromstart = false;
+        if(GetEndPoint(p1,startx,starty,starthdg) != 0)
+        {
+            std::cout<<"Get End Point Error."<<std::endl;
+            return;
+        }
+        off1 = MainWindow::getoff(p1,xvectorrc[0].mvectorlc[0].ml1,false);
+        if(p1->GetLaneOffsetCount()>0)
+        {
+            LaneOffset * pLO = p1->GetLaneOffset(p1->GetLaneOffsetCount()-1);
+            double froadlen = p1->GetRoadLength();
+            double sdis = froadlen - pLO->GetS();
+            double foffset = pLO->Geta() + pLO->Getb()*(sdis) + pLO->Getc() * sdis * sdis
+                    +pLO->Getd() * sdis * sdis * sdis;
+            off1 = off1 - foffset;
+        }
+        startx = startx + off1 * cos(starthdg -M_PI/2.0);
+        starty = starty + off1 * sin(starthdg -M_PI/2.0);
+
+
+
+        startheight = 0;
+        if(p1->GetElevationCount()>0)
+        {
+            startheight = p1->GetElevation(0)->GetA()
+                    +p1->GetElevation(0)->GetB() * pow(p1->GetRoadLength(),1)
+                    +p1->GetElevation(0)->GetC() * pow(p1->GetRoadLength(),2)
+                    +p1->GetElevation(0)->GetD() * pow(p1->GetRoadLength(),3);
+        }
+    }
+
+    if(xvectorrc[0].mncon2 == 0)
+    {
+        bTostart = true;
+        off2 = MainWindow::getoff(p2,xvectorrc[0].mvectorlc[0].ml2,true);
+        endx = p2->GetGeometryBlock(0)->GetGeometryAt(0)->GetX();
+        endy = p2->GetGeometryBlock(0)->GetGeometryAt(0)->GetY();
+        endhdg = p2->GetGeometryBlock(0)->GetGeometryAt(0)->GetHdg();
+
+        if(p2->GetLaneOffsetCount()>0)
+        {
+            off2 = off2 - p2->GetLaneOffset(0)->Geta();
+        }
+        endx = endx + off2 * cos(endhdg -M_PI/2.0);
+        endy = endy + off2 * sin(endhdg -M_PI/2.0);
+
+        endheight = 0;
+        if(p2->GetElevationCount()>0)
+        {
+            endheight = p2->GetElevation(0)->GetA();
+        }
+    }
+    else
+    {
+        bTostart = false;
+        off2 = MainWindow::getoff(p2,xvectorrc[0].mvectorlc[0].ml2,false);
+        if(GetEndPoint(p2,endx,endy,endhdg) != 0)
+        {
+            std::cout<<"get end error."<<std::endl;
+            return;
+        }
+        if(p2->GetLaneOffsetCount()>0)
+        {
+            LaneOffset * pLO = p2->GetLaneOffset(p2->GetLaneOffsetCount()-1);
+            double froadlen = p2->GetRoadLength();
+            double sdis = froadlen - pLO->GetS();
+            double foffset = pLO->Geta() + pLO->Getb()*(sdis) + pLO->Getc() * sdis * sdis
+                    +pLO->Getd() * sdis * sdis * sdis;
+            off2 = off2 - foffset;
+        }
+        endx = endx + off2 * cos(endhdg -M_PI/2.0);
+        endy = endy + off2 * sin(endhdg -M_PI/2.0);
+        endhdg = endhdg +M_PI;if(endhdg >=2.0*M_PI)endhdg = endhdg -2.0*M_PI;
+
+        endheight = 0;
+        if(p2->GetElevationCount()>0)
+        {
+            endheight = p2->GetElevation(0)->GetA()
+                    +p2->GetElevation(0)->GetB() * pow(p2->GetRoadLength(),1)
+                    +p2->GetElevation(0)->GetC() * pow(p2->GetRoadLength(),2)
+                    +p2->GetElevation(0)->GetD() * pow(p2->GetRoadLength(),3);
+        }
+    }
+
+
+    //Create Geo
+    double R = 6.0;
+    std::vector<geobase> xvectorgeo;
+    std::vector<geobase> xvectorgeo1,xvectorgeo2;
+    switch(nConType)
+    {
+    case 0:
+        xvectorgeo = geofit::CreateTurnGeo(startx,starty,starthdg,endx,endy,endhdg,R);
+        break;
+    case 1:
+        xvectorgeo = geofit::CreateLineGeo(startx,starty,starthdg,endx,endy,endhdg);
+        break;
+    case 2:
+        xvectorgeo = geofit::CreateUTurnGeo(startx,starty,starthdg,endx,endy,endhdg,R);
+        break;
+    default:
+        break;
+    }
+
+    if(nConType == 2)
+    {
+        for(i=0;i<xvectorgeo.size()/2;i++)
+        {
+            xvectorgeo1.push_back(xvectorgeo.at(i));
+        }
+        for(i=xvectorgeo.size()/2;i<xvectorgeo.size();i++)
+        {
+            xvectorgeo2.push_back(xvectorgeo.at(i));
+        }
+    }
+
+    if(xvectorgeo.size() == 0)
+    {
+        std::cout<<"Waring Create Road Fail."<<std::endl;
+        return;
+    }
+
+    double xroadlen = 0;
+
+    if(nConType != 2)
+    {
+        for(i=0;i<xvectorgeo.size();i++)xroadlen = xroadlen + xvectorgeo[i].mfLen;
+
+        pxodr->AddRoad("",xroadlen, QString::number(gw->CreateRoadID()).toStdString(),"-1");
+        Road * p = pxodr->GetRoad(pxodr->GetRoadCount() - 1);
+
+        p->AddElevation(0,startheight,(endheight-startheight)/xroadlen,0,0);
+
+        p1 = pxodr->GetRoad(nroad1index);
+        p2 = pxodr->GetRoad(nroad2index);
+
+        double s = 0;
+        int j;
+        j= 0;
+        for(j=0;j<xvectorgeo.size();j++)
+        {
+            p->AddGeometryBlock();
+            GeometryBlock * pgb = p->GetGeometryBlock(j);
+
+            geobase * pline;
+            geobase * pbez;
+            geobase * parc;
+            switch(xvectorgeo[j].mnType)
+            {
+            case 0:
+                pline = &xvectorgeo[j];
+                pgb->AddGeometryLine(s,pline->mfX,pline->mfY,pline->mfHdg,pline->mfLen);
+                break;
+            case 1:
+                parc = &xvectorgeo[j];
+                pgb->AddGeometryArc(s,parc->mfX,parc->mfY,parc->mfHdgStart,parc->mfLen,1.0/parc->mR);
+                break;
+            case 2:
+                pbez = &xvectorgeo[j];
+                std::cout<<"u0:"<<pbez->mfu[0]<<std::endl;
+                pgb->AddGeometryParamPoly3(s,pbez->mfX,pbez->mfY,
+                                           pbez->mfHdg,pbez->mfLen,pbez->mfu[0],
+                        pbez->mfu[1],pbez->mfu[2],pbez->mfu[3],pbez->mfv[0],
+                        pbez->mfv[1],pbez->mfv[2],pbez->mfv[3]);
+                break;
+            }
+            s = s + xvectorgeo[j].mfLen;
+        }
+
+        p->AddLaneSection(0);
+        LaneSection * pLS = p->GetLaneSection(0);
+        pLS->SetS(0);
+        pLS->AddLane(0,0,"none",false);
+
+        double * pswidth,*pewidth;
+        std::vector<std::string> strvectorlanetype;
+        int nlanecount = xvectorrc[0].mvectorlc.size();
+        pswidth = new double[nlanecount];
+        pewidth = new double[nlanecount];
+        std::shared_ptr<double> ppswidth,ppewidth;
+        ppswidth.reset(pswidth);
+        ppewidth.reset(pewidth);
+
+        for(i=0;i<nlanecount;i++)
+        {
+            pswidth[i] =  gw->getlanewidth(p1,xvectorrc[0].mvectorlc.at(i).ml1,bFromstart);
+            strvectorlanetype.push_back(gw->getlanetype(p1,xvectorrc[0].mvectorlc.at(i).ml1,bFromstart));
+
+        }
+        for(i=0;i<nlanecount;i++)
+        {
+            pewidth[i] =  gw->getlanewidth(p2,xvectorrc[0].mvectorlc.at(i).ml2,bTostart);
+        }
+
+        double * pa,*pb;
+        pa = new double[nlanecount];
+        pb = new double[nlanecount];
+        std::shared_ptr<double> ppa,ppb;
+        ppa.reset(pa);
+        ppb.reset(pb);
+
+        for(i=0;i<nlanecount;i++)
+        {
+            pa[i] = pswidth[i];
+            pb[i] = (pewidth[i] - pa[i])/xroadlen;
+        }
+
+        for(i=0;i<nlanecount;i++)
+        {
+            pLS->AddLane(-1,(i+1)*(-1),strvectorlanetype[i],false,false);
+            Lane * pLL = pLS->GetLane(pLS->GetLaneCount() - 1);
+
+            pLL->AddWidthRecord(0,pa[i],pb[i],
+                                0,0);
+            pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
+
+        }
+
+        int noplanecount = xvectorrc[0].mvectorlcop.size();
+        if(noplanecount > 0)
+        {
+            pswidth = new double[noplanecount];
+            pewidth = new double[noplanecount];
+            ppswidth.reset(pswidth);
+            ppewidth.reset(pewidth);
+
+            strvectorlanetype.clear();
+            for(i=0;i<noplanecount;i++)
+            {
+                pswidth[i] =  gw->getlanewidth(p1,xvectorrc[0].mvectorlcop.at(i).ml1,bFromstart);
+                strvectorlanetype.push_back(gw->getlanetype(p1,xvectorrc[0].mvectorlcop.at(i).ml1,bFromstart));
+            }
+            for(i=0;i<noplanecount;i++)
+            {
+                pewidth[i] =  gw->getlanewidth(p2,xvectorrc[0].mvectorlcop.at(i).ml2,bTostart);
+            }
+
+            pa = new double[noplanecount];
+            pb = new double[noplanecount];
+            ppa.reset(pa);
+            ppb.reset(pb);
+
+            for(i=0;i<noplanecount;i++)
+            {
+                pa[i] = pswidth[i];
+                pb[i] = (pewidth[i] - pa[i])/xroadlen;
+            }
+
+            for(i=0;i<noplanecount;i++)
+            {
+                pLS->AddLane(1,(i+1),strvectorlanetype[i],false,false);
+                Lane * pLL = pLS->GetLane(pLS->GetLaneCount() - 1);
+
+                pLL->AddWidthRecord(0,pa[i],pb[i],
+                                    0,0);
+                pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
+
+            }
+        }
+
+    }
+    else
+    {
+        double xroadlen1 = 0;
+        double xroadlen2 = 0;
+        for(i=0;i<xvectorgeo1.size();i++)xroadlen1 = xroadlen1 + xvectorgeo1[i].mfLen;
+        for(i=0;i<xvectorgeo2.size();i++)xroadlen2 = xroadlen2 + xvectorgeo2[i].mfLen;
+
+        int index1 = pxodr->AddRoad("",xroadlen1, QString::number(gw->CreateRoadID()).toStdString(),"-1");
+        int index2 = pxodr->AddRoad("",xroadlen2, QString::number(gw->CreateRoadID()).toStdString(),"-1");
+        Road * proad2 = pxodr->GetRoad(index2);
+        Road * proad1 = pxodr->GetRoad(index1);
+
+        proad1->AddElevation(0,startheight,(endheight-startheight)/(xroadlen1+xroadlen2),0,0);
+        proad2->AddElevation(0,startheight+xroadlen1*(endheight-startheight)/(xroadlen1+xroadlen2),
+                             (endheight-startheight)/(xroadlen1+xroadlen2),
+                             0,0);
+
+        p1 = pxodr->GetRoad(nroad1index);
+        p2 = pxodr->GetRoad(nroad2index);
+
+//        OpenDrive * px = &mxodr;
+        double s = 0;
+        int j;
+        j= 0;
+        for(j=0;j<xvectorgeo1.size();j++)
+        {
+            proad1->AddGeometryBlock();
+            GeometryBlock * pgb = proad1->GetGeometryBlock(j);
+
+            geobase * pline;
+            geobase * pbez;
+            geobase * parc;
+            switch(xvectorgeo1[j].mnType)
+            {
+            case 0:
+                pline = &xvectorgeo1[j];
+                pgb->AddGeometryLine(s,pline->mfX,pline->mfY,pline->mfHdg,pline->mfLen);
+                break;
+            case 1:
+                parc = &xvectorgeo1[j];
+                pgb->AddGeometryArc(s,parc->mfX,parc->mfY,parc->mfHdgStart,parc->mfLen,1.0/parc->mR);
+                break;
+            case 2:
+                pbez = &xvectorgeo1[j];
+                std::cout<<"u0:"<<pbez->mfu[0]<<std::endl;
+                pgb->AddGeometryParamPoly3(s,pbez->mfX,pbez->mfY,
+                                           pbez->mfHdg,pbez->mfLen,pbez->mfu[0],
+                        pbez->mfu[1],pbez->mfu[2],pbez->mfu[3],pbez->mfv[0],
+                        pbez->mfv[1],pbez->mfv[2],pbez->mfv[3]);
+                break;
+            }
+            s = s + xvectorgeo1[j].mfLen;
+        }
+
+        s=0.0;
+        for(j=0;j<xvectorgeo2.size();j++)
+        {
+            proad2->AddGeometryBlock();
+            GeometryBlock * pgb = proad2->GetGeometryBlock(j);
+
+            geobase * pline;
+            geobase * pbez;
+            geobase * parc;
+            switch(xvectorgeo2[j].mnType)
+            {
+            case 0:
+                pline = &xvectorgeo2[j];
+                pgb->AddGeometryLine(s,pline->mfX,pline->mfY,pline->mfHdg,pline->mfLen);
+                break;
+            case 1:
+                parc = &xvectorgeo2[j];
+                pgb->AddGeometryArc(s,parc->mfX,parc->mfY,parc->mfHdgStart,parc->mfLen,1.0/parc->mR);
+                break;
+            case 2:
+                pbez = &xvectorgeo2[j];
+                std::cout<<"u0:"<<pbez->mfu[0]<<std::endl;
+                pgb->AddGeometryParamPoly3(s,pbez->mfX,pbez->mfY,
+                                           pbez->mfHdg,pbez->mfLen,pbez->mfu[0],
+                        pbez->mfu[1],pbez->mfu[2],pbez->mfu[3],pbez->mfv[0],
+                        pbez->mfv[1],pbez->mfv[2],pbez->mfv[3]);
+                break;
+            }
+            s = s + xvectorgeo2[j].mfLen;
+        }
+
+        proad1->AddLaneSection(0);
+        LaneSection * pLS1 = proad1->GetLaneSection(0);
+        pLS1->SetS(0);
+        pLS1->AddLane(0,0,"none",false);
+
+        proad2->AddLaneSection(0);
+        LaneSection * pLS2 = proad2->GetLaneSection(0);
+        pLS2->SetS(0);
+        pLS2->AddLane(0,0,"none",false);
+
+        double * pswidth,*pewidth;
+        int nlanecount = xvectorrc[0].mvectorlc.size();
+        std::vector<std::string> strvectorlanetype;
+        pswidth = new double[nlanecount];
+        pewidth = new double[nlanecount];
+        std::shared_ptr<double> ppswidth,ppewidth;
+        ppswidth.reset(pswidth);
+        ppewidth.reset(pewidth);
+
+        for(i=0;i<nlanecount;i++)
+        {
+            pswidth[i] =  gw->getlanewidth(p1,xvectorrc[0].mvectorlc.at(i).ml1,bFromstart);
+            strvectorlanetype.push_back(gw->getlanetype(p1,xvectorrc[0].mvectorlc.at(i).ml1,bFromstart));
+
+        }
+        for(i=0;i<nlanecount;i++)
+        {
+            pewidth[i] =  gw->getlanewidth(p2,xvectorrc[0].mvectorlc.at(i).ml2,bTostart);
+        }
+
+        double * pa,*pb;
+        pa = new double[nlanecount];
+        pb = new double[nlanecount];
+        std::shared_ptr<double> ppa,ppb;
+        ppa.reset(pa);
+        ppb.reset(pb);
+
+        for(i=0;i<nlanecount;i++)
+        {
+            pa[i] = pswidth[i];
+            pb[i] = (pewidth[i] - pa[i])/(xroadlen1+xroadlen2);
+        }
+
+        for(i=0;i<nlanecount;i++)
+        {
+            pLS1->AddLane(-1,(i+1)*(-1),strvectorlanetype[i],false,false);
+            Lane * pLL = pLS1->GetLane(pLS1->GetLaneCount() - 1);
+
+            pLL->AddWidthRecord(0,pa[i],pb[i],
+                                0,0);
+            pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
+
+            pLS2->AddLane(-1,(i+1)*(-1),strvectorlanetype[i],false,false);
+            pLL = pLS2->GetLane(pLS2->GetLaneCount() - 1);
+
+            pLL->AddWidthRecord(0,pa[i]+pb[i]*xroadlen1 ,pb[i],
+                                0,0);
+            pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
+
+        }
+        int noplanecount = xvectorrc[0].mvectorlcop.size();
+        if(noplanecount > 0)
+        {
+            pswidth = new double[noplanecount];
+            pewidth = new double[noplanecount];
+            ppswidth.reset(pswidth);
+            ppewidth.reset(pewidth);
+
+            strvectorlanetype.clear();
+            for(i=0;i<noplanecount;i++)
+            {
+                pswidth[i] =  gw->getlanewidth(p1,xvectorrc[0].mvectorlcop.at(i).ml1,bFromstart);
+                strvectorlanetype.push_back(gw->getlanetype(p1,xvectorrc[0].mvectorlcop.at(i).ml1,bFromstart));
+            }
+            for(i=0;i<noplanecount;i++)
+            {
+                pewidth[i] =  gw->getlanewidth(p2,xvectorrc[0].mvectorlcop.at(i).ml2,bTostart);
+            }
+
+            pa = new double[noplanecount];
+            pb = new double[noplanecount];
+            ppa.reset(pa);
+            ppb.reset(pb);
+
+            for(i=0;i<noplanecount;i++)
+            {
+                pa[i] = pswidth[i];
+                pb[i] = (pewidth[i] - pa[i])/xroadlen;
+            }
+
+            for(i=0;i<noplanecount;i++)
+            {
+                pLS1->AddLane(1,(i+1),strvectorlanetype[i],false,false);
+                Lane * pLL = pLS1->GetLane(pLS1->GetLaneCount() - 1);
+
+                pLL->AddWidthRecord(0,pa[i],pb[i],
+                                    0,0);
+                pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
+
+                pLS2->AddLane(1,(i+1),strvectorlanetype[i],false,false);
+                pLL = pLS2->GetLane(pLS2->GetLaneCount() - 1);
+
+                pLL->AddWidthRecord(0,pa[i]+pb[i]*xroadlen1 ,pb[i],
+                                    0,0);
+                pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
+
+            }
+        }
+
+
+    }
+
+
+}
+
+

+ 53 - 0
src/tool/map_lanetoxodr/autoroadcontact.h

@@ -0,0 +1,53 @@
+#ifndef AUTOROADCONTACT_H
+#define AUTOROADCONTACT_H
+
+#include "OpenDrive/OpenDrive.h"
+
+#include "rawtype.h"
+#include "geofit.h"
+
+
+namespace  iv {
+struct ARC
+{
+    int from;
+    int to;
+};
+
+struct RoadContactUnit
+{
+    Road * mpRoad1;
+    Road * mpRoad2;
+    int mcontactype;
+    int mturnstraight;
+    std::vector<iv::ARC> mARCLane;
+    std::vector<iv::ARC> mARCOpLane;
+};
+}
+
+class AutoRoadContact
+{
+public:
+    AutoRoadContact();
+
+    static int CalcContact(Road * pRoad1,Road * pRoad2,int & contacttype,int & turnstraight,
+                           std::vector<iv::ARC> & xARCLane,std::vector<iv::ARC> & xARCOpLane,const double fDisTolerance = 300.0);
+
+    static int MakeAllContact(OpenDrive * pxodr,const double fDisTolerance = 30.0);
+
+    static bool IsExist(OpenDrive * pxodr,iv::RoadContactUnit xRCU);
+
+//    static int CreateContactRoad(Road * pRoad1,Road * pRoad2,int  contacttype,int turnstraight,
+//                                 std::vector<iv::ARC> & xARCLane,std::vector<iv::ARC> & xARCOpLane);
+
+
+private:
+    static std::vector<Road * > GetRelaRoad(OpenDrive * pxodr,Road * pRoad);
+
+    static bool RoadToRoad(OpenDrive * pxodr,Road * pRoad1,bool bRoad1Start,Road * pRoad2,bool bRoad2Start,std::vector<Road *> & xvectorthroughroad);
+
+    static void CreateContactRoad(std::vector<iv::roadcontact> & xvectorrc,OpenDrive * pxodr,int nConType);
+
+};
+
+#endif // AUTOROADCONTACT_H

+ 108 - 0
src/tool/map_lanetoxodr/dialogdrawroad.cpp

@@ -0,0 +1,108 @@
+#include "dialogdrawroad.h"
+#include "ui_dialogdrawroad.h"
+
+#include "mainwindow.h"
+
+extern MainWindow * gw;
+
+DialogDrawRoad::DialogDrawRoad(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::DialogDrawRoad)
+{
+    ui->setupUi(this);
+
+    ui->comboBox_Type->addItem("两点创建Line");
+    ui->comboBox_Type->addItem("航向和长度创建Line");
+    ui->comboBox_Type->addItem("两点和半径创建Arc");
+    ui->comboBox_Type->addItem("点和半径创建Arc");
+
+    ui->comboBox_Type->setCurrentIndex(0);
+
+    connect(gw,SIGNAL(CurrentPosition(double,double)),this,SLOT(onCurrentPos(double,double)));
+
+    setWindowTitle("Draw Road");
+}
+
+DialogDrawRoad::~DialogDrawRoad()
+{
+    delete ui;
+}
+
+void DialogDrawRoad::on_comboBox_Type_currentIndexChanged(int index)
+{
+    switch (index) {
+    case 0:
+        {
+            ui->label_Point1->setText("Point1(X Y)");
+            ui->label_Point2->setText("Point2(X Y)");
+            ui->checkBox_point2->setVisible(true);
+            ui->label_Point2->setVisible(true);
+            ui->lineEdit_point2x->setVisible(true);
+            ui->lineEdit_point2y->setVisible(true);
+            ui->label_Radius->setVisible(false);
+            ui->lineEdit_Radius->setVisible(false);
+            ui->lineEdit_hdgrange->setVisible(false);
+        }
+        break;
+    case 1:
+        {
+            ui->label_Point1->setText("Point(X Y)");
+            ui->label_Point2->setText("hdg&Len(hdg len)");
+            ui->checkBox_point2->setVisible(false);
+            ui->label_Point2->setVisible(true);
+            ui->lineEdit_point2x->setVisible(true);
+            ui->lineEdit_point2y->setVisible(true);
+            ui->label_Radius->setVisible(false);
+            ui->lineEdit_Radius->setVisible(false);
+            ui->lineEdit_hdgrange->setVisible(false);
+        }
+        break;
+    case 2:
+        {
+            ui->label_Point1->setText("Point1(X Y)");
+            ui->label_Point2->setText("Point2(X Y)");
+            ui->label_Radius->setText("Radius");
+            ui->checkBox_point2->setVisible(true);
+            ui->label_Point2->setVisible(true);
+            ui->lineEdit_point2x->setVisible(true);
+            ui->lineEdit_point2y->setVisible(true);
+            ui->label_Radius->setVisible(true);
+            ui->lineEdit_Radius->setVisible(true);
+            ui->lineEdit_hdgrange->setVisible(false);
+        }
+        break;
+    case 3:
+        {
+            ui->label_Point1->setText("Point(X Y");
+            ui->label_Radius->setText("Radius&Range");
+            ui->checkBox_point2->setVisible(false);
+            ui->label_Point2->setVisible(false);
+            ui->lineEdit_point2x->setVisible(false);
+            ui->lineEdit_point2y->setVisible(false);
+            ui->label_Radius->setVisible(true);
+            ui->lineEdit_Radius->setVisible(true);
+            ui->lineEdit_hdgrange->setVisible(true);
+        }
+        break;
+    default:
+        break;
+    }
+}
+
+void DialogDrawRoad::onCurrentPos(double x, double y)
+{
+    if(ui->checkBox_point1->isChecked())
+    {
+        ui->lineEdit_point1x->setText(QString::number(x));
+        ui->lineEdit_point1y->setText(QString::number(y));
+        ui->checkBox_point1->setChecked(false);
+    }
+    if(ui->checkBox_point2->isChecked())
+    {
+        ui->lineEdit_point2x->setText(QString::number(x));
+        ui->lineEdit_point2y->setText(QString::number(y));
+        ui->checkBox_point2->setChecked(false);
+    }
+    ui->lineEdit_newpointx->setText(QString::number(x));
+    ui->lineEdit_newpointy->setText(QString::number(y));
+}

+ 30 - 0
src/tool/map_lanetoxodr/dialogdrawroad.h

@@ -0,0 +1,30 @@
+#ifndef DIALOGDRAWROAD_H
+#define DIALOGDRAWROAD_H
+
+#include <QDialog>
+
+
+namespace Ui {
+class DialogDrawRoad;
+}
+
+class DialogDrawRoad : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit DialogDrawRoad(QWidget *parent = nullptr);
+    ~DialogDrawRoad();
+
+
+
+private slots:
+    void on_comboBox_Type_currentIndexChanged(int index);
+
+    void onCurrentPos(double x,double y);
+
+private:
+    Ui::DialogDrawRoad *ui;
+};
+
+#endif // DIALOGDRAWROAD_H

+ 266 - 0
src/tool/map_lanetoxodr/dialogdrawroad.ui

@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DialogDrawRoad</class>
+ <widget class="QDialog" name="DialogDrawRoad">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>891</width>
+    <height>648</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <widget class="QPushButton" name="pushButton_Draw">
+   <property name="geometry">
+    <rect>
+     <x>710</x>
+     <y>566</y>
+     <width>141</width>
+     <height>51</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Draw</string>
+   </property>
+  </widget>
+  <widget class="QComboBox" name="comboBox_Type">
+   <property name="geometry">
+    <rect>
+     <x>290</x>
+     <y>257</y>
+     <width>291</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label">
+   <property name="geometry">
+    <rect>
+     <x>200</x>
+     <y>257</y>
+     <width>81</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Type</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="pushButton_Create">
+   <property name="geometry">
+    <rect>
+     <x>690</x>
+     <y>247</y>
+     <width>141</width>
+     <height>51</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Create</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_Point1">
+   <property name="geometry">
+    <rect>
+     <x>62</x>
+     <y>40</y>
+     <width>211</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Point1</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_point1x">
+   <property name="geometry">
+    <rect>
+     <x>289</x>
+     <y>36</y>
+     <width>141</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_point1y">
+   <property name="geometry">
+    <rect>
+     <x>469</x>
+     <y>35</y>
+     <width>141</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_point2y">
+   <property name="geometry">
+    <rect>
+     <x>469</x>
+     <y>109</y>
+     <width>141</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_Point2">
+   <property name="geometry">
+    <rect>
+     <x>65</x>
+     <y>114</y>
+     <width>211</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Point2</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_point2x">
+   <property name="geometry">
+    <rect>
+     <x>289</x>
+     <y>110</y>
+     <width>141</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QCheckBox" name="checkBox_point1">
+   <property name="geometry">
+    <rect>
+     <x>679</x>
+     <y>38</y>
+     <width>92</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Select</string>
+   </property>
+  </widget>
+  <widget class="QCheckBox" name="checkBox_point2">
+   <property name="geometry">
+    <rect>
+     <x>679</x>
+     <y>110</y>
+     <width>92</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Select</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_newpointy">
+   <property name="geometry">
+    <rect>
+     <x>380</x>
+     <y>475</y>
+     <width>141</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_4">
+   <property name="geometry">
+    <rect>
+     <x>72</x>
+     <y>480</y>
+     <width>111</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>New Point</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_newpointx">
+   <property name="geometry">
+    <rect>
+     <x>200</x>
+     <y>476</y>
+     <width>141</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QCheckBox" name="checkBox_newpointusehdg">
+   <property name="geometry">
+    <rect>
+     <x>740</x>
+     <y>476</y>
+     <width>151</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Use Hdg</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_newpointhdg">
+   <property name="geometry">
+    <rect>
+     <x>560</x>
+     <y>476</y>
+     <width>141</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_Radius">
+   <property name="geometry">
+    <rect>
+     <x>66</x>
+     <y>185</y>
+     <width>211</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Radius</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_Radius">
+   <property name="geometry">
+    <rect>
+     <x>290</x>
+     <y>181</y>
+     <width>141</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_hdgrange">
+   <property name="geometry">
+    <rect>
+     <x>470</x>
+     <y>180</y>
+     <width>141</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+ </widget>
+ <tabstops>
+  <tabstop>lineEdit_point1x</tabstop>
+  <tabstop>lineEdit_point1y</tabstop>
+  <tabstop>checkBox_point1</tabstop>
+  <tabstop>lineEdit_point2x</tabstop>
+  <tabstop>lineEdit_point2y</tabstop>
+  <tabstop>checkBox_point2</tabstop>
+  <tabstop>lineEdit_Radius</tabstop>
+  <tabstop>lineEdit_hdgrange</tabstop>
+  <tabstop>comboBox_Type</tabstop>
+  <tabstop>pushButton_Create</tabstop>
+  <tabstop>lineEdit_newpointx</tabstop>
+  <tabstop>lineEdit_newpointy</tabstop>
+  <tabstop>lineEdit_newpointhdg</tabstop>
+  <tabstop>checkBox_newpointusehdg</tabstop>
+  <tabstop>pushButton_Draw</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>

+ 33 - 1
src/tool/map_lanetoxodr/dialogeditlane.cpp

@@ -30,6 +30,8 @@ DialogEditLane::DialogEditLane(Road * pRoad,QWidget *parent) :
     }
     }
     if(nsection > 0)on_comboBox_LaneSection_currentIndexChanged(0);
     if(nsection > 0)on_comboBox_LaneSection_currentIndexChanged(0);
 
 
+    setWindowTitle("Edit Lane");
+
 }
 }
 
 
 DialogEditLane::~DialogEditLane()
 DialogEditLane::~DialogEditLane()
@@ -39,6 +41,7 @@ DialogEditLane::~DialogEditLane()
 
 
 void DialogEditLane::on_comboBox_LaneSection_currentIndexChanged(int index)
 void DialogEditLane::on_comboBox_LaneSection_currentIndexChanged(int index)
 {
 {
+    int indexold = ui->comboBox_Lane->currentIndex();
     if(mpRoad == 0)return;
     if(mpRoad == 0)return;
     LaneSection * pLS = mpRoad->GetLaneSection(index);
     LaneSection * pLS = mpRoad->GetLaneSection(index);
     ui->comboBox_Lane->clear();
     ui->comboBox_Lane->clear();
@@ -54,7 +57,17 @@ void DialogEditLane::on_comboBox_LaneSection_currentIndexChanged(int index)
         ui->comboBox_Lane->addItem(stritemname);
         ui->comboBox_Lane->addItem(stritemname);
     }
     }
 
 
-    if(nLaneCount > 0)on_comboBox_Lane_currentIndexChanged(0);
+    int indexnew = 0;
+    if((indexold>=0)&&(indexold<nLaneCount))
+    {
+        indexnew = indexold;
+    }
+
+    if(nLaneCount > 0)
+    {
+        ui->comboBox_Lane->setCurrentIndex(indexnew);
+//        on_comboBox_Lane_currentIndexChanged(indexnew);
+    }
 
 
 
 
 
 
@@ -158,6 +171,8 @@ void DialogEditLane::on_pushButton_DeleteLane_clicked()
         return;
         return;
     }
     }
 
 
+
+
     if(mpCurLS == 0)return;
     if(mpCurLS == 0)return;
     int nlanecount = mpCurLS->GetLaneCount();
     int nlanecount = mpCurLS->GetLaneCount();
     int i;
     int i;
@@ -172,6 +187,23 @@ void DialogEditLane::on_pushButton_DeleteLane_clicked()
     }
     }
     mpCurLS->DeleteLane(i);
     mpCurLS->DeleteLane(i);
 
 
+    nlanecount = mpCurLS->GetLaneCount();
+    for(i=0;i<nlanecount;i++)
+    {
+        Lane * pLane = mpCurLS->GetLane(i);
+        if(((pLane->GetId() * index)>0)&&(abs(pLane->GetId())>abs(index)))
+        {
+            if(pLane->GetId()>0)
+            {
+                pLane->SetId(pLane->GetId()-1);
+            }
+            else
+            {
+                pLane->SetId(pLane->GetId()+1);
+            }
+        }
+    }
+
     on_comboBox_LaneSection_currentIndexChanged(ui->comboBox_LaneSection->currentIndex());
     on_comboBox_LaneSection_currentIndexChanged(ui->comboBox_LaneSection->currentIndex());
 }
 }
 
 

+ 225 - 0
src/tool/map_lanetoxodr/dialoghideroad.cpp

@@ -0,0 +1,225 @@
+#include "dialoghideroad.h"
+#include "ui_dialoghideroad.h"
+
+#include <QMessageBox>
+#include "mainwindow.h"
+
+#include "math.h"
+
+#define VIEW_WIDTH 900
+#define VIEW_HEIGHT 450
+
+DialogHideRoad::DialogHideRoad(OpenDrive * pxodr,std::string strdefroad,std::vector<int> * pvectorhideroadid,QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::DialogHideRoad)
+{
+    mpxodr = pxodr;
+    mpvectorhideroadid = pvectorhideroadid;
+    ui->setupUi(this);
+
+
+    myview = new MyView(this);
+    myview->setObjectName(QStringLiteral("graphicsView2"));
+    myview->setGeometry(QRect(30, 150, 960, 500));
+
+ //   connect(myview,SIGNAL(dbclickxy(double,double)),this,SLOT(onClickXY(double,double)));
+
+    image = new QImage(VIEW_WIDTH, VIEW_HEIGHT, QImage::Format_RGB32);//画布的初始化大小设为300*300,使用32位颜色
+    myview->setCacheMode(myview->CacheBackground);
+    painter = new QPainter(image);
+    painter->end();
+
+    scene = new QGraphicsScene(-VIEW_WIDTH/2, -VIEW_HEIGHT/2, VIEW_WIDTH, VIEW_HEIGHT);
+
+    myview->setScene(scene);
+    scene->setBackgroundBrush(Qt::darkGreen);
+
+
+    int i;
+    int nroadcount = mpxodr->GetRoadCount();
+    for(i=0;i<nroadcount;i++)
+    {
+        const char * strname = mpxodr->GetRoad(i)->GetRoadId().data();
+        ui->comboBox_Road->addItem(strname);
+
+    }
+
+
+
+    MainWindow::ComboToString(strdefroad,ui->comboBox_Road);
+
+    UpdateHidenCombo();
+
+    setWindowTitle("Hide Road");
+}
+
+DialogHideRoad::~DialogHideRoad()
+{
+    delete ui;
+}
+
+void DialogHideRoad::paintEvent(QPaintEvent * painter)
+{
+    scene->update();
+    return;
+}
+
+void DialogHideRoad::on_comboBox_Road_currentIndexChanged(int index)
+{
+    Road * pRoad = mpxodr->GetRoad(index);
+    if(pRoad == 0)
+    {
+ //       QMessageBox::warning(this,"WARN","MainWindow::onClickCBRoadChange road is NULL");
+        return;
+    }
+
+    mpCurRoad = pRoad;
+
+    int i;
+    int nsize = mvectorroadview.size();
+    for(i=0;i<nsize;i++)
+    {
+        scene->removeItem(mvectorroadview.at(i));
+        delete mvectorroadview.at(i);
+    }
+    mvectorroadview.clear();
+
+    nsize = mvectorviewitem.size();
+    for(i=0;i<nsize;i++)
+    {
+        scene->removeItem(mvectorviewitem.at(i));
+        delete mvectorviewitem.at(i);
+    }
+    mvectorviewitem.clear();
+
+    double froad_xmin,froad_ymin,froad_xmax,froad_ymax;
+    ServiceXODRTool.GetRoadMaxMin(pRoad,froad_xmin,froad_ymin,froad_xmax,froad_ymax);
+//    roadviewitem * prvw = new roadviewitem(pRoad);
+
+    int nfac;
+    int nkeep = 30;
+    double fac_x,fac_y;
+    fac_x = 100000;
+    fac_y = 100000;
+    if(froad_xmax > froad_xmin)
+    {
+        fac_x = (VIEW_WIDTH-nkeep*2)/(froad_xmax - froad_xmin);
+    }
+
+    if(froad_ymax > froad_ymin)
+    {
+        fac_y = (VIEW_HEIGHT - nkeep*2)/(froad_ymax - froad_ymin);
+    }
+
+    nfac = fac_x;
+    if(fac_y < nfac)nfac = fac_y;
+
+
+    mfViewMoveX = VIEW_WIDTH/2.0 ;
+    mfViewMoveY = VIEW_HEIGHT/2.0;
+
+    mfViewMoveX = 0 - froad_xmin - (froad_xmax - froad_xmin)/2.0;
+    mfViewMoveY = 0 + froad_ymin  + (froad_ymax-froad_ymin)/2.0;
+
+//    prvw->setPos(mfViewMoveX,mfViewMoveY);
+ //       prvw->setPos((froad_xmax - froad_xmin)/2.0, (froad_ymax-froad_ymin)/2.0);
+//    mvectorroadview.push_back(prvw);
+ //   prvw->setratio(1.0);
+//    scene->addItem(prvw);
+
+
+
+    RoadDigit xrd(mpCurRoad,5.0);
+
+    std::vector<QGraphicsPathItem *> xvectorlanepath = xodrscenfunc::GetRoadLaneItem(&xrd);
+    int j;
+    int ncount = xvectorlanepath.size();
+    for(j=0;j<ncount;j++)
+    {
+        QGraphicsPathItem * pitem = xvectorlanepath[j];
+        pitem->setPos(mfViewMoveX,mfViewMoveY);
+        scene->addItem(pitem);
+        mvectorviewitem.push_back(pitem);
+    }
+
+    std::vector<QGraphicsPathItem *> xvectormarkpath = xodrscenfunc::GetRoadMarkItem(&xrd);
+    ncount = xvectormarkpath.size();
+    for(j=0;j<ncount;j++)
+    {
+        QGraphicsPathItem * pitem = xvectormarkpath[j];
+        pitem->setPos(mfViewMoveX,mfViewMoveY);
+        scene->addItem(pitem);
+        mvectorviewitem.push_back(pitem);
+    }
+
+    update();
+}
+
+
+void DialogHideRoad::on_pushButton_HideRoad_clicked()
+{
+    if(ui->comboBox_Road->currentIndex()<0)
+    {
+        QMessageBox::warning(this,"Warning","No Road.",QMessageBox::YesAll);
+        return;
+    }
+    int nroadid = ui->comboBox_Road->currentText().toInt();
+    unsigned int i;
+    bool bExist = false;
+    for(i=0;i<mpvectorhideroadid->size();i++)
+    {
+        if(mpvectorhideroadid->at(i) == nroadid)
+        {
+            bExist = true;
+            break;
+        }
+    }
+
+    if(bExist)
+    {
+        QMessageBox::warning(this,"Warning","This Road is Hiden.",QMessageBox::YesAll);
+        return;
+    }
+    mpvectorhideroadid->push_back(nroadid);
+    UpdateHidenCombo();
+}
+
+void DialogHideRoad::on_pushButton_UnHIdeRoad_clicked()
+{
+    if(ui->comboBox_RoadHiden->currentIndex()<0)
+    {
+        QMessageBox::warning(this,"Warning","No Hiden road.",QMessageBox::YesAll);
+        return;
+    }
+    mpvectorhideroadid->erase(mpvectorhideroadid->begin()+ui->comboBox_RoadHiden->currentIndex());
+    UpdateHidenCombo();
+}
+
+void DialogHideRoad::on_pushButton_UnHideAllRoad_clicked()
+{
+    if(mpvectorhideroadid->size()>0)
+    {
+        mpvectorhideroadid->clear();
+        UpdateHidenCombo();
+    }
+}
+
+void DialogHideRoad::UpdateHidenCombo()
+{
+    int index = ui->comboBox_RoadHiden->currentIndex();
+    ui->comboBox_RoadHiden->clear();
+    if(mpvectorhideroadid->size() == 0)return;
+    unsigned int i;
+    for(i=0;i<mpvectorhideroadid->size();i++)
+    {
+        ui->comboBox_RoadHiden->addItem(QString::number(mpvectorhideroadid->at(i)));
+    }
+    if((index>=0)&&(index<mpvectorhideroadid->size()))
+    {
+        ui->comboBox_RoadHiden->setCurrentIndex(index);
+    }
+    else
+    {
+        ui->comboBox_RoadHiden->setCurrentIndex(0);
+    }
+}

+ 66 - 0
src/tool/map_lanetoxodr/dialoghideroad.h

@@ -0,0 +1,66 @@
+#ifndef DIALOGHIDEROAD_H
+#define DIALOGHIDEROAD_H
+
+#include <QDialog>
+#include <QMessageBox>
+
+#include "myview.h"
+#include "OpenDrive/OpenDrive.h"
+
+#include "ivxodrtool.h"
+
+#include "roadviewitem.h"
+#include "xodrscenfunc.h"
+
+#include "roaddigit.h"
+
+namespace Ui {
+class DialogHideRoad;
+}
+
+class DialogHideRoad : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit DialogHideRoad(OpenDrive * pxodr,std::string strdefroad,std::vector<int> * pvectorhideroadid,QWidget *parent = nullptr);
+    ~DialogHideRoad();
+
+private slots:
+   virtual void paintEvent(QPaintEvent *);
+
+    void on_comboBox_Road_currentIndexChanged(int index);
+
+    void on_pushButton_HideRoad_clicked();
+
+    void on_pushButton_UnHIdeRoad_clicked();
+
+    void on_pushButton_UnHideAllRoad_clicked();
+
+private:
+    void UpdateHidenCombo();
+
+private:
+    Ui::DialogHideRoad *ui;
+
+    OpenDrive * mpxodr;
+
+    QImage *image;
+    QPainter *painter;
+    MyView *myview;
+    QTimer *timer;
+    QGraphicsScene *scene;
+
+    Road * mpCurRoad = 0;
+
+    std::vector<roadviewitem *> mvectorroadview;
+
+    std::vector<QGraphicsPathItem *> mvectorviewitem;
+
+    double mfViewMoveX = 0;
+    double mfViewMoveY = 0;
+
+    std::vector<int> * mpvectorhideroadid;
+};
+
+#endif // DIALOGHIDEROAD_H

+ 104 - 0
src/tool/map_lanetoxodr/dialoghideroad.ui

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DialogHideRoad</class>
+ <widget class="QDialog" name="DialogHideRoad">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1031</width>
+    <height>662</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <widget class="QComboBox" name="comboBox_Road">
+   <property name="geometry">
+    <rect>
+     <x>130</x>
+     <y>21</y>
+     <width>241</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label">
+   <property name="geometry">
+    <rect>
+     <x>30</x>
+     <y>30</y>
+     <width>121</width>
+     <height>21</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Road</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="pushButton_HideRoad">
+   <property name="geometry">
+    <rect>
+     <x>420</x>
+     <y>20</y>
+     <width>121</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Hide</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="pushButton_UnHideAllRoad">
+   <property name="geometry">
+    <rect>
+     <x>826</x>
+     <y>80</y>
+     <width>131</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>UnHide All</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="pushButton_UnHIdeRoad">
+   <property name="geometry">
+    <rect>
+     <x>649</x>
+     <y>82</y>
+     <width>131</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>UnHide</string>
+   </property>
+  </widget>
+  <widget class="QComboBox" name="comboBox_RoadHiden">
+   <property name="geometry">
+    <rect>
+     <x>420</x>
+     <y>82</y>
+     <width>181</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_10">
+   <property name="geometry">
+    <rect>
+     <x>291</x>
+     <y>90</y>
+     <width>81</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Hiden Road</string>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 14 - 0
src/tool/map_lanetoxodr/dialogparkingspaceedit.cpp

@@ -0,0 +1,14 @@
+#include "dialogparkingspaceedit.h"
+#include "ui_dialogparkingspaceedit.h"
+
+DialogParkingSpaceEdit::DialogParkingSpaceEdit(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::DialogParkingSpaceEdit)
+{
+    ui->setupUi(this);
+}
+
+DialogParkingSpaceEdit::~DialogParkingSpaceEdit()
+{
+    delete ui;
+}

+ 22 - 0
src/tool/map_lanetoxodr/dialogparkingspaceedit.h

@@ -0,0 +1,22 @@
+#ifndef DIALOGPARKINGSPACEEDIT_H
+#define DIALOGPARKINGSPACEEDIT_H
+
+#include <QDialog>
+
+namespace Ui {
+class DialogParkingSpaceEdit;
+}
+
+class DialogParkingSpaceEdit : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit DialogParkingSpaceEdit(QWidget *parent = nullptr);
+    ~DialogParkingSpaceEdit();
+
+private:
+    Ui::DialogParkingSpaceEdit *ui;
+};
+
+#endif // DIALOGPARKINGSPACEEDIT_H

+ 127 - 0
src/tool/map_lanetoxodr/dialogparkingspaceedit.ui

@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DialogParkingSpaceEdit</class>
+ <widget class="QDialog" name="DialogParkingSpaceEdit">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>946</width>
+    <height>645</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <widget class="QComboBox" name="comboBox_Road">
+   <property name="geometry">
+    <rect>
+     <x>170</x>
+     <y>30</y>
+     <width>231</width>
+     <height>31</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_3">
+   <property name="geometry">
+    <rect>
+     <x>30</x>
+     <y>150</y>
+     <width>101</width>
+     <height>17</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Parking Space</string>
+   </property>
+  </widget>
+  <widget class="QComboBox" name="comboBox_Borrow">
+   <property name="geometry">
+    <rect>
+     <x>170</x>
+     <y>140</y>
+     <width>171</width>
+     <height>31</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_2">
+   <property name="geometry">
+    <rect>
+     <x>172</x>
+     <y>80</y>
+     <width>70</width>
+     <height>17</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Length</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_RoadLen">
+   <property name="geometry">
+    <rect>
+     <x>270</x>
+     <y>80</y>
+     <width>113</width>
+     <height>25</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label">
+   <property name="geometry">
+    <rect>
+     <x>30</x>
+     <y>40</y>
+     <width>67</width>
+     <height>17</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Road</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="pushButton_add">
+   <property name="geometry">
+    <rect>
+     <x>380</x>
+     <y>140</y>
+     <width>91</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Add</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="pushButton_delete">
+   <property name="geometry">
+    <rect>
+     <x>500</x>
+     <y>140</y>
+     <width>81</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Delete</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="pushButton_change">
+   <property name="geometry">
+    <rect>
+     <x>610</x>
+     <y>140</y>
+     <width>81</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Change</string>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 118 - 0
src/tool/map_lanetoxodr/dialogroadborrow.cpp

@@ -35,3 +35,121 @@ DialogRoadBorrow::~DialogRoadBorrow()
 {
 {
     delete ui;
     delete ui;
 }
 }
+
+void DialogRoadBorrow::on_comboBox_Road_currentIndexChanged(int index)
+{
+    Road * pRoad = mpxodr->GetRoad(index);
+    if(pRoad == 0)
+    {
+        return;
+    }
+
+    ui->lineEdit_RoadLen->setText(QString::number(pRoad->GetRoadLength(),'f',3));
+
+    ui->lineEdit_s->setText("");
+    ui->lineEdit_t->setText("");
+
+    unsigned int nBorrowCount = pRoad->GetRoadBorrowCount();
+    ui->comboBox_Borrow->clear();
+    unsigned int i;
+    for(i=0;i<nBorrowCount;i++)
+    {
+        ui->comboBox_Borrow->addItem(QString::number(pRoad->GetRoadBorrow(i)->GetS(),'g'));
+    }
+}
+
+
+void DialogRoadBorrow::on_comboBox_Borrow_currentIndexChanged(int index)
+{
+    Road * pRoad = mpxodr->GetRoad(ui->comboBox_Road->currentIndex());
+    if(pRoad == 0)
+    {
+        return;
+    }
+
+    if(pRoad->GetRoadBorrowCount() == 0)
+    {
+        ui->lineEdit_s->setText("");
+        ui->lineEdit_t->setText("");
+        return;
+    }
+
+    if(index<0)return;
+    if(index>=pRoad->GetRoadBorrowCount())return;
+    RoadBorrow * pRoadBorrow = pRoad->GetRoadBorrow(index);
+    if(pRoadBorrow == NULL)
+    {
+        return;
+    }
+    ui->lineEdit_s->setText(QString::number(pRoadBorrow->GetS()));
+    ui->lineEdit_t->setText(QString::number(pRoadBorrow->GetLength()));
+    std::string strmode = pRoadBorrow->GetMode();
+    ui->comboBox_borrowmode->setCurrentIndex(0);
+    if(strmode == "R2L")
+    {
+        ui->comboBox_borrowmode->setCurrentIndex(1);
+    }
+    if(strmode == "L2R")
+    {
+        ui->comboBox_borrowmode->setCurrentIndex(2);
+    }
+
+}
+
+void DialogRoadBorrow::on_pushButton_Add_clicked()
+{
+    Road * pRoad = mpxodr->GetRoad(ui->comboBox_Road->currentIndex());
+    if(pRoad == 0)
+    {
+        return;
+    }
+
+    if(ui->lineEdit_s->text().toStdString() == "")
+    {
+        QMessageBox::warning(this,"Warning","s is empty.",QMessageBox::YesAll);
+        return;
+    }
+
+    if(ui->lineEdit_t->text().toStdString() == "")
+    {
+        QMessageBox::warning(this,"Warning","length is empty.",QMessageBox::YesAll);
+        return;
+    }
+
+    double s = ui->lineEdit_s->text().toDouble();
+    double length = ui->lineEdit_t->text().toDouble();
+    string strmode = ui->comboBox_borrowmode->currentText().toStdString();
+
+    pRoad->AddRoadBorrow(s,length,strmode);
+
+    on_comboBox_Road_currentIndexChanged(ui->comboBox_Road->currentIndex());
+
+}
+
+void DialogRoadBorrow::on_pushButton_Delete_clicked()
+{
+    Road * pRoad = mpxodr->GetRoad(ui->comboBox_Road->currentIndex());
+    if(pRoad == 0)
+    {
+        return;
+    }
+
+    pRoad->DeleteRoadBorrow(ui->comboBox_Borrow->currentIndex());
+    on_comboBox_Road_currentIndexChanged(ui->comboBox_Road->currentIndex());
+}
+
+void DialogRoadBorrow::on_pushButton_Change_clicked()
+{
+    Road * pRoad = mpxodr->GetRoad(ui->comboBox_Road->currentIndex());
+    if(pRoad == 0)
+    {
+        return;
+    }
+
+    RoadBorrow * pRoadBorrow = pRoad->GetRoadBorrow(ui->comboBox_Borrow->currentIndex());
+    pRoadBorrow->SetS(ui->lineEdit_s->text().toDouble());
+    pRoadBorrow->SetLength(ui->lineEdit_t->text().toDouble());
+    pRoadBorrow->SetMode(ui->comboBox_borrowmode->currentText().toStdString());
+
+    QMessageBox::information(this,"Info","Change RoadBorrow Successfully.",QMessageBox::YesAll);
+}

+ 16 - 0
src/tool/map_lanetoxodr/dialogroadborrow.h

@@ -20,6 +20,17 @@ public:
     explicit DialogRoadBorrow(OpenDrive * pxodr,std::string strdefroad,QWidget *parent = nullptr);
     explicit DialogRoadBorrow(OpenDrive * pxodr,std::string strdefroad,QWidget *parent = nullptr);
     ~DialogRoadBorrow();
     ~DialogRoadBorrow();
 
 
+private slots:
+    void on_comboBox_Road_currentIndexChanged(int index);
+
+    void on_comboBox_Borrow_currentIndexChanged(int index);
+
+    void on_pushButton_Add_clicked();
+
+    void on_pushButton_Delete_clicked();
+
+    void on_pushButton_Change_clicked();
+
 private:
 private:
     Ui::DialogRoadBorrow *ui;
     Ui::DialogRoadBorrow *ui;
 
 
@@ -27,3 +38,8 @@ private:
 };
 };
 
 
 #endif // DIALOGROADBORROW_H
 #endif // DIALOGROADBORROW_H
+
+
+
+
+

+ 25 - 1
src/tool/map_lanetoxodr/dialogroadborrow.ui

@@ -16,7 +16,7 @@
   <widget class="QPushButton" name="pushButton_Delete">
   <widget class="QPushButton" name="pushButton_Delete">
    <property name="geometry">
    <property name="geometry">
     <rect>
     <rect>
-     <x>715</x>
+     <x>680</x>
      <y>165</y>
      <y>165</y>
      <width>89</width>
      <width>89</width>
      <height>25</height>
      <height>25</height>
@@ -177,7 +177,31 @@
     </rect>
     </rect>
    </property>
    </property>
   </widget>
   </widget>
+  <widget class="QPushButton" name="pushButton_Change">
+   <property name="geometry">
+    <rect>
+     <x>817</x>
+     <y>165</y>
+     <width>71</width>
+     <height>25</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Change</string>
+   </property>
+  </widget>
  </widget>
  </widget>
+ <tabstops>
+  <tabstop>comboBox_Road</tabstop>
+  <tabstop>lineEdit_RoadLen</tabstop>
+  <tabstop>comboBox_Borrow</tabstop>
+  <tabstop>pushButton_Add</tabstop>
+  <tabstop>pushButton_Delete</tabstop>
+  <tabstop>pushButton_Change</tabstop>
+  <tabstop>lineEdit_s</tabstop>
+  <tabstop>lineEdit_t</tabstop>
+  <tabstop>comboBox_borrowmode</tabstop>
+ </tabstops>
  <resources/>
  <resources/>
  <connections/>
  <connections/>
 </ui>
 </ui>

+ 87 - 0
src/tool/map_lanetoxodr/dialogroadobject.cpp

@@ -0,0 +1,87 @@
+#include "dialogroadobject.h"
+#include "ui_dialogroadobject.h"
+
+DialogRoadObject::DialogRoadObject(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::DialogRoadObject)
+{
+    ui->setupUi(this);
+
+    CreateView();
+    setWindowTitle("Edit Road Object");
+}
+
+DialogRoadObject::~DialogRoadObject()
+{
+    delete ui;
+}
+
+
+QLineEdit * DialogRoadObject::CreateLE(int pos_x, int pos_y, int nLabelWidth, int nLEWidth, int nHeight, std::string strname)
+{
+    QLineEdit * pLE;
+    QLabel * pLabel;
+
+    pLabel = new QLabel(this);
+    pLabel->setGeometry(pos_x,pos_y,nLabelWidth,nHeight);
+    pLabel->setText(strname.data());
+    pLabel->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
+
+    pLE = new QLineEdit(this);
+    pLE->setGeometry(pos_x+nLabelWidth+10,pos_y,nLEWidth,nHeight);
+
+    return pLE;
+}
+
+QComboBox * DialogRoadObject::CreateCB(int pos_x, int pos_y, int nLabelWidth, int nLEWidth, int nHeight, std::string strname)
+{
+    QComboBox * pCB;
+    QLabel * pLabel;
+
+    pLabel = new QLabel(this);
+    pLabel->setGeometry(pos_x,pos_y,nLabelWidth,nHeight);
+    pLabel->setText(strname.data());
+    pLabel->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
+
+    pCB = new QComboBox(this);
+    pCB->setGeometry(pos_x+nLabelWidth+10,pos_y,nLEWidth,nHeight);
+
+    return pCB;
+}
+
+void DialogRoadObject::CreateView()
+{
+    int startpos_x = 30;
+    int startpos_y = 150;
+    int nSpace = 300;
+    int nLabelWidth = 100;
+    int nLEWidth = 150;
+    int nHeight = 30;
+    int nVSpace = 50;
+
+    int nVIndex = 0;
+    mpLEt = CreateLE(startpos_x+0*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"t");
+    mpLEzOffset = CreateLE(startpos_x+1*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"zOffset");
+    mpCBtype = CreateCB(startpos_x+2*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"type");
+    nVIndex++;
+    mpLEvalidLength = CreateLE(startpos_x+0*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"validLength");
+    mpCBorientation = CreateCB(startpos_x+1*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"orientation");
+    mpLEsubtype = CreateLE(startpos_x+2*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"subtype");
+    nVIndex++;
+    mpCBdynamic = CreateCB(startpos_x+0*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"dynamic");
+    mpLEhdg = CreateLE(startpos_x+1*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"hdg");
+    mpLEname = CreateLE(startpos_x+2*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"name");
+    nVIndex++;
+    mpLEpitch = CreateLE(startpos_x+0*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"pitch");
+    mpLEid = CreateLE(startpos_x+1*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"id");
+    mpLEroll = CreateLE(startpos_x+2*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"roll");
+    nVIndex++;
+    mpLEheight = CreateLE(startpos_x+0*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"height");
+    mpLEs = CreateLE(startpos_x+1*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"s");
+    mpLElength = CreateLE(startpos_x+2*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"length");
+    nVIndex++;
+    mpLEwidth = CreateLE(startpos_x+0*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"width");
+    mpLEradius = CreateLE(startpos_x+1*nSpace,startpos_y+nVIndex*nVSpace,nLabelWidth,nLEWidth,nHeight,"radius");
+
+
+}

+ 51 - 0
src/tool/map_lanetoxodr/dialogroadobject.h

@@ -0,0 +1,51 @@
+#ifndef DIALOGROADOBJECT_H
+#define DIALOGROADOBJECT_H
+
+#include <QDialog>
+#include <QLineEdit>
+#include <QLabel>
+#include <QComboBox>
+
+namespace Ui {
+class DialogRoadObject;
+}
+
+class DialogRoadObject : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit DialogRoadObject(QWidget *parent = nullptr);
+    ~DialogRoadObject();
+
+private:
+    Ui::DialogRoadObject *ui;
+
+private:
+    void CreateView();
+
+private:
+    QLineEdit * mpLEt;
+    QLineEdit * mpLEzOffset;
+    QComboBox * mpCBtype;
+    QLineEdit * mpLEvalidLength;
+    QComboBox * mpCBorientation;
+    QLineEdit * mpLEsubtype;
+    QComboBox * mpCBdynamic;
+    QLineEdit * mpLEhdg;
+    QLineEdit * mpLEname;
+    QLineEdit * mpLEpitch;
+    QLineEdit * mpLEid;
+    QLineEdit * mpLEroll;
+    QLineEdit * mpLEheight;
+    QLineEdit * mpLEs;
+    QLineEdit * mpLElength;
+    QLineEdit * mpLEwidth;
+    QLineEdit * mpLEradius;
+
+private:
+    QLineEdit * CreateLE(int pos_x,int pos_y,int nLabelWidth,int nLEWidth,int nHeight,std::string strname);
+    QComboBox * CreateCB(int pos_x,int pos_y,int nLabelWidth,int nLEWidth,int nHeight,std::string strname);
+};
+
+#endif // DIALOGROADOBJECT_H

+ 127 - 0
src/tool/map_lanetoxodr/dialogroadobject.ui

@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DialogRoadObject</class>
+ <widget class="QDialog" name="DialogRoadObject">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>940</width>
+    <height>660</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <widget class="QComboBox" name="comboBox_Road">
+   <property name="geometry">
+    <rect>
+     <x>180</x>
+     <y>30</y>
+     <width>231</width>
+     <height>31</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QComboBox" name="comboBox_Object">
+   <property name="geometry">
+    <rect>
+     <x>180</x>
+     <y>80</y>
+     <width>171</width>
+     <height>31</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_2">
+   <property name="geometry">
+    <rect>
+     <x>472</x>
+     <y>40</y>
+     <width>70</width>
+     <height>17</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Length</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="pushButton_change">
+   <property name="geometry">
+    <rect>
+     <x>620</x>
+     <y>80</y>
+     <width>81</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Change</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="pushButton_add">
+   <property name="geometry">
+    <rect>
+     <x>390</x>
+     <y>80</y>
+     <width>91</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Add</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_RoadLen">
+   <property name="geometry">
+    <rect>
+     <x>570</x>
+     <y>40</y>
+     <width>113</width>
+     <height>25</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label">
+   <property name="geometry">
+    <rect>
+     <x>40</x>
+     <y>40</y>
+     <width>67</width>
+     <height>17</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Road</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="pushButton_delete">
+   <property name="geometry">
+    <rect>
+     <x>510</x>
+     <y>80</y>
+     <width>81</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Delete</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_3">
+   <property name="geometry">
+    <rect>
+     <x>40</x>
+     <y>90</y>
+     <width>101</width>
+     <height>17</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Object</string>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 351 - 0
src/tool/map_lanetoxodr/dialogroadoptimize.cpp

@@ -0,0 +1,351 @@
+#include "dialogroadoptimize.h"
+#include "ui_dialogroadoptimize.h"
+
+#include <math.h>
+#include <memory>
+
+#include "geofit.h"
+
+DialogRoadOptimize::DialogRoadOptimize(Road * pRoad,OpenDrive * pxodr,QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::DialogRoadOptimize)
+{
+    ui->setupUi(this);
+
+    ui->lineEdit_disthresh->setText("0.1");
+    ui->lineEdit_hdgthresh->setText("0.01");
+    ui->lineEdit_arcbezel->setText("3.0");
+    ui->lineEdit_linebezel->setText("10.0");
+    ui->lineEdit_roadoffthresh->setText("0.5");
+
+    mpRoad = pRoad;
+    mpxodr = pxodr;
+
+    std::vector<double> fvectordis,fvectorhdg;
+    int nrtn = CheckRoadQuality(pRoad,fvectordis,fvectorhdg);
+
+    const int noutbufsize = 100000;
+    std::shared_ptr<char> pstrout_ptr = std::shared_ptr<char>(new char[noutbufsize]);
+    char strline[1000];
+    snprintf(pstrout_ptr.get(),noutbufsize,"Check point:%d\n",nrtn);
+    if(nrtn > 0)
+    {
+        int i;
+        for(i=0;i<nrtn;i++)
+        {
+            RoadGeometry * pg = pRoad->GetGeometryBlock(i)->GetGeometryAt(0);
+            snprintf(strline,1000,"%d  distance:%f   hdgdiff:%f geo type:%d s:%f length %f\n",
+                     i,fvectordis[i],fvectorhdg[i],pg->GetGeomType(),pg->GetS(),pg->GetLength());
+            strncat(pstrout_ptr.get(),strline,noutbufsize);
+        }
+    }
+
+    ui->plainTextEdit->setPlainText(pstrout_ptr.get());
+
+    setWindowTitle("Road Optimize");
+}
+
+DialogRoadOptimize::~DialogRoadOptimize()
+{
+    delete ui;
+}
+
+int DialogRoadOptimize::CheckRoadQuality(Road *pRoad, std::vector<double> & fvectordis,
+                                         std::vector<double> & fvectorhdg)
+{
+    if(pRoad->GetGeometryBlockCount() <=1)
+    {
+        return 0;
+    }
+
+    int nrtn = 0;
+
+    unsigned int i;
+    for(i=0;i<(pRoad->GetGeometryBlockCount()-1);i++)
+    {
+        GeometryBlock * pgeob1 =  pRoad->GetGeometryBlock(i);
+        GeometryBlock * pgeob2 =  pRoad->GetGeometryBlock(i+1);
+        double x1,y1,hdg1;
+        double x2,y2,hdg2;
+        pgeob1->GetGeometryAt(0)->GetCoords(pgeob1->GetGeometryAt(0)->GetS() + pgeob1->GetGeometryAt(0)->GetLength(),
+                                            x1,y1,hdg1);
+        pgeob2->GetGeometryAt(0)->GetCoords(pgeob2->GetGeometryAt(0)->GetS() ,
+                                            x2,y2,hdg2);
+
+        double fdis = sqrt(pow(x2-x1,2)+pow(y2-y1,2));
+        double fhdgdiff = hdg2 - hdg1;
+        while (fhdgdiff>M_PI)fhdgdiff = fhdgdiff -2.0*M_PI;
+        while(fhdgdiff<=(-M_PI))fhdgdiff = fhdgdiff + 2.0*M_PI;
+        fvectordis.push_back(fdis);
+        fvectorhdg.push_back(fhdgdiff);
+        nrtn++;
+
+    }
+    return nrtn;
+}
+
+void DialogRoadOptimize::on_pushButton_Optimize_clicked()
+{
+
+    double fdisthresh = ui->lineEdit_disthresh->text().toDouble();
+    double fhdgthresh = ui->lineEdit_hdgthresh->text().toDouble();
+    double flinebezel = ui->lineEdit_linebezel->text().toDouble();
+    double farcbezel = ui->lineEdit_arcbezel->text().toDouble();
+    double froadoffthresh = ui->lineEdit_roadoffthresh->text().toDouble();
+
+    if(fdisthresh<0.00001)
+    {
+        fdisthresh = 0.00001;
+        std::cout<<"fdisthresh change to "<<fdisthresh<<std::endl;
+    }
+    if(fhdgthresh<0.001)
+    {
+        fhdgthresh = 0.001;
+        std::cout<<"fhdgthesh change to "<<fhdgthresh<<std::endl;
+    }
+    if(flinebezel<1.0)
+    {
+        flinebezel = 1.0;
+        std::cout<<"flinebezel change to "<<flinebezel<<std::endl;
+    }
+    if(farcbezel<1.0)
+    {
+        farcbezel = 1.0;
+        std::cout<<"farcbezel change to "<<farcbezel<<std::endl;
+    }
+    if(froadoffthresh<0.05)
+    {
+        froadoffthresh = 0.05;
+        std::cout<<"froadoffthresh change to "<<froadoffthresh<<std::endl;
+    }
+
+    std::vector<double> fvectordis,fvectorhdg;
+    Road * pRoad = mpRoad;
+    int nrtn = CheckRoadQuality(pRoad,fvectordis,fvectorhdg);
+    if(nrtn == 0)
+    {
+        QMessageBox::information(this,"Info","Not Need Optimize",QMessageBox::YesAll);
+        return;
+    }
+
+    int nmsgbufsize = 100000;
+    std::shared_ptr<char> strmsg_ptr = std::shared_ptr<char>(new char[nmsgbufsize]);
+    snprintf(strmsg_ptr.get(),nmsgbufsize,"Change pos: \n");
+
+    int nchange = 0;
+    Road * pnewroad = mpRoad;
+    int i;
+    int nowgeobpos = 0;
+    GeometryBlock * pgeobnow = pnewroad->GetGeometryBlock(0);
+    std::vector<GeometryBlock > * pvectorgeo = pnewroad->GetGeometryBlockVector();
+    for(i=0;i<nrtn;i++)
+    {
+        if((fvectordis[i]>fdisthresh)||(fabs(fvectorhdg[i])>fhdgthresh))
+        {
+            pgeobnow = pnewroad->GetGeometryBlock(nowgeobpos);
+            RoadGeometry * pgeo = pgeobnow->GetGeometryAt(0);
+            int ngeotype = pgeo->GetGeomType();
+            std::cout<<"geo type : "<<ngeotype<<std::endl;
+            if((pgeo->GetGeomType() ==0) ||(pgeo->GetGeomType() == 2))
+            {
+                double fthresh = flinebezel;
+                if(ngeotype == 2)fthresh = farcbezel;
+                if(pgeo->GetLength()>(fthresh+1.0))
+                {
+                    double xkeeplen = pgeo->GetLength() - fthresh;
+                    double x_start,y_start,hdg_start,x_end,y_end,hdg_end;
+                    pgeo->GetCoords(pgeo->GetS()+xkeeplen,x_start,y_start,hdg_start);
+                    pnewroad->GetGeometryBlock(nowgeobpos+1)->GetGeometryAt(0)->GetCoords(pgeo->GetS() + pgeo->GetLength(),
+                                                                                 x_end,y_end,hdg_end);
+                    std::vector<geobase> xvectorgeo = geofit::CreateBezierGeo(x_start,y_start,
+                                                                              hdg_start,x_end,y_end,hdg_end);
+
+
+                    GeometryBlock xgb;
+                    qDebug("be len: %f ",xvectorgeo[0].mfLen);
+                    xgb.AddGeometryParamPoly3(pgeo->GetS() + xkeeplen,x_start,y_start,hdg_start,xvectorgeo[0].mfLen,
+                                              xvectorgeo[0].mfu[0],xvectorgeo[0].mfu[1],
+                            xvectorgeo[0].mfu[2],xvectorgeo[0].mfu[3],
+                            xvectorgeo[0].mfv[0],xvectorgeo[0].mfv[1],
+                            xvectorgeo[0].mfv[2],xvectorgeo[0].mfv[3],false);
+                    double fdisgeo = GetGeo1toGeo2MaxDis(&xgb,&(pvectorgeo->at(nowgeobpos)));
+
+                    if(fdisgeo<= froadoffthresh)
+                    {
+                        pgeo->SetLength(xkeeplen);
+                        pvectorgeo->insert(pvectorgeo->begin() + nowgeobpos+1,xgb);
+                        nowgeobpos = nowgeobpos+2;
+                        char strout[1000];
+                        snprintf(strout,1000,"geo %d to geo %d. Insert a bezel.geo off:%f.\n",i,i+1,fdisgeo);
+                        strncat(strmsg_ptr.get(),strout,nmsgbufsize);
+                        nchange++;
+                    }
+                    else
+                    {
+                        char strout[1000];
+                        snprintf(strout,1000,"geo %d to geo %d. Optimize off %f exceed thresh.\n",i,i+1,fdisgeo);
+                        strncat(strmsg_ptr.get(),strout,nmsgbufsize);
+                        nchange++;
+                        nowgeobpos++;
+                    }
+                }
+                else
+                {
+                    double x_start,y_start,hdg_start,x_end,y_end,hdg_end;
+                    pgeo->GetCoords(pgeo->GetS(),x_start,y_start,hdg_start);
+                    pnewroad->GetGeometryBlock(nowgeobpos+1)->GetGeometryAt(0)->GetCoords(pgeo->GetS() + pgeo->GetLength(),
+                                                                                 x_end,y_end,hdg_end);
+                    std::vector<geobase> xvectorgeo = geofit::CreateBezierGeo(x_start,y_start,
+                                                                              hdg_start,x_end,y_end,hdg_end);
+
+                    qDebug("be len: %f ",xvectorgeo[0].mfLen);
+                    GeometryBlock xgb;
+                    xgb.AddGeometryParamPoly3(pgeo->GetS(),x_start,y_start,hdg_start,xvectorgeo[0].mfLen,
+                                              xvectorgeo[0].mfu[0],xvectorgeo[0].mfu[1],
+                            xvectorgeo[0].mfu[2],xvectorgeo[0].mfu[3],
+                            xvectorgeo[0].mfv[0],xvectorgeo[0].mfv[1],
+                            xvectorgeo[0].mfv[2],xvectorgeo[0].mfv[3],false);
+
+                    double fdisgeo = GetGeo1toGeo2MaxDis(&xgb,&(pvectorgeo->at(nowgeobpos)));
+                    if(fdisgeo <= froadoffthresh)
+                    {
+                        pvectorgeo->erase(pvectorgeo->begin()+nowgeobpos);
+                        pvectorgeo->insert(pvectorgeo->begin()+nowgeobpos,xgb);
+                        nowgeobpos = nowgeobpos+1;
+                        char strout[1000];
+                        snprintf(strout,1000,"geo %d to geo %d. geo %d replace by a bezel. geo off:%f.\n",i,i+1,i,fdisgeo);
+                        strncat(strmsg_ptr.get(),strout,nmsgbufsize);
+                        nchange++;
+                    }
+                    else
+                    {
+                        char strout[1000];
+                        snprintf(strout,1000,"geo %d to geo %d. Optimize off %f exceed thresh.\n",i,i+1,fdisgeo);
+                        strncat(strmsg_ptr.get(),strout,nmsgbufsize);
+                        nchange++;
+                        nowgeobpos++;
+                    }
+     //               break;
+
+
+
+                }
+
+                unsigned int j;
+                for(j=1;j<pvectorgeo->size();j++)
+                {
+                    pvectorgeo->at(j).GetGeometryAt(0)->SetS(pvectorgeo->at(j-1).GetGeometryAt(0)->GetS()
+                                                             +pvectorgeo->at(j-1).GetGeometryAt(0)->GetLength());
+                }
+
+            }
+            else
+            {
+                nowgeobpos++;
+            }
+
+        }
+        else
+        {
+            char strout[1000];
+            snprintf(strout,1000,"geo %d to geo %d. Not Need Optimize.\n",i,i+1);
+            strncat(strmsg_ptr.get(),strout,nmsgbufsize);
+            nowgeobpos++;
+        }
+    }
+
+    if(nchange > 0)
+    {
+        RoadGeometry * pgeolast = pvectorgeo->at(pvectorgeo->size()-1).GetGeometryAt(0);
+        pnewroad->SetRoadLength(pgeolast->GetS() + pgeolast->GetLength());
+    }
+
+    char strout[1000];
+    snprintf(strout,1000,"Optimize %d position.",nchange);
+    strncat(strmsg_ptr.get(),strout,nmsgbufsize);
+
+
+    QMessageBox::information(this,"Optimize Result",strout,QMessageBox::YesAll);
+
+    ui->plainTextEdit_Optimizeres->setPlainText(strmsg_ptr.get());
+
+
+
+}
+
+double DialogRoadOptimize::GetGeo1toGeo2MaxDis(GeometryBlock *pgeob1, GeometryBlock *pgeob2)
+{
+    RoadGeometry * prg1,*prg2;
+    prg1 = pgeob1->GetGeometryAt(0);
+    prg2 = pgeob2->GetGeometryAt(0);
+    double fstep = 0.1;
+    int nCount = (int)(prg1->GetLength()/fstep);
+    if(nCount == 0)
+    {
+        return sqrt(pow(prg1->GetX() - prg2->GetX(),2)+pow(prg1->GetY() - prg2->GetY(),2));
+    }
+    int i;
+
+    double rg1_s = prg1->GetS();
+    double rg2_s = prg2->GetS();
+//    double rg1_len = prg1->GetLength();
+    double rg2_len = prg2->GetLength();
+    double fdismax = 0;
+    double fsmax = 0;
+    for(i=0;i<nCount;i++)
+    {
+        double s = fstep * i;
+        double x1,y1,hdg1;
+        double fstep2 = 0.5;
+        prg1->GetCoords(rg1_s+s,x1,y1,hdg1);
+        int nCount2 =(int)( rg2_len/fstep2);
+        double snear = 0;
+        double sdis = 1000.0;
+        if(nCount2 == 0)
+        {
+            snear = 0;
+        }
+        else
+        {
+            int j;
+            for(j=0;j<nCount2;j++)
+            {
+                double x2,y2,hdg2;
+                double s2 = j*fstep2;
+                prg2->GetCoords(rg2_s +s2,x2,y2,hdg2);
+                double fdis = sqrt(pow(x2-x1,2)+pow(y2-y1,2));
+                if(fdis <sdis)
+                {
+                    snear = s2;
+                    sdis = fdis;
+                }
+            }
+        }
+        double snear_low = snear - fstep2;
+        double snear_high = snear  + fstep2;
+        if(snear_low<0)snear_low = 0;
+        if(snear_high > rg2_len)snear_high = rg2_len;
+        double s3 = snear_low;
+        while(s3<=snear_high)
+        {
+            double x3,y3,hdg3;
+            prg2->GetCoords(rg2_s+s3,x3,y3,hdg3);
+            double fdis = sqrt(pow(x3-x1,2)+pow(y3-y1,2));
+            if(fdis < sdis)
+            {
+                snear = s3;
+                sdis = fdis;
+            }
+            s3 = s3 +0.01;
+        }
+
+        if(sdis > fdismax)
+        {
+            fdismax = sdis;
+            fsmax = snear;
+        }
+    }
+
+//    std::cout<<"dismax : "<<fdismax<<std::endl;
+    return fdismax;
+}

+ 40 - 0
src/tool/map_lanetoxodr/dialogroadoptimize.h

@@ -0,0 +1,40 @@
+#ifndef DIALOGROADOPTIMIZE_H
+#define DIALOGROADOPTIMIZE_H
+
+#include <QDialog>
+
+#include "OpenDrive/OpenDrive.h"
+#include <QMessageBox>
+
+#include <vector>
+
+namespace Ui {
+class DialogRoadOptimize;
+}
+
+class DialogRoadOptimize : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit DialogRoadOptimize(Road * pRoad,OpenDrive * pxodr,QWidget *parent = nullptr);
+    ~DialogRoadOptimize();
+
+
+public:
+    static int CheckRoadQuality(Road * pRoad, std::vector<double> & fvectordis,
+                                std::vector<double> & fvectorhdg);
+
+    static double GetGeo1toGeo2MaxDis(GeometryBlock * pgeob1,GeometryBlock * pgeob2);
+
+private slots:
+    void on_pushButton_Optimize_clicked();
+
+private:
+    Ui::DialogRoadOptimize *ui;
+
+    Road * mpRoad;
+    OpenDrive * mpxodr;
+};
+
+#endif // DIALOGROADOPTIMIZE_H

+ 180 - 0
src/tool/map_lanetoxodr/dialogroadoptimize.ui

@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DialogRoadOptimize</class>
+ <widget class="QDialog" name="DialogRoadOptimize">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>785</width>
+    <height>696</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <widget class="QLabel" name="label">
+   <property name="geometry">
+    <rect>
+     <x>50</x>
+     <y>20</y>
+     <width>171</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Road Quality:</string>
+   </property>
+  </widget>
+  <widget class="QPlainTextEdit" name="plainTextEdit">
+   <property name="geometry">
+    <rect>
+     <x>40</x>
+     <y>70</y>
+     <width>711</width>
+     <height>251</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="pushButton_Optimize">
+   <property name="geometry">
+    <rect>
+     <x>600</x>
+     <y>478</y>
+     <width>151</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Optimize</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_disthresh">
+   <property name="geometry">
+    <rect>
+     <x>220</x>
+     <y>340</y>
+     <width>141</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_2">
+   <property name="geometry">
+    <rect>
+     <x>40</x>
+     <y>342</y>
+     <width>161</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>距离阈值</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_3">
+   <property name="geometry">
+    <rect>
+     <x>430</x>
+     <y>342</y>
+     <width>161</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>航向阈值(弧度)</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_hdgthresh">
+   <property name="geometry">
+    <rect>
+     <x>610</x>
+     <y>340</y>
+     <width>141</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_4">
+   <property name="geometry">
+    <rect>
+     <x>40</x>
+     <y>412</y>
+     <width>161</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>直线贝塞尔最大值</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_linebezel">
+   <property name="geometry">
+    <rect>
+     <x>220</x>
+     <y>410</y>
+     <width>141</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_5">
+   <property name="geometry">
+    <rect>
+     <x>430</x>
+     <y>412</y>
+     <width>161</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>圆弧贝塞尔最大值</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_arcbezel">
+   <property name="geometry">
+    <rect>
+     <x>610</x>
+     <y>410</y>
+     <width>141</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_roadoffthresh">
+   <property name="geometry">
+    <rect>
+     <x>220</x>
+     <y>478</y>
+     <width>141</width>
+     <height>41</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_6">
+   <property name="geometry">
+    <rect>
+     <x>40</x>
+     <y>480</y>
+     <width>161</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>道路偏离允许值</string>
+   </property>
+  </widget>
+  <widget class="QPlainTextEdit" name="plainTextEdit_Optimizeres">
+   <property name="geometry">
+    <rect>
+     <x>40</x>
+     <y>540</y>
+     <width>711</width>
+     <height>131</height>
+    </rect>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 346 - 11
src/tool/map_lanetoxodr/geofit.cpp

@@ -862,16 +862,16 @@ int geofit::CreateBezier(double xstart, double ystart, double hdg_start, double
     if(hdgdiff>M_PI)hdgdiff = hdgdiff - 2.0*M_PI;
     if(hdgdiff>M_PI)hdgdiff = hdgdiff - 2.0*M_PI;
     double fdis = sqrt(pow(xend-xstart,2)+pow(yend-ystart,2));
     double fdis = sqrt(pow(xend-xstart,2)+pow(yend-ystart,2));
 //    if(fabs(hdgdiff)/fdis > 0.1)
 //    if(fabs(hdgdiff)/fdis > 0.1)
-    if(fdis<3.0)
-    {
-        std::cout<<"bezier is not ok. use line."<<std::endl;
-        ntype = 0;
-        fxy[0] = xstart;
-        fxy[1] = ystart;
-        *fhdg = flinehdg;
-        *flen = fdis;
-        return 0;
-    }
+//    if(fdis<3.0)
+//    {
+//        std::cout<<"bezier is not ok. use line."<<std::endl;
+//        ntype = 0;
+//        fxy[0] = xstart;
+//        fxy[1] = ystart;
+//        *fhdg = flinehdg;
+//        *flen = fdis;
+//        return 0;
+//    }
 
 
     std::cout<<"bezer is ok. use bezier"<<std::endl;
     std::cout<<"bezer is ok. use bezier"<<std::endl;
 
 
@@ -891,9 +891,20 @@ int geofit::CreateBezier(double xstart, double ystart, double hdg_start, double
     if(vratio > 1)vratio = 1;
     if(vratio > 1)vratio = 1;
     if(vratio < 0)vratio = 0;
     if(vratio < 0)vratio = 0;
 
 
-    yc1 = 0; xc1 = x2 * uratio;
+    hdgdiff = hdg_end - hdg_start;
+    if(hdgdiff<(M_PI*(-1)))hdgdiff = hdgdiff + 2.0*M_PI;
+    if(hdgdiff>M_PI)hdgdiff = hdgdiff - 2.0*M_PI;
+    double frr = fabs(hdgdiff) * 0.1 +0.1;
+//    if(frr == 0)frr = 0.1;
+
+    uratio = frr;
+    vratio = frr;
 
 
     double c2base = sqrt(pow(x2,2) + pow(y2,2));
     double c2base = sqrt(pow(x2,2) + pow(y2,2));
+//    yc1 = 0; xc1 = x2 * uratio;
+    yc1 = 0; xc1 = c2base * uratio;
+
+
     double xoff = c2base * vratio * cos(hdg2) *(-1);
     double xoff = c2base * vratio * cos(hdg2) *(-1);
     double yoff = c2base * vratio * sin(hdg2)* (-1);
     double yoff = c2base * vratio * sin(hdg2)* (-1);
 
 
@@ -948,3 +959,327 @@ geofit & geofit::Inst()
 }
 }
 
 
 
 
+std::vector<geobase> geofit::CreateBezierGeo(double startx, double starty, double starthdg, double endx, double endy, double endhdg)
+{
+    geobase xgeobezier;
+
+    int nbtype;
+    double fabc[3],fxy[2],fblen,fbhdg;
+   geofit::Inst().CreateBezier(startx,starty,starthdg,
+                 endx,endy,endhdg,
+                 0.35,0.35,xgeobezier.mfu,xgeobezier.mfv,xgeobezier.mfLen,
+                 nbtype,fabc,&fbhdg,fxy,&fblen);
+    if(nbtype == 2)
+    {
+    xgeobezier.mfHdg = starthdg;
+    xgeobezier.mfX = startx;
+    xgeobezier.mfY = starty;
+    xgeobezier.mnType = 2;
+    }
+    else
+    {
+        xgeobezier.mnType = 0; //Line
+        xgeobezier.mfHdgStart = fbhdg;
+        xgeobezier.mfHdg = fbhdg;
+        xgeobezier.mfX = fxy[0];
+        xgeobezier.mfY = fxy[1];
+        xgeobezier.mfLen = fblen;
+    }
+
+    std::vector<geobase> xvectorgeo;
+    xvectorgeo.push_back(xgeobezier);
+    return xvectorgeo;
+}
+
+std::vector<geobase> geofit::CreateLineGeo(double startx, double starty, double starthdg, double endx, double endy, double endhdg)
+{
+
+//    std::vector<geobase> xvectorgeo;
+//    geobase xgeobezier;
+//    int nbtype;
+//    double fabc[3],fxy[2],fblen,fbhdg;
+//    geofit x;
+//    x.CreateBezier(startx,starty,starthdg,
+//                 endx,endy,endhdg,
+//                 0.35,0.35,xgeobezier.mfu,xgeobezier.mfv,xgeobezier.mfLen,
+//                 nbtype,fabc,&fbhdg,fxy,&fblen);
+//    if(nbtype == 2)
+//    {
+//    xgeobezier.mfHdg = starthdg;
+//    xgeobezier.mfX = startx;
+//    xgeobezier.mfY = starty;
+//    xgeobezier.mnType = 2;
+//    }
+//    else
+//    {
+//        xgeobezier.mnType = 0; //Line
+//        xgeobezier.mfHdgStart = fbhdg;
+//        xgeobezier.mfHdg = fbhdg;
+//        xgeobezier.mfX = fxy[0];
+//        xgeobezier.mfY = fxy[1];
+//        xgeobezier.mfLen = fblen;
+//    }
+//    xvectorgeo.push_back(xgeobezier);
+//    return xvectorgeo;
+    geobase linegeo;
+    linegeo.mnType = 0;
+    linegeo.mfX = startx;
+    linegeo.mfY = starty;
+    linegeo.mfHdg = geofit::CalcHdg(startx,starty,endx,endy);
+    linegeo.mfLen = sqrt(pow(endx - startx,2)+pow(endy - starty,2));
+    std::vector<geobase> xvectorgeo;
+    xvectorgeo.push_back(linegeo);
+    return xvectorgeo;
+}
+
+std::vector<geobase> geofit::CreateTurnGeo(double startx, double starty, double starthdg, double endx, double endy, double endhdg,double R)
+{
+    std::vector<geobase>  xvectorgeo;
+    xvectorgeo.clear();
+    if(starthdg == endhdg)
+    {
+        std::cout<<"hdg same use line contact"<<std::endl;
+        return CreateLineGeo(startx,starty,starthdg,endx,endy,endhdg);
+    }
+    double  a1,c1,a2,c2;
+    double inter_x,inter_y;
+    if((starthdg == M_PI/2.0)||(starthdg == 3.0*M_PI/2.0))
+    {
+        a2 = tan(endhdg) *(-1);
+        c2 = 0-a2*endx - endy;
+        a1 = 1;
+        c1 = startx *(-1);
+        inter_x = startx;
+        inter_y = 0 - a2*inter_x-c2;
+    }
+    else
+    {
+        if((endhdg == M_PI/2.0)||(endhdg == 3.0*M_PI/2.0))
+        {
+            a1 = tan(starthdg) *(-1);
+            c1 = 0-a1*startx - starty;
+            a2 = 1;
+            c2 = endx *(-1);
+            inter_x = endx;
+            inter_y = 0 - a1*inter_x-c1;
+        }
+        else
+        {
+            a1 = tan(starthdg) *(-1);
+            a2 = tan(endhdg) *(-1);
+            c1 = 0-a1*startx - starty;
+            c2 = 0-a2*endx - endy;
+            inter_x = (c1-c2)/(a2-a1);
+            inter_y = 0 - a1*inter_x - c1;
+        }
+    }
+
+    double dis1,dis2;
+    dis1 =sqrt(pow(inter_x - startx,2)+pow(inter_y - starty,2));
+    dis2 =sqrt(pow(inter_x - endx,2)+pow(inter_y - endy,2));
+
+    if((dis1<1.0)||(dis2<1.0))
+    {
+        std::cout<<"use line connect."<<std::endl;
+        char strinfo[256];
+        snprintf(strinfo,256,"Use Line Connect");
+  //      QMessageBox::information(this,"Info",strinfo,QMessageBox::YesAll);
+        return CreateLineGeo(startx,starty,starthdg,endx,endy,endhdg);
+
+    }
+
+    if((R>=dis1 )||(R>=dis2))
+    {
+        R = dis1 - 0.3;
+        if(R>=dis2)
+        {
+            R = dis2 - 0.3;
+        }
+        char strinfo[256];
+        snprintf(strinfo,256,"Change Radius to %f",R);
+ //       QMessageBox::information(this,"Info",strinfo,QMessageBox::YesAll);
+    }
+
+    double hdgdiff = endhdg - starthdg;
+    if(hdgdiff >= M_PI)hdgdiff = hdgdiff - 2.0*M_PI;
+    if(hdgdiff <= (-M_PI))hdgdiff = hdgdiff + 2.0*M_PI;
+
+
+    double slen = R*tan(fabs(hdgdiff/2.0));
+    if(slen <(R+0.3))
+    {
+        R = slen - 0.3;
+        std::cout<<"Change Radius to "<<R<<std::endl;
+
+        slen = R*tan(fabs(hdgdiff/2.0));
+    }
+
+    if((dis1<slen)||(dis2<slen))
+    {
+        std::cout<<"radius is big. use line."<<std::endl;
+        char strinfo[256];
+        snprintf(strinfo,256,"Use Line Connect");
+ //       QMessageBox::information(this,"Info",strinfo,QMessageBox::YesAll);
+        return CreateLineGeo(startx,starty,starthdg,endx,endy,endhdg);
+    }
+
+    double p1_x,p1_y,p2_x,p2_y;
+    p1_x = inter_x+ slen * cos(starthdg +M_PI);
+    p1_y = inter_y+ slen * sin(starthdg +M_PI);
+    p2_x = inter_x+slen*cos(endhdg);
+    p2_y = inter_y+slen*sin(endhdg);
+
+    geobase linegeo;
+    linegeo.mnType = 0;
+    linegeo.mfX = startx;
+    linegeo.mfY = starty;
+    linegeo.mfHdg = starthdg;
+    linegeo.mfLen = sqrt(pow(p1_x - startx,2)+pow(p1_y - starty,2));
+    xvectorgeo.push_back(linegeo);
+
+    geobase arcgeo;
+    arcgeo.mnType = 1;
+    arcgeo.mfX = p1_x;
+    arcgeo.mfY = p1_y;
+    arcgeo.mfHdg =  starthdg;
+    arcgeo.mfHdgStart = starthdg;
+    arcgeo.mfLen = R*fabs(hdgdiff);
+    arcgeo.mR =  R*(fabs(hdgdiff)/hdgdiff);
+    arcgeo.mfEndX = p2_x;
+    arcgeo.mfEndY = p2_y;
+    xvectorgeo.push_back(arcgeo);
+
+    linegeo.mnType = 0;
+    linegeo.mfX = p2_x;
+    linegeo.mfY = p2_y;
+    linegeo.mfHdg = endhdg;
+    linegeo.mfLen = sqrt(pow(p2_x - endx,2)+pow(p2_y - endy,2));
+    xvectorgeo.push_back(linegeo);
+
+    return xvectorgeo;
+
+
+
+}
+
+std::vector<geobase> geofit::CreateUTurnGeo(double startx, double starty, double starthdg, double endx, double endy, double endhdg, double fextend)
+{
+    std::vector<geobase>  xvectorgeo;
+
+
+    double p1_x,p1_y, p2_x,p2_y,p1_hdg,p2_hdg;
+
+    p1_x = fextend*cos(starthdg) + startx;
+    p1_y = fextend*sin(starthdg) + starty;
+
+    p2_x = fextend*cos(endhdg + M_PI) + endx;
+    p2_y = fextend*sin(endhdg + M_PI) + endy;
+
+    p1_hdg = starthdg;
+    p2_hdg = endhdg;
+
+    if(starthdg == endhdg)
+    {
+        std::cout<<" hdg is same, can't create u turn."<<std::endl;
+        return xvectorgeo;
+    }
+
+    double hdgse = geofit::CalcHdg(p1_x,p1_y,p2_x,p2_y);
+    double hdgdiff = hdgse - p1_hdg;
+    if(hdgdiff < 0)hdgdiff = hdgdiff  + 2.0*M_PI;
+
+    bool bPA = true; //Positive
+    if(hdgdiff >=M_PI)bPA = false;
+
+    double xdiff;
+    if(bPA)xdiff = hdgdiff - M_PI/2.0;
+    else xdiff = hdgdiff - 3.0*M_PI/2.0;
+
+    double xdis = sqrt(pow(p1_x-p2_x,2)+pow(p1_y-p2_y,2));
+    double R = xdis/(2.0*cos(xdiff));
+
+    double x_center,y_center;
+
+    double xhdgtocenter;
+
+    if(bPA)
+    {
+        xhdgtocenter = p1_hdg + M_PI/2.0;
+        if(xhdgtocenter  >= 2.0*M_PI)xhdgtocenter = xhdgtocenter - M_PI*2.0;
+    }
+    else
+    {
+        xhdgtocenter = p1_hdg - M_PI/2.0;
+        if(xhdgtocenter < 0)xhdgtocenter = xhdgtocenter + 2.0*M_PI;
+    }
+
+    x_center = p1_x + R*cos(xhdgtocenter);
+    y_center = p1_y + R*sin(xhdgtocenter);
+
+    double xhdgcentertoarc;
+    if(bPA)
+    {
+        xhdgcentertoarc = hdgse - M_PI/2.0;
+        if(xhdgcentertoarc <0)xhdgcentertoarc = xhdgcentertoarc + 2.0*M_PI;
+    }
+    else
+    {
+        xhdgcentertoarc = hdgse + M_PI/2.0;
+        if(xhdgcentertoarc >= M_PI*2.0)xhdgcentertoarc = xhdgcentertoarc - M_PI*2.0;
+    }
+
+    double p3_x,p3_y,p3_hdg;
+    p3_hdg = hdgse;
+    p3_x = x_center + R* cos(xhdgcentertoarc);
+    p3_y = y_center + R* sin(xhdgcentertoarc);
+
+//    pgb->AddGeometryArc(s,parc->mfX,parc->mfY,parc->mfHdgStart,parc->mfLen,1.0/parc->mR);
+    geobase c2,c3;
+    c2.mfX = p1_x;
+    c2.mfY = p1_y;
+    c2.mfHdgStart = p1_hdg;
+    c3.mfX = p3_x;
+    c3.mfY = p3_y;
+    c3.mfHdgStart = hdgse;
+    c2.mnType = 1;
+    c3.mnType = 1;
+    if(bPA)
+    {
+        c2.mfLen = hdgdiff * R;
+        c2.mR = R;
+        c3.mfLen = c2.mfLen;
+        c3.mR = R;
+    }
+    else
+    {
+        c2.mfLen = (2.0*M_PI - hdgdiff) * R;
+
+        c2.mR = R*(-1);
+
+        c3.mfLen = c2.mfLen;
+        c3.mR = R*(-1);
+    }
+    geobase l1,l2;
+    if(fextend != 0)
+    {
+        l1.mfX = startx;
+        l1.mfY = starty;
+        l1.mfHdg = starthdg;
+        l1.mfLen = fextend;
+        l1.mnType = 0;
+        l2.mfX = p2_x;
+        l2.mfY = p2_y;
+        l2.mfHdg = p2_hdg;
+        l2.mfLen = fextend;
+        l2.mnType = 0;
+        xvectorgeo.push_back(l1);
+    }
+    xvectorgeo.push_back(c2);
+    xvectorgeo.push_back(c3);
+    if(fextend != 0)xvectorgeo.push_back(l2);
+
+    return xvectorgeo;
+}
+
+
+

+ 5 - 0
src/tool/map_lanetoxodr/geofit.h

@@ -74,6 +74,11 @@ public:
 
 
     static geofit & Inst();
     static geofit & Inst();
 
 
+    static std::vector<geobase> CreateLineGeo(double startx,double starty,double starthdg,double endx,double endy,double endhdg);
+    static std::vector<geobase> CreateTurnGeo(double startx,double starty,double starthdg,double endx,double endy,double endhdg,double R);
+    static std::vector<geobase> CreateUTurnGeo(double startx,double starty,double starthdg,double endx,double endy,double endhdg,double fextend);
+    static std::vector<geobase> CreateBezierGeo(double startx,double starty,double starthdg,double endx,double endy,double endhdg);
+
 };
 };
 
 
 #endif // GEOFIT_H
 #endif // GEOFIT_H

+ 12 - 0
src/tool/map_lanetoxodr/main.cpp

@@ -13,6 +13,7 @@
 
 
 #include <QApplication>
 #include <QApplication>
 
 
+#include "adclicensewithwin.h"
 
 
 #ifdef ANDROID
 #ifdef ANDROID
 #include <QAndroidJniEnvironment>
 #include <QAndroidJniEnvironment>
@@ -51,10 +52,14 @@ bool requestPermission() {
 #endif
 #endif
 
 
 
 
+#include "ivlog.h"
+iv::Ivlog *givlog;
 
 
 int main(int argc, char *argv[])
 int main(int argc, char *argv[])
 {
 {
 
 
+    //Call License
+    //Wait
 #ifndef ANDROID
 #ifndef ANDROID
 
 
     RegisterIVBackTrace();
     RegisterIVBackTrace();
@@ -73,6 +78,13 @@ int main(int argc, char *argv[])
 #ifdef XODRViewer
 #ifdef XODRViewer
     XVMainWindow w;
     XVMainWindow w;
 #else
 #else
+#ifdef OPENDRIVE_EDITONLY
+    if(ADCLicenseCheckWithWin() != 0)
+    {
+        return 0;
+    }
+#endif
+    givlog = new iv::Ivlog("map_lanetoxodr");
     MainWindow w;
     MainWindow w;
 #endif
 #endif
     w.show();
     w.show();

+ 529 - 84
src/tool/map_lanetoxodr/mainwindow.cpp

@@ -81,6 +81,8 @@ MainWindow::MainWindow(QWidget *parent) :
     mpfb = new FileBackup();
     mpfb = new FileBackup();
     mpfb->start();
     mpfb->start();
 
 
+    mpdlgdraw =  new DialogDrawRoad(this);
+
     setWindowTitle("Create Map From Lane Info");
     setWindowTitle("Create Map From Lane Info");
 
 
 }
 }
@@ -111,9 +113,6 @@ void MainWindow::AdjustWPos(QSize sizemain)
 
 
 void MainWindow::ExecPainter()
 void MainWindow::ExecPainter()
 {
 {
-
-
-
     QTime x;
     QTime x;
     x.start();
     x.start();
     //    qDebug("painter.");
     //    qDebug("painter.");
@@ -176,6 +175,11 @@ void MainWindow::ExecPainter()
             painter->setPen(Qt::red);
             painter->setPen(Qt::red);
         }
         }
 
 
+        if(IsHidenRoad(atoi(pRoad->GetRoadId().data())))
+        {
+            continue;
+        }
+
         if(mxodr.GetRoad(i)->GetGeometryBlockCount()>0)
         if(mxodr.GetRoad(i)->GetGeometryBlockCount()>0)
         {
         {
             GeometryBlock * pgeob = pRoad->GetGeometryBlock(0);
             GeometryBlock * pgeob = pRoad->GetGeometryBlock(0);
@@ -352,6 +356,7 @@ void MainWindow::ExecPainter()
                 ppp3 = (GeometryParamPoly3 * )pg;
                 ppp3 = (GeometryParamPoly3 * )pg;
                 int ncount = ppp3->GetLength()* mnfac;
                 int ncount = ppp3->GetLength()* mnfac;
                 double sstep;
                 double sstep;
+                bool bNormal = ppp3->GetNormal();
                 double arclength = ppp3->GetLength();
                 double arclength = ppp3->GetLength();
                 if(ncount > 0)sstep = ppp3->GetLength()/ncount;
                 if(ncount > 0)sstep = ppp3->GetLength()/ncount;
 
 
@@ -360,7 +365,8 @@ void MainWindow::ExecPainter()
                 while(s < ppp3->GetLength())
                 while(s < ppp3->GetLength())
                 {
                 {
                     double xtem,ytem;
                     double xtem,ytem;
-                    double pRange = s/arclength;
+                    double pRange =s;
+                    if(bNormal && (arclength>0))pRange = s/arclength;
                     xtem = ppp3->GetuA() +  ppp3->GetuB() * pRange +  ppp3->GetuC() * pRange*pRange +  ppp3->GetuD() * pRange*pRange*pRange;
                     xtem = ppp3->GetuA() +  ppp3->GetuB() * pRange +  ppp3->GetuC() * pRange*pRange +  ppp3->GetuD() * pRange*pRange*pRange;
                     ytem = ppp3->GetvA() + ppp3->GetvB() * pRange + ppp3->GetvC() * pRange*pRange + ppp3->GetvD() * pRange*pRange*pRange;
                     ytem = ppp3->GetvA() + ppp3->GetvB() * pRange + ppp3->GetvC() * pRange*pRange + ppp3->GetvD() * pRange*pRange*pRange;
                     x = xtem*cos(ppp3->GetHdg()) - ytem * sin(ppp3->GetHdg()) + ppp3->GetX();
                     x = xtem*cos(ppp3->GetHdg()) - ytem * sin(ppp3->GetHdg()) + ppp3->GetX();
@@ -471,7 +477,7 @@ void MainWindow::onTimer()
 void MainWindow::CreateTab1View(QTabWidget * p)
 void MainWindow::CreateTab1View(QTabWidget * p)
 {
 {
     QGroupBox * pGroup = new QGroupBox();
     QGroupBox * pGroup = new QGroupBox();
-    pGroup->setGeometry(0,0,mnFontHeight * 21,mnFontHeight * 110);
+    pGroup->setGeometry(0,0,mnFontHeight * 21,mnFontHeight * 160);
 
 
     QLabel * pLabel;
     QLabel * pLabel;
     QLineEdit * pLE;
     QLineEdit * pLE;
@@ -1009,6 +1015,12 @@ void MainWindow::CreateTab1View(QTabWidget * p)
     pPB->setGeometry(nXPos,nYPos,nLEWidth,nLEHeight);
     pPB->setGeometry(nXPos,nYPos,nLEWidth,nLEHeight);
     connect(pPB,SIGNAL(clicked(bool)),this,SLOT(onClickRoadContact()));
     connect(pPB,SIGNAL(clicked(bool)),this,SLOT(onClickRoadContact()));
 
 
+    nXPos = nXPos + nSpace;
+    pPB = new QPushButton(pGroup);
+    pPB->setText("Auto Road Contact");
+    pPB->setGeometry(nXPos,nYPos,nLEWidth*3/2,nLEHeight);
+    connect(pPB,SIGNAL(clicked(bool)),this,SLOT(onClickAutoRoadContact()));
+
     nXPos = 10;
     nXPos = 10;
     nYPos = nYPos + mnFontHeight * 4;
     nYPos = nYPos + mnFontHeight * 4;
 
 
@@ -1067,6 +1079,7 @@ void MainWindow::CreateTab1View(QTabWidget * p)
     pPB->setText("Clear");
     pPB->setText("Clear");
     pPB->setGeometry(nXPos,nYPos,nLEWidth,nLEHeight);
     pPB->setGeometry(nXPos,nYPos,nLEWidth,nLEHeight);
     nXPos = nXPos + nSpace;
     nXPos = nXPos + nSpace;
+    connect(pPB,SIGNAL(clicked(bool)),this,SLOT(onClickClearLaneContact()));
 
 
     pPB = new QPushButton(pGroup);
     pPB = new QPushButton(pGroup);
     pPB->setText("Create Road");
     pPB->setText("Create Road");
@@ -1096,6 +1109,12 @@ void MainWindow::CreateTab1View(QTabWidget * p)
     pLE->setGeometry(nXPos,nYPos,nLEWidth,nLEHeight);
     pLE->setGeometry(nXPos,nYPos,nLEWidth,nLEHeight);
     mpLERoadType = pLE;
     mpLERoadType = pLE;
 
 
+    mpCBStraightType = new QCheckBox(pGroup);
+    mpCBStraightType->setText("Line Only");
+    mpCBStraightType->setChecked(false);
+    mpCBStraightType->setGeometry(nXPos,nYPos,nLEWidth,nLEHeight);
+    mpCBStraightType->setVisible(false);
+
     mpCBRoadType->setCurrentIndex(0);
     mpCBRoadType->setCurrentIndex(0);
     mpLBRoadType->setVisible(true);
     mpLBRoadType->setVisible(true);
     mpLERoadType->setVisible(true);
     mpLERoadType->setVisible(true);
@@ -1260,6 +1279,8 @@ void MainWindow::onClickXY(double x, double y)
     mpLE_SelX->setText(QString::number(selx,'f',3));
     mpLE_SelX->setText(QString::number(selx,'f',3));
     mpLE_SelY->setText(QString::number(sely,'f',3));
     mpLE_SelY->setText(QString::number(sely,'f',3));
 
 
+    emit CurrentPosition(selx,sely);
+
     double x0,y0;
     double x0,y0;
     GaussProjCal(glon0,glat0,&x0,&y0);
     GaussProjCal(glon0,glat0,&x0,&y0);
     GaussProjInvCal(x0+selx,y0+sely,&lon,&lat);
     GaussProjInvCal(x0+selx,y0+sely,&lon,&lat);
@@ -1273,7 +1294,7 @@ void MainWindow::onClickXY(double x, double y)
     double fdis,nearx,neary,hdg;
     double fdis,nearx,neary,hdg;
     double fs;
     double fs;
     int nlane;
     int nlane;
-    if(xodrfunc::GetNearPoint(rel_x,rel_y,&mxodr,&pRoad,&pgeob,fdis,nearx,neary,hdg,50,&fs,&nlane) == 0)
+    if(xodrfunc::GetNearPointWithHide(rel_x,rel_y,&mxodr,&pRoad,&pgeob,fdis,nearx,neary,hdg,50,mvectorhideroadid,&fs,&nlane) == 0)
     {
     {
         qDebug("s:%f dis is %f nlane is %d",fs,fdis,nlane);
         qDebug("s:%f dis is %f nlane is %d",fs,fdis,nlane);
         char strout[1000];
         char strout[1000];
@@ -1312,6 +1333,13 @@ void MainWindow::onClickXY(double x, double y)
     mpLE_SelLon->setText(QString::number(lon,'f',7));
     mpLE_SelLon->setText(QString::number(lon,'f',7));
     mpLE_SelLat->setText(QString::number(lat,'f',7));
     mpLE_SelLat->setText(QString::number(lat,'f',7));
     update();
     update();
+
+    if(mpCBViewMode->currentIndex() == 1)
+    {
+        UpdateScene_SelectRoadRefGeo();
+    }
+
+
 }
 }
 
 
 void MainWindow::ComboToString(std::string strroadid,QComboBox * pCB)
 void MainWindow::ComboToString(std::string strroadid,QComboBox * pCB)
@@ -1655,58 +1683,7 @@ void MainWindow::onClickLoadLane()
  */
  */
 Road MainWindow::CreateRoad(VectorXd xvals, VectorXd yvals)
 Road MainWindow::CreateRoad(VectorXd xvals, VectorXd yvals)
 {
 {
-//    Road xRoad;
-//    double LINE_ERROR = 0.15;
-//    int nsize =  xvals.size();
-//    int nnotfit = nsize;
-//    int ncurpos = 0;
-//    int nrange = nsize;
-//    while(ncurpos  <  nsize)
-//    {
-// //       int N = nrange - ncurpos;
-//        VectorXd x_veh(nrange);
-//        VectorXd y_veh(nrange);
-
-//        int j;
-//        for(j=ncurpos;j<(ncurpos +nrange);j++)
-//        {
-//            x_veh[j-ncurpos] = xvals[j];
-//            y_veh[j - ncurpos] = yvals[j];
-//        }
-
-//        auto coeffs = polyfit(x_veh, y_veh, 1);
-
-//        double dismax = 0;
-//        for(j=ncurpos;j<(ncurpos +nrange);j++)
-//        {
-//            double A = coeffs[1];
-//            double B = -1;
-//            double C = coeffs[0];
-//            double dis = fabs(A*x_veh[j-ncurpos] + B*y_veh[j-ncurpos] +C )/sqrt(pow(A,2)+pow(B,2));
-//            if(dis>dismax)dismax = dis;
-//        }
-//        std::cout<<"dis is "<<dismax<<std::endl;
-//        if((dismax > LINE_ERROR)&&((nsize -(nrange+ncurpos))>50))
-//        {
-//            nrange = nrange/2;
-//        }
-//        else
-//        {
-//            std::cout<<"nrange is "<<nrange<<std::endl;
-
-//            xRoad.AddGeometryBlock();
-//            GeometryBlock * pgb = xRoad.GetGeometryBlock(xRoad.GetGeometryBlockCount()-1);
-// //           pgb->AddGeometryLine(1.0,x,y,len);
-
-//            ncurpos = ncurpos + nrange;
-//            nrange = nsize - ncurpos;
-
-
-//            std::cout<<"add a geo."<<std::endl;
-//        }
-//    }
 
 
-//    return xRoad;
 }
 }
 
 
 void MainWindow::onClickMarkLane()
 void MainWindow::onClickMarkLane()
@@ -2669,12 +2646,6 @@ void MainWindow::onClickAddRoad()
     mbRefresh = true;
     mbRefresh = true;
     update();
     update();
 
 
-
-
-//    OpenDriveXmlWriter x(&mxodr);
- //   x.WriteFile("/home/nvidia/text.xodr");
-
-
 }
 }
 
 
 
 
@@ -2754,6 +2725,8 @@ void MainWindow::onClickLoad()
     QString str = QFileDialog::getOpenFileName(this,"Load XODR",".","*.xodr");
     QString str = QFileDialog::getOpenFileName(this,"Load XODR",".","*.xodr");
     if(str.isEmpty())return;
     if(str.isEmpty())return;
 
 
+    mvectorhideroadid.clear();
+
     QString strfilepath = str;
     QString strfilepath = str;
 
 
     QString strbak = str + ".bak";
     QString strbak = str + ".bak";
@@ -2792,6 +2765,25 @@ void MainWindow::onClickLoad()
             i--;
             i--;
             nroadnum--;
             nroadnum--;
             qDebug("delete road %s because length is NaN",pRoad->GetRoadId().data());
             qDebug("delete road %s because length is NaN",pRoad->GetRoadId().data());
+            continue;
+        }
+        unsigned int j;
+        double snow = 0;
+        double roadcalclen = 0;
+        for(j=0;j<pRoad->GetGeometryBlockCount();j++)
+        {
+            if(fabs(pRoad->GetGeometryBlock(j)->GetGeometryAt(0)->GetS() - snow)>0.1)
+            {
+                std::cout<<"change road "<<pRoad->GetRoadId().data()<<" S"<<std::endl;
+                pRoad->GetGeometryBlock(j)->GetGeometryAt(0)->SetS(snow);
+            }
+            snow = snow + pRoad->GetGeometryBlock(j)->GetBlockLength();
+            roadcalclen = snow;
+        }
+        if(fabs(roadcalclen - pRoad->GetRoadLength())>0.1)
+        {
+            std::cout<<"change road "<<pRoad->GetRoadId().data()<<" Length"<<std::endl;
+            pRoad->SetRoadLength(roadcalclen);
         }
         }
     }
     }
 
 
@@ -2816,6 +2808,11 @@ void MainWindow::onClickLoad()
 //        mxodr.GetHeader()->SetgeoReference(strgeoref);
 //        mxodr.GetHeader()->SetgeoReference(strgeoref);
 //        mxodr.GetHeader()->SetuserData(struserData);
 //        mxodr.GetHeader()->SetuserData(struserData);
     }
     }
+    else
+    {
+        lat0 = 39.0;
+        lon0 = 119.0;
+    }
 
 
     double xMoveX = 0;
     double xMoveX = 0;
     double xMoveY = 0;
     double xMoveY = 0;
@@ -2838,6 +2835,11 @@ void MainWindow::onClickLoad()
 
 
     if(bAddToNow )bNeedAjustID = true;
     if(bAddToNow )bNeedAjustID = true;
 
 
+    if(bAddToNow == false)
+    {
+        mbSetOrigin = false;
+    }
+
     if(mbSetOrigin == false)
     if(mbSetOrigin == false)
     {
     {
         bNeedMove = false;
         bNeedMove = false;
@@ -2987,6 +2989,161 @@ void MainWindow::onClickSave()
     mpfb->Activate(str);
     mpfb->Activate(str);
 }
 }
 
 
+void MainWindow::onClickAutoRoadContact()
+{
+    int ch1,ch2;
+    ch1  = mpCBRoad1->currentIndex();
+    ch2 = mpCBRoad2->currentIndex();
+    if((ch1 == -1)||(ch2 == -1))
+    {
+        return;
+    }
+//    if(ch1 == ch2)
+//    {
+//        QMessageBox::warning(this,"warn","road same");
+//        return;
+//    }
+    int ntype1,ntype2;
+    ntype1 = mpCBRC1->currentIndex();
+    ntype2 = mpCBRC2->currentIndex();
+    Road * p1 = mxodr.GetRoad(ch1);
+    Road * p2 = mxodr.GetRoad(ch2);
+
+    int contactype;
+    int turnstraight;
+    std::vector<iv::ARC> xARCLane,xARCOpLane;
+    int nARCRtn = AutoRoadContact::CalcContact(p1,p2,contactype,turnstraight,xARCLane,xARCOpLane);
+    if(nARCRtn < 0)
+    {
+        QMessageBox::warning(this,"Warning","Auto Road Contact fail",QMessageBox::YesAll);
+        return;
+    }
+
+    switch (contactype) {
+    case 0:
+        mpCBRC1->setCurrentIndex(0);
+        mpCBRC2->setCurrentIndex(0);
+        break;
+    case 1:
+        mpCBRC1->setCurrentIndex(0);
+        mpCBRC2->setCurrentIndex(1);
+        break;
+    case 2:
+        mpCBRC1->setCurrentIndex(1);
+        mpCBRC2->setCurrentIndex(0);
+        break;
+    case 3:
+        mpCBRC1->setCurrentIndex(1);
+        mpCBRC2->setCurrentIndex(1);
+        break;
+    default:
+        break;
+    }
+
+    ntype1 = mpCBRC1->currentIndex();
+    ntype2 = mpCBRC2->currentIndex();
+    iv::roadcontact rc;
+    rc.mnroad1id = atoi(p1->GetRoadId().data());
+    rc.mnroad2id = atoi(p2->GetRoadId().data());
+    rc.mncon1 = ntype1;
+    rc.mncon2 = ntype2;
+
+    char strname[256];
+    if(xARCLane.size()>0)
+    {
+        snprintf(strname,256,"%s_%s_%s_%s",p1->GetRoadId().data(),mpCBRC1->currentText().toLatin1().data(),
+             p2->GetRoadId().data(),mpCBRC2->currentText().toLatin1().data());
+    }
+    else
+    {
+        xARCLane = xARCOpLane;
+        xARCOpLane.clear();
+        rc.mnroad2id = atoi(p1->GetRoadId().data());
+        rc.mnroad1id = atoi(p2->GetRoadId().data());
+        rc.mncon2 = ntype1;
+        rc.mncon1 = ntype2;
+        snprintf(strname,256,"%s_%s_%s_%s",p2->GetRoadId().data(),mpCBRC2->currentText().toLatin1().data(),
+                 p1->GetRoadId().data(),mpCBRC1->currentText().toLatin1().data());
+
+    }
+    mpCBRoadCon->clear();
+    mpCBRoadCon->addItem(strname);
+    mpCBLane1->clear();
+    mpCBLane2->clear();
+
+
+    mpCBLane1Lane2->clear();
+    mpCBLane1Lane2op->clear();
+
+    if(p1->GetLaneSectionCount()>0)
+    {
+        LaneSection * pLS;
+        if(ntype1 == 0)
+            pLS = p1->GetLaneSection(0);
+        else
+            pLS = p1->GetLaneSection(p1->GetLaneSectionCount()-1);
+        int i;
+        for(i=0;i<pLS->GetLaneCount();i++)
+        {
+            Lane * pL = pLS->GetLane(i);
+//            if((pL->GetId() != 0)&&(strncmp(pL->GetType().data(),"driving",255)==0))
+            if(pL->GetId() != 0)
+                mpCBLane1->addItem(QString::number(pL->GetId()));
+        }
+
+    }
+
+    if(p2->GetLaneSectionCount()>0)
+    {
+        LaneSection * pLS;
+        if(ntype1 == 0)
+            pLS = p2->GetLaneSection(0);
+        else
+            pLS = p2->GetLaneSection(p2->GetLaneSectionCount()-1);
+        int i;
+        for(i=0;i<pLS->GetLaneCount();i++)
+        {
+            Lane * pL = pLS->GetLane(i);
+ //           if((pL->GetId() != 0)&&(strncmp(pL->GetType().data(),"driving",255)==0))
+            if(pL->GetId() != 0)
+                mpCBLane2->addItem(QString::number(pL->GetId()));
+        }
+
+    }
+
+    mvectorrc.clear();
+    mvectorrc.push_back(rc);
+
+    mpCBRoadType->setCurrentIndex(turnstraight);
+
+    unsigned int i;
+    for(i=0;i<xARCLane.size();i++)
+    {
+        iv::lanecontact xlc;
+        xlc.ml1 = xARCLane.at(i).from;
+        xlc.ml2 = xARCLane.at(i).to;
+        if(mvectorrc.size()  < 1)break;
+        mvectorrc[0].mvectorlc.push_back(xlc);
+
+        char strname[256];
+        snprintf(strname,255,"%dto%d",xlc.ml1,xlc.ml2);
+        mpCBLane1Lane2->addItem(strname);
+    }
+    for(i=0;i<xARCOpLane.size();i++)
+    {
+        iv::lanecontact xlc;
+        xlc.ml1 = xARCOpLane.at(i).from;
+        xlc.ml2 = xARCOpLane.at(i).to;
+        if(mvectorrc.size()  < 1)break;
+        mvectorrc[0].mvectorlcop.push_back(xlc);
+
+        char strname[256];
+        snprintf(strname,255,"%dto%d",xlc.ml1,xlc.ml2);
+        mpCBLane1Lane2op->addItem(strname);
+    }
+
+}
+
 void MainWindow::onClickRoadContact()
 void MainWindow::onClickRoadContact()
 {
 {
     int ch1,ch2;
     int ch1,ch2;
@@ -3048,7 +3205,7 @@ void MainWindow::onClickRoadContact()
         if(ntype1 == 0)
         if(ntype1 == 0)
             pLS = p2->GetLaneSection(0);
             pLS = p2->GetLaneSection(0);
         else
         else
-            pLS = p2->GetLaneSection(p1->GetLaneSectionCount()-1);
+            pLS = p2->GetLaneSection(p2->GetLaneSectionCount()-1);
         int i;
         int i;
         for(i=0;i<pLS->GetLaneCount();i++)
         for(i=0;i<pLS->GetLaneCount();i++)
         {
         {
@@ -3099,6 +3256,16 @@ void MainWindow::onClickOpLaneContact()
     mpCBLane1Lane2op->addItem(strname);
     mpCBLane1Lane2op->addItem(strname);
 }
 }
 
 
+void MainWindow::onClickClearLaneContact()
+{
+    mpCBLane1Lane2op->clear();
+    mpCBLane1Lane2->clear();
+    if(mvectorrc.size()<1)return;
+    mvectorrc[0].mvectorlc.clear();
+    mvectorrc[0].mvectorlcop.clear();
+
+}
+
 void MainWindow::onClickCreateRoad()
 void MainWindow::onClickCreateRoad()
 {
 {
     if(mvectorrc.size()<1)return;
     if(mvectorrc.size()<1)return;
@@ -3284,7 +3451,18 @@ void MainWindow::onClickCreateRoad()
         xvectorgeo = CreateTurnGeo(startx,starty,starthdg,endx,endy,endhdg,R);
         xvectorgeo = CreateTurnGeo(startx,starty,starthdg,endx,endy,endhdg,R);
         break;
         break;
     case 1:
     case 1:
-        xvectorgeo = CreateLineGeo(startx,starty,starthdg,endx,endy,endhdg);
+        {
+            double fdis = sqrt(pow(startx - endx,2) +pow(starty -endy,2));
+            if((fdis<3) || (starthdg == endhdg) ||(mpCBStraightType->isChecked()))
+            {
+                xvectorgeo = CreateLineGeo(startx,starty,starthdg,endx,endy,endhdg);
+            }
+            else
+            {
+                xvectorgeo = geofit::CreateBezierGeo(startx,starty,starthdg,endx,endy,endhdg);
+            }
+//
+        }
         break;
         break;
     case 2:
     case 2:
         xvectorgeo = CreateUTurnGeo(startx,starty,starthdg,endx,endy,endhdg,R);
         xvectorgeo = CreateUTurnGeo(startx,starty,starthdg,endx,endy,endhdg,R);
@@ -3352,7 +3530,7 @@ void MainWindow::onClickCreateRoad()
                 pgb->AddGeometryParamPoly3(s,pbez->mfX,pbez->mfY,
                 pgb->AddGeometryParamPoly3(s,pbez->mfX,pbez->mfY,
                                            pbez->mfHdg,pbez->mfLen,pbez->mfu[0],
                                            pbez->mfHdg,pbez->mfLen,pbez->mfu[0],
                         pbez->mfu[1],pbez->mfu[2],pbez->mfu[3],pbez->mfv[0],
                         pbez->mfu[1],pbez->mfu[2],pbez->mfu[3],pbez->mfv[0],
-                        pbez->mfv[1],pbez->mfv[2],pbez->mfv[3]);
+                        pbez->mfv[1],pbez->mfv[2],pbez->mfv[3],false);
                 break;
                 break;
             }
             }
             s = s + xvectorgeo[j].mfLen;
             s = s + xvectorgeo[j].mfLen;
@@ -3403,7 +3581,7 @@ void MainWindow::onClickCreateRoad()
 
 
             pLL->AddWidthRecord(0,pa[i],pb[i],
             pLL->AddWidthRecord(0,pa[i],pb[i],
                                 0,0);
                                 0,0);
-            pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
+ //           pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
 
 
         }
         }
 
 
@@ -3444,7 +3622,7 @@ void MainWindow::onClickCreateRoad()
 
 
                 pLL->AddWidthRecord(0,pa[i],pb[i],
                 pLL->AddWidthRecord(0,pa[i],pb[i],
                                     0,0);
                                     0,0);
-                pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
+  //              pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
 
 
             }
             }
         }
         }
@@ -3504,6 +3682,7 @@ void MainWindow::onClickCreateRoad()
             s = s + xvectorgeo1[j].mfLen;
             s = s + xvectorgeo1[j].mfLen;
         }
         }
 
 
+        s=0.0;
         for(j=0;j<xvectorgeo2.size();j++)
         for(j=0;j<xvectorgeo2.size();j++)
         {
         {
             proad2->AddGeometryBlock();
             proad2->AddGeometryBlock();
@@ -3584,14 +3763,14 @@ void MainWindow::onClickCreateRoad()
 
 
             pLL->AddWidthRecord(0,pa[i],pb[i],
             pLL->AddWidthRecord(0,pa[i],pb[i],
                                 0,0);
                                 0,0);
-            pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
+//            pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
 
 
             pLS2->AddLane(-1,(i+1)*(-1),strvectorlanetype[i],false,false);
             pLS2->AddLane(-1,(i+1)*(-1),strvectorlanetype[i],false,false);
             pLL = pLS2->GetLane(pLS2->GetLaneCount() - 1);
             pLL = pLS2->GetLane(pLS2->GetLaneCount() - 1);
 
 
             pLL->AddWidthRecord(0,pa[i]+pb[i]*xroadlen1 ,pb[i],
             pLL->AddWidthRecord(0,pa[i]+pb[i]*xroadlen1 ,pb[i],
                                 0,0);
                                 0,0);
-            pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
+//            pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
 
 
         }
         }
         int noplanecount = mvectorrc[0].mvectorlcop.size();
         int noplanecount = mvectorrc[0].mvectorlcop.size();
@@ -3631,14 +3810,14 @@ void MainWindow::onClickCreateRoad()
 
 
                 pLL->AddWidthRecord(0,pa[i],pb[i],
                 pLL->AddWidthRecord(0,pa[i],pb[i],
                                     0,0);
                                     0,0);
-                pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
+ //               pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
 
 
                 pLS2->AddLane(1,(i+1),strvectorlanetype[i],false,false);
                 pLS2->AddLane(1,(i+1),strvectorlanetype[i],false,false);
                 pLL = pLS2->GetLane(pLS2->GetLaneCount() - 1);
                 pLL = pLS2->GetLane(pLS2->GetLaneCount() - 1);
 
 
                 pLL->AddWidthRecord(0,pa[i]+pb[i]*xroadlen1 ,pb[i],
                 pLL->AddWidthRecord(0,pa[i]+pb[i]*xroadlen1 ,pb[i],
                                     0,0);
                                     0,0);
-                pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
+//                pLL->AddRoadMarkRecord(0,"solid","standard","standard",0.15,"false");
 
 
             }
             }
         }
         }
@@ -3649,6 +3828,12 @@ void MainWindow::onClickCreateRoad()
     mbRefresh = true;
     mbRefresh = true;
     update();
     update();
 
 
+    if(mpCBViewMode->currentIndex() == 1)
+    {
+        UpdateScene();
+    }
+
+
     mpfb->SetOpenDrive(mxodr);
     mpfb->SetOpenDrive(mxodr);
 
 
 }
 }
@@ -3659,6 +3844,9 @@ int MainWindow::GetEndPoint(Road *proad, double &x, double &y, double &hdg)
 
 
     RoadGeometry * pgeo = pblock->GetLastGeometry();
     RoadGeometry * pgeo = pblock->GetLastGeometry();
 
 
+    proad->GetGeometryCoords(proad->GetRoadLength(),x,y,hdg);
+    return 0;
+
 
 
     //0-line, 1-arc, 2-spiral 3-poly3 4-parampoly3
     //0-line, 1-arc, 2-spiral 3-poly3 4-parampoly3
     switch (pgeo->GetGeomType()) {
     switch (pgeo->GetGeomType()) {
@@ -3701,21 +3889,35 @@ int MainWindow::GetEndPoint(Road *proad, double &x, double &y, double &hdg)
         double s = ppoly3->GetLength();
         double s = ppoly3->GetLength();
 //        xtem = ppoly3->GetuA() + ppoly3->GetuB() * s  + ppoly3->GetuC() * s*s  + ppoly3->GetuD() * s*s*s ;
 //        xtem = ppoly3->GetuA() + ppoly3->GetuB() * s  + ppoly3->GetuC() * s*s  + ppoly3->GetuD() * s*s*s ;
 //        ytem = ppoly3->GetvA() + ppoly3->GetvB() * s + ppoly3->GetvC() * s*s  + ppoly3->GetvD() * s*s*s ;
 //        ytem = ppoly3->GetvA() + ppoly3->GetvB() * s + ppoly3->GetvC() * s*s  + ppoly3->GetvD() * s*s*s ;
-        xtem = ppoly3->GetuA() + ppoly3->GetuB()  + ppoly3->GetuC()   + ppoly3->GetuD()  ;
-        ytem = ppoly3->GetvA() + ppoly3->GetvB() + ppoly3->GetvC()   + ppoly3->GetvD() ;
+        if(ppoly3->GetNormal())
+        {
+            xtem = ppoly3->GetuA() + ppoly3->GetuB()  + ppoly3->GetuC()   + ppoly3->GetuD()  ;
+            ytem = ppoly3->GetvA() + ppoly3->GetvB() + ppoly3->GetvC()   + ppoly3->GetvD() ;
+        }
+        else
+        {
+            xtem = ppoly3->GetuA() + ppoly3->GetuB() * s  + ppoly3->GetuC() * s*s  + ppoly3->GetuD() * s*s*s ;
+            ytem = ppoly3->GetvA() + ppoly3->GetvB() * s + ppoly3->GetvC() * s*s  + ppoly3->GetvD() * s*s*s ;
+        }
         x = xtem*cos(ppoly3->GetHdg()) - ytem * sin(ppoly3->GetHdg()) + ppoly3->GetX();
         x = xtem*cos(ppoly3->GetHdg()) - ytem * sin(ppoly3->GetHdg()) + ppoly3->GetX();
         y = xtem*sin(ppoly3->GetHdg()) + ytem * cos(ppoly3->GetHdg()) + ppoly3->GetY();
         y = xtem*sin(ppoly3->GetHdg()) + ytem * cos(ppoly3->GetHdg()) + ppoly3->GetY();
         s = ppoly3->GetLength()*0.99;
         s = ppoly3->GetLength()*0.99;
         if(s>0)
         if(s>0)
         {
         {
             double frel = 0.99;
             double frel = 0.99;
- //           xtem1 = ppoly3->GetuA() + ppoly3->GetuB() * s  + ppoly3->GetuC() * s*s  + ppoly3->GetuD() * s*s*s ;
- //           ytem1 = ppoly3->GetvA() + ppoly3->GetvB() * s + ppoly3->GetvC() * s*s  + ppoly3->GetvD() * s*s*s ;
-            xtem1 = ppoly3->GetuA() + ppoly3->GetuB() * frel + ppoly3->GetuC() *frel*frel   + ppoly3->GetuD()*frel*frel*frel  ;
-            ytem1 = ppoly3->GetvA() + ppoly3->GetvB()*frel + ppoly3->GetvC()*frel*frel   + ppoly3->GetvD()*frel*frel*frel ;
-            x1 = xtem*cos(ppoly3->GetHdg()) - ytem * sin(ppoly3->GetHdg()) + ppoly3->GetX();
-            y1 = xtem*sin(ppoly3->GetHdg()) + ytem * cos(ppoly3->GetHdg()) + ppoly3->GetY();
-            hdg = geofit::CalcHdg(xtem1,ytem1,x1,y1);
+            if(ppoly3->GetNormal() == false)
+            {
+                xtem1 = ppoly3->GetuA() + ppoly3->GetuB() * s  + ppoly3->GetuC() * s*s  + ppoly3->GetuD() * s*s*s ;
+                ytem1 = ppoly3->GetvA() + ppoly3->GetvB() * s + ppoly3->GetvC() * s*s  + ppoly3->GetvD() * s*s*s ;
+            }
+            else
+            {
+                xtem1 = ppoly3->GetuA() + ppoly3->GetuB() * frel + ppoly3->GetuC() *frel*frel   + ppoly3->GetuD()*frel*frel*frel  ;
+                ytem1 = ppoly3->GetvA() + ppoly3->GetvB()*frel + ppoly3->GetvC()*frel*frel   + ppoly3->GetvD()*frel*frel*frel ;
+            }
+            x1 = xtem1*cos(ppoly3->GetHdg()) - ytem1 * sin(ppoly3->GetHdg()) + ppoly3->GetX();
+            y1 = xtem1*sin(ppoly3->GetHdg()) + ytem1 * cos(ppoly3->GetHdg()) + ppoly3->GetY();
+            hdg = geofit::CalcHdg(x1,y1,x,y);
         }
         }
         else
         else
         {
         {
@@ -3738,13 +3940,15 @@ void MainWindow::onChangeRoadType(int index)
 {
 {
     if(index == 1)
     if(index == 1)
     {
     {
-       mpLBRoadType->setVisible(false);
+       mpLBRoadType->setVisible(true);
        mpLERoadType->setVisible(false);
        mpLERoadType->setVisible(false);
+       mpCBStraightType->setVisible(true);
     }
     }
     else
     else
     {
     {
         mpLBRoadType->setVisible(true);
         mpLBRoadType->setVisible(true);
         mpLERoadType->setVisible(true);
         mpLERoadType->setVisible(true);
+        mpCBStraightType->setVisible(false);
     }
     }
 
 
     if(index == 0)
     if(index == 0)
@@ -3753,6 +3957,11 @@ void MainWindow::onChangeRoadType(int index)
         mpLERoadType->setText("6.0");
         mpLERoadType->setText("6.0");
     }
     }
 
 
+    if(index == 1)
+    {
+        mpLBRoadType->setText("Type:");
+    }
+
     if(index == 2)
     if(index == 2)
     {
     {
         mpLBRoadType->setText("Extend:");
         mpLBRoadType->setText("Extend:");
@@ -3850,25 +4059,51 @@ std::vector<geobase> MainWindow::CreateTurnGeo(double startx, double starty, dou
     if((dis1<1.0)||(dis2<1.0))
     if((dis1<1.0)||(dis2<1.0))
     {
     {
         std::cout<<"use line connect."<<std::endl;
         std::cout<<"use line connect."<<std::endl;
+        char strinfo[256];
+        snprintf(strinfo,256,"Use Line Connect");
+        QMessageBox::information(this,"Info",strinfo,QMessageBox::YesAll);
         return CreateLineGeo(startx,starty,starthdg,endx,endy,endhdg);
         return CreateLineGeo(startx,starty,starthdg,endx,endy,endhdg);
 
 
     }
     }
 
 
+    if((R>=dis1 )||(R>=dis2))
+    {
+        R = dis1 - 0.3;
+        if(R>=dis2)
+        {
+            R = dis2 - 0.3;
+        }
+        char strinfo[256];
+        snprintf(strinfo,256,"Change Radius to %f",R);
+        QMessageBox::information(this,"Info",strinfo,QMessageBox::YesAll);
+    }
+
     double hdgdiff = endhdg - starthdg;
     double hdgdiff = endhdg - starthdg;
     if(hdgdiff >= M_PI)hdgdiff = hdgdiff - 2.0*M_PI;
     if(hdgdiff >= M_PI)hdgdiff = hdgdiff - 2.0*M_PI;
     if(hdgdiff <= (-M_PI))hdgdiff = hdgdiff + 2.0*M_PI;
     if(hdgdiff <= (-M_PI))hdgdiff = hdgdiff + 2.0*M_PI;
 
 
 
 
     double slen = R*tan(fabs(hdgdiff/2.0));
     double slen = R*tan(fabs(hdgdiff/2.0));
+    if(slen <(R+0.3))
+    {
+        R = slen - 0.3;
+        std::cout<<"Change Radius to "<<R<<std::endl;
+
+        slen = R*tan(fabs(hdgdiff/2.0));
+    }
+
     if((dis1<slen)||(dis2<slen))
     if((dis1<slen)||(dis2<slen))
     {
     {
         std::cout<<"radius is big. use line."<<std::endl;
         std::cout<<"radius is big. use line."<<std::endl;
+        char strinfo[256];
+        snprintf(strinfo,256,"Use Line Connect");
+        QMessageBox::information(this,"Info",strinfo,QMessageBox::YesAll);
         return CreateLineGeo(startx,starty,starthdg,endx,endy,endhdg);
         return CreateLineGeo(startx,starty,starthdg,endx,endy,endhdg);
     }
     }
 
 
     double p1_x,p1_y,p2_x,p2_y;
     double p1_x,p1_y,p2_x,p2_y;
-    p1_x = inter_x- slen * cos(starthdg);
-    p1_y = inter_y- slen * sin(starthdg);
+    p1_x = inter_x+ slen * cos(starthdg +M_PI);
+    p1_y = inter_y+ slen * sin(starthdg +M_PI);
     p2_x = inter_x+slen*cos(endhdg);
     p2_x = inter_x+slen*cos(endhdg);
     p2_y = inter_y+slen*sin(endhdg);
     p2_y = inter_y+slen*sin(endhdg);
 
 
@@ -4595,6 +4830,12 @@ void MainWindow::onClickCBRoadChange(int index)
        }
        }
        mpCBRoadShowNext->addItem(strout);
        mpCBRoadShowNext->addItem(strout);
    }
    }
+
+   if(mpCBRoad->currentText().length()>0)
+   {
+        int nCurRoadID = mpCBRoad->currentText().toInt();
+        emit CurrentRoadChange(nCurRoadID);
+   }
 }
 }
 
 
 void MainWindow::updateJunction()
 void MainWindow::updateJunction()
@@ -5118,6 +5359,10 @@ void MainWindow::on_actionAutoConnect_triggered()
 
 
 void MainWindow::on_actionSet_Speed_triggered()
 void MainWindow::on_actionSet_Speed_triggered()
 {
 {
+#ifdef OPENDRIVE_EDITONLY
+    QMessageBox::warning(this,"Warning","This Release is Only for Edit OpenDrive. Other Function Need Change conf.",QMessageBox::YesAll);
+    return;
+#endif
     std::string strroadid = mpCBRoad->currentText().toStdString();
     std::string strroadid = mpCBRoad->currentText().toStdString();
     SpeedDialog sd(&mxodr,strroadid,this);
     SpeedDialog sd(&mxodr,strroadid,this);
     int res = sd.exec();
     int res = sd.exec();
@@ -5150,6 +5395,10 @@ void MainWindow::closeEvent(QCloseEvent *event)
 
 
 void MainWindow::on_actionSet_Traffic_Light_triggered()
 void MainWindow::on_actionSet_Traffic_Light_triggered()
 {
 {
+#ifdef OPENDRIVE_EDITONLY
+    QMessageBox::warning(this,"Warning","This Release is Only for Edit OpenDrive. Other Function Need Change conf.",QMessageBox::YesAll);
+    return;
+#endif
     std::string strroadid = mpCBRoad->currentText().toStdString();
     std::string strroadid = mpCBRoad->currentText().toStdString();
     TrafficLightDialog td(&mxodr,strroadid,this);
     TrafficLightDialog td(&mxodr,strroadid,this);
     int res = td.exec();
     int res = td.exec();
@@ -5181,6 +5430,11 @@ void MainWindow::on_actionEdit_Road_triggered()
 
 
 void MainWindow::on_actionAdd_Road_From_RTK_triggered()
 void MainWindow::on_actionAdd_Road_From_RTK_triggered()
 {
 {
+
+#ifdef OPENDRIVE_EDITONLY
+    QMessageBox::warning(this,"Warning","This Release is Only for Edit OpenDrive. Other Function Need Change conf.",QMessageBox::YesAll);
+    return;
+#endif
     SaveBack();
     SaveBack();
     DialogAddRoadFromRTK arfrd(&mxodr,glon0,glat0,this);
     DialogAddRoadFromRTK arfrd(&mxodr,glon0,glat0,this);
     arfrd.exec();
     arfrd.exec();
@@ -5245,6 +5499,7 @@ void MainWindow::on_actionSplit_Road_triggered()
 void MainWindow::UpdateScene()
 void MainWindow::UpdateScene()
 {
 {
 
 
+
     int i;
     int i;
     int nsize = mvectorviewitem.size();
     int nsize = mvectorviewitem.size();
     for(i=0;i<nsize;i++)
     for(i=0;i<nsize;i++)
@@ -5252,7 +5507,14 @@ void MainWindow::UpdateScene()
         mpscene->removeItem(mvectorviewitem.at(i));
         mpscene->removeItem(mvectorviewitem.at(i));
         delete mvectorviewitem.at(i);
         delete mvectorviewitem.at(i);
     }
     }
+    nsize = mvectorgeoitem.size();
+    for(i=0;i<nsize;i++)
+    {
+        mpscene->removeItem(mvectorgeoitem.at(i));
+        delete mvectorgeoitem.at(i);
+    }
     mvectorviewitem.clear();
     mvectorviewitem.clear();
+    mvectorgeoitem.clear();
 
 
     nsize = mxodr.GetRoadCount();
     nsize = mxodr.GetRoadCount();
 
 
@@ -5266,6 +5528,11 @@ void MainWindow::UpdateScene()
     }
     }
     for(i=0;i<nsize;i++)
     for(i=0;i<nsize;i++)
     {
     {
+        if(IsHidenRoad(atoi(mxodr.GetRoad(i)->GetRoadId().data())))
+        {
+            continue;
+        }
+
         std::vector<QGraphicsPathItem *> xvectorlanepath = xodrscenfunc::GetRoadLaneItem(&(xvectorrd[i]));
         std::vector<QGraphicsPathItem *> xvectorlanepath = xodrscenfunc::GetRoadLaneItem(&(xvectorrd[i]));
         int j;
         int j;
         int ncount = xvectorlanepath.size();
         int ncount = xvectorlanepath.size();
@@ -5276,10 +5543,15 @@ void MainWindow::UpdateScene()
             mpscene->addItem(pitem);
             mpscene->addItem(pitem);
             mvectorviewitem.push_back(pitem);
             mvectorviewitem.push_back(pitem);
         }
         }
+
     }
     }
 
 
     for(i=0;i<nsize;i++)
     for(i=0;i<nsize;i++)
     {
     {
+        if(IsHidenRoad(atoi(mxodr.GetRoad(i)->GetRoadId().data())))
+        {
+            continue;
+        }
         std::vector<QGraphicsPathItem *> xvectormarkpath = xodrscenfunc::GetRoadMarkItem(&(xvectorrd[i]));
         std::vector<QGraphicsPathItem *> xvectormarkpath = xodrscenfunc::GetRoadMarkItem(&(xvectorrd[i]));
         int j;
         int j;
         int ncount = xvectormarkpath.size();
         int ncount = xvectormarkpath.size();
@@ -5291,7 +5563,88 @@ void MainWindow::UpdateScene()
             mvectorviewitem.push_back(pitem);
             mvectorviewitem.push_back(pitem);
         }
         }
     }
     }
+
+    for(i=0;i<nsize;i++)
+    {
+        if(IsHidenRoad(atoi(mxodr.GetRoad(i)->GetRoadId().data())))
+        {
+            continue;
+        }
+        std::vector<QGraphicsTextItem *> xvectortext;
+        std::vector<QGraphicsPathItem *> xvectorparkmark;
+        std::vector<QGraphicsPathItem *> xvectorparkpath = xodrscenfunc::GetRoadParkingItem(&(xvectorrd[i]),xvectortext,
+                                                                                            xvectorparkmark);
+        int j;
+        int ncount = xvectorparkpath.size();
+        for(j=0;j<ncount;j++)
+        {
+            QGraphicsPathItem * pitem = xvectorparkpath[j];
+            pitem->setPos(mfViewMoveX +VIEW_WIDTH/2,-mfViewMoveY+VIEW_HEIGHT/2);
+            mpscene->addItem(pitem);
+            mvectorviewitem.push_back(pitem);
+        }
+        ncount = xvectortext.size();
+        for(j=0;j<ncount;j++)
+        {
+            QGraphicsTextItem * pitem = xvectortext[j];
+ //           pitem->setPos(mfViewMoveX +VIEW_WIDTH/2.0 + (-24.0),-mfViewMoveY+VIEW_HEIGHT/2.0+(-102.0));
+             pitem->setPos(mfViewMoveX +VIEW_WIDTH/2.0 + pitem->pos().x(),-mfViewMoveY+VIEW_HEIGHT/2.0+pitem->pos().y());
+            mpscene->addItem(pitem);
+        }
+        ncount = xvectorparkmark.size();
+        for(j=0;j<ncount;j++)
+        {
+            QGraphicsPathItem * pitem = xvectorparkmark[j];
+            pitem->setPos(mfViewMoveX +VIEW_WIDTH/2,-mfViewMoveY+VIEW_HEIGHT/2);
+            mpscene->addItem(pitem);
+            mvectorviewitem.push_back(pitem);
+        }
+    }
+    UpdateScene_SelectRoadRefGeo();
     mbRefresh = false;
     mbRefresh = false;
+//    mpscene->addLine(0,0,1000,100);
+}
+
+void MainWindow::UpdateScene_SelectRoadRefGeo()
+{
+
+    int i;
+    int nsize;
+    nsize = mvectorgeoitem.size();
+    for(i=0;i<nsize;i++)
+    {
+        mpscene->removeItem(mvectorgeoitem.at(i));
+        delete mvectorgeoitem.at(i);
+    }
+    mvectorgeoitem.clear();
+
+    if(mbHideSelected)return;
+
+    int selid = mpCBRoad->currentText().toInt();
+    nsize = mxodr.GetRoadCount();
+    for(i=0;i<nsize;i++)
+    {
+        if(IsHidenRoad(atoi(mxodr.GetRoad(i)->GetRoadId().data())))
+        {
+            continue;
+        }
+
+
+        if(selid == atoi(mxodr.GetRoad(i)->GetRoadId().data()))
+        {
+            RoadDigit xrd(mxodr.GetRoad(i),5.0);
+            std::vector<QGraphicsPathItem *> xvectorlanepath = xodrscenfunc::GetRoadRefGeoItem(&(xrd));
+            int j;
+            int ncount = xvectorlanepath.size();
+            for(j=0;j<ncount;j++)
+            {
+                QGraphicsPathItem * pitem = xvectorlanepath[j];
+                pitem->setPos(mfViewMoveX +VIEW_WIDTH/2,-mfViewMoveY+VIEW_HEIGHT/2);
+                mpscene->addItem(pitem);
+                mvectorgeoitem.push_back(pitem);
+            }
+        }
+    }
 }
 }
 
 
 
 
@@ -5349,7 +5702,99 @@ void MainWindow::SaveBack()
 
 
 void MainWindow::on_actionEdit_Road_Borrow_triggered()
 void MainWindow::on_actionEdit_Road_Borrow_triggered()
 {
 {
+#ifdef OPENDRIVE_EDITONLY
+    QMessageBox::warning(this,"Warning","This Release is Only for Edit OpenDrive. Other Function Need Change conf.",QMessageBox::YesAll);
+    return;
+#endif
     std::string strroadid = mpCBRoad->currentText().toStdString();
     std::string strroadid = mpCBRoad->currentText().toStdString();
     DialogRoadBorrow rbd(&mxodr,strroadid,this);
     DialogRoadBorrow rbd(&mxodr,strroadid,this);
     int res = rbd.exec();
     int res = rbd.exec();
+
+    mpfb->SetOpenDrive(mxodr);
+}
+
+void MainWindow::on_actionMake_All_Road_Contact_triggered()
+{
+    QMessageBox::StandardButton button;
+    button=QMessageBox::question(this,tr("路口道路创建"),QString(tr("是否让软件自动创建所有路口道路?")),QMessageBox::Yes|QMessageBox::No);
+    if(button==QMessageBox::No)
+    {
+        return;
+    }
+    else if(button==QMessageBox::Yes)
+    {
+
+    }
+
+#ifdef OPENDRIVE_EDITONLY
+    QMessageBox::warning(this,"Warnig","This Function is not comlete.Please Wait.",QMessageBox::YesAll);
+    return;
+#endif
+
+
+    on_actionAutoConnect_triggered();
+
+    AutoRoadContact::MakeAllContact(&mxodr);
+
+    updateJunction();
+    updateCBRoad();
+    mbRefresh = true;
+    update();
+    if(mpCBViewMode->currentIndex() == 1)
+    {
+        UpdateScene();
+    }
+
+    mpfb->SetOpenDrive(mxodr);
+}
+
+void MainWindow::on_actionHide_Road_triggered()
+{
+    std::string strroadid = mpCBRoad->currentText().toStdString();
+    DialogHideRoad hrd(&mxodr,strroadid,&mvectorhideroadid, this);
+    int res = hrd.exec();
+    if(res == 0){}
+    mbRefresh = true;
+    update();
+    if(mpCBViewMode->currentIndex() == 1)
+    {
+        UpdateScene();
+    }
+}
+
+bool MainWindow::IsHidenRoad(int nroadid)
+{
+    bool bIsHiden = false;
+    unsigned int i;
+    for(i=0;i<mvectorhideroadid.size();i++)
+    {
+        if(nroadid == mvectorhideroadid[i])
+        {
+            bIsHiden = true;
+            break;
+        }
+    }
+    return bIsHiden;
+}
+
+void MainWindow::on_actionHide_Selected_triggered()
+{
+    if(mbHideSelected)
+    {
+        mbHideSelected = false;
+        ui->actionHide_Selected->setText("Hide Selected");
+    }
+    else
+    {
+        mbHideSelected = true;
+        ui->actionHide_Selected->setText("Show Selected");
+    }
+    UpdateScene_SelectRoadRefGeo();
+}
+
+void MainWindow::on_actionDraw_Road_triggered()
+{
+    DialogDrawRoad * pdlgdraw = mpdlgdraw;
+    pdlgdraw->setModal(false);
+    pdlgdraw->show();
 }
 }

+ 34 - 3
src/tool/map_lanetoxodr/mainwindow.h

@@ -47,6 +47,8 @@
 #include "dialogaddroadfromrtk.h"
 #include "dialogaddroadfromrtk.h"
 #include "dialogcalcs.h"
 #include "dialogcalcs.h"
 #include "dialogroadborrow.h"
 #include "dialogroadborrow.h"
+#include "dialoghideroad.h"
+#include "dialogdrawroad.h"
 
 
 #include "filebackup.h"
 #include "filebackup.h"
 
 
@@ -74,6 +76,7 @@ using namespace Eigen;
 #include "roaddigit.h"
 #include "roaddigit.h"
 
 
 #include "xodrscenfunc.h"
 #include "xodrscenfunc.h"
+#include "autoroadcontact.h"
 
 
 namespace Ui {
 namespace Ui {
 class MainWindow;
 class MainWindow;
@@ -102,6 +105,9 @@ private:
 public:
 public:
     static void ComboToString(std::string strroadid,QComboBox * pCB);
     static void ComboToString(std::string strroadid,QComboBox * pCB);
 
 
+signals:
+    void CurrentPosition(double x,double y);
+    void CurrentRoadChange(int nroadid);
 
 
 public:
 public:
      void resizeEvent(QResizeEvent *event);
      void resizeEvent(QResizeEvent *event);
@@ -138,11 +144,13 @@ private slots:
     void onClickClearRoadLane();
     void onClickClearRoadLane();
     void onClickAddRoad();
     void onClickAddRoad();
     void onClickRoadContact();
     void onClickRoadContact();
+    void onClickAutoRoadContact();
 
 
     void onClickLoad();
     void onClickLoad();
     void onClickSave();
     void onClickSave();
     void onClickLaneContact();
     void onClickLaneContact();
     void onClickOpLaneContact();
     void onClickOpLaneContact();
+    void onClickClearLaneContact();
     void onClickCreateRoad();
     void onClickCreateRoad();
     void onChangeRoadType(int index);
     void onChangeRoadType(int index);
 
 
@@ -204,6 +212,14 @@ private slots:
 
 
     void on_actionEdit_Road_Borrow_triggered();
     void on_actionEdit_Road_Borrow_triggered();
 
 
+    void on_actionMake_All_Road_Contact_triggered();
+
+    void on_actionHide_Road_triggered();
+
+    void on_actionHide_Selected_triggered();
+
+    void on_actionDraw_Road_triggered();
+
 private:
 private:
 
 
 
 
@@ -286,6 +302,8 @@ private:
 
 
     QLabel * mpLBRoadType;
     QLabel * mpLBRoadType;
 
 
+    QCheckBox * mpCBStraightType;
+
     double mx0,my0;
     double mx0,my0;
 
 
     OpenDrive mxodr;
     OpenDrive mxodr;
@@ -299,6 +317,8 @@ private:
 
 
     QComboBox * mpCBViewMode;
     QComboBox * mpCBViewMode;
 
 
+    DialogDrawRoad * mpdlgdraw;
+
  //   QLineEdit * mpLE_StartLat, * mpLE_StartLon, * mpLE_StartHeading;
  //   QLineEdit * mpLE_StartLat, * mpLE_StartLon, * mpLE_StartHeading;
 
 
 //    QLineEdit * mpLE_EndLat, * mpLE_EndLon;
 //    QLineEdit * mpLE_EndLat, * mpLE_EndLon;
@@ -359,6 +379,12 @@ private:
 public:
 public:
     int CreateRoadID(int ntype = 0); //Create Road ID for new road. default:road  1:not create by lane road.
     int CreateRoadID(int ntype = 0); //Create Road ID for new road. default:road  1:not create by lane road.
 
 
+    static double getoff(Road * p,int nlane,bool bstart = true);
+    double getlanewidth(Road * p,int nlane,bool bstart = true);
+    std::string getlanetype(Road * p,int nlane,bool bstart = true);
+
+    bool IsHidenRoad(int nroadid);
+
 private:
 private:
     void UpdateMap(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
     void UpdateMap(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
     void UpdateGPSIMU(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
     void UpdateGPSIMU(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
@@ -391,9 +417,8 @@ private:
     std::vector<geobase> CreateTurnGeo(double startx,double starty,double starthdg,double endx,double endy,double endhdg,double R);
     std::vector<geobase> CreateTurnGeo(double startx,double starty,double starthdg,double endx,double endy,double endhdg,double R);
     std::vector<geobase> CreateUTurnGeo(double startx,double starty,double starthdg,double endx,double endy,double endhdg,double fextend);
     std::vector<geobase> CreateUTurnGeo(double startx,double starty,double starthdg,double endx,double endy,double endhdg,double fextend);
 
 
-    double getoff(Road * p,int nlane,bool bstart = true);
-    double getlanewidth(Road * p,int nlane,bool bstart = true);
-    std::string getlanetype(Road * p,int nlane,bool bstart = true);
+
+
 
 
     void ChangeXODRRoadID(OpenDrive * pxodr,int index,int newid);
     void ChangeXODRRoadID(OpenDrive * pxodr,int index,int newid);
     void ChangeXODRJunctionID(OpenDrive * pxodr,int index,int newid);
     void ChangeXODRJunctionID(OpenDrive * pxodr,int index,int newid);
@@ -409,8 +434,10 @@ private:
     int mnViewMode = 0; //Use Scene
     int mnViewMode = 0; //Use Scene
 
 
     void UpdateScene();
     void UpdateScene();
+    void UpdateScene_SelectRoadRefGeo();
 
 
     std::vector<QGraphicsPathItem *> mvectorviewitem;
     std::vector<QGraphicsPathItem *> mvectorviewitem;
+    std::vector<QGraphicsPathItem *> mvectorgeoitem;
 
 
     std::vector<OpenDrive> mvectorxodrback;
     std::vector<OpenDrive> mvectorxodrback;
 
 
@@ -420,6 +447,10 @@ private:
 
 
     int mnNotSave = 0;
     int mnNotSave = 0;
 
 
+    std::vector<int> mvectorhideroadid;
+
+    bool mbHideSelected = false;
+
 
 
 };
 };
 
 

+ 44 - 15
src/tool/map_lanetoxodr/mainwindow.ui

@@ -6,8 +6,8 @@
    <rect>
    <rect>
     <x>0</x>
     <x>0</x>
     <y>0</y>
     <y>0</y>
-    <width>400</width>
-    <height>300</height>
+    <width>670</width>
+    <height>443</height>
    </rect>
    </rect>
   </property>
   </property>
   <property name="windowTitle">
   <property name="windowTitle">
@@ -23,7 +23,7 @@
     <rect>
     <rect>
      <x>0</x>
      <x>0</x>
      <y>0</y>
      <y>0</y>
-     <width>400</width>
+     <width>670</width>
      <height>28</height>
      <height>28</height>
     </rect>
     </rect>
    </property>
    </property>
@@ -46,20 +46,34 @@
     <addaction name="separator"/>
     <addaction name="separator"/>
     <addaction name="actionBack"/>
     <addaction name="actionBack"/>
     <addaction name="separator"/>
     <addaction name="separator"/>
+    <addaction name="actionMake_All_Road_Contact"/>
    </widget>
    </widget>
    <widget class="QMenu" name="menuTool">
    <widget class="QMenu" name="menuTool">
     <property name="title">
     <property name="title">
      <string>Tool</string>
      <string>Tool</string>
     </property>
     </property>
     <addaction name="actionEdit_Road"/>
     <addaction name="actionEdit_Road"/>
-    <addaction name="actionMerge_Road"/>
-    <addaction name="actionEdit_Road_Lane"/>
     <addaction name="actionAdd_Road_From_RTK"/>
     <addaction name="actionAdd_Road_From_RTK"/>
     <addaction name="actionSummary_Road"/>
     <addaction name="actionSummary_Road"/>
+    <addaction name="actionDraw_Road"/>
+   </widget>
+   <widget class="QMenu" name="menuView">
+    <property name="title">
+     <string>View</string>
+    </property>
+    <addaction name="actionHide_Road"/>
+    <addaction name="actionHide_Selected"/>
+   </widget>
+   <widget class="QMenu" name="menuHelp">
+    <property name="title">
+     <string>Help</string>
+    </property>
    </widget>
    </widget>
    <addaction name="menuFile"/>
    <addaction name="menuFile"/>
    <addaction name="menuFunction"/>
    <addaction name="menuFunction"/>
    <addaction name="menuTool"/>
    <addaction name="menuTool"/>
+   <addaction name="menuView"/>
+   <addaction name="menuHelp"/>
   </widget>
   </widget>
   <widget class="QToolBar" name="mainToolBar">
   <widget class="QToolBar" name="mainToolBar">
    <attribute name="toolBarArea">
    <attribute name="toolBarArea">
@@ -109,16 +123,6 @@
     <string>编辑道路</string>
     <string>编辑道路</string>
    </property>
    </property>
   </action>
   </action>
-  <action name="actionMerge_Road">
-   <property name="text">
-    <string>Merge Road</string>
-   </property>
-  </action>
-  <action name="actionEdit_Road_Lane">
-   <property name="text">
-    <string>Edit Road Lane</string>
-   </property>
-  </action>
   <action name="actionAdd_Road_From_RTK">
   <action name="actionAdd_Road_From_RTK">
    <property name="text">
    <property name="text">
     <string>Add Road From RTK</string>
     <string>Add Road From RTK</string>
@@ -147,6 +151,31 @@
     <string>Edit Road Borrow</string>
     <string>Edit Road Borrow</string>
    </property>
    </property>
   </action>
   </action>
+  <action name="actionMake_All_Road_Contact">
+   <property name="text">
+    <string>Make All Road Contact</string>
+   </property>
+  </action>
+  <action name="actionHide_Road">
+   <property name="text">
+    <string>Hide Road</string>
+   </property>
+  </action>
+  <action name="actionRoad_Optimize">
+   <property name="text">
+    <string>Road Optimize</string>
+   </property>
+  </action>
+  <action name="actionHide_Selected">
+   <property name="text">
+    <string>Hide Selected</string>
+   </property>
+  </action>
+  <action name="actionDraw_Road">
+   <property name="text">
+    <string>Draw Road</string>
+   </property>
+  </action>
  </widget>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
  <layoutdefault spacing="6" margin="11"/>
  <resources>
  <resources>

+ 33 - 3
src/tool/map_lanetoxodr/map_lanetoxodr.pro

@@ -29,16 +29,22 @@ QMAKE_LFLAGS += -no-pie
 
 
 SOURCES += \
 SOURCES += \
     autoconnect.cpp \
     autoconnect.cpp \
+    autoroadcontact.cpp \
     dialogaddroadfromrtk.cpp \
     dialogaddroadfromrtk.cpp \
     dialogcalcs.cpp \
     dialogcalcs.cpp \
+    dialogdrawroad.cpp \
     dialogeditlane.cpp \
     dialogeditlane.cpp \
     dialogeditroadmark.cpp \
     dialogeditroadmark.cpp \
+    dialoghideroad.cpp \
     dialoglanefromrtk.cpp \
     dialoglanefromrtk.cpp \
     dialoglaneoffset.cpp \
     dialoglaneoffset.cpp \
+    dialogparkingspaceedit.cpp \
     dialogroadborrow.cpp \
     dialogroadborrow.cpp \
     dialogroadmerge.cpp \
     dialogroadmerge.cpp \
     dialogroadmirror.cpp \
     dialogroadmirror.cpp \
     dialogroadmove.cpp \
     dialogroadmove.cpp \
+    dialogroadobject.cpp \
+    dialogroadoptimize.cpp \
     dialogroadrotate.cpp \
     dialogroadrotate.cpp \
     dialogroadsplit.cpp \
     dialogroadsplit.cpp \
     filebackup.cpp \
     filebackup.cpp \
@@ -68,22 +74,27 @@ SOURCES += \
     ../../include/msgtype/imu.pb.cc \
     ../../include/msgtype/imu.pb.cc \
     geofit.cpp \
     geofit.cpp \
     circlefitting.cpp \
     circlefitting.cpp \
-    xodrfunc.cpp \
     xodrmake.cpp \
     xodrmake.cpp \
     xodrscenfunc.cpp
     xodrscenfunc.cpp
 
 
 HEADERS += \
 HEADERS += \
     autoconnect.h \
     autoconnect.h \
+    autoroadcontact.h \
     dialogaddroadfromrtk.h \
     dialogaddroadfromrtk.h \
     dialogcalcs.h \
     dialogcalcs.h \
+    dialogdrawroad.h \
     dialogeditlane.h \
     dialogeditlane.h \
     dialogeditroadmark.h \
     dialogeditroadmark.h \
+    dialoghideroad.h \
     dialoglanefromrtk.h \
     dialoglanefromrtk.h \
     dialoglaneoffset.h \
     dialoglaneoffset.h \
+    dialogparkingspaceedit.h \
     dialogroadborrow.h \
     dialogroadborrow.h \
     dialogroadmerge.h \
     dialogroadmerge.h \
     dialogroadmirror.h \
     dialogroadmirror.h \
     dialogroadmove.h \
     dialogroadmove.h \
+    dialogroadobject.h \
+    dialogroadoptimize.h \
     dialogroadrotate.h \
     dialogroadrotate.h \
     dialogroadsplit.h \
     dialogroadsplit.h \
     filebackup.h \
     filebackup.h \
@@ -109,21 +120,25 @@ HEADERS += \
     ../../include/msgtype/imu.pb.h \
     ../../include/msgtype/imu.pb.h \
     geofit.h \
     geofit.h \
     circlefitting.h \
     circlefitting.h \
-    xodrfunc.h \
     xodrmake.h \
     xodrmake.h \
     xodrscenfunc.h
     xodrscenfunc.h
 
 
 FORMS += \
 FORMS += \
         dialogaddroadfromrtk.ui \
         dialogaddroadfromrtk.ui \
         dialogcalcs.ui \
         dialogcalcs.ui \
+        dialogdrawroad.ui \
         dialogeditlane.ui \
         dialogeditlane.ui \
         dialogeditroadmark.ui \
         dialogeditroadmark.ui \
+        dialoghideroad.ui \
         dialoglanefromrtk.ui \
         dialoglanefromrtk.ui \
         dialoglaneoffset.ui \
         dialoglaneoffset.ui \
+        dialogparkingspaceedit.ui \
         dialogroadborrow.ui \
         dialogroadborrow.ui \
         dialogroadmerge.ui \
         dialogroadmerge.ui \
         dialogroadmirror.ui \
         dialogroadmirror.ui \
         dialogroadmove.ui \
         dialogroadmove.ui \
+        dialogroadobject.ui \
+        dialogroadoptimize.ui \
         dialogroadrotate.ui \
         dialogroadrotate.ui \
         dialogroadsplit.ui \
         dialogroadsplit.ui \
         mainwindow.ui \
         mainwindow.ui \
@@ -138,10 +153,21 @@ FORMS += \
     error( "Couldn't find the OpenDrive.pri file!" )
     error( "Couldn't find the OpenDrive.pri file!" )
 }
 }
 
 
+!include(../../common/common/xodr/xodrfunc/xodrfunc.pri ) {
+    error( "Couldn't find the xodrfunc.pri file!" )
+}
+
+!include(../../common/common/license/adclicense.pri ) {
+    error( "Couldn't find the adclicense.pri file!" )
+}
+
 unix:LIBS += -lboost_thread -lboost_system -lboost_serialization -lprotobuf
 unix:LIBS += -lboost_thread -lboost_system -lboost_serialization -lprotobuf
 
 
 
 
-win32: INCLUDEPATH += $$PWD\..\..\..\thirdpartylib\boost\include\boost-1_66
+win32:INCLUDEPATH += $$PWD/../../../thirdpartylib/protobuf/src
+win32:LIBS += -L$$PWD/../../../thirdpartylib/protobuf/lib -lprotobuf
+win32:INCLUDEPATH += $$PWD/../../../thirdpartylib/boost/include/boost-1_66
+windows: LIBS += -L$$PWD/../../../thirdpartylib/boost/lib -lboost_system-mgw73-mt-x64-1_66 -lboost_thread-mgw73-mt-x64-1_66 -lboost_serialization-mgw73-mt-x64-1_66
 
 
 QMAKE_CXXFLAGS +=  -g
 QMAKE_CXXFLAGS +=  -g
 
 
@@ -151,8 +177,12 @@ LIBS += -L$$PWD/../../../bin/ -lxmlparam -lmodulecomm -livlog -livfault -livback
 INCLUDEPATH += $$PWD/../../include/msgtype
 INCLUDEPATH += $$PWD/../../include/msgtype
 
 
 INCLUDEPATH += $$PWD/../../common/common/xodr
 INCLUDEPATH += $$PWD/../../common/common/xodr
+INCLUDEPATH += $$PWD/../../common/common/license
+
+INCLUDEPATH += $$PWD/../../common/common/xodr/xodrfunc
 
 
 
 
+#DEFINES += OPENDRIVE_EDITONLY
 
 
 
 
 DISTFILES += \
 DISTFILES += \

+ 2 - 0
src/tool/map_lanetoxodr/rawtype.h

@@ -1,6 +1,8 @@
 #ifndef RAWTYPE_H
 #ifndef RAWTYPE_H
 #define RAWTYPE_H
 #define RAWTYPE_H
 
 
+#include <vector>
+
 namespace iv {
 namespace iv {
 struct lanepoint
 struct lanepoint
 {
 {

+ 135 - 10
src/tool/map_lanetoxodr/roaddigit.cpp

@@ -15,11 +15,17 @@ std::vector<iv::RoadDigitUnit> * RoadDigit::GetRDU()
     return &mvectorRDU;
     return &mvectorRDU;
 }
 }
 
 
+std::vector<iv::ParkingPoint> * RoadDigit::GetParkingPoint()
+{
+    return &mvectorParkingPoint;
+}
+
 void RoadDigit::UpdateSpace(double fspace)
 void RoadDigit::UpdateSpace(double fspace)
 {
 {
     if(mpRoad == 0)return;
     if(mpRoad == 0)return;
     CalcLine(fspace);
     CalcLine(fspace);
     CalcLane();
     CalcLane();
+    CalcParkingPoint();
 }
 }
 
 
 int RoadDigit::GetSectionIndex(Road *pRoad, double s)
 int RoadDigit::GetSectionIndex(Road *pRoad, double s)
@@ -308,7 +314,8 @@ void RoadDigit::CalcLine(double fspace)
             else sstep = 10000.0;
             else sstep = 10000.0;
             double s = 0;
             double s = 0;
             double xtem,ytem;
             double xtem,ytem;
-            double pr;
+ //           double pr;
+            bool bNormal = ppp3->GetNormal();
 
 
             xtem = ppp3->GetuA() +  ppp3->GetuB() * s +  ppp3->GetuC() * s*s +  ppp3->GetuD() * s*s*s;
             xtem = ppp3->GetuA() +  ppp3->GetuB() * s +  ppp3->GetuC() * s*s +  ppp3->GetuD() * s*s*s;
             ytem = ppp3->GetvA() + ppp3->GetvB() * s + ppp3->GetvC() * s*s + ppp3->GetvD() * s*s*s;
             ytem = ppp3->GetvA() + ppp3->GetvB() * s + ppp3->GetvC() * s*s + ppp3->GetvD() * s*s*s;
@@ -324,24 +331,47 @@ void RoadDigit::CalcLine(double fspace)
 
 
             double flastx = pg->GetX();
             double flastx = pg->GetX();
             double flasty = pg->GetY();
             double flasty = pg->GetY();
+            double pp3_s = pg->GetS();
             while(s <= ppp3->GetLength())
             while(s <= ppp3->GetLength())
             {
             {
-                double pr= 1.0;
-                if(arclength > 0)pr = s/arclength;
-                xtem = ppp3->GetuA() +  ppp3->GetuB() * pr +  ppp3->GetuC() * pr*pr +  ppp3->GetuD() * pr*pr*pr;
-                ytem = ppp3->GetvA() + ppp3->GetvB() * pr + ppp3->GetvC() * pr*pr + ppp3->GetvD() * pr*pr*pr;
-                x = xtem*cos(ppp3->GetHdg()) - ytem * sin(ppp3->GetHdg()) + ppp3->GetX();
-                y = xtem*sin(ppp3->GetHdg()) + ytem * cos(ppp3->GetHdg()) + ppp3->GetY();
+//                double pr=s;
+//                if((arclength > 0)&&(bNormal))pr = s/arclength;
+//                xtem = ppp3->GetuA() +  ppp3->GetuB() * pr +  ppp3->GetuC() * pr*pr +  ppp3->GetuD() * pr*pr*pr;
+//                ytem = ppp3->GetvA() + ppp3->GetvB() * pr + ppp3->GetvC() * pr*pr + ppp3->GetvD() * pr*pr*pr;
+//                x = xtem*cos(ppp3->GetHdg()) - ytem * sin(ppp3->GetHdg()) + ppp3->GetX();
+//                y = xtem*sin(ppp3->GetHdg()) + ytem * cos(ppp3->GetHdg()) + ppp3->GetY();
 
 
                 rdu.mS = pg->GetS() + s;
                 rdu.mS = pg->GetS() + s;
-                rdu.mX = x;
-                rdu.mY = y;
-                rdu.mfHdg = xodrfunc::CalcHdg(QPointF(flastx,flasty),QPointF(x,y));
+                ppp3->GetCoords(rdu.mS,rdu.mX,rdu.mY,rdu.mfHdg);
+//                rdu.mS = pg->GetS() + s;
+//                rdu.mX = x;
+//                rdu.mY = y;
+//                rdu.mfHdg = xodrfunc::CalcHdg(QPointF(flastx,flasty),QPointF(x,y));
+//                rdu.mS = pp3_s+s;
                 mvectorRDU.push_back(rdu);
                 mvectorRDU.push_back(rdu);
 
 
                 s = s+ sstep;
                 s = s+ sstep;
 
 
 
 
+            }
+            if(s != ppp3->GetLength())
+            {
+
+                rdu.mS = pg->GetS() + ppp3->GetLength();
+                ppp3->GetCoords(rdu.mS,rdu.mX,rdu.mY,rdu.mfHdg);
+                mvectorRDU.push_back(rdu);
+//                double pr=s;
+//                if((arclength > 0)&&(bNormal))pr = s/arclength;
+//                xtem = ppp3->GetuA() +  ppp3->GetuB() * pr +  ppp3->GetuC() * pr*pr +  ppp3->GetuD() * pr*pr*pr;
+//                ytem = ppp3->GetvA() + ppp3->GetvB() * pr + ppp3->GetvC() * pr*pr + ppp3->GetvD() * pr*pr*pr;
+//                x = xtem*cos(ppp3->GetHdg()) - ytem * sin(ppp3->GetHdg()) + ppp3->GetX();
+//                y = xtem*sin(ppp3->GetHdg()) + ytem * cos(ppp3->GetHdg()) + ppp3->GetY();
+
+//                rdu.mS = pg->GetS() + s;
+//                rdu.mX = x;
+//                rdu.mY = y;
+//                rdu.mfHdg = xodrfunc::CalcHdg(QPointF(flastx,flasty),QPointF(x,y));
+//                mvectorRDU.push_back(rdu);
             }
             }
             }
             }
             break;
             break;
@@ -368,4 +398,99 @@ void RoadDigit::CalcLane()
     }
     }
 }
 }
 
 
+void RoadDigit::CalcParkingPoint()
+{
+    unsigned int lObjectSize = mpRoad->GetObjectCount();
+    unsigned int i;
+    for(i=0;i<lObjectSize;i++)
+    {
+        Object * pObject = mpRoad->GetObject(i);
+        if(pObject->Gettype() == "parkingSpace")
+        {
+            double s = pObject->Gets();
+            double t = pObject->Gett();
+            double length,width,hdg;
+            if((pObject->Getwidth(length) == 1)&&(pObject->Getlength(width)==1)&&(pObject->Gethdg(hdg)== 1))
+            {
+                double roadx,roady,roadhdg;
+                mpRoad->GetGeometryCoords(s,roadx,roady,roadhdg);
+                double centerx,centery;
+                centerx = roadx + t*cos(roadhdg + M_PI/2.0);
+                centery = roady + t*sin(roadhdg + M_PI/2.0);
+                double hdgpark = hdg + roadhdg;
+                double x1,x2,x3,x4,y1,y2,y3,y4;
+                double xtem,ytem;
+                xtem = centerx + 0.5*width * cos(hdgpark);
+                ytem = centery + 0.5*width * sin(hdgpark);
+                x1 = xtem + 0.5*length * cos(hdgpark + M_PI/2.0);
+                y1 = ytem + 0.5*length * sin(hdgpark + M_PI/2.0);
+                x4 = xtem + 0.5*length * cos(hdgpark - M_PI/2.0);
+                y4 = ytem + 0.5*length * sin(hdgpark - M_PI/2.0);
+                xtem = centerx + 0.5*width * cos(hdgpark+M_PI);
+                ytem = centery + 0.5*width * sin(hdgpark+M_PI);
+                x2 = xtem + 0.5*length * cos(hdgpark + M_PI/2.0);
+                y2 = ytem + 0.5*length * sin(hdgpark + M_PI/2.0);
+                x3 = xtem + 0.5*length * cos(hdgpark - M_PI/2.0);
+                y3 = ytem + 0.5*length * sin(hdgpark - M_PI/2.0);
+                iv::ParkingXY xP;
+                iv::ParkingPoint xPP;
+                xP.mX = x1;xP.mY = y1;xPP.mParkingXY.push_back(xP);
+                xP.mX = x2;xP.mY = y2;xPP.mParkingXY.push_back(xP);
+                xP.mX = x3;xP.mY = y3;xPP.mParkingXY.push_back(xP);
+                xP.mX = x4;xP.mY = y4;xPP.mParkingXY.push_back(xP);
+                xPP.strtext = pObject->Getid();
+                xPP.mParkingCenterXY.mX = centerx;
+                xPP.mParkingCenterXY.mY = centery;
+                xPP.mfHdg = hdgpark;
+
+
+                double fMarkWidth = 0.15;
+
+                vector<iv::ParkingXY> border;
+                iv::ParkingXY temxy;
+
+                double tem_x1,tem_x2,tem_y1,tem_y2,tem_hdg;
+                unsigned int j;
+                for(j=0;j<4;j++)
+                {
+                    border.clear();
+                    if(j ==0)
+                    {
+                        tem_x1 = x2;tem_x2 = x1;tem_y1 = y2;tem_y2 = y1;tem_hdg = hdgpark;
+                    }
+                    if(j ==1)
+                    {
+                        tem_x1 = x1;tem_x2 = x4;tem_y1 = y1;tem_y2 = y4;tem_hdg = hdgpark - M_PI/2.0;
+                    }
+                    if(j ==2)
+                    {
+                        tem_x1 = x4;tem_x2 = x3;tem_y1 = y4;tem_y2 = y3;tem_hdg = hdgpark -M_PI;;
+                    }
+                    if(j ==3)
+                    {
+                        tem_x1 = x3;tem_x2 = x2;tem_y1 = y3;tem_y2 = y2;tem_hdg = hdgpark +M_PI/2.0;
+                    }
+                    temxy.mX = tem_x1 + ((0-fMarkWidth*0.5)*cos(tem_hdg) - (0+fMarkWidth*0.5)*sin(tem_hdg));
+                    temxy.mY = tem_y1 + ((0-fMarkWidth*0.5)*sin(tem_hdg) + (0+fMarkWidth*0.5)*cos(tem_hdg));
+                    border.push_back(temxy);
+                    temxy.mX = tem_x2 + ((0+fMarkWidth*0.5)*cos(tem_hdg) - (0+fMarkWidth*0.5)*sin(tem_hdg));
+                    temxy.mY = tem_y2 + ((0+fMarkWidth*0.5)*sin(tem_hdg) + (0+fMarkWidth*0.5)*cos(tem_hdg));
+                    border.push_back(temxy);
+                    temxy.mX = tem_x2 + ((0+fMarkWidth*0.5)*cos(tem_hdg) - (0-fMarkWidth*0.5)*sin(tem_hdg));
+                    temxy.mY = tem_y2 + ((0+fMarkWidth*0.5)*sin(tem_hdg) + (0-fMarkWidth*0.5)*cos(tem_hdg));
+                    border.push_back(temxy);
+                    temxy.mX = tem_x1 + ((0-fMarkWidth*0.5)*cos(tem_hdg) - (0-fMarkWidth*0.5)*sin(tem_hdg));
+                    temxy.mY = tem_y1 + ((0-fMarkWidth*0.5)*sin(tem_hdg) + (0-fMarkWidth*0.5)*cos(tem_hdg));
+                    border.push_back(temxy);
+                    xPP.mParkingMark.push_back(border);
+                }
+
+
+
+                mvectorParkingPoint.push_back(xPP);
+            }
+        }
+    }
+}
+
 
 

+ 19 - 0
src/tool/map_lanetoxodr/roaddigit.h

@@ -33,6 +33,21 @@ struct RoadDigitUnit
     std::vector<iv::LanePoint> mvectorLanePoint;
     std::vector<iv::LanePoint> mvectorLanePoint;
 };
 };
 
 
+struct ParkingXY
+{
+    double mX;
+    double mY;
+};
+
+struct ParkingPoint
+{
+    vector<ParkingXY> mParkingXY;
+    vector<vector<ParkingXY>> mParkingMark;
+    string strtext;
+    ParkingXY mParkingCenterXY;
+    double mfHdg;
+};
+
 }
 }
 
 
 class RoadDigit
 class RoadDigit
@@ -43,15 +58,19 @@ public:
 private:
 private:
     std::vector<iv::RoadDigitUnit> mvectorRDU;
     std::vector<iv::RoadDigitUnit> mvectorRDU;
     Road * mpRoad = 0;
     Road * mpRoad = 0;
+    std::vector<iv::ParkingPoint> mvectorParkingPoint;
 
 
 private:
 private:
     void CalcLine(double fspace);
     void CalcLine(double fspace);
     void CalcLane();
     void CalcLane();
+    void CalcParkingPoint();
 
 
 public:
 public:
     std::vector<iv::RoadDigitUnit> * GetRDU();
     std::vector<iv::RoadDigitUnit> * GetRDU();
     void UpdateSpace(double fspace);
     void UpdateSpace(double fspace);
 
 
+    std::vector<iv::ParkingPoint> * GetParkingPoint();
+
 private:
 private:
     int GetSectionIndex(Road * pRoad,double s);
     int GetSectionIndex(Road * pRoad,double s);
 };
 };

+ 58 - 0
src/tool/map_lanetoxodr/roadeditdialog.cpp

@@ -41,6 +41,13 @@ RoadEditDialog::RoadEditDialog(OpenDrive * pxodr,std::string strdefroad,QWidget
     ui->comboBox_geotype->addItem("Poly");
     ui->comboBox_geotype->addItem("Poly");
     ui->comboBox_geotype->addItem("Param Poly");
     ui->comboBox_geotype->addItem("Param Poly");
 
 
+    ui->lineEdit_hdg->setDisabled(true);
+    ui->lineEdit_len->setDisabled(true);
+    ui->lineEdit_roadlen->setDisabled(true);
+    ui->lineEdit_s->setDisabled(true);
+    ui->lineEdit_x->setDisabled(true);
+    ui->lineEdit_y->setDisabled(true);
+
     int i;
     int i;
     int nroadcount = mpxodr->GetRoadCount();
     int nroadcount = mpxodr->GetRoadCount();
     for(i=0;i<nroadcount;i++)
     for(i=0;i<nroadcount;i++)
@@ -50,6 +57,8 @@ RoadEditDialog::RoadEditDialog(OpenDrive * pxodr,std::string strdefroad,QWidget
 
 
     }
     }
 
 
+
+
     MainWindow::ComboToString(strdefroad,ui->comboBox_Road);
     MainWindow::ComboToString(strdefroad,ui->comboBox_Road);
 
 
     setWindowTitle("Edit Road");
     setWindowTitle("Edit Road");
@@ -476,6 +485,11 @@ void RoadEditDialog::on_pushButton_EditRoadMark_clicked()
 
 
 void RoadEditDialog::on_pushButton_LaneFromRTK_clicked()
 void RoadEditDialog::on_pushButton_LaneFromRTK_clicked()
 {
 {
+
+#ifdef OPENDRIVE_EDITONLY
+    QMessageBox::warning(this,"Warning","This Release is Only for Edit OpenDrive. Other Function Need Change conf.",QMessageBox::YesAll);
+    return;
+#endif
     if(mpCurRoad == 0)
     if(mpCurRoad == 0)
     {
     {
         QMessageBox::warning(this,"Warning","Not Select Road");
         QMessageBox::warning(this,"Warning","Not Select Road");
@@ -488,6 +502,10 @@ void RoadEditDialog::on_pushButton_LaneFromRTK_clicked()
 
 
 void RoadEditDialog::on_pushButton_RoadSplit_clicked()
 void RoadEditDialog::on_pushButton_RoadSplit_clicked()
 {
 {
+#ifdef OPENDRIVE_EDITONLY
+    QMessageBox::warning(this,"Warning","This Release is Only for Edit OpenDrive. Other Function Need Change conf.",QMessageBox::YesAll);
+    return;
+#endif
     if(mpCurRoad == 0)
     if(mpCurRoad == 0)
     {
     {
         QMessageBox::warning(this,"Warning","Not Select Road");
         QMessageBox::warning(this,"Warning","Not Select Road");
@@ -512,6 +530,10 @@ void RoadEditDialog::on_pushButton_RoadSplit_clicked()
 
 
 void RoadEditDialog::on_pushButton_RoadMerge_clicked()
 void RoadEditDialog::on_pushButton_RoadMerge_clicked()
 {
 {
+#ifdef OPENDRIVE_EDITONLY
+    QMessageBox::warning(this,"Warning","This Release is Only for Edit OpenDrive. Other Function Need Change conf.",QMessageBox::YesAll);
+    return;
+#endif
     DialogRoadMerge roadmerge(mpxodr,this);
     DialogRoadMerge roadmerge(mpxodr,this);
     roadmerge.exec();
     roadmerge.exec();
 
 
@@ -530,6 +552,10 @@ void RoadEditDialog::on_pushButton_RoadMerge_clicked()
 
 
 void RoadEditDialog::on_pushButton_MoveRoad_clicked()
 void RoadEditDialog::on_pushButton_MoveRoad_clicked()
 {
 {
+#ifdef OPENDRIVE_EDITONLY
+    QMessageBox::warning(this,"Warning","This Release is Only for Edit OpenDrive. Other Function Need Change conf.",QMessageBox::YesAll);
+    return;
+#endif
     if(mpCurRoad == 0)
     if(mpCurRoad == 0)
     {
     {
         QMessageBox::warning(this,"Warning","Not Select Road");
         QMessageBox::warning(this,"Warning","Not Select Road");
@@ -554,6 +580,10 @@ void RoadEditDialog::on_pushButton_MoveRoad_clicked()
 
 
 void RoadEditDialog::on_pushButton_RotateRoad_clicked()
 void RoadEditDialog::on_pushButton_RotateRoad_clicked()
 {
 {
+#ifdef OPENDRIVE_EDITONLY
+    QMessageBox::warning(this,"Warning","This Release is Only for Edit OpenDrive. Other Function Need Change conf.",QMessageBox::YesAll);
+    return;
+#endif
     if(mpCurRoad == 0)
     if(mpCurRoad == 0)
     {
     {
         QMessageBox::warning(this,"Warning","Not Select Road");
         QMessageBox::warning(this,"Warning","Not Select Road");
@@ -578,6 +608,10 @@ void RoadEditDialog::on_pushButton_RotateRoad_clicked()
 
 
 void RoadEditDialog::on_pushButton_MirrorRoad_clicked()
 void RoadEditDialog::on_pushButton_MirrorRoad_clicked()
 {
 {
+#ifdef OPENDRIVE_EDITONLY
+    QMessageBox::warning(this,"Warning","This Release is Only for Edit OpenDrive. Other Function Need Change conf.",QMessageBox::YesAll);
+    return;
+#endif
     if(mpCurRoad == 0)
     if(mpCurRoad == 0)
     {
     {
         QMessageBox::warning(this,"Warning","Not Select Road");
         QMessageBox::warning(this,"Warning","Not Select Road");
@@ -612,3 +646,27 @@ void RoadEditDialog::on_pushButton_EditLaneOffset_clicked()
     dlglaneoffset.exec();
     dlglaneoffset.exec();
 }
 }
 
 
+
+void RoadEditDialog::on_pushButton_EditRoadObjects_clicked()
+{
+#ifdef OPENDRIVE_EDITONLY
+    QMessageBox::warning(this,"Warning","This Release is Only for Edit OpenDrive. Other Function Need Change conf.",QMessageBox::YesAll);
+    return;
+#endif
+
+    DialogRoadObject roadobject(this);
+    roadobject.exec();
+
+}
+
+void RoadEditDialog::on_pushButton_RoadOptimize_clicked()
+{
+    if(mpCurRoad == 0)
+    {
+        QMessageBox::warning(this,"Warning","Not Select Road");
+        return;
+    }
+
+    DialogRoadOptimize dlgroadopt(mpCurRoad,mpxodr, this);
+    dlgroadopt.exec();
+}

+ 6 - 0
src/tool/map_lanetoxodr/roadeditdialog.h

@@ -20,6 +20,8 @@
 #include "dialogroadrotate.h"
 #include "dialogroadrotate.h"
 #include "dialogroadmirror.h"
 #include "dialogroadmirror.h"
 #include "dialoglaneoffset.h"
 #include "dialoglaneoffset.h"
+#include "dialogroadobject.h"
+#include "dialogroadoptimize.h"
 
 
 #include "roaddigit.h"
 #include "roaddigit.h"
 #include "xodrscenfunc.h"
 #include "xodrscenfunc.h"
@@ -66,6 +68,10 @@ private slots:
 
 
     void on_pushButton_EditLaneOffset_clicked();
     void on_pushButton_EditLaneOffset_clicked();
 
 
+    void on_pushButton_EditRoadObjects_clicked();
+
+    void on_pushButton_RoadOptimize_clicked();
+
 private:
 private:
     bool IsDrawMark(double s);
     bool IsDrawMark(double s);
 
 

+ 30 - 4
src/tool/map_lanetoxodr/roadeditdialog.ui

@@ -177,8 +177,8 @@
   <widget class="QLineEdit" name="lineEdit_roadlen">
   <widget class="QLineEdit" name="lineEdit_roadlen">
    <property name="geometry">
    <property name="geometry">
     <rect>
     <rect>
-     <x>770</x>
-     <y>30</y>
+     <x>530</x>
+     <y>40</y>
      <width>113</width>
      <width>113</width>
      <height>25</height>
      <height>25</height>
     </rect>
     </rect>
@@ -187,8 +187,8 @@
   <widget class="QLabel" name="label_8">
   <widget class="QLabel" name="label_8">
    <property name="geometry">
    <property name="geometry">
     <rect>
     <rect>
-     <x>626</x>
-     <y>38</y>
+     <x>430</x>
+     <y>40</y>
      <width>121</width>
      <width>121</width>
      <height>17</height>
      <height>17</height>
     </rect>
     </rect>
@@ -337,6 +337,32 @@
     <string>Edit LaneOffset</string>
     <string>Edit LaneOffset</string>
    </property>
    </property>
   </widget>
   </widget>
+  <widget class="QPushButton" name="pushButton_EditRoadObjects">
+   <property name="geometry">
+    <rect>
+     <x>980</x>
+     <y>210</y>
+     <width>211</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Edit Road Objects</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="pushButton_RoadOptimize">
+   <property name="geometry">
+    <rect>
+     <x>1010</x>
+     <y>280</y>
+     <width>181</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Road Optimize</string>
+   </property>
+  </widget>
  </widget>
  </widget>
  <resources/>
  <resources/>
  <connections/>
  <connections/>

+ 154 - 0
src/tool/map_lanetoxodr/xodrscenfunc.cpp

@@ -5,6 +5,160 @@ xodrscenfunc::xodrscenfunc()
 
 
 }
 }
 
 
+std::vector<QGraphicsPathItem *> xodrscenfunc::GetRoadParkingItem(RoadDigit *prd,std::vector<QGraphicsTextItem *> & xvectortext,
+                                                                  std::vector<QGraphicsPathItem *>  & xvectormarkgraph)
+{
+    std::vector<QGraphicsPathItem *> xvectorgrapath;
+    std::vector<iv::ParkingPoint> * pvectorpark = prd->GetParkingPoint();
+    unsigned int lsize = pvectorpark->size();
+    unsigned int i;
+    for(i=0;i<lsize;i++)
+    {
+        std::vector<iv::ParkingXY> xvectorxy = pvectorpark->at(i).mParkingXY;
+        QPainterPath xpath;
+        xpath.moveTo(xvectorxy[0].mX,xvectorxy[0].mY*(-1));
+        xpath.lineTo(xvectorxy[1].mX,xvectorxy[1].mY*(-1));
+        xpath.lineTo(xvectorxy[2].mX,xvectorxy[2].mY*(-1));
+        xpath.lineTo(xvectorxy[3].mX,xvectorxy[3].mY*(-1));
+        xpath.closeSubpath();
+        QGraphicsPathItem * pitem = new QGraphicsPathItem;
+        pitem->setPath(xpath);
+        pitem->setBrush(Qt::darkGray);
+        pitem->setPen(QPen(Qt::darkGray,0.001));
+        xvectorgrapath.push_back(pitem);
+
+        QGraphicsTextItem * pitemtext = new QGraphicsTextItem;
+
+        pitemtext->setPlainText(pvectorpark->at(i).strtext.data());
+        QRectF xrect =  pitemtext->boundingRect();
+        QFont font = pitemtext->font();
+        font.setPixelSize(100.0);
+//                font.setPixelSize(1);  // 像素大小
+        //        font.setItalic(false);  // 斜体
+        //        font.setUnderline(false);  // 下划线
+        pitemtext->setFont(font);
+  //      pitemtext->setFont(QFont("华文琥珀",10));
+        pitemtext->setDefaultTextColor(QColor(255,255,255));
+        pitemtext->setFlags(QGraphicsItem::ItemIsMovable|QGraphicsItem::ItemIsSelectable);
+        double fScale = 0.01;
+        pitemtext->setScale(fScale);
+        xrect =  pitemtext->boundingRect();
+        qDebug("rect height:  %f",xrect.height());
+        double fwidth = xrect.width() * fScale;
+        double fheight = xrect.height()*fScale;
+        double ftemx = fwidth * (-0.5);
+        double ftemy = fheight * 0.5;
+
+        double fparkhdg = pvectorpark->at(i).mfHdg;
+        double fposx = ftemx*cos(fparkhdg)-ftemy*sin(fparkhdg);
+        double fposy = ftemx*sin(fparkhdg)+ftemy*cos(fparkhdg);
+
+
+//        pitemtext->setDefaultTextColor(QColor(0, 160, 230));  // 文本色
+        pitemtext->setDefaultTextColor(Qt::white);
+        pitemtext->setRotation(pvectorpark->at(i).mfHdg *(-1.0)*180.0/M_PI);
+        pitemtext->setPos(pvectorpark->at(i).mParkingCenterXY.mX + fposx,(pvectorpark->at(i).mParkingCenterXY.mY+fposy)*(-1));
+        xvectortext.push_back(pitemtext);
+
+
+
+    }
+
+    for(i=0;i<lsize;i++)
+    {
+        std::vector<std::vector<iv::ParkingXY>> xvectormark = pvectorpark->at(i).mParkingMark;
+        unsigned int j;
+        for(j=0;j<xvectormark.size();j++)
+        {
+        QPainterPath xpath;
+        if(xvectormark.at(j).size()<4)
+        {
+            std::cout<<"Park Mark size < 4"<<std::endl;
+            continue;
+        }
+        xpath.moveTo(xvectormark.at(j).at(0).mX,xvectormark.at(j).at(0).mY*(-1));
+        xpath.lineTo(xvectormark.at(j).at(1).mX,xvectormark.at(j).at(1).mY*(-1));
+        xpath.lineTo(xvectormark.at(j).at(2).mX,xvectormark.at(j).at(2).mY*(-1));
+        xpath.lineTo(xvectormark.at(j).at(3).mX,xvectormark.at(j).at(3).mY*(-1));
+        xpath.closeSubpath();
+        QGraphicsPathItem * pitem = new QGraphicsPathItem;
+        pitem->setPath(xpath);
+        pitem->setBrush(Qt::yellow);
+        pitem->setPen(QPen(Qt::white,0.001));
+        xvectormarkgraph.push_back(pitem);
+        }
+    }
+    return xvectorgrapath;
+}
+
+std::vector<QGraphicsPathItem *> xodrscenfunc::GetRoadRefGeoItem(RoadDigit *prd)
+{
+    std::vector<QGraphicsPathItem *> xvectorgrapath;
+    std::vector<iv::RoadDigitUnit> * pvectorrdu =  prd->GetRDU();
+    int nsize = pvectorrdu->size();
+    int i;
+    double fgeowidth = 0.3;
+    double fmarklen = 3.0;
+    for(i=0;i<(nsize-1);i++)
+    {
+        QPainterPath xpath;
+        double fx1,fx2,fx3,fx4,fy1,fy2,fy3,fy4;
+
+        fx1 = pvectorrdu->at(i).mX + 0.5*fgeowidth * cos(pvectorrdu->at(i).mfHdg - M_PI/2.0);
+        fy1 = (pvectorrdu->at(i).mY + 0.5* fgeowidth * sin(pvectorrdu->at(i).mfHdg - M_PI/2.0))*(-1.0);
+        fx2 = pvectorrdu->at(i+1).mX+ 0.5*fgeowidth * cos(pvectorrdu->at(i+1).mfHdg - M_PI/2.0);
+        fy2 = (pvectorrdu->at(i+1).mY +0.5*fgeowidth * sin(pvectorrdu->at(i+1).mfHdg - M_PI/2.0))*(-1.0);
+        fx3 = pvectorrdu->at(i+1).mX + 0.5*fgeowidth * cos(pvectorrdu->at(i+1).mfHdg + M_PI/2.0);
+        fy3 = (pvectorrdu->at(i+1).mY+0.5*fgeowidth * sin(pvectorrdu->at(i+1).mfHdg + M_PI/2.0))*(-1.0);
+        fx4 = pvectorrdu->at(i).mX+ 0.5*fgeowidth * cos(pvectorrdu->at(i).mfHdg + M_PI/2.0);
+        fy4 = (pvectorrdu->at(i).mY+0.5*fgeowidth * sin(pvectorrdu->at(i).mfHdg + M_PI/2.0))*(-1.0);
+        xpath.moveTo(fx1,fy1);
+        xpath.lineTo(fx2,fy2);
+        xpath.lineTo(fx3,fy3);
+        xpath.lineTo(fx4,fy4);
+        xpath.closeSubpath();
+
+        QGraphicsPathItem * pitem = new QGraphicsPathItem;
+        pitem->setPath(xpath);
+        QColor brushcolor = Qt::red;
+
+        pitem->setBrush(brushcolor);
+        pitem->setPen(QPen(brushcolor,0.001));
+        xvectorgrapath.push_back(pitem);
+    }
+
+    if(nsize>0)
+    {
+        QPainterPath xpath;
+        double fx1,fx2,fx3,fx4,fy1,fy2,fy3,fy4;
+        fx1 = pvectorrdu->at(0).mX + 0.5*fmarklen * cos(pvectorrdu->at(0).mfHdg - M_PI/2.0);
+        fy1 = (pvectorrdu->at(0).mY + 0.5* fmarklen * sin(pvectorrdu->at(0).mfHdg - M_PI/2.0))*(-1.0);
+        fx2 = pvectorrdu->at(0).mX+ 0.5*fmarklen * cos(pvectorrdu->at(0).mfHdg + M_PI/2.0);
+        fy2 = (pvectorrdu->at(0).mY+0.5*fmarklen * sin(pvectorrdu->at(0).mfHdg + M_PI/2.0))*(-1.0);
+//        fx3 = pvectorrdu->at(0).mX+ 0.65*fmarklen * cos(pvectorrdu->at(0).mfHdg );
+//        fy3 = (pvectorrdu->at(0).mY+0.65*fmarklen * sin(pvectorrdu->at(0).mfHdg ))*(-1.0);
+        fx3 = fx2+ 0.1*fmarklen * cos(pvectorrdu->at(0).mfHdg);
+        fy3 = (fy2*(-1.0)+0.1*fmarklen * sin(pvectorrdu->at(0).mfHdg ))*(-1.0);
+        fx4 = fx1+ 0.1*fmarklen * cos(pvectorrdu->at(0).mfHdg );
+        fy4 = (fy1*(-1.0)+0.1*fmarklen * sin(pvectorrdu->at(0).mfHdg ))*(-1.0);
+        xpath.moveTo(fx1,fy1);
+        xpath.lineTo(fx2,fy2);
+        xpath.lineTo(fx3,fy3);
+        xpath.lineTo(fx4,fy4);
+        xpath.closeSubpath();
+
+        QGraphicsPathItem * pitem = new QGraphicsPathItem;
+        pitem->setPath(xpath);
+        QColor brushcolor = Qt::green;
+
+        pitem->setBrush(brushcolor);
+        pitem->setPen(QPen(brushcolor,0.001));
+        xvectorgrapath.push_back(pitem);
+    }
+
+    return xvectorgrapath;
+}
+
 std::vector<QGraphicsPathItem *> xodrscenfunc::GetRoadLaneItem(RoadDigit *prd)
 std::vector<QGraphicsPathItem *> xodrscenfunc::GetRoadLaneItem(RoadDigit *prd)
 {
 {
     std::vector<QGraphicsPathItem *> xvectorgrapath;
     std::vector<QGraphicsPathItem *> xvectorgrapath;

+ 3 - 0
src/tool/map_lanetoxodr/xodrscenfunc.h

@@ -16,8 +16,11 @@ public:
     xodrscenfunc();
     xodrscenfunc();
 
 
 public:
 public:
+    static std::vector<QGraphicsPathItem *> GetRoadRefGeoItem(RoadDigit * prd);
     static std::vector<QGraphicsPathItem *> GetRoadLaneItem(RoadDigit * prd);
     static std::vector<QGraphicsPathItem *> GetRoadLaneItem(RoadDigit * prd);
     static std::vector<QGraphicsPathItem *> GetRoadMarkItem(RoadDigit * prd);
     static std::vector<QGraphicsPathItem *> GetRoadMarkItem(RoadDigit * prd);
+    static std::vector<QGraphicsPathItem *> GetRoadParkingItem(RoadDigit * prd,std::vector<QGraphicsTextItem *> & xvectortext,
+                                                               std::vector<QGraphicsPathItem *>  & xvectormark);
 
 
 public:
 public:
     static bool IsDrawMark(double s);
     static bool IsDrawMark(double s);

+ 1 - 1
src/tool/tool_xodrobj/tool_xodrobj.pro

@@ -73,7 +73,7 @@ FORMS += \
     error( "Couldn't find the TinyXML.pri file!" )
     error( "Couldn't find the TinyXML.pri file!" )
 }
 }
 
 
-INCLUDEPATH += $$PWD/../map_lanetoxodr
+INCLUDEPATH += $$PWD/../../common/common/xodr
 
 
 
 
 DISTFILES += \
 DISTFILES += \

+ 3 - 0
src/ui/ui_ads_hmi/ADCIntelligentVehicle.cpp

@@ -2017,6 +2017,9 @@ void ADCIntelligentVehicle::ShareHMIMsg(iv::hmi::HMIBasic xhmi)
     xhmimsg.set_mbpause(xhmi.mbPause);
     xhmimsg.set_mbpause(xhmi.mbPause);
     xhmimsg.set_mbbusmode(xhmi.mbbusmode);
     xhmimsg.set_mbbusmode(xhmi.mbbusmode);
     xhmimsg.set_mbbochemode(xhmi.mbBocheMode);
     xhmimsg.set_mbbochemode(xhmi.mbBocheMode);
+    xhmimsg.set_mbchemen(xhmi.mbchemen);
+    xhmimsg.set_mbjinguang(xhmi.mbjinguang);
+    xhmimsg.set_mbyuanguang(xhmi.mbyuanguang);
     int nsize = xhmimsg.ByteSize();
     int nsize = xhmimsg.ByteSize();
     char * str = new char[nsize];
     char * str = new char[nsize];
     std::shared_ptr<char> pstr;
     std::shared_ptr<char> pstr;