基ArcGisEngine的黑龍江省旅游景點查詢系統(tǒng)設(shè)計學(xué)士學(xué)位論文_第1頁
基ArcGisEngine的黑龍江省旅游景點查詢系統(tǒng)設(shè)計學(xué)士學(xué)位論文_第2頁
基ArcGisEngine的黑龍江省旅游景點查詢系統(tǒng)設(shè)計學(xué)士學(xué)位論文_第3頁
基ArcGisEngine的黑龍江省旅游景點查詢系統(tǒng)設(shè)計學(xué)士學(xué)位論文_第4頁
基ArcGisEngine的黑龍江省旅游景點查詢系統(tǒng)設(shè)計學(xué)士學(xué)位論文_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、學(xué) 士 學(xué) 位 論 文題 目 基于arcgis engine的黑龍江省旅游景點查詢系統(tǒng)設(shè)計 學(xué) 生 閆利爽 指導(dǎo)教師 馬大龍 講師年 級 2009級專 業(yè) 地理信息系統(tǒng)系 別 地理系學(xué) 院 地理科學(xué)學(xué)院哈爾濱師范大學(xué)2013年5月基于arcgis engine的黑龍江省旅游景點查詢系統(tǒng)設(shè)計題閆利爽摘要:隨著地理信息系統(tǒng)及計算機技術(shù)的迅速發(fā)展和廣泛應(yīng)用,基于arcgis engine的地理信息系統(tǒng)應(yīng)用程序己成為地理信息系統(tǒng)研究的熱點。本文簡要介紹了arcgis engine體系結(jié)構(gòu)和vc2005開發(fā)應(yīng)用程序。根據(jù)arcgis engine的特點及查詢系統(tǒng)的性能需求,建立基于arcgis engi

2、ne組件庫、vc2005平臺等技術(shù)為核心的旅游景點查詢系統(tǒng)的軟件,對整個程序和各主要功能模塊設(shè)計進行了詳細的研究和分析,實現(xiàn)了基于arcgis engine黑龍江省旅游景點查詢系統(tǒng)基本功能。 關(guān)鍵詞:arcgis engine;vc2005;旅游信息查詢 1、 引言近些年,隨著人們生活水平和消費水平的提高的提高,出門旅游已經(jīng)成為了一種新的時尚,也是人們一種放松的方式。因此,出門旅游的人數(shù)不斷增加,尤其是長假期間,旅游人數(shù)劇增。2005年,我國入境旅游達到了12億,旅游創(chuàng)匯293億元,比上年增長13.8%;國內(nèi)旅游人數(shù)達到12.1億人次,比上年增長10%;其中去黑龍江旅游的人數(shù)比去年增長了50%

3、。我過已經(jīng)實現(xiàn)了從旅游資源大國向世界旅游打過的歷史性跨越。1黑龍江省的旅游資源十分豐富,其中,5a級風(fēng)景區(qū)3個,國家重點風(fēng)景名勝區(qū)2處,省級名聲風(fēng)景區(qū)14處,全省各地進行旅游開發(fā)建設(shè)的風(fēng)景區(qū)點200余處?!?】豐富的旅游資源吸引了大量的海內(nèi)外有課。尤其在炎炎夏日,來黑龍江省旅游的游客與日俱增。然而,過快過猛的發(fā)展也給旅游這個新興產(chǎn)業(yè)帶來了必然的壓力很多硬件、軟件上的不足和缺陷一步步暴露出來,成為我國旅游業(yè)成熟和騰飛過程中的一道無法跨越的障礙7。其中,旅游信息的匱乏,和大眾獲取信息方式的不暢,便是當前旅游業(yè)快速增長的一大瓶頸,直觀來說,這個瓶頸所帶來的最大弊端,就是令旅游消費者在進行旅游目的地選

4、擇時,會面對龐雜而無序的零散信息無從下手8。而消費者最終在盲目或混亂狀態(tài)下做出的選擇,又往往會給出游過程平添許多的不快和麻煩,隨之而來的,將是消費者信心的下降和旅游業(yè)潛在消費群體的直接損失。人們在出行前,經(jīng)常會查閱報紙或翻閱書籍或利用互聯(lián)網(wǎng)來查詢信息,查詢他們所到之地的地理位置、景區(qū)特點、門票價格、周邊狀況、風(fēng)俗習(xí)慣、交通情況、住宿狀況、客流量以及當?shù)氐奶鞖獾鹊刃畔ⅰ6壳盎ヂ?lián)網(wǎng)上的旅游信息查詢多數(shù)以文本、圖片、錄像等單一的表示方式來展示信息,幾乎沒有用到地理信息系統(tǒng),而arcgis engine使得地理信息應(yīng)用在gis中,使查詢更加方便快捷,并且使用數(shù)據(jù)庫技術(shù),當景區(qū)信息有變更時,可以實時更

5、新數(shù)據(jù)庫中的內(nèi)容,操作簡便,能夠為旅游者們的出行提供極大的方便。二、arcgisengine概述(一) arcgis 9 總覽在gis系列軟件中,esri公司的arcgis系列軟件應(yīng)用最為廣泛,其數(shù)據(jù)格式是業(yè)界數(shù)據(jù)交流的標準格式;支持對象組件技術(shù),各種主流開發(fā)工具均可對arcgis平臺進行定制;基于windows用戶界面標準,界面友好,操作方便?!?】并且arcgis為用戶提供了一整套功能強大的gis框架。arcgis engine可以在應(yīng)用系統(tǒng)中加入地理信息的功能。在arcgis 9系列產(chǎn)品中,arcgis desktop、arcgis engine和arcgis server都是基于核心組

6、件庫arcobjects搭建。arcobjects組件庫有3000多個對象可供開發(fā)人員調(diào)用,其中有細粒度的小對象,例如:geometry對象;也有粗粒度的大對象,例如map對象,通過這些對象開發(fā)人員可以操作控制文檔(mxd,3dd,sxd等)、和空間數(shù)據(jù)庫進行交互。arcobjects組件庫為開發(fā)人員集成了大量的gis功能,可以快速的幫助開發(fā)人員進行g(shù)is項目的開發(fā)。由于arcgis desktop、arcgis engine和arcgis server三個產(chǎn)品都是基于arcobjects搭建的應(yīng)用,那么對于開發(fā)人員來說arcobjects的開發(fā)經(jīng)驗在這三個產(chǎn)品中是通用的。開發(fā)人員可以通過ar

7、cobjects來擴展arcgis desktop,定制arcgis engine應(yīng)用。arcgis engine開發(fā)包提供了一系列可以在arcgis desktop框架之外使用的gis組件,而在arcgis engine發(fā)布之前,基于arcobjects的開發(fā)只能在龐大的arcgis desktop框架下進行。(二)arcgis engine 組成部分arcgis engine由一個軟件開發(fā)工具包(sdk)和一個運行時(runtime)組成。從功能層次上可劃分為如下五個部分: 1 基本服務(wù)由gis核心arcobjects構(gòu)成,幾乎所有g(shù)is應(yīng)用程序都需要,如要素幾何體(feature geo

8、metry)和顯示(display)。 2 數(shù)據(jù)存取arcgis engine可以對許多柵格和矢量格式進行存取,包括強大的地理數(shù)據(jù)庫(geodatabase)。 3地圖表達創(chuàng)建和顯示帶有符號和標注的地圖。 4 開發(fā)組件用于快速開發(fā)應(yīng)用程序的界面控件。 5 運行時選項arcgis engine運行時可以與標準功能或其它高級功能一起部署。 arcgis engine developer kit 是創(chuàng)建獨立的gis應(yīng)用程序和制圖應(yīng)用程序的工具包,由控件、工具條和工具、對象庫三個部分組成。4arcgis engine的另一個組件就是其運行時(runtime)。arcgis engine develop

9、er kit建立的所有應(yīng)用程序在運行時都需要相應(yīng)級別的arcgis engine運行時。arcgis engine運行時有多種版本級別,從標準版本一直到企業(yè)版本。標準 engine運行時提供所有arcgis應(yīng)用程序的核心功能。這個級別的arcgis engine運行時可以操作幾種不同的柵格和矢量格式、進行地圖表達和創(chuàng)建以及通過執(zhí)行各種空間或?qū)傩圆樵儾檎乙?。這個級別的arcgis engine運行時還可以進行基本數(shù)據(jù)創(chuàng)建、編輯shapefile和簡單的個人地理數(shù)據(jù)庫(personal geodatabase)及gis分析。編輯enterprise geodatabase擴展模塊。arcgis

10、engine運行時enterprise geodatabase編輯增加了創(chuàng)建和更新多用戶企業(yè)geodatabase的功能。arcgis engine的其它擴展模塊包括:空間分析擴展模塊、3d分析擴展模塊、網(wǎng)絡(luò)分析、streetmap擴展模塊等。(三)arcgis engine的功能w 分圖層顯示專題圖,例如:道路,河流,行政邊界等。w 瀏覽、縮放地圖w 查看地圖上特征要素的信息w 在地圖上檢索、查找特征要素w 在地圖上顯示文本注記w 在地圖上疊加衛(wèi)星影像或航攝影像w 在地圖上繪制點、線、面幾何體w 通過矩形、圓形或多邊形來選中地圖上的要素w 通過sql語句來查找要素w 使用各種渲染方式來繪制地

11、圖圖層,例如:分級渲染,柱狀圖渲染,點密度渲 染,依比例尺渲染等。w 動態(tài)繪制實時的數(shù)據(jù),例如實時的gps坐標點。w 轉(zhuǎn)換空間數(shù)據(jù)的坐標系。arcgis engine的授權(quán)文件(*.ecp)控制用戶可以使用哪些功能。arcgis engine的功能是否可以使用需要根據(jù)用戶自己的授權(quán)文件而定。 三 信息查詢系統(tǒng)功能的實現(xiàn)(1) 新建項目1啟動vs2005,選擇“文件新建項目”,在項目類型中選擇visual c#,在選擇windows應(yīng)用程序模版,輸入名稱“hljtravelserch”,點擊確定。在解決方案管理器中將“”form1.cs重命名為“hljtravelserch.cs”,在設(shè)計視圖中

12、,選中窗體,將其屬性中的“text”改為“hljtravelserch”2添加控件選擇工具箱中的“arcgis windows forms”節(jié),將“toolbarcontrol”控件拖入窗體,并將該控件的??糠绞街糜谡麄€窗體上方,即將其屬性中的dock設(shè)置為top。為了將所添加的控件固定,并更加美觀,因此添加一個容器空間,選擇工具箱中的“容器|splitcontainer”容器拖入窗體。將tabcontrol控件拖入panel1,將選項卡置于底端,即alignment屬性設(shè)置為bottom,dock屬性設(shè)置為fill。點擊tabpages屬性右邊的按鈕,彈出tabpage集合編輯器,將tabp

13、age1的name設(shè)置為tabpagelayer,text設(shè)置為圖層。選擇“圖層”選項卡,拖入toccontrol控件,設(shè)置dock屬性為fill。在“地圖”選項卡,將mapcontrol控件拖入panel2中,設(shè)置dock屬性為fill。最后將licensecontrol控件拖入到窗體的任意地方。按f5編譯運行,可以看到剛才布局好的程序界面了。圖1 布局好的頁面 3控件綁定 通過以上步驟添加的控件還只是單獨存在,而我們的程序需要各控件間協(xié)同工作,因此要對控件進行綁定,現(xiàn)將工具條、圖層控件和地圖控件綁定在一起。 分別右擊toolbarcontrol、toccontrol控件,將buddy設(shè)置為

14、axmapcontrol1。這樣就將toolbarcontrol、toccontrol控件和axmapcontrol1控件綁定在一起了,toccontrol中顯示的圖層就會是axmapcontrol1中地圖的圖層。toolbarcontrol中添加工具的話進行的操作也是對axmapcontrol1中的地圖進行操作。4添加工具 右擊toolbarcontrol,選擇“屬性items”,點擊add,選擇commands選項卡中的generic,雙擊open、saveas、redo、undo即可將相應(yīng)工具添加到工具條。5加載地圖在arcmap中對地圖進行處理,例如對地圖進行坐標轉(zhuǎn)換,比例尺選擇等操作

15、。然后在整個程序的bin目錄下的debug文件夾中,將所處理完畢的地圖等數(shù)據(jù)文件打包放入該文件夾下,這樣引用地圖時可以引用相對路徑而不是絕對路徑,這樣做的好處是當需要更換工作環(huán)境時,只需將整個工程文件夾拷走而不必擔心文件丟失或者更換目錄的情況。然后在mapcontrol1上加載需要用的黑龍江省旅游地圖,雙擊form1.cs的頁面,進入代碼編輯頁面,在頁面加載函數(shù)hljtravelsearch_load中添加代碼:this.axmapcontrol1.loadmxfile(application.startuppath + dataxuanran1.mxd);圖2 加載地圖(2) 鷹眼功能鷹眼功

16、能顯示的是整幅地圖的全圖,當大地圖放大時,鷹眼中用一個框框顯示大地圖中所出現(xiàn)的范圍,在頁面中添加一個mapcontrol控件,添加方法同mapcontrol,其name屬性為mapcontrol2,并將其放入合適的位置。對mapcontrol1添加相應(yīng)事件,在其屬性欄的右邊的閃電狀符號中,找到onextentupdated事件和onafterscreendraw事件并并雙擊,這樣就為地圖控件添加了響應(yīng)函數(shù),當?shù)貓D進行操作時,對應(yīng)的響應(yīng)函數(shù)做相應(yīng)的響應(yīng)。由于mapcontrol2的功能只是顯示mapcontrol1中的地圖的功能和特殊標記mapcontrol2中當前窗口大小,并不需要移動地圖,故

17、對mapcontrol2添加onmousedown事件和onmousemove事件。添加完4個事件之后,程序自動生成四個對應(yīng)的函數(shù):1.axmapcontrol1_onextentupdated2.axmapcontrol1_onafterscreendraw3.axmapcontrol2_onmousemove4.axmapcontrol2_onmousedown在這四個函數(shù)中分別加入代碼如下:在axmapcontrol1_onextentupdated中添加代碼: igraphicscontainerpc = this.axmapcontrol2.activeview.graphicsco

18、ntainer; pc.deleteallelements(); ielement pe = new rectangleelementclass(); pe.geometry = this.axmapcontrol1.extent as ienvelope; irgbcolor pcolor = new rgbcolorclass(); pcolor.red = 255; pcolor.transparency = 255; ilinesymbol pls = new simplelinesymbolclass(); pls.width = 1; pls.color = pcolor; ifi

19、llsymbol pfs = new simplefillsymbolclass(); pcolor.transparency = 0; pfs.color = pcolor; pfs.outline = pls; ifillshapeelement pfse = pe as ifillshapeelement; pfse.symbol = pfs; pc.addelement(pe, 0); this.axmapcontrol2.activeview.refresh(); 在axmapcontrol1_onafterscreendraw中添加代碼: igraphicscontainer pc

20、 = this.axmapcontrol2.activeview.graphicscontainer; pc.deleteallelements(); ielement pe = new rectangleelementclass(); pe.geometry = this.axmapcontrol1.extent as ienvelope; irgbcolor pcolor = new rgbcolorclass(); pcolor.red = 255; pcolor.transparency = 255; ilinesymbol pls = new simplelinesymbolclas

21、s(); pls.width = 1; pls.color = pcolor; ifillsymbol pfs = new simplefillsymbolclass(); pcolor.transparency = 0; pfs.color = pcolor; pfs.outline = pls; ifillshapeelement pfse = pe as ifillshapeelement; pfse.symbol = pfs; pc.addelement(pe, 0); this.axmapcontrol2.activeview.refresh();在axmapcontrol2_onm

22、ousemove中添加代碼: if (e.button = 1) ipoint pp = new pointclass(); pp.putcoords(e.mapx, e.mapy); ienvelope penv = this.axmapcontrol1.extent as ienvelope; penv.centerat(pp); this.axmapcontrol1.extent = penv; 在axmapcontrol2_onmousedown中添加代碼: if (e.button = 2) ipoint pp = new pointclass(); pp.putcoords(e.m

23、apx, e.mapy); ienvelope penv = this.axmapcontrol2.trackrectangle(); this.axmapcontrol1.extent = penv; 這時運行就可以看到添加鷹眼后的地圖界面,如下圖所示:圖3 鷹眼功能(3) 列表框查詢在添加列表框前先建立一個access數(shù)據(jù)庫,在數(shù)據(jù)庫添加黑龍江省各市縣的信息,建立兩個字段,num字段和city字段,其中num存儲城市的編號,city存儲城市的名稱,然后用該應(yīng)用程序連接access,這樣列表框可以直接引用數(shù)據(jù)庫中的數(shù)據(jù)。修改應(yīng)用程序中form.cs中的代碼用以連接數(shù)據(jù)庫,連接數(shù)據(jù)庫的代碼如下

24、:using system.windows.forms; using system.data; using system.data.oledb; namespace windowsformsapplication1 static class program / 應(yīng)用程序的主入口點。 stathread static void main() string strconnection=provider=microsoft.jet.oledb.4.0; strconnection +=data source=/192.168.1.10/access/csharptest.mdb; oledbconn

25、ection objconnection = new oledbconnection(strconnection); objconnection.open(); oledbcommand sqlcmd = new oledbcommand(select * from city);oledbdatareader reader = sqlcmd.executereader(); int num = new int(); if(reader.read() num = (int)readernum; objconnection.close(); reader.close(); application.

26、enablevisualstyles(); application.setcompatibletextrenderingdefault(false); form1 form = new form1(); form.text = age.tostring(); application.run(form); 選擇工具箱中的“所有windows窗體”節(jié),將“l(fā)istbox”控件拖入窗體,為該控件添加selectedindexchanged事件,并在窗口初始化函數(shù)中在該空間中加載黑龍江省各縣市的名稱,當點擊列表框中某一個縣市的時候,相應(yīng)的地圖中的位置出會閃爍并且會將當前選中的地區(qū)放大到整幅圖面中,具體

27、實現(xiàn)方式為:hljtravelsearch_load中添加代碼:queryfilter pqf = new queryfilterclass(); ifeaturelayer pfl = this.axmapcontrol1.get_layer(1) as ifeaturelayer; ifeatureclass pfc = pfl.featureclass; ifeaturecursor pfcur = pfc.search(pqf, true); ifeature pf; pf = pfcur.nextfeature(); while (pf != null) this.listbox1.

28、items.add(pf.get_value(pfc.findfield(name); pf = pfcur.nextfeature(); 以下是添加完列表框后運行的效果圖:圖4 列表框查詢(4) 添加查詢按鈕選擇工具箱中的“所有windows窗體”節(jié),將“l(fā)istbox”和“button”控件拖入窗體,這時用戶可以自由輸入地區(qū)名稱進行查詢。此時為了美觀,可添加tabcontrol控件,將listcontrol控件拖入tabcontrol中,以達到固定效果,并增加功能“景點查詢”,其添加方法同前一個listbox的添加方法。此時,列表框中所對應(yīng)的地名已經(jīng)和地圖中的地名對應(yīng)上了,當雙擊列表框中某

29、一地名時,相對應(yīng)的地圖上的相應(yīng)的地方會閃亮顯示,然后自動放大到當前頁面大小,如圖: 圖5 雙擊列表框效果圖(5) 添加詳細信息同樣,在access數(shù)據(jù)庫中添加每個地區(qū)每個景點的簡介、圖片、交通住宿、小貼士信息,使用應(yīng)用程序調(diào)用access數(shù)據(jù)庫中的數(shù)據(jù),將數(shù)據(jù)添加到程序中去,每一個地區(qū)對應(yīng)一種信息,用戶可以查看需要的信息,如下圖所示:圖6圖片查詢(6) 添加狀態(tài)欄在設(shè)計視圖中,點擊窗體中的狀態(tài)欄,在其屬性面板中找到“ items ”項,單擊其右邊的按鈕,在下拉框中選擇“ statuslabel ”,單擊“添加按鈕”,依次添加兩個個 statuslabel 標簽,分別將其text屬性設(shè)置為:坐標

30、、比例尺。在后臺添加一定的代碼即可顯示當前圖像的坐標和比例尺,如下圖:圖7 狀態(tài)欄至此,黑龍江省旅游信息查詢系統(tǒng)設(shè)計完畢。如下圖所示圖8 應(yīng)用程序四 結(jié)束語本論文的研究是在地理信息系統(tǒng)與arcgisengin技術(shù)不斷發(fā)展與結(jié)合的基礎(chǔ)上提出來的。首先介紹了arcgis的基本概念;然后介紹了基于arcgisengin的組成部分和功能;最后對黑龍江省旅游信息查詢系統(tǒng)的進行設(shè)計和實現(xiàn)?,F(xiàn)在常用的信息傳播媒介一般有:平面、電視、網(wǎng)絡(luò)、人。但是這些傳統(tǒng)的信息來源方式都存在一個弊端:更新速度慢【6】,而本文則利用arcgis engin建立以一款實時更新數(shù)據(jù)的軟件,是一款可以同步反映各種旅游信息的查詢系統(tǒng)。

31、并且由于arcgisengin采用了嵌入式的開發(fā)技術(shù),使得建立起來的旅游信息查詢系統(tǒng)能更更好的兼容目前的系統(tǒng),并能以最少的投入獲取最大的所需信息。5這款應(yīng)用程序可以使用戶很方便快捷地查詢到所需要的信息,并且具有很強的擴展功能,技術(shù)人員可以添加用戶所需的信息,并且本文使用access數(shù)據(jù)庫,可以實時更新數(shù)據(jù),使用戶對所要旅游的地方有一個更全面更深入的認識。參考文獻:1 劉志芳1 付華2:(1. 基于webgis的旅游信息系統(tǒng)建設(shè) (2. 中國測繪科學(xué)研究院 首都師范大學(xué) 2009。2 喜雨:黑龍江省風(fēng)景名勝區(qū)建設(shè)發(fā)展概況與分析 2008。3 高雪山1 黃曉紅2 : gis技術(shù)在潖江滯洪區(qū)洪水淹沒模型中的應(yīng)用 (1. 廣東省北江 防洪調(diào)度中心 (2. 拱洞輕工職業(yè)技術(shù)學(xué)院 20064 劉慶元,陶佩楓:基于arcgisengin的地圖編輯軟件的設(shè)計與實現(xiàn) 中南大學(xué)信息物理工程學(xué)院 2008 5 肖海 武偉 劉洪斌:基于arcgisengin的農(nóng)業(yè)資源信息管理系統(tǒng)的研究 西南農(nóng)業(yè)大學(xué)與生物信息重點實驗室 20066 康敏捷:面向大眾的旅游信息查詢系統(tǒng)設(shè)計與實現(xiàn) 南京師范大學(xué) 2010年7 薛偉.mapobjects-地理信息系統(tǒng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論