ArcGIS Engine基础开发教程(3)

2018-10-18 17:01

ArcGIS Engine基础开发教程(3)——学习地图和地图布局 Engine, ArcGIS, 教程, 地图, 基础

本章是ArcGIS Engine基础开发教程的第三章,主要给大家大致讲解了,地图和地图布局的相关对象。这些对象非常重要,如果这些基本对象都不熟悉就开始搞ArcGIS Engine开发是不科学的也走不远的。

3地图和地图布局

3.1地图

3.1.1Map对象

Map对象是ArcGIS Engine的主要对象,本章将给大家介绍地图组成结构,如何创建地图,如何对组成地图的对象进行操作,在介绍这些内容时尽量结合ArcMap学习效果会更好。

在Map对象上能显示的图形有两类一类是地理数据,一类是元素。地理数据包括矢量类型的要素数据,栅格数据,Tin等表面数据等,这些数据都保存在Geodatabase或数据文件如shapefile中,它们是用于GIS分析制图的源数据; 图1

而元素是另一种可以显示在Map上的对象,它分为两部分一类是图形元素,一类是框架元素,图形元素可以显示出来,而框架元素充当了“容器”的角色。在ArcMap中可以使用“Draw”工具在Map上直接绘制一个矩形,圆形,文本等对象,在布局视图上也可以给地图添加指北针,图例,比例尺等图形对象,这些都是图形元素。 图2

在ArcMap中Map对象是由MXDocument对象的MapFrame对象管理,MapFrame是一个框架元素。

Map对象有双重身份,一方面是数据的管理容器,可以加载地理数据和图形元素,扮演了数据管理器的角色,另一方面它又可以让用户看到这些数据即扮演了数据显示器的角色,当

加载数据到Map对象的时候,Map对象是数据的管理者;当改变视图范围,刷新地图的时候它是数据的显示者。

Map对象主要实现的接口由IMap, IGraphicContainer, IActiveView, IMapBookmark等接口。

IMap接口主要用于管理Map对象中的Layer对象,要素选择集对象,MapSourround对象,空间参考等对象。

Map对象可以显示图形元素(Graphics Element),Map对象通过IGraphicsContainer接口来管理这些元素对象,包括图形元素和框架元素。IGraphicsContainer返回的是Map对象中处于活动状态的Graphics layer引用指针,它可以是一个Basicgraphicslayer,也可以是CompositeGraphicsLayer中的一个图层,或者是一个FDOGraphicsLayer注记图层。

以下代码片段演示如何添加一个Element到Map上:

///

///添加临时元素到地图窗口上 ///

/// /// ///

public static void AddTempElement(AxMapControl pMapCtrl, IElement pEle, IElementCollection pEleColl) { try {

IMap pMap = pMapCtrl.Map;

IGraphicsContainer pGCs = pMap as IGraphicsContainer; if (pEle != null)

pGCs.AddElement(pEle, 0); if (pEleColl != null)

if (pEleColl.Count > 0)

pGCs.AddElements(pEleColl, 0);

IActiveView pAV = (IActiveView)pMap; //需要刷新才能即时显示

pAV.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, pAV.Extent); }

catch (Exception Err) {

MessageBox.Show(Err.Message, \提示\MessageBoxButtons.OK,

MessageBoxIcon.Information); } }

复制代码

IActiveView接口定义了Map对象的数据显示功能。使用该接口可以改变视图的范围,刷新视图。

IActiveView的PartialRefresh(esriViewGeography, pLayer, null)用于刷新指定图层: IActiveView的PartialRefresh(esriViewGeography, null, null) 用于刷新刷新所有图层: IActiveView的PartialRefresh(esriViewGeoSelection, null, null) 用于刷新所选择的对象: IActiveView的PartialRefresh(esriViewGraphics, null, null) 用于刷新图形元素:

IActiveView的PartialRefresh(esriViewGraphics, pElement, null) 用于刷新指定图形元素 IActiveView的PartialRefresh(esriViewGraphics, null, null) 用于刷新所有图形元素

IActiveView的PartialRefresh(esriViewGraphicSelection, null, null)用于刷新所选择的图元。 IMapBookmark接口用于管理所有的空间书签对象。

3.1.2图层对象

Map对象可以装载地理数据,这些数据是以图层的形式加载到地图对象上的,图层对象Layer作为一个数据的“中介”存在,它本身没有转载地理数据,而仅仅是获得了数据的引用,用于管理数据源的连接。地理数据始终保存在Geodatabase或者地理数据文件中。

由于地理数据的类型多样,所以Layer类也拥有众多子类(具体查看帮助),接下来主要给大家介绍要素图层—FeatureLayer对象。

3.1.3FeatureLayer对象

FeatureLayer类实现的常用主要接口如下图所示:IFeatureLayer,IFeatureLayerDefinition,FeatureSelection,IGeoDataset,IGeoFeatureLayer,IIdentify,ILayerEffects。 图3

IFeatureLayer接口主要用于设置要素图层的数据源(FeatureClass), IFeatureLayer的DataSourceType获取FeatureLayer对象的数据源类型。此外通过IFeatureLayer的Search方法可以查询要素图层上符号某一条件的要素集。

IGeoFeatureLayer接口继承了ILayer和IFeatureLayer两个接口,用于控制要素图层的符号化和标注等。

IGeoDataset接口仅有两个属性,它们用于管理地理要素集。Extent可以返回当前数据集的范围,是一个IEnvelope类型的对象;

SpatialReference属性则可以让用户获得这个数据集的空间参考。

IFeatureSelection接口提供管理一个图层中的要素的选择集的方法和属性。

以下代码片段演示如何获取要素图层符合条件获取选择集

IFeatureLayerDefinition接口定义了CreateSelectionLayer方法,可以将一个图层选择集中的要素转换为一个单独的要素图层。

3.1.4矢量图层操作实例

以下代码片段演示按行政区加载图层数据的功能,以此理解IFeatureLayerDefinition的CreateSelectionLayer方法的使用。

比方说整个国土资源部有某一类型专题数据有若干图层,每个图层数据的范围是整个中国,这时国土资源部开发一套系统可能有这个需求,每个省只能加载本省的数据。以下函数即为按按行政区范围创建行政区范围的图层。

比方说我想获取河南省的数据只需传入行政区图层中河南省图元的Geometry即可。另外如果如果遇到行政区层必须用esriSpatialRelEnum. esriSpatialRelContains这个参数,否则行政区这个图层就不能只获取河南这个省份,它会把河南省的周围省份,河北,湖北,安徽,陕西,山东,山西等省份的图元也添加创建到新图层。

IIdentify接口定义了获得要素图层单个要素的属性的

ILayerFields接口可以直接获取一个要素图层的要素类字段集合

ILayerEffects接口用来设置一个要素图层的透明度,对比度,对比度。以下代码片段演示如何设置要素图层特效:

3.2地图布局

3.2.1PageLayout对象

PageLayout用以显示地图数据,并通过对地图数据进行整饰以便对地图打印输出满足不同行业对GIS出图功能的需求。PageLayout和Map这两个对象看起来非常相似,它们都是视图对象,可以显示地图;也都是图形元素的容器,可以容纳图形元素(Graphics Element)。但是所能够保存的图形类型却是有差别的。PageLayout除了保存图形元素外,还可以保存诸如MapFrame的框架元素(Frame Element)。PageLayout控件上的Map对象被PageLayout的MapFrame对象所管理的。

PageLayout类主要实现了IPageLayout接口,它定义了用于修改页面版式(layout)的方法和属性。

IPageLayout的方法ZoomToWhole方法可以让PageLayout以最大尺寸显示;

IPageLayout的ZoomToPercent方法可以按照输入的比例显示;

IPageLayout的ZoomToWidth方法可以让视图显示的范围匹配控件对象的宽度。

IPageLayout的Page属性用以获取Page对象


ArcGIS Engine基础开发教程(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:移动营业厅装修工程施工组织设计方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: