




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
試驗一ArcGISEngine控件使用試驗?zāi)繕?biāo)使用MapControl、PageLayoutControl、ToolbarControl、TOCControl四個控件建立起基本桌面GIS應(yīng)用程序框架。試驗步驟1.新建項目開啟VisualStudio,選擇“文件|新建|項目”,在項目類型中選擇VisualC#,再選擇Windows應(yīng)用程序模板,輸入名稱“GISControlDemo”,點擊確定。在處理方案管理器中將“Form1.cs”重命名為“GISControlForm.cs”,在設(shè)計視圖中,選中窗體,將其屬性中“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)過以上步驟添加控件還只是單獨存在,所以要進(jìn)行控件綁定。分別右擊ToolbarControl、TOCControl控件,選擇“屬性|General”,將Buddy設(shè)置為axMapControl1。這么,工具條和圖層控件就與地圖控件關(guān)聯(lián)了。4.添加工具右擊ToolbarControl,選擇“屬性|Items”,點擊Add,選擇Commands選項卡中Generic,雙擊Open、SaveAs、Redo、Undo即可將對應(yīng)工具添加到工具條。常見工具備:MapNavigation中導(dǎo)航工具,MapInquiry中查詢工具,F(xiàn)eatureSelection中選擇工具。5.編譯運行按F5即可編譯運行程序,至此桌面GIS應(yīng)用程序框架基本框架已經(jīng)搭建好了,能夠經(jīng)過工具條工具打開地圖文檔,瀏覽地圖了。三.問題及反思若程序拋出InvalidOperationException,打開GISControlForm.cs源代碼在結(jié)構(gòu)函數(shù)GISControlForm中添加以下代碼:ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);試驗二地圖文檔和地理數(shù)據(jù)操作試驗?zāi)繕?biāo)經(jīng)過給程序添加菜單實現(xiàn)地圖文檔新建、打開、存放以及柵格和矢量數(shù)據(jù)添加等功效。試驗步驟1.添加菜單在設(shè)計視圖中,單擊菜單欄,會出現(xiàn)“請在此處鍵入”提醒,單擊提醒就能夠鍵入菜單名稱,如“文件”,再單擊“文件”,即可輸入其下拉子菜單。2.實現(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){//利用文件對話框方式選擇加載地圖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;}//用相對路徑保留地圖文檔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.編譯運行按F5編譯運行,如圖所表示。問題及反思若調(diào)試過程出現(xiàn):無法嵌入互操作類型"ESRI.ArcGIS.Carto.MapDocumentClass".請改用適用接口錯誤,右鍵“ESRI.ArcGIS.Carto|屬性|嵌入互操作類型”改為false。但這么做錯誤消除了卻會出現(xiàn)一系列警告。類似錯誤能夠用一樣方法處理。試驗三右擊菜單及其地圖瀏覽功效實現(xiàn)試驗?zāi)繕?biāo)在AE開發(fā)中右鍵菜單有兩種實現(xiàn)方式,一是使用VisualStudio自帶ContextMenuStrip控件,二是用AE封裝IToolbarMenu接口。本試驗采取第一個方法利用右鍵菜單實現(xiàn)地圖放大、縮小、漫游功效。試驗步驟1.添加控件,設(shè)置屬性選擇工具箱中“菜單和工具欄|ContextMenuStrip”,將其拖入到窗體。在ContextMenuStrip控件上右擊選擇“編輯項”,編輯MenuItem。設(shè)置MapControl控件ContextMenuStrip為contextMenuStrip1,將ContextMenuStrip和MapControl關(guān)聯(lián)起來。2.相關(guān)代碼及其實現(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等.壓縮文件請下載最新的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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 百度搜索關(guān)鍵詞優(yōu)化實戰(zhàn)指南
- 電子病歷在腫瘤科護(hù)理中的應(yīng)用與實踐
- 電子商務(wù)平臺的產(chǎn)品定價策略與利潤空間
- 電商平臺用戶體驗的持續(xù)改進(jìn)
- 科技產(chǎn)業(yè)中的石墨技術(shù)創(chuàng)新路徑
- 科技發(fā)展與知識產(chǎn)權(quán)的協(xié)同創(chuàng)新
- 2025年小學(xué)數(shù)學(xué)教研組教學(xué)資源整合計劃
- 纖維增強塑料市場分析及競爭策略分析報告
- 2025年教育政策實施統(tǒng)計工作計劃
- 2025年學(xué)校健康檢查工作計劃
- 會計人才培養(yǎng)方案調(diào)研報告書
- 企業(yè)標(biāo)準(zhǔn)自我聲明公開
- 高考英語備考-英語單詞構(gòu)詞法詞根和詞綴課件
- 中公中學(xué)教育知識與能力(對應(yīng)中公教材)課件
- 電動托盤車(搬運車)培訓(xùn)-課件
- 格律詩基礎(chǔ)知識教學(xué)課件
- 綠色化學(xué)工藝-綠色技術(shù)教學(xué)課件
- 電梯安全年檢檢測規(guī)程
- 上海市中小學(xué)綜合素質(zhì)評價實施方案(智育部分)課件
- 變更賬戶通知函
- 食品中水分的測定原始記錄
評論
0/150
提交評論