MapObejcts组件应用设计(地图数据符号化).doc

上传人:桔**** 文档编号:559815301 上传时间:2022-09-27 格式:DOC 页数:11 大小:128.01KB
返回 下载 相关 举报
MapObejcts组件应用设计(地图数据符号化).doc_第1页
第1页 / 共11页
MapObejcts组件应用设计(地图数据符号化).doc_第2页
第2页 / 共11页
MapObejcts组件应用设计(地图数据符号化).doc_第3页
第3页 / 共11页
MapObejcts组件应用设计(地图数据符号化).doc_第4页
第4页 / 共11页
MapObejcts组件应用设计(地图数据符号化).doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《MapObejcts组件应用设计(地图数据符号化).doc》由会员分享,可在线阅读,更多相关《MapObejcts组件应用设计(地图数据符号化).doc(11页珍藏版)》请在金锄头文库上搜索。

1、2.3.1 Symbol对象Symbol对象是图层中的图元的显示符号,在跟踪层中,每个几何对象用一个Symbol对象描述,在Map1.Layers的图层中,每个图层一个Symbol属性,全图层的图元共用一个Symbol对象。1 Symbol.SymbolType属性Map1.Layers中的矢量图层,一个图层中只能有一种类型的图元,按图元的类型分,图层可以分为三种类型:点、线、面,用图层中的Symbol.SymbolType的值标识,可用如下程序判断矢量图层中图元的类型:Private Sub Command1_Click()Dim l As ObjectDim ftype As String

2、For Each l In Map1.LayersIf l.LayerType = moMapLayer Then Select Case l.Symbol.SymbolTypeCase moFillSymbol 2ftype = “面”Case moLineSymbol 1ftype = “线”Case moPointSymbol 0ftype = “点”End SelectEnd IfNext lEnd Sub2 Symbol.Style属性Symbol.Style的值按矢量图层的类型(点、线、面)分成三组,用于点图层,指定点的绘制符号;用于线图层,指定线的类型;用于面图层,指定填充图案。

3、各组的义如下:Symbol.symbolType = 0 (点)符号常量 值 符号moCircleMarker0圆moSquareMarker1长方形moTriangleMarker 2三角形moCrossMarker3十字线moTrueTypeMarker4文字Symbol.SymbolType = 2 (面)符号常量 值 填充方法moSolidFill 0SolidmoTransparentFill 1TransparentmoHorizontalFill 2HorizontalmoVerticalFill 3VerticalmoUpwardDiagonalFill 4Upward Dia

4、gonalmoDownwardDiagonalFill5Downward DiagonalmoCrossFill 6CrossmoDiagonalCrossFill 7Diagonal CrossmoLightGrayFill 8Light Gray FillmoGrayFill 9Gray FillmoDarkGrayFill 10DarkGray Fill请在MapObjects2的帮助中索引 FillStyle Constants LineStyle Constants MarkerStyle Constants查看三组图案4 Symbol. Color 属性Color As OLE_C

5、OLOR用Color指定的颜色绘制Symbol.Style指定的符号(线、填充图案)。例 为点图层、线图层、面图层设置显示风格及颜色.(参见光盘中的Symbol目录中的程序)Dim sym As MapObjects2.SymbolPrivate Sub Form_Load()Dim strDataPath As StringDim dc As New MapObjects2.DataConnectionDim lyr As New MapObjects2.MapLayer 创建图层对象strDataPath = ReturnDataPath(world) 数据库目录名dc.Database

6、= d:/mobook/sample/data/worlddc.Database = strDataPathIf Not dc.Connect Then EndSet lyr.GeoDataset = dc.FindGeoDataset(Country) 面图层Set sym = lyr.Symbolsym.Style = moVerticalFillsym.Color = 255Map1.Layers.Add lyr 在地图窗口中添加Country图层Set lyr = New MapLayerSet lyr.GeoDataset = dc.FindGeoDataset(rivers) 线图

7、层lyr.Symbol.Style = moSolidlyr.Symbol.Color = moBlueMap1.Layers.Add lyrSet lyr = New MapLayerSet lyr.GeoDataset = dc.FindGeoDataset(Cities) 点图层Set sym = lyr.Symbolsym.Style = moCircleMarkersym.Color = moYellowMap1.Layers.Add lyrSet lyr = New MapLayerSet lyr.GeoDataset = dc.FindGeoDataset(Lakes) 面图层M

8、ap1.Layers.Add lyr 每次运行显示不同的颜色及图案End Sub多次运行这些程序可以看出,Map1.Layers.Item(“Lakes”) 图层没有指定Symbol.Color的值,每次运行Lakes层的颜色及图案都不同。从这个例子的运行结果可见,Map1.Layers.Item(“Lakes”).Symbol是一个图层全部地图要素的共用符号,因此全图层的所有的Lake都显示成同一种颜色。下一节的专题地图制作中,每个图层对应一个Symbol数组,要素用多个Symbol符号绘制。习题1 编写程序实现Symbol目录中样例程序的功能,每个图层的Symbol指定各种值,观看显示效果

9、。2 以习题1为基础,为图层的Symol.Size 、Symol.OutLine、Symol.Rotation设置值。总结出这3个属性的含义。2.3.2专题地图制作在Mapobjects中,描述数据与地图符号之间的映射关系的对象称为Renderer,用于制作专题地图,又称为专题地图制作器。MapObjects可制作九种专题地图,对应的Renderer是:MapObjects的专题地图制作器对象对象名称解释ValueMapRenderer唯一值ClassBreaksRenderer范围值DotDensityRenderer点密度图ChartRenderer饼图和棒图LabelRenderer文字

10、标签LabelPlacer文字标签GroupRenderer用于多个RendererEventRenderer用于测量数据ZRenderer用Z维数据作专题图样例在ThemeMap目录中,样例中地图窗口中Layers(“China”)图层是中国省级行政区划图,图层的属性数据表中Code和uid字段数据用于制作专题地图。样例显示窗口中的每个按钮制作一种类型专题地图。先运行样例程序获得每种专题地图的感性认识。图层的Layers(n).Renderer属性是专题地图制作器。以下语句定义了地图数据与制图符号之间的映射关系:Dim strings As New MapObjects2.strings 字

11、符串集合Set ly = Map1.Layers(“China”)ly.Renderer.Field = “Code”制作专题地图的数据字段名ly.Renderer.Value(i) = Val(strings(i)从Code字段映射ly.Renderer.Symbol(i).Color = moRed + i * 2显示的颜色1 ValueMapRenderer专题地图ValueMapRenderer专题地图称为唯一值专题地图,制图属性字段的一个唯一值用一个地图符号表示,即重复的值用同一个符号表示,制图符号与属性值之间是一对多的关系。提取一个字段中的非重复值,MapObjects提供了Str

12、ings集合对象,加入到集合中的字符串若与先前加入的字符串重复,则无效。ValueMapRenderer对象的属性中有两个数组:Symbol与Value;它们定义制图符号与属性值的对应关系,元素个数都是ValueMapRenderer.ValueCount。Value数组储存制图字段的唯一值,是Varant类型。Private Sub Command1_Click() ValueMapRender制作专题地图Dim strings As New MapObjects2.stringsDim ly As MapObjects2.MapLayerSet ly = Map1.Layers(“Chin

13、a”)Set recs = ly.Records 寻找Code字段中的非重复值Do While Not recs.EOFstrings.Add Str(recs(“Code”).Value)recs.MoveNextLoopSet ly.Renderer = New ValueMapRendererly.Renderer.Field = “Code”制作专题地图的数据字段名 add the unique values to the rendererly.Renderer.ValueCount = strings.Count 在使用Value及Symbol数组前执行For i = 0 To st

14、rings.Count 1 共有Count个非重复值ly.Renderer.Value(i) = Val(strings(i)从Code字段映射ly.Renderer.Symbol(i).Color = moRed + i * 2显示的颜色Next iMap1.RefreshEnd Sub2 ClassBreaksRenderer专题地图ClassBreaksRenderer对象根据数据的逻辑分组,每组用一个符号(或颜色)显示地图。对于每一种分组方案,必须指定分组数,每组数值的上下界,每组对应的地图符号(或颜色)。常见的数据分组方法有:等间距法、分位数法、标准方差法、自然分割法。Private

15、 Sub Command2_Click() ClassBreakRenderer专题地图Dim stats As MapObjects2.StatisticsDim r As MapObjects2.ClassBreaksRendererDim ly As MapObjects2.MapLayerSet ly = Map1.Layers(“China”) 中国省级政区图,面图层Set ly.Renderer = New MapObjects2.ClassBreaksRendererly.Renderer.Field = “uid” 制作专题数据字段Set r = ly.RendererSet stats = ly.Records.CalculateStatistics(“uid”) 计算uid字段的统计值Dim breakVal As DoublebreakVal = sta

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号