logo资料库

基于ArcGISEngine的专题地图制作的实现.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
安徽农业科学, Journal of Anhui Agri. Sci. 2007, 35( 14) : 4144- 4147 责任编辑 王丽莉 责任校对 王 淼 基于 Ar cGIS Engine 的专题地图制作的实现 黄勇奇 1, 2, 韦合勇 3, 谢玉波 4, 5 ( 1.中国科学院研究生院, 北京 100049; 2.中国科学院遥感应用研究所, 北京 100101; 3.中冶 集团 华冶 资 源公司第一分公司, 河北邯郸 056003; 4.武汉大学测绘遥感信息工程国家重点实验室, 湖北武汉 430079; 5.华北计算技术研究所, 北京 100083) 摘要 专题制图是按照特定专题渲染地图的过程。使用专题渲染在地图上显示数据时, 在数据列表中几乎无法显现的样式和趋势可 以清晰地展现在人们面前。ArcEngine 有着非常丰富的专题地图的制作功能, 它改善和优化了地图制图过程, 提高了制图效率和现有 数据利用率。笔者就如何应用 ArcEngine 制作专题地图并结合实例进行了介绍。 关键词 专题地图; 专题变量; ArcEngine; 符号库 中图分类号 TP182 文献标识码 A 文章编号 0517- 6611( 2007) 14- 04144- 04 ( Graduate University of Chinese Academy of Sciences, Beijing 100049) Realization of Cartography of Thematic Map Based on ArcGIS Engine HUANG Yong!qi et al Abstract Cartography of thematic map was the process of rendering a map according to a given theme. When geographic data was displayed on a map by rendering, the distribution and trend displayed hardly in the data table could display distinctly before people. ArcEngine had abundant cartography function of thematic map, which improved and optimized the process of map cartography and enhanced cartography efficiency and the use ratio of a given data. In this paper, how to apply the thematic map cartography function of ArcEngine was discussed. Key words Thematic map; Thematic variable; ArcEngine; Symbol database 专题 地 图( Thematic Map) 是 着 重 表 示 一 种 或 几 种 自 然 或社会经济现象的地理分布, 或强调表示这些现象的某一 方面特征的地图。专题制图是按照特定专题渲染地图的过 程。专题通常使用数据集中的一组或多组数据, 并利用颜色 渲染、填充图案、符号、直方图和饼状图表示数据, 根据数据 中的特定值指派这些颜色、图案或符号, 从而创建不同的专 题地图。 GIS 脱胎于计算机地图制图, 但又以其非凡的地理空 间分析功能改善和优化了制图过程, 不仅提高了制图效率, 还能提高现有数据利用率。ArcGIS Engine 简称 ArcEngine, ArcEngine 是 由 ESRI 公 司 提 供 的 基 于 ArcObject 的 面 向 开 发的嵌入式 GIS 产品。应用 ArcEngine 做 GIS 应用开发时彻 底 脱 离 了 ArcGIS 桌 面 产 品 ArcMap, 提 高 了 开 发 效 率 , 为 GIS 用户提供了一个低成本、可定制的、轻量级的 GIS 应用 选择。它是由一组核心 ArcObject 包组成, 其对象是与平台 无关的, 它能够在各种编程接口中调用; 开发人员能够通过 它 提 供 的 强 大 的 工 具 构 建 定 制 的 GIS 和 制 图 应 用 。 在 ArcEngine 产 品 中, 它有 着 非 常 丰 富 的 专 题 地 图 的 制 作 功 能, 能以专题符号化方法显示地理特征要素。 1 ArcEngine 的专题地图制作功能的实现与开发实例 在 ArcEngine 中主要提供 了 分 别 对 应着 制 作 单 值 专 题 图, 唯一值专题地图、分段专 题 图、等 级 符 号 图 、点 密 度 图 、 柱状图/三维柱状图、饼状图/三维饼图、堆积图/三维堆积图 功 能 的 I SimpleRenderer、I UniqueValueRender、I Class Breaks Renderer、I Poportional Symbol Renderer、I Dot Density Renderer、I Pie Chart Renderer( I3D Chart Symbol) 、I Bar Chart Symbol( I3D Chart Symbol) 、I Stacked Chart Symbol( I3D Chart Symbol) 的渲染接口, 它们主要存在于 ESRI.Arc GIS.Carto 库 中, 在开发时要用 Imports 语句将它引用进来。 在制作专题地图时, 关键的一步就是将地图的图层与 渲 染 组 件 对 象 结 合 在 一 起 , 因 此 这 里 要 用 到 IGeoFeature 作者简介 黄勇奇( 1976- ) , 男, 江西 高安 人, 博 士, 讲 师, 从事 地图 学与 地理信息系统方面的理论与应用研究。 收稿日期 2007! 01! 19 Layer 接口, 其主要功能是控制一个图层特征要素的表现形 式 , 它 可 以 代 表 地 图 中 任 何 一 个 矢 量 图 层 , 该 接 口 下 的 Renderer 属性是对一个图层进行渲染的入口。例如, 假设已 经 创 建 好 了 一 个 点 密 度 图 渲 染 组 件 对 象 pDotDensity Renderer, 那么通过以下代码就可以就其与图层挂钩: p Geo Feature Layer. Renderer=p Dot Density Renderer。其他渲染接 口也和点密度图渲染接口一样与地图图层挂钩, 从而实现专 题地图的制作。以下是实现点密度图渲染的代码, 仅供参考: Dim Geo Feature Layer As I Geo Feature Layer//定 义 Geo Feature Layer 组件对象类 Geo Feature Layer = Main Ax Map Control.Map.Layer( 0) // 将地图中的一个矢量图层赋给它 Dim p Table Hist As I Table Histogram = New Basic Table Histogram//定义统计组件对象类 p Table Hist.Field = C Str ( List Box Symbol Selected Fields.Items.Item( 0) ) //设置统计字段 Dim pTable As ITable//定义数据表组件对象类 pTable = Geo Feature Layer.Feature Class//将矢量图层的 特征类赋给它 p Table Hist.Table = p Table//设置统计数据表 Dim varNewValues As Object Dim varNewCounts As Object Dim pBasicHist As IBasic Histogram pBasicHist = pTableHist pBasicHist.GetHistogram( varNewValues, varNewCounts) //按统计字段对数据表进行统计 Dim pClassify As IClassify = New StandardDeviation pClassify.SetHistogramData ( var New Values, var New Counts) Dim p Stat Res As I Statistics Results//定义统计结果组件 对象类 p Stat Res = p Basic Hist//定义点密度图渲染组件对象 Dim pDotDensityRenderer As IDotDensityRenderer = New DotDensityRenderer
35 卷 14 期 黄勇奇等 基于 ArcGIS Engine 的专题地图制作的实现 4145 Dim pRendererFields As IRendererFields//定 义 点 密 度 图 渲染组件对象的渲染字段对象 示。IEnumStyleGalleryItem 枚举接口用来访问一个已选择的 符号 集 的 各 个 符 号 成 员, IStyleGalleryItem 接口 用 来 访 问 某 pRendererFields = pDotDensityRenderer pRendererFields.AddField( CStr( List Box Symbol Selected 个具体的符号。 Fields.Items.Item( 0) ) ) //定义点密度图渲染的符号 Dim pDotDensityFillS As IDotDensityFillSymbol = New Dot DensityFillSymbol pDotDensityFillS.DotSize = CDbl ( Numeric Up Down D D Symbol Size.Text) //点符号尺寸 pDotDensityFillS.DotSpacing = C D bl ( Numeric Up Down Dot Space.Text) // 点符号之间的重叠度 pDotDensityFillS.FixedPlacement = Check Box D D Fix Placement.Checked//点符号位置是否固定 Dim BackColor As IRgbColor BackColor = New RgbColor BackColor.Red=CInt( PictureBoxDDBackColor.Back Color. R) 图 1 符号库中符号的访问 下面就对以上几个渲染接口进行说明并给出了开发实 BackColor.Green = CInt ( PictureBoxDDBackColor.Back 例, 实例的开发环境是 VB.NET。 Color. G) BackColor.Blue = CInt ( PictureBoxDDBackColor.Back Color. B) pDotDensityFillS.BackgroundColor = BackColor//点 密 度 图渲染的背景颜色 pDotDensityFillS.Outline = GDDOutlineSymbol Dim pSymbolArray As ISymbolArray//定义符号数组 pSymbolArray = pDotDensityFillS pSymbolArray.AddSymbol( GDDSymbol) // 添 加 点 密 度 图 渲染的点符号到符号数组中去 pDotDensityRenderer.DotDensitySymbol = pSymbolArray// 设置点密度图渲染的点符号 pDotDensityRenderer.DotValue = pStatRes.Minimum//确 定一个点代表多少值 pDotDensityRenderer.ColorScheme = "Custom"//点密度图 渲染采用的颜色模式 pDotDensityRenderer.CreateLegend ( ) //创建点密度图渲 染图例 pDotDensityRenderer.MaintainSize = Check Box D D Maintain Size.Checked//点符号大小是否固定 GeoFeatureLayer.Renderer = pDotDensityRenderer//将 点 密度图渲染对象与渲染图层挂钩 Dim pActiveView As IActiveView pActiveView = MainAxMapControl.Map pActiveView.PartialRefresh( esriViewGeography, Nothing, Nothing) //刷新地图 AxTOCControlMain.Update( ) //刷新 TOC 控件 另外如果要用到符号库中的符号时, 就要 用 到 Server Style Gallery 组 件 对 象 类 , 它 实 现 了 IStyleGallery 接 口 和 IStyleGalleryStorage 接口。IStyleGalleryStorage 接口主要是读 取符号库文件( *.ServerStyle) 和设定目标符号库。在一个符 号库文件中有若干类符号, 例 如面 状 符 号 、线 状 符 号 、点 状 符号, 每类符号中又包含了若干个具体的符号, 如图 1 所 ( 1) ISimpleRenderer 接口。此接口是单一渲 染 接口, 即 一个图层中的所有特征要素都用一个图例来表示。该接口 下有一个 Symbol 属性, 该属性是一 个 ISymbol 类 型 。有 31 个 组 件 对 象 类 实 现 了 ISymbol 接 口 , 一 般 可 能 用 的 实 现 ISymbol 接口的组件对象类有 4 个, 分别是图片点图 Picture Marker Symbol 组件对象类, 单一面图 SimpleFillSymbol 组件 对 象 类 , 单 一 点 图 例 Simple Line Symbol 组 件 对 象 类 , 单 一 线图例 Simple Marker Symbol 组件对象类。 ( 2) IUnique Value Render 接口。此接口是唯一值渲染接 口, 即根据要素某一个属性字段来决定图例类型, 属性字段 值相同的就用同一个图例来表示。Unique Value Renderer 组 件对象类实现了这个接口, 这个接口下有 2 个重要的属性, 即 Value( Index)( 存储属性字段可能出现的不同的属性值) 和 Symbol( Value )( 存储针对不同的属性值所用的不同的符 号) , 它们之间是一一对应的。唯一值渲染效果如图 2 所示。 图 2 唯一值渲染效果 ( 3) IClassBreaksRenderer 接 口 。 此 接 口 为 分 段 渲 染 接 口, 即在图层中的特征要素中根据它其中的一个数值属性 的大小范围而用不同的符号。Class Breaks Renderer 组件对 象类实现了 这 个 接 口, 这 个 接口 下 有 2 个 重 要 的 属 性, 即
4146 安徽农业科学 2007 年 Break( Index)( 存 储 每 个 分 段 的 值) 和 Symbol( Index)( 存 储 对应着每个分段的符号) , 它们之间也是一一对应的。特别 值 得 注 意 的 是 , 对 属 性 值 进 行 分 段 有 自 然 间 隔 分 段 ( NaturalBreaks Class) 、等 间 隔 分 段( EqualInterval Class) 、自 定 义 间 隔 分 段 ( DefinedInterval Class) 、 标 准 差 间 隔 分 段 ( StandardDeviation Class) 、四 分 位 间 隔 分 段( Quantile Class) 等多种方法, 使用时可根据不同的需要来选择。分段渲染效 果如图 3 所示。 ( 4) I Proportional Symbol Renderer 接口。此接口为等级 符号渲染接口, 即在图层中的特征要素根据其某个数值属 性 的 值 的 大 小 按 比 例 的 进 行 渲 染 。 Proportional Symbol Renderer 组件对象类实现了这个接口, 该接口下有 2 个重 要的属性, 即 Max Data Value ( 存储属性值的最大值) , Min Data Value( 属性值的最小值) 和 Min Symbol( 对应 于 属 性 值 最小值的符号) , 有 了 这 3 个属 性, 就 可 以 确 定 每 个 属 性值 所对应的符号大小。等级符号渲染效果如图 4 所示。 ( 5) Idot Density Renderer 接口。此接口为点密度渲染接 口, 仅适用于形状为多边形的地理特征要素, 在图层中的特 征要素根据其某个数值属性进行画点渲染, 点的个数由其 属性值来确认。Dot Density Renderer 组 件 对 象 类 实 现 了这 个接口, 这个接口下有个重要的属性, 即 Dot Value( 一 个 点 代表多少值) , 根据它可以确定每个多边形内的点数。点密 度渲染效果如图 5 所示。 对象类实现了这个接口。这个接口下有 3 个重要的属性, 即 Min Size( 代表 饼 图 的 最 小 尺 寸) 、Min Value( 代 表 对 应 着 饼 图 最 小 尺 寸 的 数 值 属 性 最 小 值) 和 Proportional By Sum( 表 明饼图的尺寸是否由数值属性值的总和确定) 。另外如果要 求有三维效果, 还应该定义一个 I3D Chart Symbol 组件对象 类, 在饼图中, 该组件对象类有 2 个重要的属性即 Thickness 和 Tilt, 前者可以设置饼图的厚度, 后 者 可 以 设 置 饼图的倾 斜角度。饼图/三维饼图渲染效果如图 6 所示。 ( 6) I Pie Chart Renderer( I3D Chart Symbol) 接口。此接口 为饼图/三维饼图渲染接口, 仅适用于形状为多边形的地理 特征要素, 在图层中的特征要素可以根据其多个数值属性 进 行 画 饼 图 渲 染 。 在 实 现 饼 图 渲 染 时 , 先 定 义 一 个 IRendererFields 组 件 对 象 类, 该 组 件 对 象 类 用 来 访 问( 包 括 添加、删除, 读取) 图层中的多个数值属性字段, 饼图片 ( Slice) 的 数 量 由 数 值 属 性字 段 的 个 数 来 确 认 , 饼 图 片 的 大 小由其各个属性值的大小来确认。Pie Chart Renderer 组 件 ( 7) I Bar Chart Symbol( I3 D Chart Symbol) 接口。此接口 为柱状图/三维柱状图渲染接口, 仅适用于形状为多边形的 地理特征要素, 在图层中的特征要素可以根据其多个数值 属性进行画柱状图渲染。在实现柱状图渲染时, 先定义一个 IRenderer Fields 组件对象类, 该组件对象类用来访问( 包括 添加、删除, 读取) 图层中的多个数值属性字段, 柱状图的条 ( Bar) 的数量由数值属性字段的个数来确认, 条的长度由其
35 卷 14 期 黄勇奇等 基于 ArcGIS Engine 的专题地图制作的实现 4147 三维堆积图渲染效果如图 8 所示。 各个属性值的大小来确认。Bar Chart Symbol 组件对象类实 现了 这 个 接 口 。这 个 接 口 下 有 3 个 重 要 的 属 性 , 即 Show Axes ( 代表柱 状 图 是 否 显 示 坐 标 轴) 、Width ( 代 表 条 的 宽 度) 、Spacing( 代表条与条之间的间隔) 和 Vertical Bars( 表明 条是竖向还是横向的) 。另外如果要求有三维效果, 还应该 定 义 一 个 I3D Chart Symbol 组 件 对 象 类, 在柱 状 图 中 , 该 组 件对象类有一个重要的属性即 Thickness, 它可以设置柱状图 条的厚度。柱状图/三维柱状图渲染效果如图 7 所示。 2 结语 专 题 地 图 是 具 有 强 大 的 分 析 功 能 和 数 据 可 视 化 的 方 法。以图形来表示数据, 使人们可以在地图上看到数据。使 用专题渲染在地图上显示数据时, 在数据列表中几乎无法 显现的样式和趋势可以清晰地展现在人们面前, 例如柱状 图、堆积图和饼状图使使用者可以比较数据, 集中每个记录 的数据。ArcEngine 有着非常丰富的专题地图的制作功能, 它改善和优化了地图制作过程, 提高了制图效率和现有数 据利用率。 参考文献 [1] 蔡孟裔, 毛赞, 田得 森, 等.新 编地 图学 教程[M].北京: 高 等 教 育 出 版 社, 2000. [2] 马耀峰.专题 要素 表示方 法符 号化 视角 的讨论[J].陕西 师大 学报: 自 然科学版, 1994( 3) : 64- 69. [3] 殷畅.可视化及其在 GIS 中的应用展望[J].地图, 2001( 3) : 18- 20. [4] 罗磊.结 合 GIS 的 遥感 专题地 图编 制 与 应 用[J].林 业 资 源 管 理, 1999 ( 4) : 64- 67. [5] 徐世永.地理 信息 系统在 苏北 云台 山区 林业专 题制 图 中 的 应 用[M]. 林业资源管理, 1999( 2) : 47- 51. [6] 田德森.现代地图学理论[J].北京: 测绘出版社, 1991. [7] 杨山.桌面地 图信 息系统 MapInfo 在城 市规 划专 题制图 中的 应用 研 究[J].城市研究, 1998( 5) : 29- 31. [8] 李伟, 周 勇前.专题 制图符 号库 的设 计与 实现[J].武 汉测 绘科 技大 学 学报, 2002, 22( 3) : 263- 265. [9] 薛 安, 李 天 宏 , 杨 海 宏.线 状 地 图 符 号 制 作 系 统 的 设 计 与 实 现[J].地 图, 1997( 4) : 8- 10. ( 8) IStacked Chart Symbol( I3D Chart Symbol) 接口。此接 口为堆积图/三维堆积图渲染接口, 仅适用于形状为多边形 的地理特征要素, 在图层中的特征要素可以根据其多个数 值属性进行画堆积图渲染。在实现堆积图渲染时, 先定义一 个 I Renderer Fields 组 件 对 象 类 , 该 组 件 对 象 类 用 来 访 问 ( 包括添加、删除, 读取) 图层中的多个 数值 属 性 字 段, 堆 积 图的条( Bar) 中的段的数量由数值属性字段的个数来确认, 条 中 的 段 的 长 度 由 其 各 个 属 性 值 的 大 小 来 确 认 。Stacked Chart Symbol 组件对象类实现了这个接口。这个接口下有 3 个重要的属性, 即 Width( 代 表 条 的宽 度) 、Fixed( 代 表 条 的 长 度 是 否固 定) 和 Vertical Bars ( 表 明 条 是 竖 向 还 是 横 向 的) 。另外如果要求有三维效果, 还应该定义一个 I3D Chart Symbol 组件对象类, 在堆积图中, 该组件对象类有一个重要 的属性即 Thickness, 它可以设置堆积图条的厚度。堆积图/ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ( 上接第 4098 页) [13] ELVIRA H!RANDL.Comparative analysis of genetic divergence among sexual ancestors of apomictic complexes using isozyme data[J].International Journal of Plant Sciences, 2004, 165( 4) : 615- 622. of ASG !1 during gametogenesis in apomictic guinea grass ( Panicum maximum) [J]. Journal of Plant Physiology, 2005, 162: 1141- 1148. fertilization[J].Plant Physiol, 1995, 108: 1345- 1352. [12] ANNA M K, ROSS A B, ABDUL M.Chaudhury. Apomixis: Molecular strategies for the generation of genetically identical seeds without 科技论文写作规范———缩略语 # """""""""""""""""""""""""""""""""""""""""""""# " " " " " " " " " " " " " " " " " " " " " " #"""""""""""""""""""""""""""""""""""""""""""""# 采用国际上惯用的 缩 略 语。如 名 词 术 语 DNA( 脱 氧 核 糖 核酸) 、RNA( 核 糖 核 酸) 、ATP( 三 磷 酸 腺 苷) 、 ABA( 脱落酸) 、ADP( 二磷酸腺苷) 、CK( 对照) 、CV( 变异系数) 、CMS( 细胞质雄性不育性) 、IAA( 吲哚乙酸) 、 LD( 致死剂量) 、NAR( 净同化率) 、PMC( 花粉母细胞) 、LAI( 叶面积指数) 、LSD( 最小显著差) 、RGR( 相对生长 率) , 单位名缩略语 IRRI( 国际水稻研究所) 、FAO( 联合国粮农组织) 等。对于文中有些需要临时写成缩写的 词( 如表及图中由于篇幅关系以及文中经常出现的词而写起来又很长时) , 则可取各主要词首字母写成缩 写, 但需在第一次出现处写出全称, 表及图中则用注解形式在下方注明, 以便读者理解。
分享到:
收藏