




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
試驗(yàn)一ArcGISEngine控件使用試驗(yàn)?zāi)繕?biāo)使用MapControl、PageLayoutControl、ToolbarControl、TOCControl四個(gè)控件建立起基本桌面GIS應(yīng)用程序框架。試驗(yàn)步驟1.新建項(xiàng)目開啟VisualStudio,選擇“文件|新建|項(xiàng)目”,在項(xiàng)目類型中選擇VisualC#,再選擇Windows應(yīng)用程序模板,輸入名稱“GISControlDemo”,點(diǎn)擊確定。在處理方案管理器中將“Form1.cs”重命名為“GISControlForm.cs”,在設(shè)計(jì)視圖中,選中窗體,將其屬性中“Text”改為“GISControlDemo”。2.添加控件選擇工具箱中“菜單和工具欄|MenuStrip”,將其拖入窗體。選擇工具箱中“ArcGISWindowsForms”,將ToolbarControl控件拖入窗體,并將其Dock屬性設(shè)置為Top。選擇工具箱中“菜單和工具欄|StatusStrip”,將其拖入到窗體。選擇工具箱中“容器|SplitContainer”容器拖入窗體,并將其Dock屬性設(shè)置為Fill。選擇工具箱中“ArcGISWindowsForms”,將TOCControl控件拖入SplitContainer控件Panel1面板,并將其Dock屬性設(shè)置為Fill。選擇工具箱中“ArcGISWindowsForms”,將MapControl控件拖入SplitContainer控件Panel1面板,并將其Dock屬性設(shè)置為Fill。最終將LicenseControl控件拖入到窗體任意地方。3.控件綁定經(jīng)過以上步驟添加控件還只是單獨(dú)存在,所以要進(jìn)行控件綁定。分別右擊ToolbarControl、TOCControl控件,選擇“屬性|General”,將Buddy設(shè)置為axMapControl1。這么,工具條和圖層控件就與地圖控件關(guān)聯(lián)了。4.添加工具右擊ToolbarControl,選擇“屬性|Items”,點(diǎn)擊Add,選擇Commands選項(xiàng)卡中Generic,雙擊Open、SaveAs、Redo、Undo即可將對(duì)應(yīng)工具添加到工具條。常見工具備:MapNavigation中導(dǎo)航工具,MapInquiry中查詢工具,F(xiàn)eatureSelection中選擇工具。5.編譯運(yùn)行按F5即可編譯運(yùn)行程序,至此桌面GIS應(yīng)用程序框架基本框架已經(jīng)搭建好了,能夠經(jīng)過工具條工具打開地圖文檔,瀏覽地圖了。三.問題及反思若程序拋出InvalidOperationException,打開GISControlForm.cs源代碼在結(jié)構(gòu)函數(shù)GISControlForm中添加以下代碼:ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);試驗(yàn)二地圖文檔和地理數(shù)據(jù)操作試驗(yàn)?zāi)繕?biāo)經(jīng)過給程序添加菜單實(shí)現(xiàn)地圖文檔新建、打開、存放以及柵格和矢量數(shù)據(jù)添加等功效。試驗(yàn)步驟1.添加菜單在設(shè)計(jì)視圖中,單擊菜單欄,會(huì)出現(xiàn)“請(qǐng)?jiān)诖颂庢I入”提醒,單擊提醒就能夠鍵入菜單名稱,如“文件”,再單擊“文件”,即可輸入其下拉子菜單。2.實(shí)現(xiàn)相關(guān)菜單在處理方案文件上右擊,添加引用:ESRI.ArcGIS.DataSourcesRasterESRI.ArcGIS.Geodatabase添加以下命名空間:usingESRI.ArcGIS.Carto;usingESRI.ArcGIS.Controls;usingESRI.ArcGIS.DataSourcesRaster;usingESRI.ArcGIS.Geodatabase;在GISControlForm類中添加組員變量:publicstaticIMapDocumentpMapDocument;//需添加命名空間ESRI.ArcGIS.Carto新建地圖文檔相關(guān)代碼以下:privatevoidNewFileToolStripMenuItem_Click(objectsender,EventArgse){SaveFileDialogSaveFileDlg=newSaveFileDialog();SaveFileDlg.Filter="地圖文檔文件(*.mxd)|*.mxd";SaveFileDlg.Title="輸入需要新建地圖文檔名稱";SaveFileDlg.ShowDialog();stringstrDocFile=string.Empty;pMapDocument=newMapDocumentClass();strDocFile=SaveFileDlg.FileName;if(strDocFile==string.Empty)return;pMapDocument.New(strDocFile);pMapDocument.Open(strDocFile,"");axMapControl1.Map=pMapDocument.get_Map(0);}打開地圖文檔相關(guān)代碼以下:privatevoidOpenFileToolStripMenuItem_Click(objectsender,EventArgse){OpenFileDialogOpenFDlg=newOpenFileDialog();OpenFDlg.Filter="地圖文檔文件(*mxd)|*.mxd";OpenFDlg.ShowDialog();stringstrFileName=OpenFDlg.FileName;if(axMapControl1.CheckMxFile(strFileName)){//加載地圖文檔axMapControl1.MousePointer=esriControlsMousePointer.esriPointerHourglass;axMapControl1.LoadMxFile(strFileName,0,Type.Missing);axMapControl1.MousePointer=esriControlsMousePointer.esriPointerDefault;}else{MessageBox.Show("所選文件不是地圖文檔文件!","信息提醒");return;}}添加數(shù)據(jù)相關(guān)代碼以下,使用switch語句添加shape文件和不一樣格式柵格數(shù)據(jù):privatevoidAddDataToolStripMenuItem_Click(objectsender,EventArgse){//利用文件對(duì)話框方式選擇加載地圖OpenFileDialogOpenDdlg=newOpenFileDialog();OpenDdlg.Title="選擇需要加載地理數(shù)據(jù)文件";OpenDdlg.Filter="Shape格式文件(*.shp)|*.shp|柵格圖像(*.bmp,*tif,*.jpg,*.img)|*.bmp;*tif;*.jpg;*.img";OpenDdlg.ShowDialog();stringstrFileName=OpenDdlg.FileName;if(strFileName==string.Empty)return;//假如用戶沒有進(jìn)行文件選擇,則返回stringstrFNameExten=System.IO.Path.GetExtension(strFileName);stringpathName=System.IO.Path.GetDirectoryName(strFileName);switch(strFNameExten){case".shp":{stringfileName=System.IO.Path.GetFileNameWithoutExtension(strFileName);//往axMapControl1中加載地圖axMapControl1.AddShapeFile(pathName,fileName);break;}case".bmp":case".tif":case".jpg":case".img":{stringfileName=System.IO.Path.GetFileName(strFileName);IWorkspaceFactorypWSF=newRasterWorkspaceFactoryClass();IWorkspacepWS=pWSF.OpenFromFile(pathName,0);IRasterWorkspacepRWS=pWSasIRasterWorkspace;IRasterDatasetpRasterDataset=pRWS.OpenRasterDataset(fileName);IRasterLayerpRasterLayer=newRasterLayerClass();//影像金字塔判斷與創(chuàng)建IRasterPyramidpRasPyramid=pRasterDatasetasIRasterPyramid;if(pRasPyramid!=null){{if(!(pRasPyramid.Present))//判斷影像金字塔是否存在{pRasPyramid.Create();}}}IRasterpRaster=pRasterDataset.CreateDefaultRaster();pRasterLayer.CreateFromRaster(pRaster);ILayerpLayer=pRasterLayerasILayer;//向主控件中添加圖像axMapControl1.AddLayer(pLayer,0);break;}}}地圖文檔保留、另存為及其程序退出代碼以下:privatevoidSaveFileToolStripMenuItem_Click(objectsender,EventArgse){//判斷文檔是否為只讀文檔if(pMapDocument.get_IsReadOnly(pMapDocument.DocumentFilename)==true){MessageBox.Show("此地圖文檔為只讀文檔!","信息提醒");return;}//用相對(duì)路徑保留地圖文檔pMapDocument.Save(pMapDocument.UsesRelativePaths,true);MessageBox.Show("保留成功!","信息提醒");}privatevoidSaveAsToolStripMenuItem_Click(objectsender,EventArgse){SaveFileDialogSaveFileDlg=newSaveFileDialog();SaveFileDlg.Filter="地圖文檔文件(*.mxd)|*.mxd";SaveFileDlg.Title="地圖文檔另存為";stringstrDocFile=string.Empty;SaveFileDlg.ShowDialog();strDocFile=SaveFileDlg.FileName;if(strDocFile==string.Empty)return;if(strDocFile==pMapDocument.DocumentFilename){//將修改后地圖文檔保留在原文件中pMapDocument.Save(pMapDocument.UsesRelativePaths,true);MessageBox.Show("保留成功!","信息提醒");}else{pMapDocument.SaveAs(strDocFile,true,true);MessageBox.Show("保留成功!","信息提醒");}}privatevoidExitToolStripMenuItem_Click(objectsender,EventArgse){Application.Exit();}3.編譯運(yùn)行按F5編譯運(yùn)行,如圖所表示。問題及反思若調(diào)試過程出現(xiàn):無法嵌入互操作類型"ESRI.ArcGIS.Carto.MapDocumentClass".請(qǐng)改用適用接口錯(cuò)誤,右鍵“ESRI.ArcGIS.Carto|屬性|嵌入互操作類型”改為false。但這么做錯(cuò)誤消除了卻會(huì)出現(xiàn)一系列警告。類似錯(cuò)誤能夠用一樣方法處理。試驗(yàn)三右擊菜單及其地圖瀏覽功效實(shí)現(xiàn)試驗(yàn)?zāi)繕?biāo)在AE開發(fā)中右鍵菜單有兩種實(shí)現(xiàn)方式,一是使用VisualStudio自帶ContextMenuStrip控件,二是用AE封裝IToolbarMenu接口。本試驗(yàn)采取第一個(gè)方法利用右鍵菜單實(shí)現(xiàn)地圖放大、縮小、漫游功效。試驗(yàn)步驟1.添加控件,設(shè)置屬性選擇工具箱中“菜單和工具欄|ContextMenuStrip”,將其拖入到窗體。在ContextMenuStrip控件上右擊選擇“編輯項(xiàng)”,編輯MenuItem。設(shè)置MapControl控件ContextMenuStrip為contextMenuStrip1,將ContextMenuStrip和MapControl關(guān)聯(lián)起來。2.相關(guān)代碼及其實(shí)現(xiàn)privatevoidZoomInToolStripMenuItem_Click(objectsender,EventArgse){axMapControl1.MousePointer=esriControlsMousePointer.esriPointerZoomIn;}privatevoidZoomOutToolStripMenuItem_Click(objectsender,EventArgse){axMapControl1.MousePointer=esriControlsMousePointer.esriPointerZoomOut;}privatevoidPanToolStripMenuItem_Click(objectsender,EventArgse){axMapControl1.MousePointer=esriControlsMousePointer.esriPointerPan;}privatevoidaxMapControl1_OnMouseDown(objectsender,IMapControlEvents2_OnMouseDownEvente){//1代表左鍵,2代表右鍵,4代表中鍵if(e.button==1){if(axMapControl1.MousePointer==esriControlsMousePointer.esriPointerZoomIn){//將地圖控件顯示范圍設(shè)置IPointp=axMapControl1.ToMapPoint(e.x,e.y);axMapControl1.Extent=axMapControl1.TrackRectangle();IPointpNext=axMapControl1.ToMapPoint(e.x,e.y);if(p.X==pNext.X&&p.Y==pNext.Y){IEnvelopecurExtent=axMapControl1.Extent;curExtent.XMin=p.X-0.25*curExtent.Width;curExtent.XMax=p.X+0.25*curExtent.Width;curExtent.YMin=p.Y-0.25*curExtent.Height;curExtent.YMax=p.Y+0.25*curExtent.Height;axMapControl1.Extent=curExtent;}//刷新地圖axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography,null,null);}elseif(axMapControl1.MousePointer==esriControlsMousePointer.esriPointerZoomOut)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南省昆明地區(qū)2025屆小升初模擬數(shù)學(xué)測(cè)試卷含解析
- 華東交通大學(xué)《財(cái)經(jīng)基礎(chǔ)知識(shí)》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧沈陽市郊聯(lián)體2025屆高中畢業(yè)班質(zhì)量檢測(cè)試題生物試題含解析
- 重慶機(jī)電職業(yè)技術(shù)大學(xué)《建筑與裝飾工程計(jì)量與計(jì)價(jià)》2023-2024學(xué)年第一學(xué)期期末試卷
- 內(nèi)蒙古化工職業(yè)學(xué)院《熱能工程導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶市南川市2025屆小升初考試數(shù)學(xué)試卷含解析
- 潛水裝備在海洋污染治理的應(yīng)用考核試卷
- 礦山環(huán)境保護(hù)法規(guī)執(zhí)行與監(jiān)督考核試卷
- 電子運(yùn)動(dòng)比賽裝備市場(chǎng)需求分析預(yù)測(cè)考核試卷
- 日用化工設(shè)備技術(shù)創(chuàng)新與研發(fā)考核試卷
- 統(tǒng)編版高中語文必修下冊(cè)理解性默寫練習(xí)題匯編(含答案)
- 林木種質(zhì)資源調(diào)查表(新表)
- 超星爾雅學(xué)習(xí)通《形勢(shì)與政策(2024春)》章節(jié)測(cè)試答案
- 特種兵作戰(zhàn)分析報(bào)告
- 8.1.2樣本相關(guān)系數(shù)(教學(xué)設(shè)計(jì))高二數(shù)學(xué)(人教A版2019選擇性)
- 神經(jīng)性疼痛的病因和治療
- DB11T 381-2023既有居住建筑節(jié)能改造技術(shù)規(guī)程
- 人事檔案管理標(biāo)準(zhǔn)
- GB/T 31402-2023塑料和其他無孔材料表面抗菌活性的測(cè)定
- 體驗(yàn)式服務(wù)設(shè)計(jì)
- 社群健康助理員考試復(fù)習(xí)題庫(含答案)
評(píng)論
0/150
提交評(píng)論