SuperMap iClient3D for Plugin 技术文档
三维专题图  

3     单值专题图

3.1     概述

单值专题图是将专题值相同的要素归为一类,为每一类设定一种渲染风格,如颜色或符号等,专题值相同的要素采用相同的渲染风格,从而用来区分不同的类别。

单值专题图的专题变量可以是非数值型的描述性属性,如要素的名称,类型以及状态等;也可以是数值型的且用于标识的属性,如要素的唯一标识ID,土地利用类型标识号等;专题变量也可以是数值型的表示量的属性,这时每一个数值的要素会被赋予一种风格,如果数值非常多而且各不相同,不推荐用此方法制作专题图,因为并不能达到区分数据的作用。

单值专题图着重表示要素之间质的差别,一般不表示数量的特征。可用于地质图、地貌图、植被图、土地利用图、政治行政区划图、自然区划图、经济区划图等。

3.2     主要接口

SuperMap iClient3D for Plugin产品中标签专题图类为Theme3DUnique类,其方法及属性见下表。

3.1 Theme3DUnique类的属性列表

类型

名称

描述

Number

count

获取三维单值专题图子项个数 。

Style3D

DefaultStyle

获取或设置三维单值专题图的默认风格,对于那些未在三维单值专题图子项之列的对象使用该风格显示。如未设置,则使用图层默认风格显示

Boolean

isDefaultModellingStyleEnabled

获取或设置专题图层的默认建模风格(包括底部高程、拉伸高度等)是否有效。默认值是false

Theme3DType

type

获取三维专题图的类型 。

String

uniqueExpression

获取或设置三维单值专题图字段表达式。

 

 

3.2 Theme3DUnique类的方法列表

类型

名称

描述

void

add

添加一个三维单值专题图子项到三维单值专题图子项列表中。

void

clear

删除所有三维单值专题图子项。执行该方法后,所有的三维单值专题图子项都被释放,不再可用

void

dispose

释放对象所占用的资源。

Boolean

fromXML

XML 字符串中导入三维专题图信息。

Number

indexOf

返回三维单值专题图中指定子项单值在当前序列中的序号。

void

insert

将给定的三维单值专题图子项插入到指定序号的位置。

void

remove

删除一个指定序号的三维单值专题图子项。

void

reverseStyle

对三维单值专题图中子项的风格进行反序显示。

String

toXML

导出三维专题图信息为XML字符串。

3.3     如何制作单值专题图

制作单值专题图的过程大致为:

1)  创建单值专题图,设置专题图字段表达式(Theme3DUnique.set_uniqueExpression(String));

2)  新建单值专题图子项(Theme3DUniqueItem),并逐个设置专题图子项的渲染风格,如下表;

3.3 设置单值专题图子项的属性列表

类型

名称

描述

String

caption

获取或设置三维单值专题图子项的名称。

Boolean

isModellingStyleEnabled

获取或设置专题图子项的建模风格(包括底部高程、拉伸高度等)是否有效。默认值是false

Boolean

isVisible

获取或设置三维单值专题图子项是否可见。

Style3D

style3D

获取或设置三维单值专题图子项的显示风格。

String

unique

获取或设置三维单值专题图子项的单值。

 

3)  通过Theme3DUnique.add()方法依次将专题图子项添加到单值专题图子项列表中;

4)  将制作的单值专题图添加到场景中显示。

制作单值专题图的代码具体如下:

function addThemeUnique() {

    var themeUnique = new SuperMap.Web.Realspace.Theme3DUnique();

    themeUnique.set_uniqueExpression("NAME");

 

    var style = new SuperMap.Web.Core.Style3D();

    var item1 = new SuperMap.Web.Realspace.Theme3DUniqueItem();

    item1.set_unique("北京");

    var color1 = new SuperMap.Web.Core.Color(249, 151, 185, 255);

    style.set_fillForeColor(color1);

    item1.set_style3D(style);

 

    var item2 = new SuperMap.Web.Realspace.Theme3DUniqueItem();

    item2.set_unique("昌平");

    var color2 = new SuperMap.Web.Core.Color(118, 199, 187, 255);

    style.set_fillForeColor(color2);

    item2.set_style3D(style);

 

    var item3 = new SuperMap.Web.Realspace.Theme3DUniqueItem();

    item3.set_unique("大兴");

    var color3 = new SuperMap.Web.Core.Color(252, 181, 148);

    style.set_fillForeColor(color3);

    item3.set_style3D(style);

 

    var item4 = new SuperMap.Web.Realspace.Theme3DUniqueItem();

    item4.set_unique("顺义");

    var color4 = new SuperMap.Web.Core.Color(187, 167, 207, 255);

    style.set_fillForeColor(color4);

    item4.set_style3D(style);

 

    var item5 = new SuperMap.Web.Realspace.Theme3DUniqueItem();

    item5.set_unique("通县");

    var color5 = new SuperMap.Web.Core.Color(153, 183, 197, 255);

    style.set_fillForeColor(color5);

    item5.set_style3D(style);

 

    var item6 = new SuperMap.Web.Realspace.Theme3DUniqueItem();

    item6.set_unique("怀柔");

    var color6 = new SuperMap.Web.Core.Color(150, 204, 153, 255);

    style.set_fillForeColor(color6);

    item6.set_style3D(style);

 

    var item7 = new SuperMap.Web.Realspace.Theme3DUniqueItem();

    item7.set_unique("延庆");

    var color7 = new SuperMap.Web.Core.Color(183, 209, 118, 255);

    style.set_fillForeColor(color7);

    item7.set_style3D(style);

 

    var item8 = new SuperMap.Web.Realspace.Theme3DUniqueItem();

    item8.set_unique("密云");

    var color8 = new SuperMap.Web.Core.Color(255, 211, 112, 255);

    style.set_fillForeColor(color8);

    item8.set_style3D(style);

 

    var item9 = new SuperMap.Web.Realspace.Theme3DUniqueItem();

    item9.set_unique("平谷");

    var color9 = new SuperMap.Web.Core.Color(219, 210, 115, 255);

    style.set_fillForeColor(color9);

    item9.set_style3D(style);

 

    style.set_fillForeColor(new SuperMap.Web.Core.Color(189, 235, 255, 255));

themeUnique.set_DefaultStyle(style);

 

    themeUnique.add(item1);

    themeUnique.add(item2);

    themeUnique.add(item3);

    themeUnique.add(item4);

    themeUnique.add(item5);

    themeUnique.add(item6);

    themeUnique.add(item7);

    themeUnique.add(item8);

themeUnique.add(item9);

//将专题图添加到场景中显示

    addThemeToScene(themeUnique);

}

将专题图添加到场景中显示的主要代码如下,其他专题图也将参照此方法实现在场景中显示。

function addThemeToScene(theme3D){

    lyr3ds = scene.get_layer3Ds();

    if(themeName!=null){

        lyr3ds.removeAt(themeName);

    }

    var dataName = "Beijing@BeijingVector";

   layer3DTheme=lyr3ds.addTheme3D(sceneUrl,dataName,dataName,SuperMap.Web.Realspace.Layer3DType.VECTOR,theme3D);

    themeName = layer3DTheme.get_name();

}

制作的单值专题图显示效果如下图:

 

说明: E:\文档编写工作\00技术文档\客户端\pic-Theme\Unique.png

31 单值专题图


  版权所有©2000-2016 北京超图软件股份有限公司。保留所有权利。