




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
演曲晨家大舞JIANGXIAGRICULTURALUNIVERSITYGIS設計與開發(fā)實驗報告題目:GIS程序設計與開發(fā)實驗1-6學院:國土資源與環(huán)境學院姓名:朱青20143936班級:地信1401班目錄TOC\o"1-5"\h\z\o"CurrentDocument"實驗一:初識ArcGISEngine開發(fā)環(huán)境 4.一、實驗目的: 4...二、實驗步驟: 4...1、新建一個 Windows窗體應用程序 4.2、添加控件 4...\o"CurrentDocument"3、設置屬性 5...\o"CurrentDocument"4、控件綁定:設置控件的關聯(lián) 6..\o"CurrentDocument"5、編譯運行 7...三、實驗總結(jié): 7...實驗二:建立ArcGISEngin附用程序框架 8.一、實驗目的: 8...二、實驗步驟: 8...新建項目 8...添加控件 8...控件綁定 9...添加工具 1..0.編譯運行 1..1.添力口shp數(shù)據(jù) .12\o"CurrentDocument"代碼處理 1..3.編譯運行 1..5.三、實驗總結(jié): 1..6.\o"CurrentDocument"實驗三:代碼加載 Mxd文檔 1..6一、實驗目的: 1..6.二、實驗步驟: 1..6.1、添加事件 1..6.2、編譯運行 1..8.三、實驗總結(jié): 1..8.\o"CurrentDocument"實驗四:調(diào)用新創(chuàng)建類封裝方法實現(xiàn) Mxd文檔操作 1.9一、實驗目的: 1..9.二、實驗步驟: 1..9.1、新建類庫 1..9.\o"CurrentDocument"2、用新創(chuàng)建類封裝方法 2..03、封裝方法的調(diào)用 2..34、調(diào)試運行 2..5.三、實驗總結(jié): 2..5.\o"CurrentDocument"實驗五:ArcGISEngine實現(xiàn)視窗聯(lián)動 25一、實驗目的: 2..5.二、實驗步驟: 2..6.1、新建一個 Windows窗體應用程序 2..6\o"CurrentDocument"2、新建類和加載代碼 2..73、添加相應的代碼 2..9\o"CurrentDocument"4、編譯運行 3..1.三、實驗總結(jié): 31\o"CurrentDocument"實驗六:ArcGISEngin故現(xiàn)標簽編輯與右鍵菜單 32一、實驗目的: 32二、實驗步驟: 32實驗1、實現(xiàn)標簽編輯 32實驗2、實現(xiàn)右鍵菜單 35三、實驗總結(jié): 42實驗一:初識ArcGISEngine開發(fā)環(huán)境一、實驗目的:安裝Visualstudio2010和ArcGISEngine10.2,搭建開發(fā)環(huán)境,新建Windows窗體應用程序,實現(xiàn)簡單地圖瀏覽。二、實驗步驟:1、新建一個Windows窗體應用程序啟動VS2010,選擇“文件|新建|項目|Windos窗體應用程序”,在項目類型中選擇VisualC#再選擇Windows應用程序模板,輸入名稱“mymap”,點擊確定。2、添加控件AxToolbarControl(X具欄Tool)、AxTOCControlg錄樹Layout]
AxMapControl(地圖Map),并調(diào)整位置;最后將LicenseControl附可控件)拖入窗體任意位置:AaTdcJIIJteA- ?SbIwZcnrol■T.A-i£E5Wfcda*ijrams*L.a Li,口fla修耳fH引斯PdthtLhIMiT?gi"0W¥,.AteSSWi-kda*i.Fi3m12.LML?nkAaTdcJIIJteA- ?SbIwZcnrol■T.A-i£E5Wfcda*ijrams*L.a Li,口fla修耳fH引斯PdthtLhIMiT?gi"0W¥,.AteSSWi-kda*i.Fi3m12.LML?nkOfcprS:Rrkf^^*wCn」E,mMblMl?■PtMl*1■t■IBW-ML7,卜F?=2kPlML■ 沖口?ArilkiMLcnrcI省jMSfi-ihclagpOrrlraI4aAn E?MlqIJlqHQ4l!j-i---l...jmm?顯■kIMF卜lMlSM1?LML6?ilMl7HQ.■AhRM1U卸H#VMirjfaTQCfr^vd修ToedbwCcrtrcJAfltlicitMiCianrGlAaA" tanial-■CISqIHAmHLQK,!!-jSnJJ^zaiUBCcnnta^UAJWrCILfvta>3ESUiAn^l£^DfavCani?BNJtordH/Wri口ESHJJWiaiLS^uwTUI■UM及.jLlrirfQHMtMtiliEs3140絳7VttamQ31W阱iGKim,』SjTifrwjerFoe1_C?gF-srnUJn^H君PWH"MU3、設置屬性右擊ToolbarControl控件,選擇“屬性|Items(選擇工具)|AddCommands',選擇常用工具。
4、控件綁定:設置控件的關聯(lián)將ToolbarControl、TOCControl控件,將Buddy設置為axMapControll3UD'<AaSfr^bdagfCjsTiialsfi二。414丁Inri■JmTdsSLrCcr^z-,3A.?ZE:3UD'<AaSfr^bdagfCjsTiialsfi二。414丁Inri■JmTdsSLrCcr^z-,3A.?ZE:4hblht睛叫時IMdflAruXSWk*Hd?iiFarrw:L.ML.pqxNCfc^LHeW*c??Dri^??nmf?LMLBA9-flr^n—口CIBIJu-fG|l£avfcde心回Mg口必F3[SA|Jdi.GII4v^Nrt^曰38川*奉砒Ke3上典上田田6^|q .GiflQEZafJ^dzaiS^mm-U13AlArcGISuY標一?QMa魄ME”"?jrrfo上q5fTh.t3gilv-£wto.WlHBiPflBPwijff■ewpwngroi
5、編譯運行按F5即可編譯運行程序,至此桌面GIS應用程序框架基本框架已經(jīng)搭建好了,你可以通過工具條的工具打開地圖文檔,瀏覽地圖了三、實驗總結(jié):本次實驗主要為了認識ArcGISEngine發(fā)環(huán)境,并學習簡單的窗口搭建、控件綁定以及添加引用實驗二:建立ArcGISEngine用程序框架一、實驗目的:搭建Windows應用程序窗口,實現(xiàn)打開shapefile文件功能。二、實驗步驟:新建項目啟動VS201Q選擇“文件|新建|項目”,在項目類型中選擇VisualC用再選擇Windows應用程序模板,輸入名稱“mymap2”,點擊確定MS口fMF:■VwN3k<料宜s色AbM^Cdf**vI■'pKHLilEi?E?!狪DtfEd(Jtalbd]Surternrel/JhGkibcCivn-c-l擊確定MS口fMF:■VwN3k<料宜s色AbM^Cdf**vI■'pKHLilEi?E?!狪DtfEd(Jtalbd]Surternrel/JhGkibcCivn-c-l皿.X::a國事H身—j>餐啾hBtn■IfFMM33”MswlC-^Mlc*K,Mcuaa"?*一?浦£■*j命立EE添加控件選擇工具箱中的“菜單和工具欄|StatusStrip(狀態(tài)欄)”,將其拖入到窗體。選擇工具箱中的“ArcGISWindowsForms節(jié),將“AxToolbarContro『控件拖入窗體,并將其屬性中的Dock設置為丁。出選擇工具箱中的“容器|SplitContaineK容器)”拖入窗體,并將其屬性中的Dock設置為fill。將TabControl控件拖入Panell,將Alignment屬性設置為Bottom,Dock屬性設置為Fill。點擊TabPageS!性右邊的按鈕,彈出TabPag磔合編輯器,將tabPage1的Name設置為“Layef,Text設置為“圖層”;將tabPage2的Name設置為“Property”,Text設置為“屬性”。如下所示:控件綁定通過以上步驟添加的控件還只是單獨存在,而我們的程序需要各控件間協(xié)同工作,因此要進行控件綁定。分別右擊 ToolbarControl、TOCControl控件,將Buddy設置為axMapControl1,如下圖所示:
■i1ftkrGSELEUEirqnMC-iir號丁茸SrwCOVHrf*NwhiIT*卜國、UbidiiliMa■方td3'麗m-工Famni方4“■由在R[/橫-I國田I屯*|d|土”?事機必:ofc1?n>fl4f&LM—-.WffeHlb鼻?gLkL2r9WC:■i1ftkrGSELEUEirqnMC-iir號丁茸SrwCOVHrf*NwhiIT*卜國、UbidiiliMa■方td3'麗m-工Famni方4“■由在R[/橫-I國田I屯*|d|土”?事機必:ofc1?n>fl4f&LM—-.WffeHlb鼻?gLkL2r9WC:G10?Er>S?iaTt*rtiiiflffliTi.I"WkG~fcW.n.-JS串%必4U-G--tUsIlIRrsL?c-^3£iMr1*nrli^-O,IE415LkEif<EiQl』」磨鼻F,毛K01amTT-hMl-IdbLcrrrd-― 」■■咫E」「iA_J?JJJ&」.二d…JT,3E9..934i#鞋這R$虻修怵I園田|屯電|,|去r■ET£HiT^llMail*1口□Erg。Fihe1J.M卜國M,.”白iMViMg?AtCLhfArdanFarrrai■fcTOCClWIfl■—?!1—?IfJEV>一?嗎Bill*/]口ftFqSmCOVK4GDftvCahwiUcfHfKontaglSfrpdbHl^ffC^in>1H立ZfcwM-H5fM鼠dMEUl<iT?M3R-G*4上,■小圈產(chǎn)I.JM^ffftirMn1■■VIRf?i三月At?區(qū)日工4,添加工具右擊ToolbarControl,選擇“屬性|Items",點擊Add,選擇Commands選項卡中的Generic,雙擊Open、SaveAsRed。Undo將相應工具添加到工具條。編譯運行按F5即可編譯運行程序添加shp數(shù)據(jù)在VS2010的工具箱中,展開菜單和工具欄,雙擊MenuStrip控件,這樣就在窗體上添加了一個菜單控件; 同樣雙擊添openFileDialog控件,置于窗體任何位置。在菜單上點擊,輸入“添加SH吸據(jù)”作為菜單的標題,輸入“AddShpData'作為菜單的名稱。扁幅用w力?第帆,餐g mtwio*ei-Fa.-IMF" x*tfr!.I■.GM*EGniplinHiMi(7/8?(■Labri3hLo4rii扁幅用w力?第帆,餐g mtwio*ei-Fa.-IMF" x*tfr!.I■.GM*EGniplinHiMi(7/8?(■Labri3hLo4riiiinrflr.^EtVWnr“事m叼Ek蘇"HK-54p6>rt!>je&nd^irtomvwsLQ<FlirPrfaHrfM"?til?Lr><■*出班小#]□收1MidEj*rri?c<iaou叩1taM^比7<|mkatfJCrjhFIt.*.u.i.iciAiMv?i.|fLrihai!rdiai'uHIWdOfVOCqi■Ul^UfK單.ItGAndQ"*jrdt"x^心得tpriMfOllIVfllLTyTn?Tra?TrrrTe1T+fnhc-WH-sjtpeQ^j*-^iriimmEaLcwFlirFrUHPlGH[h:二I?Lr-<n£>MfamnAAh舊tfhtv4v<力*修L--i4jMriSiri|^l*AdrMiSQj,回。|nfFiRk££iiki^i&Ef^yH|jHW4^(IWhr^"i0j.Ib*-Z^ngrw-H4pk;?mra4rjam:x^Jip^ontrcI]*WH-sjtpeQ^j*-^iriimmEaLcwFlirFrUHPlGH[h:二I?Lr-<n£>MfamnAAh舊tfhtv4v<力*修L--i4jMriSiri|^l*AdrMiSQj,回。|nfFiRk££iiki^i&Ef^yH|jHW4^(IWhr^"i0j.Ib*-Z^ngrw-H4pk;?mra4rjam:x^Jip^ontrcI]*..J:一F'arlTJJNrT.,.,?*1二'r--,j-i\>|O*JB-|HAI -.1詞*尋Mi?。-二*4I*L*J|Ad5|nLlB8#|*IR疙Rm得4 蟲. -il。0司小”1?心由0不標rtf.""■gpilm列,卜I>eJrrVR■gdlilF#ImagriJii,JkLaU▲UnbLrifil■jbad—E1.:j,/d)上Ji-1rrx.,1..^|OriwB-HUI _-I閡T—Wk/里口*i4|L*川7uhd〉3S#]*N*RJ4!ft?J.…JT”』蟲.Tidi胃OWJ501TtM中Mip*16m上UMJCvta幄HHguf*附^■rd&rtomns<cwrl.rVrUHPlDH""B"Z>■!■._,-nrROMarrw^九■Tidi胃OWJ501TtM中Mip*16m上UMJCvta幄HHguf*附^■rd&rtomns<cwrl.rVrUHPlDH""B"Z>■!■._,-nrROMarrw^九■WT白*1#*□pfvla同1*雷MMrTjJXlipHUUtOI*…J0---4..."hT*.■C|?iz":七h||』■ItsESflni1^■i■HiR4fl**而如丁一時4144^1JUnTacinpX做dbfaKl4fflh^dwtxh|fSdckc|,-□hindkTUh^riri-i^^LimiOwfaCMdCtwhsbfif年3^/r^XiMK但nMdtbedPowi匚bmi■ra?gHTafi5wrFiEFifdcr■"wiBFfluN;dnhiHIg?g后MhIL田Tfw-IIi3*MOg-ribFifekc,triir**rfrr""口EMddB£?rliir代碼處理選中“添加SH吸據(jù)”菜單,在屬性框中點擊事件按鈕,在事件列表中雙擊Click事件;或者雙擊“添加SHP數(shù)據(jù)”菜單自動生成的事件處理方法如下圖所示,我們將在方法內(nèi)輸入處理代碼。privatevoid 添力口SH啜據(jù)ToolStripMenuItem_Click( objectsender,EventArgse){//使用openFileDialog獲取shapefile文件openFileDialog1.Filter= "shapefile文件(*.shp)|*.shp" ;//不允許openFileDialog同時選擇多個文件openFileDialog1.Multiselect= false;//返回值為openFileDialog所打開文件的窗體DialogResultpDialogResult=openFileDialog1.ShowDialog();//如果彈出窗口點擊的不是確定的話就 returnif(pDialogResult!=DialogResult.OK)return;stringpPath=openFileDialog1.FileName;stringpFolder=System.IO.Path.GetDirectoryName(pPath);stringpFileName=System.IO.Path.GetFileName(pPath);//新建一個Shapefile的工作空間工廠IWorkspaceFactorypWorkspaceFactory=newShapefileWorkspaceFactory();//打開Shapefile的工作空間IWorkspacepWorkspace=pWorkspaceFactory.OpenFromFile(pFolder,0);IFeatureWorkspacepFeatureWorkspace=pWorkspaceasIFeatureWorkspace;//QI跳轉(zhuǎn)//打開要素類IFeatureClasspFC=pFeatureWorkspace.OpenFeatureClass(pFileName);//可實例化類//創(chuàng)建要素圖層IFeatureLayerpFLayer=newFeatureLayerClass();//關聯(lián)圖層和要素類pFLayer.FeatureClass=pFC;pFLayer.Name=pFC.AliasName;ILayerpLayer=pFLayerasILayer;//將圖層和要素類添加到地圖控件中IMappMap=axMapControl1.Map;pMap.AddLayer(pLayer);//刷新axMapControl1的視圖axMapControl1.ActiveView.Refresh();}
編譯運行在鍵盤上按F5鍵,運行調(diào)試,點擊“添加SHP數(shù)據(jù)”菜單,在彈出的對話框中,選中任意一個shp文件,點擊確定,即可把shp文件加載到地圖控件中
三、實驗總結(jié):本次實驗目的主要在于使用工作空間打開shapefile文件,之后也可以將其引申到打開柵格數(shù)據(jù)等功能!實驗三:代碼加載 Mxd文檔一、實驗目的:使用代碼加載Mxd文檔。二、實驗步驟:1、添加事件按照實驗二的方式添加菜單“打開Mxd文檔”,菜單的Name屬性為OpenMxdDoc添加Click事件。|PgWHp。,運MBFlfciBl國高中后說工4M WJJ?1£..:)?一?二4)…4T.c?卡i或整計1廿恒髀,J|-iill電峭E^af3JUurT”|PgWHp。,運MBFlfciBl國高中后說工4M WJJ?1£..:)?一?二4)…4T.c?卡i或整計1廿恒髀,J|-iill電峭E^af3JUurT”IKkC^DTCIwhDKIijkCtwkSbrtfSac3"duriXrrdi^^jVrMiW—h二■亡T二口:~上,L厘q回十CnkrnJutcifCj31nbeAmCmFIitfAli□lU&rdj'UsniQiLi5mPOm?rLp4W**1fg*QwklraE"p*fc.cfl由曲EwTMrf^rPUwlilvnFfel>Bnd"sldn^iirOuhgFrlHoq餐in?4imhta|aFrariderHSiv^DariMMMrklF尸s./KlAfri1.W.7Eh^fw-mpCDfTtnla*4i尸qnlT0UUZHubhOrfii>>ffti爐5-1iikSfcwOquMKidrEraAl^(bmClW[Z>i^CbwiEhm■&"jHT“rFbiCdb■WHIFiBHM?mi!il?Km/L由Tfw-r^w口七Ed口gHb—FtisrLMhH<hvdHiVflpAHiripfnhe幽nWE]:―.f*在菜單的Click事件處理方法中添加如下代碼:首先在頭部定義IMapDocumentpMapDocument,如下圖所示:Ei^aniespaceinyThap?{-publicpartclassFooil:Foer□[即DocuMEn十plWapDqcument;publicFermi()rru.-tzLalLzeCoiiipainerL't(j;代碼如下:privatevoidOpenMxdDoc_Click(objectsender,EventArgse){//使用openFileDialog獲取mxebt件openFileDialog1.Filter= "地圖文檔(*.mxd)|*.mxd//不允許openFileDialog同時選擇多個文件openFileDialog1.Multiselect= false;//返回值為openFileDialog所打開文件的窗體DialogResultpDialogResult=openFileDialog1.ShowDialog();//如果彈出窗口點擊的不是確定的話就 returnif(pDialogResult!=DialogResult.OK)return;stringpPath=openFileDialog1.FileName;//將數(shù)據(jù)加載入pMapDocument并與map控件聯(lián)系起來pMapDocument=neWMapDocumentClass();pMapDocument.Open(pPath,"");for(inti=0;i<pMapDocument.MapCount;i++){//遍歷可能的Map對象axMapControl1.Map=pMapDocument.get_Map(i);}//刷新地圖axMapControl1.Refresh();}
2、編譯運行按F5即可編譯運行程序,你可以通過菜單“打開Mxd文檔”打開地圖文檔,瀏覽地圖三、實驗總結(jié):熟悉幫助文檔的使用和對象模型圖的使用對基于 ArcGISEngine的開發(fā)有很大幫助
實驗四:調(diào)用新創(chuàng)建類封裝方法實現(xiàn)文檔操作Mxd實驗四:調(diào)用新創(chuàng)建類封裝方法實現(xiàn)文檔操作Mxd新建自定義類,封裝對Mxd文檔的各類操作,提高代碼重用性與程序安全性。二、實驗步驟:1、新建類庫打開實驗2-3所建項目,在解決方案管理器中右擊選擇“mymap2|添力口|新建項”;在彈出對話框中點擊“VisualC#莫板”,選擇“類”命名為“MyMaxDocClass1.cS.□嗝口il8*同r不s.*=aHlSallC*史M—1=*XIU44za*『EMTHE5SWgilB*M-i口*?J3a?=□嗝口il8*同r不s.*=aHlSallC*史M—1=*XIU44za*『EMTHE5SWgilB*M-i口*?J3a?=中iT不固.:T|(?W5WQICoh3h.g。.hf+iNE^i*p■ri―也再f9r修,匚**DwwqcFtr>?二LW33(3q:rwrtxq■日!LP"if#HeigAAMHfg!LP"if#hta^Fraridhr%raUMdraMrirbilo^^□nUZwiughta^Fraridhr%2、用新創(chuàng)建類封裝方法雙擊“MyMaxDocClass.cS類,在代碼框中導入命名空間將新建類改為靜態(tài)變量,并對文檔命令進行封裝namespacemymap2{//靜態(tài)變量publicstaticclassMyMxDocClass//定義公有靜態(tài)IMapDocumentM象,并實例化publicstaticIMapDocumentpMapDocument=newMapDocumentClass();privatestatic System.Windows.Forms.OpenFileDialog OpenFileDialog2;privatestatic System.Windows.Forms.SaveFileDialog SaveFileDialog2;//新建地圖文檔publicstaticvoidNewMapDocAxMapControlaxMapControl1){//{//選擇新建地圖文檔的位置SaveFileDialog2=SaveFileDialog2.Title=SaveFileDialog2.Filter=//顯示新建的地圖文檔newSaveFileDialog();"新建地圖文檔";"Mxd文檔(*.mxd)|*.mxd"SaveFileDialog2.ShowDialog();stringsFilePath=SaveFileDialog2.FileName;//保證新建的文檔命名不為空if(sFilePath!= ""){//創(chuàng)建并打開新的地圖文檔pMapDocument.New(sFilePath);pMapDocument.Open(sFilePath,"");//MapControll顯示的地圖為MapDocumen中的第一張axMapControl1.Map=pMapDocument.get_Map(0);}elsereturn;}//打開地圖文檔publicstaticvoid OpenMapDocA(xMapControlaxMapControl1){//選擇要打開的地圖文檔的路徑OpenFileDialog2=OpenFileDialog2.Title=OpenFileDialog2.Filter=//顯示新打開的地圖文檔newOpenFileDialog();"打開地圖文檔";"Mxd文檔(*.mxd)|*.mxd"OpenFileDialog2.ShowDialog();stringsFilePath=OpenFileDialog2.FileName;//判斷選中的地圖文檔是否有效if(pMapDocument.get_IsMapDocument(sFilePath)){//打開地圖文檔pMapDocument.Open(sFilePath,"");for(inti=0;i<pMapDocument.MapCount;i++){//添加地圖文檔到MapControl1中axMapControl1.Map=pMapDocument.get_Map(i);}//刷新窗口axMapControl1.Refresh();}}//保存地圖文檔publicstaticvoidSaveMapDoc(){//判斷MapDocumen中的地圖文檔是否為只讀if(pMapDocument.get_IsReadOnly(pMapDocument.DocumentFilename)){MessageBox.Show("地圖文檔只讀!");return;}pMapDocument.Save(pMapDocument.UsesRelativePaths,true); //相對路徑保存MessageBoxShow("保存成功!");}//另存為publicstaticvoidSaveAsMapDoc(){//選擇地圖文檔保存位置SaveFileDialog2= newSaveFileDialog();SaveFileDialog2.Title= "地圖文檔另存為";SaveFileDialog2.Filter= "Mxd文檔(*.mxd)|*.mxdSaveFileDialog2.ShowDialog();stringpFilePath=SaveFileDialog2.FileName;//判斷路徑是否為空if(pFilePath==null){return;}//如果保存路徑和當前文檔路徑相同,就替換原文件保存if(pFilePath==pMapDocument.DocumentFilename){SaveMapDoc();}//否則另存為elsepMapDocument.SaveAs(pFilePath,true,true);//對話框顯示保存成功MessageBoxShow("保存成功!");}}
3、封裝方法的調(diào)用同實驗三中,在菜單上點擊,依次輸入“新建Mxd文檔、另存Mxd文檔、”作為菜單的標題,分別修改Name屬性“NewMxdDoc、SaveAsMxdDoC作為菜單的名稱.
淅卻?口購?SM二I玄子:an>臉配」?■■,Dr?rv4HAm,3%中張1■?國r*t?「M4fttArHrvl4ril*r-ua淅卻?口購?SM二I玄子:an>臉配」?■■,Dr?rv4HAm,3%中張1■?國r*t?「M4fttArHrvl4ril*r-ua印*r?fflF?4F汨IM——D*CipMrn.*AWidnn^a-rm.11ad&flipMBluMtl:>”叵/I晚二二:三仁』K4~llR303口劣&L二彳呻J用力I*共榮£I3陰枇氟—4H101a■e^indarqNwigabi融通中如喑MME^ecMciiLhhthrir ,5Mil%Lan^iuBcu□■talmaEvImfXHW0MrahmZ>dMblLtoC^W4Errw^reiwdtirbfr<.ODndrivrlmnnrGiilae1MM安二呻誓0口?-*dij^a??2steradBarmitunMi!!^-fl--I-inVTFFMbriTliRIE;1由看葩wtm t啊*mne例期451cfl",?丁KBLqa^理M"EK叩,乜匕』Dtrtl^&MAr?CCi£Mrtri&aw>eM4;hFYQK中35LtS-a7inFBqE*H?;ir,|A f口■iNarra]胤!*tib3pwWHiAEDnabhAmw融Dn?kfafc^vlAun^tMAuta>1“E0UfedK"ak>>B&5?fFdi2gFChedod「京加用壯ChMtriiaBiNu^5c>*eBrgr^rMRi,DrD^DnrdlHrai?,FartfSMCdhr雙擊菜單,在自動生成的事件處理方法中加載方法調(diào)用代碼//保存Mx改檔privatevoidSaveMxdDoc_Click(objectsender,EventArgse){MyMxDocClassSaveMapDoc();}//新建Mx改檔privatevoidNewMxdDoc_Click(objectsender,EventArgse){MyMxDocClassNewMapDoc(axMapControl1);}〃另存Mx改檔privatevoidSaveAsMxdDoc_Click(objectsender,EventArgse){MyMxDocClassSaveAsMapDoc();}-1-privatevoid'呆存Mxd文檔TQQlStripMbiurtBWiClick(objeirtsGlideqEventArgse){msymapS.fflylbcDocClass..Savel^pDocO;privatevoidNewJfadIioc_Click(objectsendetjEvertArgse)hynap2.MyMicDocClass.NevMapDioc(aKMapCantrol1):privatevoidSaveAsNkdDoc^Click(objectsenderjEventArgse),mj7nap2.Myl但D口仁匚1aw&SaveAsMapDac();4、調(diào)試運行點擊“生成|生成解決方案”,然后點擊運行按鈕或在鍵盤上按F5鍵,運行調(diào)試.三、實驗總結(jié):該實驗主要是實現(xiàn)使用封裝類方法實現(xiàn)對Mxd文檔的操作,提高代碼重用性。實驗五:ArcGISEngine實現(xiàn)視窗聯(lián)動一、實驗目的:使用ArcGISEngine弋碼實現(xiàn)視窗聯(lián)動。
二、實驗步驟:1、新建一個Windows窗體應用程序啟動VS201Q選擇“文件|新建|項目|Windos窗體應用程序”,在項目類型中選擇VisualC#再選擇Windows應用程序模板,輸入名稱“FormsLinkS',點擊確定。1.2添加控件:選擇工具箱中的“容器|SplitContainer(容器)”拖入窗體,并將其屬性中的Dock設置為Fill;拖入MapControl控件,設置Dock屬性為Fill;拖入PageLayoutControl控件,設置Dock屬性為Fill。;最后將LicenseContr。好可才$件)拖入窗體任意位置.L*??H¥MIfq4*r?1,,回-riuilCf徜1!3>iAl-iiAwGKCWfl*1?r?q*5,L*??H¥MIfq4*r?1,,回-riuilCf徜1!3>iAl-iiAwGKCWfl*1?r?q*5,■卓glp?W正他t包:BffllG.L-LtA.Mb"RilaBfinaDrujiri^.flwfIM..!??AVhirw卜Uiui^?*±IcMvr^dbi&Ap^SliMMh^b4KtMfe,h^nn-Vfi1AMWZM”?毛廣占0SftTII:崎旭*1£廂幽IHVfi嗝3TrtswilC*riaulLF』」|AW31dlJ38釗?*欠九:也暫01由圖14/JM,:E.MLMI■CftsweTHihsiofwCmprv^4F.■LML"■REi^Bl4-MG|ilVMlERB■4iiiUrtnwCefflPBlIi.叫 %>=*.修曲』」|AW31dlJ38釗?*欠九:也暫01由圖14/JM,:E.MLMI■CftsweTHihsiofwCmprv^4F.■LML"■REi^Bl4-MG|ilVMlERB■4iiiUrtnwCefflPBlIi.叫 %>=*.修曲S.--irmS”八?J--JrJrJdl**」-二可?『‘=Vt+XfE?4n:Glf1G2EEx甑/*芯mmiXbxiMu*2-mIM.f”“?*■Fpwtan■二JRVip£-?rti^.- )■取■fl&fLvMi■IMlW<B^!DgIsmr&asFdODtMCnilni^■MtMriCtMNl1^!■hMfwflJlfOKCsfakCiK的EUI廚帖^Jknho"CwiwViRjtak"-3助皿□cchi'wHI 11LOGSl#'M.|P4?,hi|"<*?FrtywC1IlMwi布發(fā)9iiiLxrnMCamylkDeWut:r=frw的Nfi-?rm?3MJMXhM^vin.?1事&R”3h?此TEI>d2、新建類和加載代碼在解決方案管理器中右擊選擇FormsLinks添加|新建項”,在彈出對話框中點擊“VisualC艘板”,選擇“類”命名為“MapAndPag^';雙擊“MapAndPageT類,在代碼框中導入命名空間,在代碼框里引用類庫,并加載代碼:k1MlUhjiJVmhPnwPacn:■AflBSWrJCmiifW?Mywnk1MlUhjiJVmhPnwPacn:■AflBSWrJCmiifW?Mywn*J4tvgProgram.es Farm1.Designer.nXFarmLcs Formlxs語計]七FormsLnL.MapAmd3age■w,vMapToPage(AaMapContro'laxMapContro1AxPageFusingSysten.u帛i坦SysigilCcllectionf.Kenefic.usingSystemLinq;upin5EyH*rf.T**+;“引用我辭usingEStl.^zcGI3.Carlo.usiniESRI,ArcGIS*Contrclf:UEirvtESRLAkGISiesriSyslen;usin^ESFI.krrtjISxDirpl^yuairi^ESRI*jLr口G1S*Output;uslncE3RI.ArcGI3.SyrtesUI,namespaceFormsLinks{publicclassMapAndPage{//將MapControl中的地圖復制到PageLayoutControl中去publicvoidMapToPage(AxMapControlaxMapControl1,AxPageLayoutControlaxPageLayoutControl1){IObjectCopypObjectCopy=newObjectCopyClass();ObjectpSourceMap=(Object)axMapControl1.Map;ObjectpOverwritedMap=(Object)axPageLayoutControl1.ActiveView.FocusMap;pObjectCopy.Overwrite(pSourceMap,refpOverwritedMap);}}3、添加相應的代碼打開Form1.cs的代碼框,在代碼框里引用類庫,并加載代碼:namespaceFormsLinks{publicpartialclassForm1:Form{〃調(diào)用MapAndPaget實例化對象MapAndPageMapAndPage1=newMapAndPage();publicForm1(){InitializeComponent();}privatevoidForm1_Load(objectsender,EventArgse){//加載MXD:檔openMapDoc();}privatevoidopenMapDoc(){//實例化OpenFileDialogopenFileDialog1=newOpenFileDialog();openFileDialog1.Title= "打開地圖文檔OpenMxdDocument";//使用openFileDialog獲取mxcbt件openFileDialog1.Filter= "地圖文檔MapDocument(*.mxd)|*.mxd"http://顯示openFileDialog所打開的文件openFileDialog1.ShowDialog();stringfilePath=openFileDialog1.FileName;//檢查文件路徑下的文件是否為有效的地圖文檔并加載if(axMapControl1.CheckMxFile(filePath)){axMapControl1.LoadMxFile(filePath);}//否側(cè)顯示對話框文件路徑和不是有效的地圖文檔else{MessageBox.Show(filePath+ "不是有效的地圖文檔!");}}//調(diào)用MapAndPageprivatevoidaxMapControl1_OnMapReplaced(objectsender,IMapControlEvents2_OnMapReplacedEvente){MapAndPage1.MapToPage(axMapControl1,axPageLayoutControll);}privatevoidaxMapControl1_OnAfterScreenDraw(objectsender,IMapControlEvents2_OnAfterScreenDrawEvente){//QI方式通過焦點地圖獲得對象IActiveViewpPageLayoutView=axPageLayoutControl1.ActiveView.FocusMapasIActiveView;//控制顯示范圍pPageLayoutView.ScreenDisplay.DisplayTransformation.VisibleBounds=axMapControl1.Extent;//刷新視圖axPageLayoutControl1.ActiveView.Refresh();//根據(jù)MapControl的視圖范圍,確定PageLayoutControl 的視圖范圍MapAndPage1.MapToPage(axMapControl1,axPageLayoutControl1);}}}4、編譯運行按F5即可編譯運行程序,即可實現(xiàn)窗口聯(lián)動三、實驗總結(jié):通過實驗五了解到視窗聯(lián)動的功能,在以后實習過程中要實現(xiàn)鷹眼功能提供了編程基礎和熟悉了部分最基礎的功能實驗六:ArcGISEngin?,F(xiàn)標簽編輯與右鍵菜單一、實驗目的:實現(xiàn)TOCContro?目標簽編輯以及通過ContextMenuStrip菜單實現(xiàn)右鍵顯示圖層屬性表。二、實驗步驟:實驗1、實現(xiàn)標簽編輯、打開程序集打開實驗2-5所建項目、編輯控件點擊TOCContrd5件,在屬性窗口中點擊LabelEdit,選擇esriTOCControlManual手動編輯一編程可響應)■errt*.;1皿.1$+1睛、1—qt?川.,‘"'S^-4F>W4KHmvanKin?ugAuUlmaawm9iyitiwbOmwm;>37JJ1白0|、***9*4l?h*」。-IlJf -,>“0三,西幺》』4山于《同況白陽@-iftftP4t*?的金氣戶期EkflkOmdkBua■OwfelAiHkH'CnbiChflkHfC-aribcfluChF1*rr?i5Ir-DHU&rdUbICrm>q4m>Qwcai^wcJ*^OOrfveLpM^*i『Q*VW"r^THTnn閏1.3、編輯事件在屬性框中點擊事件按鈕,在事件列表中雙擊 OnBeginLabelEdit及OnEndLabelEd事件,在生成的事件處理方法中加載代碼。//實現(xiàn)標簽編輯privatevoidaxTOCControl1_OnBeginLabelEdit(ITOCControlEvents_OnBeginLabelEditEvente)的金氣戶期EkflkOmdkBua■OwfelAiHkH'CnbiChflkHfC-aribcfluChF1*rr?i5Ir-DHU&rdUbICrm>q4m>Qwcai^wcJ*^OOrfveLpM^*i『Q*VW"r^THTnn閏1.3、編輯事件在屬性框中點擊事件按鈕,在事件列表中雙擊 OnBeginLabelEdit及OnEndLabelEd事件,在生成的事件處理方法中加載代碼。//實現(xiàn)標簽編輯privatevoidaxTOCControl1_OnBeginLabelEdit(ITOCControlEvents_OnBeginLabelEditEvente){IBasicMapmap=null;objectsender,objectother=objectindex=//確定何種類型nullnullitem5的被選中esriTOCControlItemitem=axTOCControl1.HitTest(e.x,esriTOCControlItem
e.y,refitem,ref.esriTOCControlItemNone;map,reflayer,refother,refindex);//圖層能編輯標簽和地圖的 Layers集合DataFrame同時可編輯if(item=={e.canEdit=}if(item=={e.canEdit=esriTOCControlItemtrue;esriTOCControlItemif(item=={e.canEdit=}if(item=={e.canEdit=esriTOCControlItemtrue;esriTOCControlItemtrue;.esriTOCControlItemLayer).esriTOCControlItemMap)//結(jié)束標簽編輯是如果為空則報錯privatevoidaxTOCControl1_OnEndLabelEdit(objectsender,ITOCControlEvents_OnEndLabelEditEvente){if(e.newLabel.Trim()== ""){e.canEdit=false;}}}}privatevoidazTOCCantrail^OnEndLabeIEdit(objectsender^ITOCControIEventsOnEndLabeIEditEvente)Iif TrimO==")(e.canEdit=false:n1.4、編譯運行按F5即可編譯運行程序,你可以兩次點擊“WorldCities”,進行相關編輯.
實驗2、實現(xiàn)右鍵菜單添加菜單控件打開實驗2-6(1)所建項目,將菜單控件ContextMenuStri砸入TOCContrO5件中,在菜單上點擊,分別輸入“顯示屬性表、刪除圖層”作為菜單的標題,并修改其Nam麗入“AtributeTableContextMenu、DeleteLayerContextMenu”作為菜單的名稱。i▲?一,」4」ji■m?4―141k|出口-|Il1| -|得:yim—lii型」■.*,x:.身十―4ZM.,KM■HIP**an+ FH-ir|N tqii看Mind£>tFv-a*TEn普i▲?一,」4」ji■m?4―141k|出口-|Il1| -|得:yim—lii型」■.*,x:.身十―4ZM.,KM■HIP**an+ FH-ir|N tqii看Mind£>tFv-a*TEn普士陽:百rfir*選也;¥?色,.1”.一與,|H£l£^AppludtrXiiu■|■NflCMflMDtbo說Hdi>MOHrhTWifeU^fcm>irrnthipiTM■唱3Im駟1JkiuracinpMcbdr^RdMiW&ac3.emriXrru^riuA^iti—OwhfMdcfwksu手Npqriff^QqiMKEJdraAMA?fD4wi□nopCohi■n?■E^HT?<0ffrfiEFlC^C?WMtZhfEIHvmCw^jIL田TfWrateLJ.Crtri□,it,-ribFilSc'UMwtedln^Wf**jr|w,-LJ二一不1」;「,不?;咻KFI**M.ZHE*sn■ F國?藺^&Mn!L*V-』idvfas^Q-V■XfiB4UT.R.Kli?.H:■FMM:if-A小r?1??■,4lJLlUfEJktx^iis.FIhiliRnbDitiLav^lM1^s1出;才.Irfi-0;:uUj■,rAppludcrXflnr^i!收IMC4i^UOri①M府1r-crrH?*WrT.j?■事MjK"RE*tAtl444^<Jtaiuraci”hckC^c^,kKliflr^fldHiWSac3.ojrdkru^ridu^ru:iEhMOwhOKIdCtwhSbfifQaiMKEtMraAM[□rc^CBMiEaini—Hl0*rFbiCdisrB:WHIraM^Bvd'IiHfefMe IMmIETfw-IICvfljlJ□>ffiUfaFihrUndw?favJLHViiAMriripFuhr■前X揖0?*fCm^^-KlT*rig_三宜,?4??實現(xiàn)圖層與圖層控制菜單間的關聯(lián)在代碼框中加載如下代碼,響應TOCControJ5件的OnMouseDown事件//實現(xiàn)右鍵菜單和圖層關聯(lián)privatevoidaxTOCControl1_OnMouseDown(objectsender,ITOCControlEvents_OnMouseDownEvente){axTOCControl1.ContextMenuStrip= null;IBasicMapmap=newMapClass();System.Objectother=null;System.Objectindex=null;esriTOCControlItemitem=esriTOCControlltem .esriTOCControlltemNone;//返回項目的指定坐標//x,y表示以左上角為(0,0)的坐標,item表示列舉的項目類型,map和layer表示地圖和圖層axTOCControl1.HitTest(e.x,e.y,refitem,refmap,reflayer,refother,refindex);〃項目為esriTOCControlItem的項目圖層,button==2代表鼠標右鍵單擊事件if(item==esriTOCControlItem.esriTOCControlItemLayer&&e.button==2){System.Drawing.Pointpt=newSystem.Drawing.Point();pt.X=e.x;pt.Y=e.y;//在圖層上點擊右鍵pt=this.axTOCControl1.PointToScreen(pt);//顯示菜單this.contextMenuStrip1.Show(pt);}}設計Windows窗體在解決方案管理器中右擊選擇“mymap2|添加|新建項[Windows窗體”,命名為“attribute.cs加載控件Panel咨器)至attribute.cs中,加載控件
DataGirdView微據(jù))至Panel咨器)控件中,并全部設置其Dock1性為Fill■二,<£*;-1■=卜MWRavil仃■二,<£*;-1■=卜MWRavil仃Du+bDITl1?■i■■■,HT.KariE9..*MR!!f里率M■Im■-jvmMuIna的CkMOrindfaijfc1-1T?彳■Rurt-K4u■Th*用c£qi■■口口HWHQ.?IJcdvE-JFirfar,1M■啊.<1HI1Wlaaa。AMnnirraSK,直中Hmfl就-L^addrs]0;0Aai5m國?&■5?744W"AMh1*自珈Sedk:E-?lflE立■+號:1工皿1rgU"!im雙擊“attribute.cs”類,在代碼框中引用類庫,并修改加載代碼namespacemymap2{publicpartialclassattribute:Form{privateILayerlayer;publicattribute(ILayerlyr){InitializeComponent();layer=lyr;this.Text= "\""+layer.Name+ "\"屬性表";}privatevoidattribute_Load(objectsender,EventArgse){//嘗試運行這段代碼try{ITablelyrtable=( ITable)layer;DataTabletable= newDataTable();IFieldfield;//按列將表中的數(shù)據(jù)加載進去for(inti=0;i<lyrtable.Fields.FieldCount;i++){field=lyrtable.Fields.get_Field(i);table.Columns.Add(field.Name);}object[]values=newobject[lyrtable.Fields.FieldCount];//實例化類IQueryFilterqueryFilter=newQueryFilterClass();ICursorcursor=lyrtable.Search(queryFilter, true);IRowrow;//按行將表中的數(shù)據(jù)加載進去while((row=cursor.NextRow())!=null){for(intj=0;j<lyrtable.Fields.FieldCount;j++){objectob=row.get_Value(j);values[j]=ob;}table.Rows.Add(values);}//數(shù)據(jù)源這個表格this.dataGridView1.DataSource=table;}//try運行不了時運行 catchcatch{//對話框顯示無法顯示屬性表MessageBox.Show("無法顯示屬性表!");//關閉對話框this.Close();}}}}
flljfRrlCl*ilvn-->ihlbj?vlQ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020-2021深圳沙井立才學校小學三年級數(shù)學下期末第一次模擬試題帶答案
- 施工現(xiàn)場臨電施工方案
- 沖孔模具施工方案范本
- 小學課本劇一年級《雪孩子》-劇本
- 2025年中考物理二輪復習:聲光專題 能力提升練習題(含答案解析)
- 2024年廣東省中考滿分作文《當好自己故事的主角》2
- 第八單元 課題1金屬材料教學設計-2024-2025九年級化學人教版2024下冊
- 第2課 產(chǎn)生氣體的變化(教學設計)-2023-2024學年六年級下冊科學 教科版
- 合同范本政府土地使用
- 農(nóng)作物賠償合同范例
- EGCs與腸道微環(huán)境相互作用的研究進展
- 特殊兒童隨班就讀申請書范本
- 三年級下冊英語教材解讀-教材解讀|魯科版(五四學制)(三起)
- 道路施工導改及施工方案
- 《實數(shù)》單元作業(yè)設計
- (word完整版)教師個人簡歷模板
- 專題11 以小見大-【幫作文】初中語文之從課文中學習寫作 課件(共25張PPT)
- 互聯(lián)網(wǎng)公司勞動合同
- 吉美版四年級綜合實踐活動下冊全冊表格簡約式教案教學設計
- 2023河南對口高考計算機類基礎課試題
- 幼兒園大班幼小銜接主題活動策劃《我們要上學啦》教育PPT模板
評論
0/150
提交評論