admin 管理员组文章数量: 887021
2024年2月19日发(作者:发布者什么意思)
第1章GIS 二次开发概述
1.1 GIS 开发模式
1.2 组件GIS技术
1.1 GIS开发模式
独立开发模式
宿主型开发模式
(组件式GIS基本思想)组件式GIS开发模式
1.2 组件式GIS
组件式GIS (ComGIS):采用了面向对象技术和组件式软件的GIS系统(包括基础平台和应用系统)(宋关福等,1999)。 COM是组件式对象模型(Component Object Model)的英文缩写
GIS软件变得日益庞大,用户难以掌握,费用昂贵,阻碍了GIS的普及和应用。组件式GIS的出现为传统GIS面临的多种问题提供了全新的解决思路。组件式软件技术已经成为当今软件技术的潮流之一。组件式GIS是GIS的发展新阶段。
ComGIS给国内GIS基础软件的开发提供了一个良好的机遇。它打破了GIS基础软件由几个厂商垄断的格局,开辟了以提供专业组件来打入GIS市场的新途径。目前大多数GIS软件公司都把开发组件式软件作为一个重要的发展战略。
GIS开发模式包括:独立开发模式
、宿主型开发模式、组件式GIS开发模式。
组件式GIS 开发平台的结构有三种:基础组件 、高级通用组件、行业性组件。
基础组件—— 面向空间数据管理,提供基本的交互过程。
高级通用组件—— 面向通用功能。
行业性组件—— 抽象出行业应用的特定算法,固化到组件中,进一步加速开发过程。
组件式GIS 开发平台的结构
基础组件—— 面向空间数据管理,提供基本的交互过程。
高级通用组件—— 面向通用功能。
行业性组件—— 抽象出行业应用的特定算法,固化到组件中,进一步加速开发过程。
第二章 ArcEngine基础
2.1 ArcObjects与ArcEngine 区别与联系
2.2 ArcEngine功能
2.4 组件对象模型COM
2.5 理解对象模型图OMD
2.6 ArcEngine类库结构
2.3 ArcGIS Engine组成部分
ArcGIS Engine 由一个软件开发工具包ArcGIS Engine Developer Kit (SDK)和一个运行时( ArcGIS Engine Runtime )组成。
(1) ArcGIS Engine Developer Kit
ArcGIS Engine开发包是一套地图制图组件和开发资源库,可以让编程人员为现有的应用程序添加动态制图和GIS功能,或者创建新的定制的制图和GIS解决方案。
ArcGIS Engine开发包不是面向终端用户的产品,而是专门为开发应用程序的人员设计的。开发人员基于ArcGIS Engine建立应用程序,并将这些程序传递给终端用户。
ArcEngine 从功能层次上分为五部分:
1. 基本服务—由GIS 核心ArcObjects 构成,几乎所有GIS应用程序都需要,如要素几何体(feature geometry)和显示(display)。
2. 数据存取—ArcGIS Engine 可以对许多栅格和矢量格式进行存取,包括强大的地理数据库(Geodatabase)。
3.地图表达—创建和显示带有符号和标注的地图。
4. 开发组件—用于快速开发应用程序的界面控件。
5. 运行时选项—ArcGIS Engine 运行时可以与标准功能或其它高级功能一起部署。
COM总结
1. COM不是接口,也不是对象,它是一种二进制级别的组件通信标准。对象间的所有通信都是通过它们的接口来进行的
2. 符合COM标准的对象——COM对象。 COM对象是实现了很多接口的对象。
3. COM对象必须实现Iunknown接口,它是默认实现的接口,,这个接口是管理COM对象生命周期的,当COM对象不使用的时候,是这个接口定义的方法负责释放内存。
4. QI,即所谓查询接口。由于COM对象有很多个接口,不同的接口管理着COM的不同类型的方法,因此从一个接口可以使用的方法转到另一个接口可以使用的方法的过程称为QI,这个过程是由Idispatch接口管理的。
5. 每个组件都有一个独一无二的标识,这就是所谓的全球唯一标识符GUID 。这个标识符就是COM组件的身份,它是一个128bits的数字,由系统自由分配。
6. 一个COM对象可以有多个接口,一个接口也完全可以被多个COM对象实现,通过实现这些接口,COM实现了面向对象的多态性(几个类可以有同样的接口,但是它们的实现可能是极不相同的)。
ArcGIS中的多态指什么?
许多ArcGIS的类都表现出多态的特性,其特点是在几个Classes中使用同一个Interface,但每一个Class却执行不同的methods and properties。
举例:图层类型(layer types) 如RasterLayer, TinLayer, FeatureLayer等都具有同一个接口ILayer,但每一个图层类却执行不同的methods and properties。
ArcObjects 提供哪三种类?各有什么特点?
Abstract Class,Coclass和Class。
Abstract Class (抽象类): 不能直接创建新对象,只是用来派生ArcObjects其他类。抽象类用于定义子类的公共接口,子类继承其定义的接口。每个抽象类至少有一个子之类, Layer,WorkSpaceFarctory等是抽象类类; OMD符号为二维的内部有阴影的矩形。
Coclass (Component classes)可创建类或组件类: 用new关键字创建对象或者从别的对象获得运行实例。如组件类FeatureLayer,Map等,IMap = new pMapClass() 。 OMD符号为带阴影的3D矩形符号。
Class 实例化类或普通类: 不能直接创建新对象,只能从其他类接口的属性函数或其他类的方法创建。WorkSpace 是一个普通类, 不能用new 创建,但可以通过omFile() 方法创建实例。
OMD符号为:3D矩形内部没有阴影。
ArcMap objects
类和他们相应的对象
理解基本概念 类和对象( Class and Objects ),接口和命名空间(NameSpace)
AO/AE中的3种类
ArcObjects 提供三种类Abstract Class,Coclass和Class,这三个类在对象模型图OMD中体现。
Abstract Class (抽象类): 不能直接创建新对象,只是用来派生ArcObjects其他类。抽象类用于定义子类的公共接口,子类继承其定义的接口。 OMD中每个抽象类至少有一个子类。
OMD符号为二维的内部有阴影的矩形。
Coclass (Component classes)可创建类或组件类: 用new关键字创建对象或者从别的对象获得运行实例。 OMD符号为带阴影的3D矩形符号。
IMap = New pMapClass();
Class 实例化类或普通类: 不能直接创建新对象,只能从其他类接口的属性函数或其他类的方法创建。OMD符号为:3D矩形内部没有阴影。
AE中 WorkSpace 就是一个可实例化类,WorkSpace不能用new创建,但通过omFile()方法可以创建:
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
IWorkspace pWorkspace = omFile(sWorkSpacePath, 0);
理解AO/AE对象模型图 类与类的关系
依赖关系 一个对象有方法产生另一个对象。前者的周期决定后者的生命周期。 例,WorkspaceFactory有3个方法(Create、Open和OpenFormFile)来创建或打开一个WorkSpace。WorkSpace依赖于WorkSpaceFactory。
关联关系 鹰和巢两个对象是松散的关联关系,可以从一个类的对象访问另一个类的对象。当其中一个不存在,另一个不消失。
关联关系可能存在一对多或多对多关系:一只鹰拥有几个巢和一个巢几只鹰居住
关联关系有方向性: 单相关联和双向关联。
组合关系 羽毛与翅膀和鹰属于紧密的组合关系,是整体与部分的关系。羽毛与翅膀是鹰的一部分,当 鹰消失的时候,鹰的羽毛与翅膀也将不复存在。羽毛与翅膀的生命周期由鹰对象控制,但羽毛与翅膀的产生不受鹰对象控制。
继承关系 鹰属于鸟类,是一种继承关系,父类与子类的关系。类间的继承是类功能的扩展。父类具有的任何属性与方法,子类同样具备,且子类在保存父类的属性与行为(方法)的基础上增加了自己特有的行为与属性。
Relationship symbols
三角形符号继承(Inheritance)
菱形黑色小块组合(Composition)
虚线前头带个箭头依赖(Instantiation)
对应关系 1:N
一条直线表关联(Association)
第三章 地图显示
加载ShapeFile的3中方法
地图控件er (文件名(含文件目录));
地图控件MapControl. AddShapeFile (文件目录, 文件名(不含文件目录))。
打开ShapeFile的 AddLayer方法需要建工作区和找数据集等步骤,比较复杂;简单的是AddShapeFile方法;
地图控件MapControl. AddLayerFromFile (lyr 文件名) ;
3.2.2.2 添加引用 (Add ArcGIS Reference)
首先在工程-->“引用”(
程序集(Assembly) :使用.NET开发ArcGIS Engine程序使用的组件被称为程序集,AE中一
般是dll文件,一个程序集包括一个或多个命名空间。添加引用意在告诉编译器,我的这个程序中使用了那些外部的库,他们都在哪里; 如添加ls程序集(放大ControlsMapZoomInToolClass、缩小、打开文件、保存文件等ArcMap中常用用的命令都在Controls
库);
然后在全局定义前使用using命令引用, using命令意在告诉编译器,我这个程序里使用了某个命名空间,不用再写他的全名了,让编译器帮你去找。
引用命名空间主要是为了减少冗余代码,比如我们要使用ControlsMapZoomInToolClass ,如果在工程前添加了using ls,我们就可以直接用―ControlsMapZoomInToolClass―这个简称来调用他,否则用全称。
该程序涉及的主要类及接口介绍
WorkspaceFactory
WorkSpace
IWorkspace 接口 IFeatureWorkspace接口
要素图层FeatureLayer
FeatureClass 对象
3.4 图层控制
3.4.1 Command和Tool 区别
3.4.2 弹出右键菜单的2种方法
3.4.1 Command和Tool
AE中内置的Command和Tool的两种插件,Command不需要用鼠标等与地图交互,如全图功能;Tool则需要用鼠标等与地图交互,如选择功能。
CreateNewDocument, ControlsOpenDocCommandClass,ControlsSaveAsDocCommandClass,
ControlsMapZoomInToolClass, ControlsMapPanToolClass 等, 这些内置对象在Controls 类库中。
举例:放大和缩小工具,需要指定地图控件的当前工具
代码片段如下:
ICommand pCommand = new ControlsMapZoomInToolClass();
//ICommand接口的OnCreate方法创建关联Mapcontrol
te();
//指定当前工具
tTool = pCommand as ITool;
Command 举例:打开 文档,代码如下:
ICommand pCommand = new ControlsOpenDocCommandClass();
te();
k(); // OnClick方法实现对象的点击事件
3.4.2 弹出右键菜单的2种方法
在AE开发中,右键菜单有两种实现方式,一是使用VS2008自带的ContextMenuStrip控件的Show方法,二是用AE封装的IToolbarMenu接口的PopupMenu方法 。具体实现流程是?
图层控制的主要接口t,m;
m Method (ls)
int AddItem ( object pItem, int SubType, int index,
bool beginGroup, esriCommandStyles Style
);
object pItem //需要添加的菜单项
SubType //该Item是否有subType, 缺省值 -1 ,表示该菜单项没有子类,
index //该Item在菜单中的index, 缺省值-1, 添加到菜单的最底部,如果有其他菜单项, 从上到下依次添加到菜单中, 其index值分别为0, 1, 2 ,3, …等.
beginGroup //是否从该Item开始分开一组,缺省为False,不分隔;
Style // esriCommandStyles类型, 缺省值esriCommandStyleIconAndText.
Constant Value Description
.esriCommandStyleTextOnly 0 Display text only
只显示文字
.esriCommandStyleIconOnly 1 Display icon only只显示图标
.esriCommandStyleIconAndText 2 Display icon and text显示图标与文字
.esriCommandStyleMenuBar 4 Display bar as main menu显示为菜单
t Method (ls)
void HitTest (
int X,
int Y,
ref esriTOCControlItem pTocItem,
ref IBasicMap pMap,
ref ILayer pLayer,
ref object pOther,
ref object pIndex
);
X,Y 鼠标点击的横坐标和纵坐标;
pTocItem esriTOCControlItem枚举常量
(specifies an enumeration indicating the type of item
(none, map, layer, heading or legend class);
Map 地图对象;
Layer 被点击的图层对象;
Other 图例组对象 (ILegendGroup object);
Index 图例在图例组中的位置
(the index of the legend class within the legend group)
esriTOCControlItem枚举常量描述TocControl上Itemd类型定义
Constant Value Description
esriTOCControlItemNone 0 No item
没有对象
esriTOCControlItemMap 1 The item is a map map对象
esriTOCControlItemLayer 2 The item is a layer layer对象
esriTOCControlItemHeading 3 The item is a heading
对象的标题
esriTOCControlItemLegendClass 4 The item is a legend class Legendclass对象
使用ToolbarMenu实现
1) 创建菜单
IToolbarMenu pMenuMap;
IToolbarMenu pMmenuLayer;
2) 向快捷菜单中添加Item (菜单项)
m(new ControlsMapFullExtentCommand(), -1, 0, false,
mmandStyleIconAndText);
m("lsMapZoomToLastExtentBackCommand", -1, 1, false,
mmandStyleIconAndText);
m("lsMapIdentifyTool", -1, 3, true,
mmandStyleIconAndText);
m("lsMapPanTool", -1, 5, false,
mmandStyleIconAndText);
3)绑定控件, 通知pMenuMap, ControlsMapZoomInTool操作的对象是axMapControl1
k ();
4) 显示菜单,在axTOCControl1控件的指定位置弹出快捷菜单
enu (e.x, e.y, );
使用 contextMenuStrip 实现
1) 创建菜单, 添加ContextMenuStrip控件;
2) 向快捷菜单中添加Item(菜单项);
3) 每个菜单项Item的Click点击事件中添加相应代码;
4) 显示菜单,在axTOCControl1控件的指定位置弹出快捷菜单;
给axTOCControl1添加OnMouseDown事件
private void axTOCControl1_OnMouseDown(object sender,
ITOCControlEvents_OnMouseDownEvent e)
{
if ( == 1) return;
else if ( == 2)
(axTOCControl1, new (e.x, e.y));
}
第四章 地图制图
4.1 颜色对象 Color (y)
4.2 符号对象Symbol (y)
4.3 专题图制作Renderer ()
ArcGIS Engine提供了ColorRamp对象:
ColorRamp 抽象类,它包括4个子类(组件类):
AlgorithmicColorRamp(起止颜色带)ÓÃÆðʼÑÕÉ«¡¢ÖÕÖ¹ÑÕÉ«È·¶¨Ò»¸öÑÕÉ«´ø£¬
Æðʼ¡¢ÖÕÖ¹ÑÕɫʹÓÃRGBÄ£ÐÍ
RandomColorRamp(随机颜色带)ʹÓÃHSVÑÕÉ«Ä£ÐÍÀ´È·¶¨Ò»´®ÑÕÉ«
PresetColorRamp(预设颜色带)Ô¤ÉèµÄÑÕɫģʽ£¬¿É´æ´¢13ÖÖÑÕÉ«
MultiPartColorRamp(叠加颜色带)µþ¼Ó²úÉúÑÕÉ«´ø
4.3 专题图制作Renderer (渲染)
渲染(Renderer):地图符号化,是ArcGIS为空间数据图层存储符号化样式的对象,并利用这些样式符号化图层。
Renderer对象分三类:
要素渲染(FeatureRenderer)
栅格渲染(RasterRenderer)
和TIN渲染(TINRenderer)
要素渲染(Feature Renderer)
FeatureRenderer(要素渲染),也称矢量数据渲染,是一种显示要素图层的方法。
用途:专题图制作;
如唯一值图,分类图,点密度图等
FeatureRenderer 抽象类,它有15个子类负责进行不同类型的渲染运算。
Layer 抽象类 ,包括FeatureLayer ,RasterLayer 和TinLayer 等。 Layer 的主接口ILayer :是所有图层对象的公共接口, 用于访问所有图层的成员。这个接口包含定义最大和最小显示比例尺的属性,空间参考,名称,图层可见性等。
ILayer = _Layer(i);
FeatureLayer 组件类 主接口IFeatureLayer :主要用于设置要素图层的数据源FeatureClass
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
GeoFeatureLayer类 主接口IGeoFeatureLayer :继承ILayer 和IFeatureLayer 两个接口,用于控制要素图层的符号化和标注等 。
重要属性Renderer :设置图层的渲染对象;
SimpleRenderer简单渲染
DotDensityRenderer点密度渲染
第五章 地图整饰与输出
5.1 MapControl 地图控件
Map对象(CoClass,组建类) ()
5.2 PageLayoutControl 页面布局控件
PageLayout对象(CoClass,组建类) ()
5.3 Map与PageLayout对象共同点
5.4 Element对象()
图形元素
框架元素
MapFrame对象
MapSurroundFrame对象
5.5 MapSurround对象()
5.6 地图输出
5.1 MapControl地图控件
MapControl控件对应ArcMap中的数据视图(Data View),它封装了Map对象(CoClass,组建类),并提供了额外的属性、方法、事件用于:
管理控件的外观、显示属性和地图属性;
添加并管理控件中的数据层;
装载Map地图文档(mxd) ;
动态添加和显示几何对象等;
Map组件类主要接口IMap:
IMap pMap = ;
5.2 PageLayoutControl页面布局(版式)控件
PageLayoutControl对应ArcMap中的布局视图(Layout View),它封装了PageLayout对象,并提供了额外的属性、方法、事件用于:
加载地图文档(mxd) ;
绘制地图元素;
创建布局视图(图例、指北针和比例尺等)
地图的打印输出;
PageLayout组件类主要实现了IPageLayout 接口,它定义了用于修改页面布局的方法和属性。
5.3 Map与PageLayout对象共同点
PageLayout与Map都是视图对象,能够显示地图,都实现了IArctiveView接口;
同时它们都是图形元素的容器,能存储图形元素(Graphics Element),都实现了IGraphicsContainer接口 。
ArcGIS中可以显示在视图上的图形分为两种,地理数据和元素( Element)数据。元素是一个地图中除去要素数据外的部分,即在一幅地图中,除了保存在数据库中的地理数据外,其余的对象全部是元素。
存储的图形类型差别: Map只能保存图形元素(Graphic Element)数据;
PageLayout能保存图形元素和框架元素(Frame Element)。
PageLayoutControl 上的Map对象被PageLout的MapFrame对象所管理。
地图总是包含在Map对象中,而Map对象是由一个MapFrame所持有,PageLayout对象至少拥有一个MapFrame对象,而每个MapFrame中也拥有一个Map。
Map 对象和PageLayout 对象显示的数据除了地理数据之外,另一种即为元素(Element)数据如图所示。
IActiveView接口
定义了Map对象的数据显示功能。通过使用该接口可以在Map上绘制图形,改变视图的范围,获取ScreenDisplay对象的指针,刷新视图。AE中 Map和PageLayout对象都实现这个接口,分别代表两种不同的视图:数据视图和布局视图。在任何时刻都只能有一个视图处于活动状态。
IActiveView pArctiveView = pMap as IArctiveView;
IActiveView pArctiveView = pPageLayout as IArctiveView;
IActiveView的重要属性:Extent属性,返回Map对象当前视图的范围,是一个Envelope对象;
FullExtent:返回视图的全图范围;
Refresh方法:一种刷新方式
PartialRefresh方法:部分刷新方式。
IGraphicsContainer接口
IGraphicsContainer 接口管理Map 和PageLayout 对象上储存的元素,使用IGraphicsContainer
接口可以添加,删除和更新位于Map 或PageLayout上的元素。
IGraphicsContainer pGraphicsContainer = pMap as IGraphicsContainer;
IGraphicsContainer pGraphicsContainer = pPageLayout as IGraphicsContainer;
//PageLayout对象引用赋给IGraphicsContainer接口的对象变量,得到GraphicsContainer对象。
AddElement:添加元素;
用法:ment(pElement, 0)
UpdateElement:更新元素:,
DeleteElement: 删除元素;
LocateElement:选择元素
DeleteAllElements;
LocateElementsByEnvelope:Map上拖曳一个矩形区域,选择区域内的元素
SpatialReference属性:设置图形元素的空间参考。空间参考是一个图形能够在一定范围内正确显示所必须设置的属性。
5.4 Element对象
Element对象是一个非常庞大复杂的对象集合如图 ,它主要分为两大部分:图形元素(GraphicElement)和框架元素(Frame Element)。图形元素可以被放在页面视图或地图上,但框架元素只能放在页面视图上,如地图标题是放置于页面版面设计上的一个文本元素。
IElement是所有图形元素(GraphicElement)和框架元素(Frame Element)都实现的接口,通过IElement接口可以确定Element对象的Geometry属性,同时IElement接口也提供了用于查找和绘制元素的方法。
Element是抽象类,开发中必须明确指定使用的Element类型。
IElement和ILineElement, ITextElement等并不是父子关系, 后者没有Geometry属性,只有IElement有Geometry属性。
元素(Elements)
5.4.2 框架元素(Frame Element)
框架元素(Frame Element)包括:MapElement,MapSurrundFrame,OleFrame和TableFrame等,作为不可见的容器存在。
所有的框架元素都实现IFrameElment接口;
MapFrame对象是Map的容器,用于管理Map对象;实现IMapFrame接口,
CreateSurroundFrame方法:获得一个MapSurroundFrame对象。
MapSurroundFrame对象是MapSorrund的容器,是一种用于管理MapSorrund对象的框架元素,该对象包括比例尺,比例文本,指北针,图例等 ;
MapSorrund对象自动与某个地图对象关联,随着地图视图的变化而变化。
MapSurroundFrame对象实现IMapSurroundFrame接口。
每个MapSurroundFrame对象都与一个MapFrame相联系,如果MapFrame被删除,与其相连的MapSurroundFrame对象都绘被删除。
5.5 MapSurround 对象 (地图整饰对象)
MapSurround指图例,指北针、比例尺、比例文本等对象;
MapSurround 对象并不是简单的图形,而是直接和地图动态连接。它与一个地图对象关联的用于修饰地图的辅助图形元素对象如图所示。它的形状或内容会随着Map 属性的变化而自动改变。
MapSurround并不是直接被加入到页面布局中去的,而是被加入到某一特定类型的框架元素中,这一框架元素称为MapSurroundFrame。
举例说明ArcEngine中添加地图整饰对象的流程及代码实现?(图例,北针或比例尺)
ArcEngine地图整饰对象添加的流程
获取PageLayout对象:将PageLayoutControl控件中的PageLayout对象赋给IPageLayout接口的对象变量;
IPageLayout pPageLayout = new axPageLayoutControl1. PageLayout;
获取与PageLayout相关联的活动视图:
IActiveView pActiveView= pPageLayout as IActiveView;
获取与PageLayout相关联的图形容器(GrphicsContainer);
IGraphicsContainer pGraphicsContainer = pPageLayout as IGraphicsContainer;
使用IGraphicContainer的FindFrame方法查找与焦点(Focus)地图相关联的Map Frame对象; IMapFrame pMapFrame = ame(ap) as
IMapFrame;
由MapFrame对象通过CreateSurroundFrame(pID,pMapSurround)方法得到MapFrame对象。
pID表示地图要素的类型,pMapSurround表示MapSurround对象,是个可选参数,可以从样式库(StyleGallery)中获得。
举例:创建一个UID对象,并将它的值赋给图例类的ID;
UID pUid= new UIDClass ();
= ―‖
IMapSurroundFrame pMapSurroundFrame = SurroundFrame(pUid, null);
获取Element对象,以便它能设置框架的几何体属性(Geometry):
//将MapSurroundFrame对象引用赋给IElement接口的对象变量,从而得到Element对象。
IElement pElement = pMapSurroundFame as IElement ;
获取与Focus地图的MapFrame相关联的几何体(该几何体控制图例在地图上的位置);
ry = pEvelope;
为图例创建一个新的封闭区域几何体,并以Focus地图的地图框架为参照来决定该区域的位置;pEnvelope = new EnvelopeClass();rds(0,0,5,5);
//采用GraphicContainer对象的AddElement(Element,ZOrder)方法,以Element对象和一个要素在容器中Z方向位置的长整型值为参数,把地图要素添加地图布局( PageLayout的图形容器)中。
刷新屏幕上的图形层。
第六章 空间分析
6.1 空间查询
6.2 缓冲区分析(Buffer)
6.3 矢量图层叠置分析(OverLay)
QueryFilter 对象与SpatialFilter 对象
在关系型数据库中,查询条件是通过SQL 语句的Where 子语句来完成的。
在ArcEngine 中不能直接使用SQL 语句,但ArcGIS Engine 提供了QueryFilter和SpatialFilter
两个过滤器对象来配合完成查询条件的设置,从而查询到想要的数据。
QueryFilter 过滤器主要用于对属性数据查询条件的设置,它主要实现IQueryFilter 接口从而实现属性查询功能。
QueryFilter举例
Create a QueryFilter with the new keyword
Set the WhereClause property (string)
Cursor 对象
Cursor(游标)本质上是一个指向数据的指针,本身并不包含数据内容,它是连接到Row 对象或要素对象的桥梁。
游标有三种类型,即查询游标、插入游标和更新游标。每一种游标都是通过与之相适应的方法来获得的,如Search、Insert 和Update 方法。更新和插入游标都需要使用一个过滤器(Filter)对象,因为它们首先必须获得需要进行操作的要素。
FeatureCursor 是Cursor 的一个子类,指向一个或多个要素,它实现了IFeatureCursor 接口,
ArcGIS Engine 开发对矢量图层实现查询功能都是基于IFeatureCursor。
ArcEngine开发中调用GP工具
ArcGIS Engine调用geoprocessing工具完成缓冲区分析和Clip,流程和具体实现代码
ArcGIS Server 简介
ArcGIS Server 是一个基于 Web 的企业级 GIS 解决方案,它从 ArcGIS 9.0 版本开始加入
ESRI 产品家族。
ArcGIS Server将两项功能强大的技术―地理信息系统(GIS)和网络技术(Web)结合在一起:GIS擅长于空间相关的查询、定位、分析和处理,网络技术则提供全球互联,促进信息共享。这两项技术协同合作,构成了ArcGIS Server的主旋律。
ArcGIS Server是一个用于构建集中管理、支持多用户的企业级GIS应用的平台软件。
GIS Server是一套GIS服务器组件,专门用来管理和发布地图服务,安装在GIS服务器上。
ArcGIS Server 优点
集中式管理带来成本的降低;
客户端也可以享受到高级的 GIS 服务;
使 WebGIS 具备了灵活的数据编辑和高级的GIS 分析能力,用户在野外作业时可以通过移动设备直接对服务器端的数据库进行维护和更新;
持大量的并发访问,具有负载均衡能力;
可以根据工业标准很好的与其他的企业系统整合,进行协同工作;
可以利用主流的网络技术(例如,.Net 和Java)来定制适合自身需要的网络 GIS 解决方案,具有更大的可伸缩性。
ArcGIS Server架构
ArcGIS Server 是一个分布式系统,由分布在多台机器上的各个角色协同工作。ArcGIS
Server 搭建的 WebGIS 解决方案支持多种类型的客户端,包括:ArcGIS Desktop 、ArcGIS
Engine Application 、Web Browser 。
利用ArcGIS Server 搭建的 WebGIS 的各个组成部分:
(1)GIS server:运行SOC(Server Object Container)和SOM(Server Object Manager)的机器。
SOM 和SOC 可以运行在同一台机器上,也可以是SOM 独占一台机器,管理一个或多个运行SOC 的机器。采用分布式部署,大幅提高GIS server 的整体性能,扩展能力更强。
(2)Web server:运行web 应用程序或 web service 的机器。通过访问GIS server 并调用GIS server 的对象来实现GIS 功能,然后把结果返回给客户端。
(3)Web browsers:诸如IE ,Firefox 等 Web 浏览器软件。
(4)桌面应用程序:可以是ArcGIS Desktop 和ArcGIS Engine 应用。通过Http 协议访问在Web server 上发布的ArcGIS 网络服务,或者通过Lan/Wan直接连接到 GIS Servers。一般通过 ArcCatalog应用程序来管理 ArcGIS Server 。
ArcGIS Server 系统
客户端 – 浏览器, 桌面应用
Web server – Web ADF
GIS server – SOM, SOC, ArcObjects
版权声明:本文标题:ArcGIS Engine期末知识点总结 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1708348037h520849.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论