日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GIS中最短路径的实现

發布時間:2024/4/17 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GIS中最短路径的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(January 11) http://www.handandaily.com



GIS中最短路徑的實現
                    
張燕,付仲良 ,黃慶彬

  本文提出了一種基于矢量角度的最短路徑搜索算法,設計出一種類似于面向對象的數據存儲結構來存儲網絡圖中的節點及弧段對象,在最短路徑的搜索上引入矢量夾角標量值做為搜索因子,充分利用了網絡圖中各點元素和線元素間的拓撲關系,提高了搜索的趨勢性,同時還考慮了各弧段的長度值(或權值),較好的將網絡圖中對象的空間信息和屬性信息相結合……

  1 引言

  隨著地理信息產業的建立和數字化信息產品在全世界的普及,地理信息系統將深入到各行各業甚至各家各戶,成為人們生產、生活學習和工作中不可缺少的工具和助手。

  地理信息系統中網絡分析功能的主要目的是對地理網絡(如交通網絡)、城市基礎設施網絡(如各種網線、電力線、電話線、供排水管線等)進行地理分析和模型化。

  最短路徑問題是地理信息系統網絡分析中的最基本最關鍵的問題,在交通網絡結構的分析,交通運輸線路的選擇,通訊線路的建造與維護,運輸貨流的最小成本分析,城市公共交通網絡的規劃等,都有直接應用的價值。

  關于最短路徑問題,目前為人們所公認的最好求解方法,是1959年由E.W.Dijkstar提出的標號法,但具體實現中在存儲空間及運行效率上還存在著一定的問題。

  本文從圖形數據的存儲結構及最短路徑頂點的搜索策略兩個方面對Dijkstra算法進行了改進,提出了一種基于矢量角度的最短路徑搜索算法。



  2 道路網絡數據結構

  構造類似于面向對象的數據結構存儲網絡圖:

  Public Type Mynode(點結構)

    Dim NodeID As Integer '節點ID,唯一標識節點

    Dim AdjoinNum As Integer '鄰接弧段數量

    Dim AdjoinArcID() As Integer '鄰接弧段ID

    Dim AdjoinNodeID() As Integer '鄰接節點ID

    Dim AdjoinClamp() As Double '指向鄰接節點的矢量的角度

  End Type

  Public Type MyArc(弧結構)

    Dim ArcID As Integer '弧段ID,唯一標識弧段

    Dim Length As Double '弧段長

  End Type

  其中節點對象中的三個數組大小在初始化時利用鄰接弧段數量設置大小,因此對應不同的節點對象其大小是不固定的,使用此種結構,對于有向圖不會造成數據的冗余,而對應于無向圖也僅多存儲了一倍的弧段ID,鄰接節點ID及矢量角度,相對于經典Dijkstra算法來說,需要的存儲空間仍較小。對于弧段對象來說,其中的Length可以設置為弧段長度,也可根據需要設置為時間、費用等相應的權值。

  3 算法原理

  由兩點之間直線最短的定理,構造一條理想最短路徑(如圖一中的AB),這條直線段一定是A、B兩點間弧段中距離最短的一條。但實際上這條直線段作為一段道路存在的可能性極小,但這條從起點到終點的直線段卻代表了一個路線的趨勢,從概率的角度,順著這個方向的某些路段的集合組成最短路徑的可能性較大。

                  

  以矢量夾角標量值做為最短路徑頂點選取的第一要素。

  如圖一,求解A、B兩點間的最短路徑。∠1為矢量Aa與矢量AB間夾角的標量值,當前節點的每個鄰接節點都對應一個角度標量值,按照標量值的正負值大小,構造標識分別為正負的兩個隊列,兩個隊列均根據節點對應標量值的絕對值從小到大進行排序。

  分別從正負兩個隊列中選出排在最前位的節點,加入到最短路徑樹中。

  除第一次搜索外,其余過程中都需要判斷搜索到的節點是否已存在于最短路徑樹中,如果該節點已存在于最短路徑樹中,則需要比較本次搜索過程結束后該節點信息與對應的最短路徑樹節點信息。

  假設在第m次搜索過程中已確定指向節點S的樹節點Sm,之后在第n次(n ≥ m)搜索得到的樹節點Sn再次指向網絡圖中節點S。

  當Sn的Length值大于Sm的Length值時,在Sn處停止搜索,如圖二所示。

          

  當Sn的Length值小于或等于Sm的Length值,如圖三所示,將Sm之下的所有樹節點移動到Sn之下,并依據Sn的Length值對應修改原Sm之下所有樹節點(圖示方框中所有樹節點)的Length值。

          

  4 算法實現

  本算法在武漢市經濟開發區道路網絡圖上得到實現。武漢市經濟開發區道路網絡圖中共有節點371個,邊653條。在ArcMap的VBA環境中,通過VB+ArcObjects的編程方式,由VB實現算法邏輯控制,ArcMap管理圖形的顯示與控制,實現在圖形窗口中動態顯示求得的最短路徑以及選取組成最短路徑的路段集合的過程。實現流程圖如下:

            

  在武漢市經濟開發區道路圖上任意選取六個節點,分別進行三次最短路徑求解的實驗,得出的參數如下表:

  
 
 其中:

  Arc Number表示的是最短路徑經過的弧段數,單位為段;

  Node Number表示的是最短路徑經過的結點個數,單位為個;

  Path Length表示的是最短路徑的長度,單位為米;

  Modification在本文算法中表示的是求解過程中樹節點修改次數,在Dijkstra算法中表示的是求解過程中節點標號的修改次數;

  Time表示的是求解最短路徑花費的時間,單位為秒。

  由上表可以看到,在求解最短路徑的過程中本文討論的算法與傳統的Dijkstra算法,最大的差別在于Modification。

  由于文中探討的算法在求解最短路徑過程中具有起、止點的方向性趨勢,每次搜索過程中僅考慮當前節點的鄰節點,故修改次數較小;而在Dijksra算法中,每次搜索過程中都將遍歷所有未確定永久標號的節點,故修改次數較大。

  文中探討的算法求解過程簡單,速度快,求得的最短路徑與用Dijkstra算法求得的最短路徑相同或相近,所以該算法具有一定的實用性和可操作性。

  5 結論

  在對于搜索技術性能評價的時候,在各種不同的情況下有著不同的要求,并非只注重最優解,而是注重在一定條件下的非劣解。雖然本文討論的算法在道路較不規整時求得的最短路徑可能有一定的誤差,但是與最短路徑的最優解相近,而非劣解,且在其他情況下都能求得最優解,求解的速度快,故具有一定的實用性和可操作性。

  由于實際情況的復雜性,為了減小算法在求解時產生的誤差,使得算法有更好的適應性,有進一步研究道路網絡圖中拓撲關系的必要,增加矢量條件,真正使最短路徑的求解過程簡單快速,結果準確可信。

轉載于:https://www.cnblogs.com/kaixin110/archive/2007/08/10/850805.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的GIS中最短路径的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。