版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
地理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)地理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)報(bào)告課程名:地理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)學(xué)院:資源與環(huán)境工程學(xué)院學(xué)生姓名:劉潤專業(yè):地理信息系統(tǒng)學(xué)號:0908100035指導(dǎo)教師:銀老師2012年12月25日地理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)報(bào)告資源與環(huán)境工程學(xué)院地理信息系統(tǒng)0910908100035劉潤課程設(shè)計(jì)目的本次課程設(shè)計(jì)是在完成《地理信息系統(tǒng)設(shè)計(jì)與開發(fā)》課程后開展的實(shí)踐性課程設(shè)計(jì)。本次課程設(shè)計(jì)主要完成地arcgis部分系統(tǒng)功能設(shè)計(jì)、系統(tǒng)界面設(shè)計(jì)和部分功能的實(shí)現(xiàn);通過本次實(shí)習(xí)對arcGIS平臺(tái)軟件的各個(gè)功能模塊有了較深入了解、熟悉和掌握;通過這次課程設(shè)計(jì)也進(jìn)一步熟悉了基于arcGIS平臺(tái)提供的組件進(jìn)行應(yīng)用系統(tǒng)開發(fā)的一般方法、思路和流程。其主要的目的概括為:1、熟練掌握arcGIS的公共平臺(tái)及其開發(fā)環(huán)境;2、熟練掌握arcGIS二次開發(fā)組件開發(fā);3、理解和掌握GIS工程原理及方法。課程設(shè)計(jì)任務(wù)課程設(shè)計(jì)的主要任務(wù)是利用GIS公共平臺(tái)提供的二次開發(fā)環(huán)境開發(fā)一套“GIS軟件”。桌面GIS應(yīng)用程序框架的建立;1、添加Shp文件和圖層.Lyr文件;2、添加菜單及實(shí)現(xiàn);3、右鍵菜單添加及實(shí)現(xiàn);4、狀態(tài)欄的添加和實(shí)現(xiàn);5、鷹眼功能的實(shí)現(xiàn);6、屬性數(shù)據(jù)表的查詢;提交書面報(bào)告(編碼系統(tǒng)、軟件設(shè)計(jì)流程等)。開發(fā)平臺(tái)開發(fā)工具和語言1、開發(fā)工具VisualStudio:VisualStudio是微軟公司推出的開發(fā)環(huán)境。是目前最流行的Windows平臺(tái)應(yīng)用程序開發(fā)環(huán)境。目前已經(jīng)開發(fā)到10.0版本,也就是VisualStudio2010。VisualStudio可以用來創(chuàng)建Windows平臺(tái)下的Windows應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,也可以用來創(chuàng)建網(wǎng)絡(luò)服務(wù)、智能設(shè)備應(yīng)用程序和Office插件。2、開發(fā)語言C#:C#是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\(yùn)行于.NETFramework之上的高級程序設(shè)計(jì)語言。C#最引人入勝的地方是它和Java的不同,而不是相似的地方,其特點(diǎn)如下:中間代碼、命名空間中的申明、基本的數(shù)據(jù)類型、兩個(gè)基本類、參數(shù)傳遞、與COM的集成、索引下標(biāo)、代理和反饋。ArcGISEngine開發(fā)平臺(tái)1)產(chǎn)品簡介ArcGIS是美國ESRI(EnvironmentalSystemsResearchInstitute,Inc.
美國環(huán)境系統(tǒng)研究所公司)推出的一條為不同需求層次用戶提供的全面的、可伸縮的GIS產(chǎn)品線和解決方案。
ArcGISEngine為開發(fā)嵌入式GIS和獨(dú)立運(yùn)行的GIS桌面端應(yīng)用程序而推出的二次開發(fā)組件庫,它是GIS開發(fā)者產(chǎn)品的主要部分。
ArcGISEngine產(chǎn)品提供了更豐富的功能,它們包括新的如DataInteroperability、Maplex、Schematics和Tracking等擴(kuò)展模塊,新的符號控件,新的內(nèi)置commands、tools、menus和模板等;此外,ArcGISEngine還可以直接調(diào)用Geoprocessing的各種功能,能夠極大地簡化開發(fā)人員的代碼編寫工作。ArcGISEngine開發(fā)工具包是一個(gè)基于ArcObjects組件的軟件開發(fā)產(chǎn)品,用于構(gòu)建自定義GIS
和制圖應(yīng)用軟件,它并不是一個(gè)可以直接運(yùn)行的終端產(chǎn)品,而是安裝在開發(fā)人員電腦上用于開發(fā)的軟件組件庫。ArcGISEngine提供了基于COM、.NET、Java和C++的APIs,它支持4種開發(fā)環(huán)境(C++、COM、.NET和Java),能夠?qū)崿F(xiàn)跨平臺(tái)部署(Windows、UNIX和Linux)。GIS程序員可以根據(jù)最終用戶的業(yè)務(wù)需求,使用ArcGISEngineSoftwareDeveloperKit開發(fā)出不同的應(yīng)用軟件產(chǎn)品。為了讓使用ArcGISEngine開發(fā)的應(yīng)用軟件能夠正常分發(fā),最終用戶還需要將ArcGISEngineRuntime安裝在每一臺(tái)終端上。設(shè)計(jì)過程桌面GIS應(yīng)用程序框架的建立1.新建項(xiàng)目啟動(dòng)VS2010,選擇“文件|新建|項(xiàng)目”,在項(xiàng)目類型中選擇VisualC#,再選擇Windows應(yīng)用程序模板,輸入名稱“3sdnMap”,點(diǎn)擊確定。2.添加控件選擇工具箱中的“菜單和工具欄|MenuStrip”,將其拖入窗體。選擇工具箱中的“ArcGISWindowsForms”節(jié),將“ToolbarControl”控件拖入窗體,并將其屬性中的Dock設(shè)置為Top。選擇工具箱中的“菜單和工具欄|StatusStrip”,將其拖入到窗體。選擇工具箱中的“容器|SplitContainer”容器拖入窗體,并將其屬性中的Dock設(shè)置為Fill。將TabControl控件拖入Panel1,將Alignment屬性設(shè)置為Bottom,Dock屬性設(shè)置為Fill。點(diǎn)擊TabPages屬性右邊的按鈕,彈出TabPage集合編輯器,將tabPage1的Name設(shè)置為tabPageLayer,Text設(shè)置為圖層,將tabPage2的Name設(shè)置為tabPageProperty,Text設(shè)置為屬性。如下所示。選擇“圖層”選項(xiàng)卡,拖入TOCControl控件,設(shè)置Dock屬性為Fill。選擇“屬性”選項(xiàng)卡,拖入DataGridView控件,設(shè)置Dock屬性為Fill。拖入TabControl控件到Panel2,設(shè)置Dock屬性為Fill。并上述類似的方法,將兩個(gè)選項(xiàng)卡的Name和Text分別設(shè)置為:(tabPageMap、地圖),(tabPageLayout,制版)。選擇“地圖”選項(xiàng)卡,拖入MapControl控件,設(shè)置Dock屬性為Fill。選擇“制版”選項(xiàng)卡,拖入PageLayoutControl控件,設(shè)置Dock屬性為Fill。最后將LicenseControl控件拖入到窗體的任意地方。按F5編譯運(yùn)行,可以看到剛才布局好的程序界面了。3、控件綁定通過以上步驟添加的控件還只是單獨(dú)存在,而我們的程序需要各控件間協(xié)同工作,因此要進(jìn)行控件綁定。分別右擊ToolbarControl、TOCControl控件,將Buddy設(shè)置為axMapControl1,如下圖所示。這樣,工具條和圖層控件就與地圖控件關(guān)聯(lián)了。4、添加工具此時(shí),工具條中還沒有任何工具,添加的方法也很簡單。右擊ToolbarControl,選擇“屬性|Items”,點(diǎn)擊Add,選擇Commands選項(xiàng)卡中的Generic,雙擊Open、SaveAs、Redo、Undo即可將相應(yīng)工具添加到工具條。常見的工具有:MapNavigation中的導(dǎo)航工具,MapInquiry中的查詢工具,F(xiàn)eatureSelection中的選擇工具,你可以根據(jù)需要酌情添加工具。編譯運(yùn)行按F5即可編譯運(yùn)行程序,至此桌面GIS應(yīng)用程序框架基本框架已經(jīng)搭建好了,你可以通過工具條的工具打開地圖文檔,瀏覽地圖了。添加Shp文件和圖層.Lyr文件添加Shp文件1.接上一章,點(diǎn)擊MenuStrip,輸入“添加shp”作為菜單的標(biāo)題,輸入“menuAddShp”作為菜單的名稱。2.選中“添加shp”菜單,在屬性框中點(diǎn)擊事件按鈕,在事件列表中雙擊Click事件。自動(dòng)生成事件處理方法如下圖所示,我們就在方法內(nèi)輸入處理代碼。3.在AE中編碼,首先添加所需的ArcGIS的引用,在解決方案管理器中右鍵點(diǎn)擊“添加引用”在對話框中選擇ESRI.ArcGIS.DataSourceFile、ESRI.ArcGIS.Geodatabase類庫,點(diǎn)擊確定按鈕。4.在Form1.cs源代碼文件中,在源代碼的最頂部,輸入如下代碼,導(dǎo)入命名空間。5.在菜單的Click事件處理方法中添加代碼。6.在上述Click事件處理方法中添加代碼。7.按F5鍵運(yùn)行調(diào)試,點(diǎn)擊“添加shp”菜單,就可以把C:\Arcgis\ArcTutor\Using_ArcGIS_Desktop文件夾中的USstates.shp文件添加到地圖控件中。目前只能添加USstates.shp這一個(gè)文件。8.為了能夠讓用戶可以添加磁盤上的任意shp文件,我們還需要添加一個(gè)工具箱中的OpenFileDialog控件到窗體。9.在上述Click事件處理方法中修改相應(yīng)代碼。10.按F5鍵運(yùn)行調(diào)試,點(diǎn)擊“添加shp”菜單,在彈出的對話框中,選中任意一個(gè)shp文件,點(diǎn)擊確定,即可把shp文件加載到地圖控件中。2.2通過lyr文件添加圖層在菜單上添加一個(gè)“添加lyr”菜單,在其屬性窗口將其Name屬性改為menuAddLyr。按F5啟動(dòng)調(diào)試。添加菜單及實(shí)現(xiàn)1、添加菜單在設(shè)計(jì)視圖中,單擊菜單欄,會(huì)出現(xiàn)“請?jiān)诖颂庢I入”的提示,單擊提示就可以鍵入菜單名稱,如“文件”,再單擊“文件”,即可輸入其下拉子菜單,如下所示:注意:每創(chuàng)建一個(gè)菜單,請?jiān)谄鋵傩悦姘逯性O(shè)置Name屬性,而且不要為中文,因此Name值將是此菜單響應(yīng)函數(shù)的函數(shù)名的一部分,帶中文的函數(shù)名,總是不好。2、實(shí)現(xiàn)相關(guān)菜單首先定義指針(寫在publicpartialclassForm1:Form下面即可):privateESRI.ArcGIS.Controls.IMapControl3m_mapControl=null;添加引用在設(shè)計(jì)視圖中的屬性面板中,選擇Form1,即主窗體,單擊事件按鈕(閃電形狀的那個(gè)按鈕),打到“Load”事件并雙擊,添加此事件。在Form1_Load函數(shù)中初始化這些指針://取得MapControl的引用m_mapControl=(IMapControl3)this.axMapControl1.Object;依次雙擊每個(gè)菜單項(xiàng),添加菜單響應(yīng)函數(shù)。實(shí)現(xiàn)代碼。3、編譯運(yùn)行按F5編譯運(yùn)行程序。也許你會(huì)發(fā)現(xiàn),菜單命令的實(shí)現(xiàn)方式都是類型的。沒錯(cuò),在AE9.2中,內(nèi)置了許多常用的Command和Tool,如ControlsAddDataCommandClass、ControlsMapZoomInToolClass、ControlsMapPanToolClass等等,這些內(nèi)置對象在ESRI.ArcGIS.Controls命名空間中,你可以對象瀏覽器中查看。而且這些內(nèi)置對象的調(diào)用方式都類似。右鍵菜單添加及實(shí)現(xiàn)1.創(chuàng)建右鍵菜單在Form1類里面添加如下變量的定義。在Form1_Load函數(shù)進(jìn)行初始化,即菜單的創(chuàng)建2.添加菜單項(xiàng)第1步中創(chuàng)建的菜單可認(rèn)為是菜單容器,里面什么都沒有,具體的命令或工具作為菜單項(xiàng)添加到菜單容器才能工作。一般情況下,啟動(dòng)程序就要完成菜單項(xiàng)的添加,故此工作在Form1_Load函數(shù)完成。當(dāng)然,添加菜單項(xiàng)之前,必須實(shí)現(xiàn)相應(yīng)命令或工具。這里的命令或工具可以AE內(nèi)置的也可以是自定義的。AE內(nèi)置了許多可以直接調(diào)用的常用命令和工具,如ControlsAddDataCommandClass,在ESRI.ArcGIS.Controls命名空間中,大家可以對象瀏覽器中查看。當(dāng)然,這里也可以直接調(diào)用AE內(nèi)置的菜單,如ControlsFeatureSelectionMenu。另外,本講也實(shí)現(xiàn)三自定義命令,以做示范。它們分別為圖層可視控制命令(用于控制圖層顯示與否)、移除圖層和放大到整個(gè)圖層命令。實(shí)現(xiàn)方法也很簡單,就是右擊3sdnMap項(xiàng)目,選擇“添加|類”,選擇C#普通的類模板,用以下代碼覆蓋系統(tǒng)自己生成的所有代碼1)圖層可視控制類LayerVisibility代碼。2)移除圖層類RemoveLayer代碼。3)放大至整個(gè)圖層類ZoomToLayer。下面在Form1_Load函數(shù)中進(jìn)行菜單項(xiàng)的添加。3.彈出右鍵菜單顧名思義,右鍵菜單是在鼠標(biāo)右鍵按下的時(shí)候彈出,所以我們要添加TOCControl1控件的OnMouseDown事件,實(shí)現(xiàn)代碼同樣的方法,我們也可以實(shí)現(xiàn)主地圖控件的右鍵菜單,以方便地圖瀏覽。添加MapControl1控件的OnMouseDown事件,實(shí)現(xiàn)代碼4.編譯運(yùn)行編譯運(yùn)行就可以看到在TocControl1控件和主地圖控件中點(diǎn)擊右鍵就彈出設(shè)置的右鍵菜單和實(shí)現(xiàn)其功能。狀態(tài)欄的添加和實(shí)現(xiàn)1、添加狀態(tài)欄項(xiàng)目在設(shè)計(jì)視圖中,前面我們已經(jīng)添加了StatusStrip控件,這時(shí)點(diǎn)擊窗體中的狀態(tài)欄,在其屬性面板中找到“Items”項(xiàng),單擊其右邊的按鈕,在下拉框中選擇“StatusLabel”,單擊“添加按鈕”,依次添加四個(gè)StatusLabel,依次修改屬性參數(shù)如下表所示:序號Name屬性Text屬性Spring屬性說明1MessageLabel就緒False當(dāng)前所用工具信息2BlankTrue占位3ScaleLabel比例尺False當(dāng)前比例尺4CoordinateLabel當(dāng)前坐標(biāo)False當(dāng)前坐標(biāo)設(shè)置好之后如下圖所示:Spring屬性表示可以按狀態(tài)欄剩余空間自動(dòng)伸縮。所以加入Blank項(xiàng)目,只是為了占個(gè)位子,以達(dá)到ScaleLabel和CoordinateLabel項(xiàng)目右對齊而MessageLabel項(xiàng)目左對齊的目的。2、顯示當(dāng)前所用工具信息首先添加axToolbarControl1的OnMouseMove事件(相信大家看了以上的教程,已經(jīng)知道怎么添加事件了吧,還不知道的建議再溫習(xí)下前幾講的內(nèi)容)。3、顯示當(dāng)前比例尺,添加axMapControl1的OnMouseMove事件。4、顯示當(dāng)前坐標(biāo)顯示當(dāng)前坐標(biāo)也是axMapControl1的OnMouseMove事件中響應(yīng),故只要在axMapControl1_OnMouseMove函數(shù)中添加代碼即可。鷹眼功能的實(shí)現(xiàn)1、添加鷹眼控件由于本教程在第一講中沒有預(yù)先考慮到鷹眼所放的位置,故我們要先稍微調(diào)整一下程序框架,并添加一個(gè)MapControl用于顯示鷹眼。2、鷹眼的實(shí)現(xiàn)(1)載入地圖到鷹眼控件當(dāng)?shù)貓D載入到主Map控件時(shí),同時(shí)也載入到鷹眼控件,在axMapControl1_OnMapReplaced事件響應(yīng)函數(shù)中添加代碼。(2)繪制鷹眼矩形框?yàn)辁椦劭丶﨧apControl1添加OnExtentUpdated事件,此事件是在主Map控件的顯示范圍改變時(shí)響應(yīng),從而相應(yīng)更新鷹眼控件中的矩形框。(3)鷹眼與主Map控件互動(dòng)為鷹眼控件MapControl2添加OnMouseDown事件。為鷹眼控件MapControl2添加OnMouseMove事件,主要實(shí)現(xiàn)按下鼠標(biāo)左鍵的時(shí)候移動(dòng)矩形框,同時(shí)也改變主地圖控件的顯示范圍。按F5編譯運(yùn)行程序。按下左鍵在鷹眼窗口中移動(dòng),或者按下右鍵在鷹眼窗口中畫一個(gè)矩形,主地圖窗口的顯示范圍都會(huì)跟著變化。主地圖窗口中的地圖經(jīng)放大縮小等操作后,鷹眼窗口的矩形框大小也會(huì)隨著改變。屬性數(shù)據(jù)表的查詢1.創(chuàng)建屬性表窗體新建一個(gè)Windows窗體,命名為“AttributeTableFrm.cs”;從工具箱拖一個(gè)DataGridView控件到窗體,并將其Dock屬性設(shè)置為“Fill”;2.創(chuàng)建空DataTable首先傳入ILayer,再查詢到ITable,從ITable中的Fileds中獲得每個(gè)Field,再根據(jù)Filed設(shè)置DataTable的DataColumn,由此創(chuàng)建一個(gè)只含圖層字段的空DataTable。因?yàn)镚eoDatabase的數(shù)據(jù)類型與.NET的數(shù)據(jù)類型不同,故要進(jìn)行轉(zhuǎn)換。3.裝載DataTable數(shù)據(jù)從上一步得到的DataTable還沒有數(shù)據(jù),只有字段信息。因此,我們要通過ICursor從ITable中逐一取出每一行數(shù)據(jù),即IRow。再創(chuàng)建DataTable中相應(yīng)的DataRow,根據(jù)IRow設(shè)置DataRow信息,再將所有的DataRow添加到DataTable中,就完成了DataTable數(shù)據(jù)的裝載。為保證效率,一次最多只裝載2000條數(shù)據(jù)到DataGridView。上面的代碼中涉及到一個(gè)獲取圖層類型的函數(shù)getShapeTape,此函數(shù)是通過ILayer判斷圖層類型的。綁定DataTable到DataGridView通過以上步驟,我們已經(jīng)得到了一個(gè)含有圖層屬性數(shù)據(jù)的DataTable。現(xiàn)定義一個(gè)AttributeTableFrm類的成員變量:
publicDataTableattributeTable;通過函數(shù),我們很容易將其綁定到DataGridView控件中:調(diào)用屬性表窗體通過1-4步驟,我們封裝了一個(gè)AttributeTableFrm類,此類能夠由ILayer顯示圖層中的屬性表數(shù)據(jù)。那怎么調(diào)用AttributeTableFrm呢?
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- PB-22-N-5-Hydroxypentyl-3-carboxyindole-metabolite-生命科學(xué)試劑-MCE-1773
- L-Glutamic-acid-ammonium-生命科學(xué)試劑-MCE-7975
- 1-Octadecyl-lysophosphatidic-acid-PA-O-18-0-0-0-生命科學(xué)試劑-MCE-8369
- 2025年度績效合同簽訂與履行指南
- 二零二五年度未簽合同員工勞動(dòng)仲裁應(yīng)對措施及賠償協(xié)議
- 二零二五年度物業(yè)與業(yè)主之間綠化賠償合作協(xié)議
- 2025年度煙酒店員工培訓(xùn)與職業(yè)發(fā)展合同
- 柴油發(fā)電機(jī)組技術(shù)協(xié)議
- 施工日志填寫樣本防雷工程施工
- 小學(xué)語文人教一年級上冊識(shí)字2《日月明》教學(xué)設(shè)計(jì)
- 充電樁知識(shí)培訓(xùn)課件
- 2025年七年級下冊道德與法治主要知識(shí)點(diǎn)
- 2025年交通運(yùn)輸部長江口航道管理局招聘4人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 老年髖部骨折患者圍術(shù)期下肢深靜脈血栓基礎(chǔ)預(yù)防專家共識(shí)(2024版)解讀
- 廣東省廣州市2025屆高三上學(xué)期12月調(diào)研測試(零模)英語 含解析
- 偏癱足內(nèi)翻的治療
- 藥企質(zhì)量主管競聘
- 信息對抗與認(rèn)知戰(zhàn)研究-洞察分析
- 心腦血管疾病預(yù)防課件
- 手術(shù)室??谱o(hù)士工作總結(jié)匯報(bào)
- 2025屆高三聽力技巧指導(dǎo)-預(yù)讀、預(yù)測
評論
0/150
提交評論