- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于ArcObjects地图输出功能探究
基于ArcObjects地图输出功能探究[摘 要] 地图输出是空间数据可视化中最常用、最有效的途径。当前,国际领先的GIS基础平台ArcGIS在我国的应用日益广泛。但是,其地图输出模块常不能满足我国制图的特殊需求,鉴于此,本文运用ArcObjects组件扩展等措施,实现GIS环境中地图输出自动化,以满足我国特殊的制图要求
[关键词] 地图输出 ArcObjects GIS
1.引言
地图输出是将抽象的地理空间数据转换为可视化地图图形的过程,是GIS空间地理数据可视化中最常用、最有效的途径。提高地图输出的智能化水平具有重要意义。当前国际领先的GIS基础平台ArcGIS在我国的应用日益广泛,然而其地图输出模块常不能满足我国制图的特殊需求。本文论述了运用ArcObjects组件并对其进行扩展实现在GIS环境中地图输出功能的自动化,使其基本满足我国特殊制图输出的需求
2.ArcObjects简介及其组件式扩展
ArcGIS是由一套共享GIS组件组成的通用组件库实现,这些组件被称ArcObjects[1]。ArcObjects(简称AO)包含了大量的可编程组件,从细粒度的对象到粗粒度的对象,涉及面极广,为开发者集成了全面的GIS功能。同时,它是一个开放体系,用户可以运用COM组件扩展机制来编写自定义的ArcObjects组件,实现特定要求的GIS功能
ArcObjests的组件式扩展(ExtendingArcObject AO扩展)的过程是创建新的组件,通过对Arc0bjests组件进行二进制一级的代码执行重用,实现客户化的组件对象,并无缝地集成到ArcGIS环境的过程。AO扩展组件对象一般继承于Arc0bjests核心组件,具有Arc0bjests核心组件的一些特点
3.地图输出
地图输出是制图者把地理数据转化为以形象直观的地图符号来表达的[2],便于用图者理解的地图图形的过程。作为国际通用软件平台的ArcGIS,在海量空间数据管理和空间分析等方面,具有国内外其它GIS所难以替代的优点。然而相较这些方面,其在制图表达、地图可视方面,显得稍微逊色一些。特别对是中国特殊的制图表达,必须对其加以扩展才能很好地实现
3.1 数据加载及可视域确定
3.1.1 加载实现
从空间数据中读取相应的空间数据加载在ArcGIS的布局控件中去[3],并实现几何过滤,是实现地图可视最基本的一步。可视域确定与数据加载的基本过程:打开工作空间―打开FeatureClass―将FeatureClass放置到创建的FeatureLayer中,进行空间可视域几何过滤并最后加载到布局窗口中[4]
3.1.2 存在问题
在空间可视域的几何过滤中存在问题。ArcGIS中,空间可视域的几何过滤主要有两种方式:
(1)利用MapControl控件的VisibleRegion属性
该方法实现起来虽然简单方便,但用户获取到的数据实质上还是整个图层,通过漫游或缩小其它要素还是能够显示出来
(2)利用IMap接口的C1ipGeometry属性
该方法简单易行,基本达到功能要求,漫游或缩小时区域外其它要素不会显示出来,但该方法实现的是对IMap的所有图层进行剪切,若只对某一图层进行过滤显示,其它图层全要素显示,则需另辟蹊径
3.1.3 扩展措施――CMapFilter类扩展
基于ArcGIS可视域几何过滤存在的问题,作者的思路是,不使用ArcGIS默认的过滤机制,通过一个自定义类(CMapFiIter),将输入的图层按任意空间和属性关系过滤,转换为新的图层,将新图层加到布局窗口中去,并将原来图层舍弃[5]
class CMapFilter
{
public;
CMapFilter();
virtual CMapFilter();
ILayerPtr FilterLayer(IFeatureLayerPtr ipInFeatureLayer, IGeometryPtr ipFltGeo, esriSpatialRelEnum spatialRel = esriSpatialRelContains, CString strSpatialRelDesc = “ ”,CString strWhereClause = “ ”);
}
3.2 符号化渲染
3.2.1 符号化渲染实现
ArcGIS实现地图符号化有简单渲染、唯一值渲染、分级渲染、图表渲染等多种方式。每种渲染方式在ArcGIS中都有相应的实现组件与接口。我们主要采用两种方式实现渲染:简单渲染和唯一值渲染[6]
3.2.2 存在问题及解决方案
一些简单的符号可以采用ArcObj
文档评论(0)