999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

最短路徑分析在MapInfo中的實現

2012-11-14 10:52:26胡殿常王晉秀
測繪通報 2012年6期
關鍵詞:二次開發

胡殿常,王晉秀

(解放軍1206地理信息中心,河北廊坊065000)

最短路徑分析在MapInfo中的實現

胡殿常,王晉秀

(解放軍1206地理信息中心,河北廊坊065000)

采用MapBasic語言,對MapInfo進行功能擴充,在MapInfo中實現最短路徑分析。程序首先完善路網表結構,增加路網拓撲所必需的字段;然后進行路網拓撲,建立拓撲關系,并在此基礎上采用Floyd算法實現最短路徑分析。

MapInfo;最短路徑分析;MapBasic;Floyd;GIS

一、引 言

近幾年,GIS在我國快速發展,并隨著計算機軟、硬件技術的不斷成熟,這一高新技術已由研究室走向實際應用領域,融入了人們的日常生活。電子導航是最重要的應用之一,其中最短路徑分析是構成電子導航的靈魂。此外,最短路徑分析在通信網絡、電力網絡等地理信息系統中也有著廣泛的應用。

MapInfo是一款桌面地理信息系統軟件,以簡單易學、性能穩定等特點,在GIS領域占有一定優勢。由于其數據結構相對簡單,無拓撲關系,因此軟件中沒有提供諸如最短路徑分析等基于拓撲關系的功能。但MapInfo提供了強大的二次開發接口,很多功能可通過二次開發解決。

MapInfo提供了3種二次開發方法:MapBasic語言、MapX組件和OLE技術。MapX和OLE適合開發獨立的應用系統,而MapBasic比較適合MapInfo功能擴展編程。MapBasic是MapInfo自帶的二次開發語言,是一種類似Basic的解釋性語言,利用Map-Basic編程生成的*.mbx文件可在MapInfo軟件平臺上運行。本文主要介紹采用 MapBasic語言在MapInfo中實現最短路徑分析的方法。

二、完善表結構

在MapInfo中,路網或其他網絡都以“線”的方式表現。每條線有“起點”和“終點”,統稱“端點”。線與線首尾相連,構成路網,連接處稱為“頂點”或“節點”。然而,路段編號(ID)、路段起止點、路段長度等屬性,并沒有被記錄。因此,首先要完善表結構,增加字段,記錄拓撲信息。

增加的字段有 LineID、Fnode、Tnode、Length、Selected,分別記錄路段編號、道路起點號、道路終點號、路段長度(m)和是否為選出的路段(計算結果圖形顯示時用)。主要程序片段為

Alter Table表名 (Add LineID Integer,Fnode Integer,Tnode Integer,Length float,Selected Logical)Interactive

三、建立拓撲關系

建立拓撲關系,主要需完成3項工作:給每個路段編號;計算各路段長度;計算各路段的連接關系。前兩項可簡單計算賦值,第3項的算法核心是:先選定任一路段;然后尋找所有與該路段起點相連的路段,將相連處各路段端點(路段起點或終點)賦相同編號;路段終點作相同運算。遍歷所有路段,作以上相同運算。具體算法如下:

1)針對路網表,生成查詢表RoadNet。該表中,計算出路網中各路段的起點坐標(Xf,Yf)和終點坐標(Xt,Yt),并將各路段起止點編號賦初值0(Fnode=0、Tnode=0)。

2)i=0。

3)查找RoadNet中第一個路段。

4)如果被查到的路段起點編號不為0,說明已賦過值,執行步驟5);如果起點編號等于0,i=i+ 1,Fnode=i,即該頂點編號為i。

在RoadNet其他路段中查找起點與i點坐標值相同的路段,給起點賦相同號(Fnode=i)。

在RoadNet其他路段中查找終點與i點坐標值相同的路段,給終點賦相同號(Tnode=i)。

5)如果被查到的路段終點編號不為0,說明已賦過值,執行步驟6);如果終點編號等于0,i=i+ 1,Tnode=i,即該頂點編號為i。

在RoadNet其他路段中查找起點與i點坐標值相同的路段,給起點賦相同號(Fnode=i)。

在RoadNet其他路段中查找終點與i點坐標值相同的路段,給終點賦相同號(Tnode=i)。

6)找到RoadNet中下一個路段,重復步驟4)、步驟5)。

7)遍歷所有路段,結束。

程序片段如下

采用相似的算法,計算與上路段終點相連的路段。遍歷全部路段,結束。

四、最短路徑計算

迪杰斯特拉(Dijkstra)算法和弗洛伊德(Floyd)算法,是解決最短路徑問題的經典算法。Dijkstra算法又稱為單源最短路徑,是從一個頂點出發,求該頂點至所有可到達頂點的最短路徑;Floyd算法可以計算出所有頂點之間的最短路徑,計算結果為兩個矩陣,一個是任意兩個頂點之間的最短距離;另一個是任意兩點之間的最短路徑。很顯然,Floyd算法時間復雜度要高。但一般情況下,路網不會在短時間內更新,路網拓撲關系也相對固定,所以可采用Floyd算法,將計算結果矩陣以文件的形式保存,在最短路徑分析時,隨時調用,不再重復計算,這樣可大幅提高效率。MapInfo平臺上比較適合采用這種方法。該算法簡捷,這里不再介紹,但在算法實現中有兩點需要說明。

1.二維數組

在MapBasic語言支持的數據類型中,包含一維數組,不包含二維數組。但Floyd算法的鄰接矩陣需要用二維數組存儲、運算,因此,在程序中需要用一維數組實現二維數組功能。程序片段如下

要訪問二維數組G(m,n)時,采用G(a(m,n))的方式調用,這樣就實現了用一維數組替代二維數組。

2.計算結果的展示

在MapInfo中,計算結果要以圖形(可視化)的方式表現,因為圖形能更好地識別和解釋,達到所見即所得的效果。為方便處理,在路網表中,增加了Selected字段,最短路徑分析時,將最短路徑所包含路段的Selected值賦為1,最后在路網表中查找Selected=1即可。程序如下

五、效果展示

1)啟動MapInfo,打開或新建一個路網表。

2)運行最短路徑分析程序,MapInfo中增加了“最短路徑分析”菜單,如圖1所示。

圖1 程序運行界面

3)依次點擊“最短路徑分析”、“路網拓撲”,進行路網拓撲(每個路網只進行一次路網拓撲即可)。

4)依次點擊“最短路徑分析”、“查找最短路徑”,選取最短路徑分析工具,在圖中起點處按下鼠標左鍵,移動到終點處松開鼠標,即可顯示出起點至終點的最短路徑,如圖2、圖3所示。

圖2 定義最短路徑起止點

六、結束語

最短路徑分析是GIS的重要組成部分,有著廣泛的應用。本文提供了一種在MapInfo中實現這一功能的算法。通過實際驗證,該方法界面友好、操作簡捷、運算速度快、計算結果準確、性能穩定,有一定的實用價值。

圖3 最短路徑分析結果

[1] 沙宗堯,邊馥苓.單源最短路徑算法的圖示教學設計與實踐[J].測繪通報,2010(4):58-61.

[2] 彭波.數據結構[M].北京:清華大學出版社,2002.

[3] 張劍平,任福繼,葉榮華,等.地理信息系統與MapInfo應用[M].北京:科學出版社,1999.

[4] 李勝樂,陸遠忠,車時.MapInfo地理信息系統二次開發實例[M].北京:電子工業出版社,2004.

[5] 王曉東,趙全磊,吳建民.MapBasic在MapInfo功能擴展中的應用[J].測繪通報,2007(8):51-54.

[6] 陳繼山,須鼎興.使用Shape文件進行最短路徑的分析與跟蹤[J].測繪通報,2004(12):8-10.

[7] 張虎,施一民.基于MapX的公安110報警系統的設計與實現[J].測繪通報,2004(9):23-25,39.

[8] 司連法,王文靜.快速Dijkstra最短路徑優化算法的實現[J].測繪通報,2005(8):15-18.

[9] 夏松,韓用順.GIS中最短路徑算法的改進實現[J].測繪通報,2004(9):40-42.

Realization of the Shortest Path Analysis in MapInfo

HU Dianchang,WANG Jinxiu

0494-0911(2012)06-0087-03

P208

B

2011-12-02

胡殿常(1968—),男,河北淶水人,工程師,主要從事GIS工作。

猜你喜歡
二次開發
淺談基于Revit平臺的二次開發
甘肅科技(2020年20期)2020-04-13 00:30:02
西門子Operate高級編程的旋轉坐標系二次開發
淺談Mastercam后處理器的二次開發
模具制造(2019年3期)2019-06-06 02:11:02
基于C#的AutoCAD建筑構件庫二次開發
江西建材(2018年2期)2018-04-14 08:01:14
西門子Easy Screen對倒棱機床界面二次開發
基于全站儀二次開發的覆冰厚度測量與實現
電測與儀表(2016年9期)2016-04-12 00:29:52
Micaps3.2 版本二次開發入門淺析
西藏科技(2015年12期)2015-09-26 12:13:51
基于VB的ANSYS二次開發在變壓器抗短路性能分析中的應用
基于CATIA的橡皮囊成形毛料展開的二次開發
機械工程師(2015年9期)2015-02-26 08:38:10
ANSYS Workbench二次開發在汽車穩定桿CAE分析中的應用
汽車零部件(2014年5期)2014-11-11 12:24:32
主站蜘蛛池模板: 精品无码专区亚洲| 国产成人精品一区二区秒拍1o| 日韩国产欧美精品在线| 成色7777精品在线| 成人免费黄色小视频| 中文国产成人久久精品小说| 无码国产偷倩在线播放老年人| 欧美日韩国产成人高清视频| A级毛片无码久久精品免费| 69国产精品视频免费| 亚洲一级无毛片无码在线免费视频| 欧美在线一二区| 欧美成人a∨视频免费观看| 久久五月视频| 亚洲狠狠婷婷综合久久久久| h网址在线观看| 在线观看免费黄色网址| 日韩成人免费网站| 99ri精品视频在线观看播放| 欧美中文字幕一区| 99re热精品视频国产免费| 亚洲IV视频免费在线光看| 成人av手机在线观看| 亚洲天堂网在线视频| 久久99精品久久久久纯品| 国产9191精品免费观看| 奇米精品一区二区三区在线观看| 国产成人精品视频一区视频二区| 这里只有精品国产| 欧美天堂在线| 国产丝袜丝视频在线观看| 亚洲精品视频在线观看视频| yjizz国产在线视频网| 亚洲最猛黑人xxxx黑人猛交| 国产精品九九视频| 国产JIZzJIzz视频全部免费| 亚洲成人精品| 中文字幕在线看| 亚洲精品无码久久毛片波多野吉| 97国产成人无码精品久久久| 成人午夜精品一级毛片| 国产精品手机在线观看你懂的| 国产精品男人的天堂| 国产成年无码AⅤ片在线| 久久这里只精品热免费99| 亚洲一级色| 2020久久国产综合精品swag| 一级黄色欧美| 蜜臀av性久久久久蜜臀aⅴ麻豆| 亚洲国产精品VA在线看黑人| 激情六月丁香婷婷四房播| 九九热视频精品在线| 亚洲欧美日韩精品专区| 美女扒开下面流白浆在线试听| 啪啪免费视频一区二区| 国产精品午夜福利麻豆| 国产情侣一区二区三区| 无码免费试看| 在线日韩日本国产亚洲| 色综合激情网| 国产精品一区在线麻豆| 国产精品主播| 天天视频在线91频| 在线看片中文字幕| 中文字幕久久亚洲一区| 精品国产免费观看| 日本不卡视频在线| 国内精品九九久久久精品| 2024av在线无码中文最新| 伊人蕉久影院| 一级成人a毛片免费播放| 全免费a级毛片免费看不卡| 亚洲h视频在线| 99视频在线看| 亚洲日本韩在线观看| 久久亚洲中文字幕精品一区| 国产原创自拍不卡第一页| 国产三级国产精品国产普男人| 99热线精品大全在线观看| 丰满少妇αⅴ无码区| 男女猛烈无遮挡午夜视频| 真实国产精品vr专区|