소스 검색

change tool/map_lanetoxodr fix lane contact problem.

yuchuli 3 년 전
부모
커밋
ad2a18110d
1개의 변경된 파일12개의 추가작업 그리고 0개의 파일을 삭제
  1. 12 0
      src/tool/map_lanetoxodr/autoroadcontact.cpp

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

@@ -207,6 +207,10 @@ int AutoRoadContact::CalcContact(Road *pRoad1, Road *pRoad2,int & contacttype,in
         for(i=0;i<xroad1rightlane.size();i++)
         for(i=0;i<xroad1rightlane.size();i++)
         {
         {
             Lane * pLane1 = xroad1rightlane.at(i);
             Lane * pLane1 = xroad1rightlane.at(i);
+            if(i>=xroad2rightlane.size())
+            {
+                break;
+            }
             Lane * pLane2 = xroad2rightlane.at(i);
             Lane * pLane2 = xroad2rightlane.at(i);
             if((pLane1 == NULL)||(pLane2 == NULL))
             if((pLane1 == NULL)||(pLane2 == NULL))
             {
             {
@@ -224,6 +228,10 @@ int AutoRoadContact::CalcContact(Road *pRoad1, Road *pRoad2,int & contacttype,in
         for(i=0;i<xroad1leftlane.size();i++)
         for(i=0;i<xroad1leftlane.size();i++)
         {
         {
             Lane * pLane1 = xroad1leftlane.at(i);
             Lane * pLane1 = xroad1leftlane.at(i);
+            if(i>=xroad2leftlane.size())
+            {
+                break;
+            }
             Lane * pLane2 = xroad2leftlane.at(i);
             Lane * pLane2 = xroad2leftlane.at(i);
             if((pLane1 == NULL)||(pLane2 == NULL))
             if((pLane1 == NULL)||(pLane2 == NULL))
             {
             {
@@ -268,6 +276,10 @@ int AutoRoadContact::CalcContact(Road *pRoad1, Road *pRoad2,int & contacttype,in
                 for(i=nindex1;i<xroad1rightlane.size();i++)
                 for(i=nindex1;i<xroad1rightlane.size();i++)
                 {
                 {
                     Lane * pLane1 = xroad1rightlane.at(i);
                     Lane * pLane1 = xroad1rightlane.at(i);
+                    if(nindex2 >= xroad2rightlane.size())
+                    {
+                        break;
+                    }
                     Lane * pLane2 = xroad2rightlane.at(nindex2);nindex2++;
                     Lane * pLane2 = xroad2rightlane.at(nindex2);nindex2++;
                     if((pLane1 == NULL)||(pLane2 == NULL))
                     if((pLane1 == NULL)||(pLane2 == NULL))
                     {
                     {