【正文】
長(zhǎng)整型地圖編號(hào)名稱文本100地圖名稱表名文本50地圖信息對(duì)應(yīng)表名描述文本255地圖描述信息(2)公交車車站表的結(jié)構(gòu)為了能夠查詢公交車信息,需要建立公交車的車站表。 公交車車站表結(jié)構(gòu)字段名稱數(shù)據(jù)類型大小描述站名文本40站點(diǎn)名稱類型文本10大小類型車次數(shù)字10公交車路線號(hào)圖層名文本50圖層名稱屬性表文本50屬性表名稱(3)公共設(shè)施表結(jié)構(gòu)公共設(shè)施表的數(shù)據(jù)是為了存放地圖上公共設(shè)施如醫(yī)院,銀行等信息的位置等信息。 景點(diǎn)表結(jié)構(gòu)字段名稱數(shù)據(jù)類型大小描述名稱文本40景點(diǎn)名稱類型文本10地點(diǎn)類型圖層名文本50圖層名稱屬性文本50屬性名稱信息文本1000存放景點(diǎn)的介紹(5)坐標(biāo)表結(jié)構(gòu)坐標(biāo)表給出得是各個(gè)部分的位置坐標(biāo)通過(guò)坐標(biāo),用于存放各個(gè)地理點(diǎn)的信息。由于圖層當(dāng)中的每一個(gè)地理要素的幾何形狀以矢量坐標(biāo)(X,Y)形式儲(chǔ)存。通過(guò)唯一表示來(lái)進(jìn)行關(guān)聯(lián)。在這個(gè)系統(tǒng)當(dāng)中,我主做了地圖的添加,移動(dòng),縮放這個(gè)模塊。景點(diǎn)的添加刪除模塊。MapObjects的地圖現(xiàn)實(shí)就是通過(guò)加載圖層,圖層之間經(jīng)過(guò)層層覆蓋來(lái)顯示出來(lái)的,這樣的好處是便于管理地圖,在線路尋找等功能實(shí)現(xiàn)上很方便。開(kāi)始 layer//聲明圖層變量=gds//設(shè)置圖層信息加載圖層結(jié)束提示錯(cuò)誤YN圖層加載的過(guò)程很簡(jiǎn)單,但是必選驗(yàn)證圖層加載是否成功。private void LoadLayers(){()。 for (int m = 0。 m ++){for (int i = 0。 i ++){ layer。 gds。 = gds。 break。 break。 break。 }[i].layer = layer。地圖的放大縮小都是通過(guò)MapObjects的自身的模塊來(lái)實(shí)現(xiàn)的,通過(guò)MouseDownEvent事件來(lái)出來(lái),從而實(shí)現(xiàn)地圖的放大以及縮小。大大降低了開(kāi)發(fā)者的難度,只需要用到接口就可以了開(kāi)始最大/最小MouseDownEvent觸發(fā)moZoomOut/moZoomOut最大/最小結(jié)束YYNN 地圖放大縮小流程圖下面是地圖縮放實(shí)現(xiàn)的代碼:switch(()) { case 1: //放大 if () { SetToolbar(())。 = 。 = 。 case 2: //縮小 if () { SetToolbar(())。 = 。 = 。 case 3: //全圖顯示 SetToolbar(())。 = 。 = (int)。 ReShowLayers()。(1)公交信息查詢是用來(lái)查詢公交車站名的信息,公交車停經(jīng)信息的,景點(diǎn)信息是查詢景點(diǎn)的一些基本的資料信息,旅游管理系統(tǒng)通過(guò)直接查詢數(shù)據(jù)庫(kù)就可以得到信息。返回結(jié)果開(kāi)始結(jié)束錄入查詢關(guān)鍵字?jǐn)?shù)據(jù)庫(kù)查詢結(jié)果提示用戶無(wú)此數(shù)據(jù)YN 公交景區(qū)信息流程圖下面是公交查詢的代碼:private void InitBusPanel() { = [公交車站]。 }private void _Bus_radioButton_Station_CheckedChanged(object sender, e) { LoadBusData()。Data Source= + + 。 myConnection = new (strConnectionString)。 dataSet = new (臨時(shí)庫(kù))。 string szSQL。 else szSQL = Select distinct 站名From 公交車站路線Where + + Order By 站名。 (dataSet,公交車站路線)。 = 站名。 else szSQL = Select distinct 線路名From 公交車站路線Where + + Order By 線路名。 (dataSet,公交車站路線)。 = 線路名。 }(2)特定查詢特定查詢主要是查詢出以某點(diǎn)為中心半徑為多少米的范圍呢的物體,這種查詢需要運(yùn)用到種子填充算法的思想。而在我們的特定查詢當(dāng)中,主要是通過(guò)種子填充這種思想來(lái)逐點(diǎn)來(lái)在數(shù)據(jù)庫(kù)中查詢呢,是不是公共設(shè)置,是的話列出來(lái)。Dijkstra算法是最短路徑算法中很經(jīng)典的算法,目前它在很多地方都還在領(lǐng)域運(yùn)用,特別是路由算法。如果點(diǎn)v0和vi不是直接相連,則假設(shè)存在一條從v0到vi長(zhǎng)度為無(wú)窮(小于0)的邊。(3)調(diào)整集合VU中點(diǎn)距離值。即:如果P[i].dLengthP[min].dLength+D(min,i),則將點(diǎn)vi的距離值改為P[min].dLenth+D(min,i),并將路徑上vi的前趨點(diǎn)改為vmin,即:P[i].nPreNode=min。作為一個(gè)管理系統(tǒng),應(yīng)該由添加刪除這個(gè)功能。但是在檢索的時(shí)候是不會(huì)出現(xiàn)這個(gè)結(jié)果的。開(kāi)始查詢有數(shù)據(jù)刪除結(jié)束YN開(kāi)始查詢無(wú)數(shù)據(jù)添加結(jié)束YN通過(guò)對(duì)系統(tǒng)的設(shè)計(jì),本系統(tǒng)實(shí)現(xiàn)了在MapObjects下面的地圖加載,公交查詢,景點(diǎn)查詢線路管理,地點(diǎn)查詢功能,用戶通過(guò)鼠標(biāo)和鍵盤就可以輕松的查詢出目的地,目的地的信息,公交信息。根據(jù)地圖,可以輕松找得目的地。由于地理信息系統(tǒng)的開(kāi)發(fā)存在著一些復(fù)雜性,特別是在地圖加載的編寫過(guò)程當(dāng)中費(fèi)了很大的力氣。通過(guò)樣的一個(gè)簡(jiǎn)單的結(jié)構(gòu),用戶可以很輕松的完成各個(gè)功能。點(diǎn)擊“刷新”按鈕就可以加載地圖,加載地圖的過(guò)程是逐漸加載各個(gè)圖層的過(guò)程。公交查詢通過(guò)數(shù)據(jù)庫(kù)查詢出公交的路線。地圖縮放是通過(guò)單擊縮放按鈕來(lái)進(jìn)行的,縮放的同時(shí)GIS組件不斷改變圖層,通過(guò)加載不同的圖層,來(lái)達(dá)到地圖縮放的功能。第4章 程序調(diào)試與分析用黑盒測(cè)試測(cè)試以下功能模塊:地圖加載,地圖縮放,公交查詢,旅游線路管理,景區(qū)數(shù)據(jù)查詢。(1) 輸入數(shù)據(jù)測(cè)試景點(diǎn)編號(hào):不輸入任何字符、輸入非數(shù)字字符、輸入數(shù)字字符。其他域:由于其他都是文本形式,且沒(méi)有規(guī)定范圍,可以輸入任何字符、漢字等等。在軟件中點(diǎn)擊“退出”按鈕,出現(xiàn)提示對(duì)話況,選擇是否退出。安裝以后在進(jìn)行反復(fù)測(cè)試。在程序設(shè)計(jì)當(dāng)中,是不可能遇到問(wèn)題的,對(duì)于我們大四的同學(xué)來(lái)說(shuō),在以前的課程設(shè)計(jì)當(dāng)中就遇到過(guò)很多的問(wèn)題,特別是在程序越來(lái)越大,越來(lái)越復(fù)雜以后,遇到的問(wèn)題就更多。(1) 變量未定義:通過(guò)定義變量來(lái)解決;(2) 數(shù)據(jù)類型不匹配:由于在編寫程序的時(shí)候粗心大意,是不是把數(shù)據(jù)類型搞錯(cuò)。仔細(xì)學(xué)習(xí)后記憶;在設(shè)計(jì)的過(guò)程當(dāng)中,由于第一次接觸MapObjects,在程序設(shè)計(jì)的時(shí)候出現(xiàn)了很多問(wèn)題,地圖加載不上呀,圖層出錯(cuò)呀很多很多。在查找資料的時(shí)候,發(fā)現(xiàn)由于地理信息系統(tǒng)開(kāi)發(fā)的人員不多,而且成本很高,因而有關(guān)地理信息的資料并不是很多。最大的麻煩應(yīng)該是地圖的問(wèn)題,花了很多時(shí)間在網(wǎng)上找地圖,因?yàn)楹芏嚯娮拥貓D是收費(fèi)的。后來(lái)在CSMD這個(gè)網(wǎng)站上,偶然的機(jī)會(huì)才找到這樣一個(gè)地圖。結(jié)束語(yǔ)時(shí)間飛逝,當(dāng)我在鍵盤上敲下結(jié)束語(yǔ)這三個(gè)字的時(shí)候。在大四上學(xué)期結(jié)束選題的時(shí)候選到了這樣一個(gè)題目。不知道從什么地方開(kāi)始,需要什么樣的一個(gè)工具。對(duì)課題也有了進(jìn)一步的理解。GIS系統(tǒng)的二次開(kāi)發(fā),就是通過(guò)吧GIS組件集成到開(kāi)發(fā)平臺(tái)里面。大大提高了程序開(kāi)發(fā)的效率。目前GIS的運(yùn)用已經(jīng)很普遍了,從人們的生活,到專業(yè)的測(cè)繪,無(wú)所不有。組件式的GIS系統(tǒng)可以說(shuō)是為GIS的開(kāi)發(fā)提供了全新的思路。把整個(gè)系統(tǒng)分為多個(gè)模塊,GIS模塊就是其中的一個(gè)。各個(gè)模塊之間的開(kāi)發(fā)就很容易了,GIS控件與其它非GIS控件之間,可以方便地通過(guò)可視化的軟件開(kāi)發(fā)工具集成起來(lái),就形成整個(gè)地理信息系統(tǒng)。參考了其他城市建立的旅游系統(tǒng)以后,主要對(duì)基于MapObjects的旅游信息系統(tǒng)進(jìn)行設(shè)計(jì)、實(shí)現(xiàn)了多項(xiàng)查詢進(jìn)行了研究。只要懂得用電腦人都可用輕松的使用這個(gè)系統(tǒng)對(duì)自己的旅游線路,行程進(jìn)行安排。在現(xiàn)實(shí)當(dāng)中的應(yīng)用更加的復(fù)雜,需要研發(fā)的成本也會(huì)隨著增加,還有很多問(wèn)題也在探討和研究當(dāng)中,因此要真正實(shí)現(xiàn)系統(tǒng)的所有功能還要做大量的工作。,2008[11][J].陜西師大學(xué)報(bào),1995[12] (美)帕帕斯,(美)默里. C精髓[M],人民郵電出版社,2002[13]馬歐,[J], 河南科技,2004[14] 羅平,陳同慶,黃耀麗,[J],熱帶地理,2002[15](修訂版)[M].北京:高等教育出版社,2001[16]王阿川,張劍飛, 劉勁風(fēng). 淺談旅游地理信息系統(tǒng)在旅游業(yè)中的應(yīng)用[J].東北林業(yè)大學(xué),2005[17]黎國(guó)玉, 喀斯特地區(qū)城鄉(xiāng)交錯(cuò)帶的旅游開(kāi)發(fā)構(gòu)想——以貴陽(yáng)市花溪為例[J].貴州師范大學(xué),2003[18] The History of GIS J. Coppock amp。97 amp。97, Volume 1, August 1822, 1997 Beijing China.致 謝經(jīng)過(guò)4個(gè)月的努力,我在發(fā)現(xiàn)做一個(gè)系統(tǒng)從準(zhǔn)備到開(kāi)發(fā)是多么不容易的事情。在調(diào)試的那一刻,覺(jué)得自己很有成就感。首先感謝的是我的指導(dǎo)老師,在整個(gè)系統(tǒng)的制作過(guò)程當(dāng)中,不倫是工作日還是休息日,無(wú)時(shí)不刻的都在關(guān)心著我們的設(shè)計(jì)的進(jìn)度。也在側(cè)面給予了我很多的啟發(fā)。然后我想感謝的是在這四年當(dāng)中曾經(jīng)教過(guò)我的那些老師。最后要感謝的是學(xué)校為我們提供了這樣的一個(gè)平臺(tái),讓我們?cè)谛5乃哪戤?dāng)中學(xué)到了很多的東西。感謝計(jì)算機(jī)系的所有老師給我們的幫助,使得我們?cè)趯I(yè)上學(xué)到了很多東西。順利的完成了論文。謝謝你們。using 。 public string szLayerName。 public string szTableName。 public string szType。 //中類 public string szSubType2。 public bool bCanControl。 //可顯示狀態(tài),只能通過(guò)圖層控制來(lái)改變 public bool bSelected。 //可選擇 public bool bBackground。 public double dScale。 public int nCharacterIndex。 public int nFontSize。 public uint nSymColor。 public rsSel。 public class MLine {public int nPointNumber。 public MLine() { } }。 public MPoint pt2 = null。 public class MPoint { public double x。 public MPoint() { } }。 public MPoint[] pts。 } } enum MapOpr {MO_NULL=0,MO_ZOOMIN,MO_ZOOMOUT,MO_ZOOMFULL,MO_PAN,MO_POINTSEL,MO_RECTSEL,MO_CIRCLESEL,MO_POLYGONSEL,MO_INFO,MO_LINEMEAS,MO_POLYMEAS,MO_SEACHBYDIST,MO_CLOSEST}。 public string szMetaTable。 public string szType。 }。 public double dX。 public m_extent。 public class CEnvironment { //常量 public const string BUSLINE_LAYERNAME = 公交線路。 public const uint SYMBOL_COLOR_NONE = 9999。 public string m_szSDBPath = 。 public string m_szHelpPath = 。 public int m_nCurrMapIndex = 1。 public MapInfo[] m_mapInfos = null。 public LayerInfo[] m_layerInfos = null。 public IndexInfo[] m_indexInfos = null。 public string m_szfntStation = 。a39。 // public string m_szFontName = 。 public long m_x,m_y。 public CloestPath m_cloestPath = null。 //最短距離查詢 public object m_selectedFeature = null。 publ