许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  ArcGIS Engine二次开发:打开矢量文件、栅格文件、MXD文件、数据库文件(附源码)

ArcGIS Engine二次开发:打开矢量文件、栅格文件、MXD文件、数据库文件(附源码)

阅读数 15
点赞 0
article_banner

ArcGis Engine 二次开发,代码实现,打开矢量文件、栅格文件、mxd文件,数据库文件(源码在最下面)
准备

Visual Studio 2012,Demo Center 14.1和ArcGIS Engine。

四、步骤

(一)新建文件夹

(二)打开Visual Studio 2012,新建项目

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);           }

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空