ArcGis Engine 二次开发,代码实现,打开矢量文件、栅格文件、mxd文件,数据库文件(源码在最下面)
准备
Visual Studio 2012,Demo Center 14.1和ArcGIS Engine。
1、点击【文件】|【新建】|【项目】。如下图所示
2、点击选择【windows窗体应用程序】|,并修改【名称】和|【位置】。
确定后如图:
1、右键空白处,点击选择【add button】;
2.点开右上角可打开【属性】修改【text】和添加【image】图标
3.再使用【工具箱】中的【容器】的【Pane】,并用属性【Dock】调整布局
(1)【工具箱】|【ESRI】|【TOCControl】,将TOCControl数据列表拖到最左边的部分。
【MapControl】地图视图,拖到最右边,
【toolbarControl】工具条拖到最上面。
点击【所有windows窗体】【Menustrip】选择条。{不可双击,否则变为事件}
添加【LinceseControl】许可。如图:


(2)添加引用:右键【引用】 【添加引用服务】,选择【阅览】:


(3)修改引用属性;除新添加的两个引用除外,esri开头的引用属性【嵌入互操作类型】修改为:false,如图:


(4)修改程序:(复制)注:若文件名对不上需要修改窗口属性名称。


ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop); ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new UAVMainMap());
(5)将TOCControl数据列表和ToolbarControl工具条的属性该为,(选择窗口右键,出现窗口,选择【属性】)如图;

(6)向工具箱添加小工具:【属性】【items】【add】


(7)修改text文本,icon图标,及Dock窗口排列分布。如图:

(8)将出错的用【use】连接


(9)启动调试

注意:调试重新异常 打开【异常】将【LoaderLock】方框内的✔取消



打开矢量文件
private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { OpenFileDialog xjOpenShpFileDialog = new OpenFileDialog(); xjOpenShpFileDialog.Title = "打开矢量数据"; xjOpenShpFileDialog.Filter = "矢量文件(*.shp)|*.shp"; if (xjOpenShpFileDialog.ShowDialog() == DialogResult.OK) { string xjShpPath = xjOpenShpFileDialog.FileName; string xjShpFolder = System.IO.Path.GetDirectoryName(xjShpPath); string xjShpFileName = System.IO.Path.GetFileName(xjShpPath); //工作工厂+工作空间 IWorkspaceFactory xjShpWsF = new ShapefileWorkspaceFactory(); IFeatureWorkspace xjShpFWs = (IFeatureWorkspace)xjShpWsF.OpenFromFile(xjShpFolder, 0); //新建矢量图层:要素+名称 IWorkspace xjShpWs = xjShpWsF.OpenFromFile(xjShpFolder, 0); IFeatureClass xjShpFeatureClass = xjShpFWs.OpenFeatureClass(xjShpFileName); IFeatureLayer xjShpFeatureLayer = new FeatureLayer(); xjShpFeatureLayer.FeatureClass = xjShpFeatureClass; xjShpFeatureLayer.Name = xjShpFeatureClass.AliasName; //加载刷新 this.axMapControl1.AddLayer(xjShpFeatureLayer); this.axMapControl1.ActiveView.Refresh(); } }打开栅格文件
private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { OpenFileDialog pOpenFileDialog = new OpenFileDialog(); pOpenFileDialog.CheckFileExists = true; pOpenFileDialog.Title = "打开Raster文件"; pOpenFileDialog.Filter = "栅格文件 (*.*)|*.bmp;*.tif;*.jpg;*.img|(*.bmp)|*.bmp|(*.tif)|*.tif|(*.jpg)|*.jpg|(*.img)|*.img"; pOpenFileDialog.ShowDialog(); string pRasterFileName = pOpenFileDialog.FileName; if (pRasterFileName == "") { return; } string pPath = System.IO.Path.GetDirectoryName(pRasterFileName); string pFileName = System.IO.Path.GetFileName(pRasterFileName); IWorkspaceFactory pWorkspaceFactory = new RasterWorkspaceFactory(); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(pPath, 0); IRasterWorkspace pRasterWorkspace = pWorkspace as IRasterWorkspace; IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(pFileName); //影像金字塔判断与创建 IRasterPyramid3 pRasPyrmid; pRasPyrmid = pRasterDataset as IRasterPyramid3; if (pRasPyrmid != null) { if (!(pRasPyrmid.Present)) { pRasPyrmid.Create(); //创建金字塔 } } IRaster pRaster; pRaster = pRasterDataset.CreateDefaultRaster(); IRasterLayer pRasterLayer; pRasterLayer = new RasterLayerClass(); pRasterLayer.CreateFromRaster(pRaster); ILayer pLayer = pRasterLayer as ILayer; axMapControl1.AddLayer(pLayer, 0); } private void ClearAllData() { if (axMapControl1.Map != null && axMapControl1.Map.LayerCount > 0) { //新建mainMapControl中Map IMap dataMap = new MapClass(); dataMap.Name = "Map"; axMapControl1.DocumentFilename = string.Empty; axMapControl1.Map = dataMap; } }打开mxd文件
private void barButtonItem6_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { OpenFileDialog OpenMXD = new OpenFileDialog(); OpenMXD.Title = "打开地图"; OpenMXD.InitialDirectory = "https://www.gofarlic.com\\FASTrs"; OpenMXD.Filter = "Map Documents (*.mxd)|*.mxd"; if (OpenMXD.ShowDialog() == DialogResult.OK) { string MxdPath = OpenMXD.FileName; axMapControl1.LoadMxFile(MxdPath); // axMapControl1为数据视图名称 } }打开数据库
private void barButtonItem3_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { IWorkspaceFactory pFileGDBWorkspaceFactory; FolderBrowserDialog dlg = new FolderBrowserDialog(); if (dlg.ShowDialog() != DialogResult.OK) return; string pFullPath = dlg.SelectedPath; if (pFullPath == "") { return; } pFileGDBWorkspaceFactory = new FileGDBWorkspaceFactoryClass(); //using ESRI.ArcGIS.DataSourcesGDB; ClearAllData(); //新增删除数据 //获取工作空间 IWorkspace pWorkspace = pFileGDBWorkspaceFactory.OpenFromFile(pFullPath, 0); //AddAllDataset(pWorkspace, KarstCropMap); }
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删