ArcGIS Engine二次开发:从入门到精通

您所在的位置:网站首页 gis开发方法 ArcGIS Engine二次开发:从入门到精通

ArcGIS Engine二次开发:从入门到精通

2024-06-26 08:03:16| 来源: 网络整理| 查看: 265

ArcGIS Engine是ArcGIS的一套软件开发引擎,可以让程序员创建自定义的GIS桌面程序。

它是ESRI在ArcGIS9版本才开始推出的新产品,它是一套完备的嵌入式GIS 组件库和工具库,使用ArcGIS Engine开发的GIS应用程序可以脱离ArcGIS Desktop而运行。

https://baike.baidu.com/item/ArcGIS%20Engine/10318973?fr=aladdin

>>ArcGIS Engine与国土资源:

ESRI在线支持:https://support.esri.com/zh-cn/products/developers/arcgis-engine/arcgis-engine/10-2-2              http://resources.arcgis.com/en/help/

最好的帮助文档其实是arcobject sdk帮助文档和samples.....

但是,有一本参考书还是必要的。

本书共16章。第一部分为基础篇:第1~9章,主要是控件。第二部分为应用提高篇:空间分析。第10章。第三部分:第11~12章,实例应用。第四部分为空间数据库的操作。

第1章 开发基础

ArcGIS的类库总体可以分为界面控件类和操作组件类。控件和组件是不一样的,控件是有界面的,组件是没有界面的。所以它们的引用方式是不一样的。需要注意它们的区别。具体可以看:COM组件

System类库:System类库是Engine中最底层的类库。

SystemUI类库:主要定义了ArcGIS系统中所使用的用户界面组件类型。

Geometry类库:包含了核心几何对象,如点、线、多边形及其几何类型和定义。

Display类库:包含了支持向输出装置绘制符号体系的组件。

Server类库:包含了用于获取到ArcGIS Server的连接的对象。

Output类库:包含了生成输出所必须的对象,通常是从地图或页面布局输出到打印机、绘图仪,或导出到文件中。

Geodatabase类库:Geodatabase类库:包含了所有与数据访问相关的定义的类型,为地理数据提供了编程API,是建立在标准工业关系型和对象关系数据库技术之上的地理数据库。

GISClient类库:

DataSourcesFile类库:

DataSourcesGDB类库:

DataSourcesOleDB类库:

DataSourcesRaster类库:

GeoDatabaseDistributed类库:

Carto类库:Carto类库:该类库支持地图的创建和显示,PageLayout 对象是地图及其底图元素的容器。地图元素包括指北针、图例、比例尺等。Map对象包括地图.上所有图层都有的属性,如空间坐标系、地图比例尺以及地图图层的操作。此对象可以加载各种类型的图层,不同类型的图层由相应的对象处理,如FeatureLayer对象处理矢量数据,RasterLayer 对象处理栅格数据,TinLayer 对象处理TIN数据等。通常图层都有一个相关的Renderer对象,来控制数据在地图中的显示方式。Renderer通常用Display类库中的符号来进行绘制,Renderer 只是将特定符号与待绘制实体属性相匹配。

Location类库:

NetworkAnalysis类库:

Controls类库:

GeoAnalyst类库:

3Danalyst类库:

GlobeCore类库:

SpatialAnalyst类库:

>>第一个例子:基于.NET的ArcGIS Engine的开发

 这里需要注意,创建C#类库(组件)和创建C#应用是不同的。。它们最大的显著不同是生成的文件为dll和exe

创建C#应用之后,还需要添加ArcGIS类库引用(ESRI.ArcGIS.Carto、ESRI.ArcGIS.Display、ESRI.ArcGIS.Geometry、ESRI.ArcGIS.System、ESRI.ArcGIS.SystemUI、ESRI.ArcGIS.Utility)

如果控件不显示(控件和组件的区别),新建选项夹->右键,选择项->添加AxMapControl

private void Form1_Load(object sender, EventArgs e) { string path = @"D:\BaiduNetdiskDownload\ArcGIS Engine从入门到精通\第2章\sample\lesson1\data\World\"; string fileName = @"World.mxd"; //加载地图文件 axMapControl1.LoadMxFile(path + fileName); //将地图全屏最大化 axMapControl1.Extent = axMapControl1.FullExtent; }

Toolbar右键->属性,

 

 

 

 

 

第2章 ArcGIS Engine中的控件

制图控件,如MapControl、PageLayoutControl,其中MapControl控件主要用于地理数据的显示和分析,PageLayoutControl 用于生成一幅成品地图。MapControl 封装了Map对象,而PageI ayoutControl则封装了PageLayout对象。这两个控件都实现了IMxContents接口,因此不仅可以读取ArcMap创建的地图文档,而且可以将自身的地图内容写到一个新的地图文档中。

2.1 制图控件介绍

2.1.1 地图控件MapControl控件封装了Map对象,并提供了其他的属性、方法和事件,用于管理控件的外观、显示属性和地图属性,管理、添加数据图层,装载地图文档,显示、绘制跟踪图层。

2.1.2 页面布局控件PageLayoutControl控件主要用于页面布局与制图。该控件封装了PageLayout类,提供了布局视图中控制元素的属性和方法,以及其他的事件、属性和方法。

>>第二个例子:控件使用实例

该实例是一个较全的GIS常用功能集合,本实例只是简单介绍了一些常用功能的开发,让大家对GIS的这些功能涉及的接口、类,有个大概的了解,后续的章节中对这些类和接口会有更详细的介绍。

//加载Mxd地图文档,显示到控件

private void 加载地图文档ToolStripMenuItem_Click(object sender, EventArgs e) { //加载地图文档 System.Windows.Forms.OpenFileDialog openFileDialog; openFileDialog = new OpenFileDialog(); openFileDialog.Title = "打开地图文档文件"; openFileDialog.Filter = "map documents(*.mxd)|*.mxd"; if(openFileDialog.ShowDialog() == DialogResult.OK){ string filePath = openFileDialog.FileName; if (axMapControl1.CheckMxFile(filePath)) { axMapControl1.MousePointer = esriControlsMousePointer.esriPointerHourglass; axMapControl1.LoadMxFile(filePath, 0, Type.Missing); axMapControl1.MousePointer = esriControlsMousePointer.esriPointerDefault; //loadEagleEyeDocument(filePath); axMapControl1.Extent = axMapControl1.FullExtent; } else { MessageBox.Show(filePath + "不是有效的地图文档"); } } }

这里面的Map.mxd文档中的每个layer都是shp文件,如果是.lyr图层的话就无法显示

图层的操作是GIS中常用的功能,涉及图层的添加、删除、移动等,下面的示例演示了,图层的添加、删除、移动功能。

添加图层可以是*.lyr格式的图层文件,也可以是*.shp文件,使用MapControl自带的AddLayerFromFile方法,提供lyr图层文件的路径,即可加载到地图控件中。

private void 添加图层ToolStripMenuItem_Click(object sender, EventArgs e) { System.Windows.Forms.OpenFileDialog openFileDialog; openFileDialog = new OpenFileDialog(); openFileDialog.Title = "打开图层文件"; openFileDialog.Filter = "map documents(*.lyr)|*.lyr"; if(openFileDialog.ShowDialog() == DialogResult.OK) { string filePath = openFileDialog.FileName; try { axMapControl1.AddLayerFromFile(filePath); }catch(Exception ex) { MessageBox.Show("添加图层失败"+ex.ToString()); } } }

 效果很棒,但是这里的layer文件是怎么保存的

图形绘制是GIS系统中的一个很重要、很常用的功能,MapControl提供了常用的线、圆、矩形、多边形等形式的绘制,例如,绘制圆形,则在axMapControl1_OnMouseDown事件中设置绘制方法,具体如下所示:

//绘制线、圆、矩形 private void drawMapShape(IGeometry geometry) { IRgbColor rgbColor; rgbColor = new RgbColorClass(); rgbColor.Red = 255; rgbColor.Green = 255; rgbColor.Blue = 0; object symbol = null; if (geometry.GeometryType == esriGeometryType.esriGeometryPolyline || geometry.GeometryType == esriGeometryType.esriGeometryLine) { ISimpleLineSymbol simpleLineSymbol; simpleLineSymbol = new SimpleLineSymbolClass(); simpleLineSymbol.Color = rgbColor; simpleLineSymbol.Width = 5; symbol = simpleLineSymbol; } else { ISimpleFillSymbol simpleFillSymbol; simpleFillSymbol = new SimpleFillSymbolClass(); simpleFillSymbol.Color = rgbColor; symbol = simpleFillSymbol; } axMapControl1.DrawShape(geometry, ref symbol); }

布局控件与地图控件关联

在GIS系统中经常使用到地图的制图,在地图上标记指北针、图例、比例尺等,进行地图输出,Engine提供了PageLayoutControl控件,该控件可以添加图元要素等进行地图修饰,下面代码演示了布局控件与地图控件关联,要实现该功能的核心接口是IObjectCopy,该接口提供了Copy方法用于地图的复制,

private void copyToPageLayout() { IObjectCopy objectCopy = new ObjectCopyClass(); object copyFromMap = axMapControl1.Map; object copyMap = objectCopy.Copy(copyFromMap); object copyToMap = axPageLayoutControl1.ActiveView.FocusMap; objectCopy.Overwrite(copyMap, ref copyToMap); } private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e) { copyToPageLayout(); } private void axMapControl1_OnAfterScreenDraw(object sender, IMapControlEvents2_OnAfterScreenDrawEvent e) { IActiveView activeView = (IActiveView)axPageLayoutControl1.ActiveView.FocusMap; IDisplayTransformation displayTransformation = activeView.ScreenDisplay.DisplayTransformation; displayTransformation.VisibleBounds = axMapControl1.Extent; axPageLayoutControl1.ActiveView.Refresh(); copyToPageLayout(); }

 布局控件中属性设置与绘制元素

 

 

 

第3章 几何对象和空间坐标系

第4章 地图组成及图层控制

第5章 地图制图

第6章 空间数据管理

第7章 数据编辑

第8章 栅格数据

第9章 三维可视化

第10章 空间分析

第11章 符号库管理系统的开发

第12章 空间数据管理系统

第13章 空间数据库连接与释放

第14章 空间数据库加载

第15章 程序出错和异常

第16章 其他经验技巧

>>根据属性domain个数分类图层。

 

 



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭