com.supermap.mapping
类 ThemeRange

java.lang.Object
  继承者 com.supermap.mapping.Theme
      继承者 com.supermap.mapping.ThemeRange

public class ThemeRange
extends Theme

分段专题图类。

按照提供的分段方法对字段的属性值进行分段,并根据每个属性值所在的分段范围赋予相应对象的显示风格。

注意:

  • 如果通过连接(Join)或关联(Link)的方式与一个外部表建立了联系,当专题图的专题变量用到外部表的字段时,在显示专题图时,需要调用 Layer.getDisplayFilter()Layer.setDisplayFilter() 方法,否则专题图将创建失败。
  • 制作分段专题图,如果首尾区间没有设置风格,且没有设置默认风格,那么无论是采用 addToHead() 还是 addToTail() 方法,首尾区间默认采用用户所添加的第一个分段的风格,比如:总共分5段,addToTail 方法依次添加 [0,1)、[1,2)、[2,4)三段,那么首区间(负无穷,0),尾区间[4,正无穷),采用[0,1)的风格。
  • 示例:
    以下代码示范了如何通过新建一个 ThemeRange 的实例,对其进行设置来实现范围专题图的制作。 假设已经有 MapControl1 对象,并打开了一个工作空间 workspace 对象,工作空间中存在名为 World 的数据源。
     public void makeThemeRangeMap() {
            // 制作分段专题图
            ThemeRange themeRangeMap = new ThemeRange();
            themeRangeMap.setRangeExpression("Pop_1994");
    
            // 填充样式设置
            GeoStyle geoStyle = new GeoStyle();
            geoStyle.setLineColor(Color.WHITE);
            geoStyle.setLineWidth(0.3);
    
            // 人口小于一百万的分段专题图子项的设置
            ThemeRangeItem themeRangeItem1 = new ThemeRangeItem();
            themeRangeItem1.setCaption("小于一百万");
            themeRangeItem1.setEnd(1000000);
            themeRangeItem1.setStart(0);
            themeRangeItem1.setVisible(true);
            geoStyle.setFillForeColor(new Color(209, 182, 210));
            themeRangeItem1.setStyle(geoStyle);
    
            // 人口大于一百万的分段专题图子项的设置
            ThemeRangeItem themeRangeItem2 = new ThemeRangeItem();
            themeRangeItem2.setCaption("大于一百万");
            themeRangeItem2.setEnd(10000000);
            themeRangeItem2.setStart(1000000);
            themeRangeItem2.setVisible(true);
            geoStyle.setFillForeColor(new Color(205, 167, 183));
            themeRangeItem2.setStyle(geoStyle);
    
            // 人口大于一千万的分段专题图子项的设置
            ThemeRangeItem themeRangeItem3 = new ThemeRangeItem();
            themeRangeItem3.setCaption("大于一千万");
            themeRangeItem3.setEnd(100000000);
            themeRangeItem3.setStart(10000000);
            themeRangeItem3.setVisible(true);
            geoStyle.setFillForeColor(new Color(183, 128, 151));
            themeRangeItem3.setStyle(geoStyle);
    
            // 人口大于一亿的分段专题图子项的设置
            ThemeRangeItem themeRangeItem4 = new ThemeRangeItem();
            themeRangeItem4.setCaption("大于一亿");
            themeRangeItem4.setEnd(120000000);
            themeRangeItem4.setStart(100000000);
            themeRangeItem4.setVisible(true);
            geoStyle.setFillForeColor(new Color(164, 97, 136));
            themeRangeItem4.setStyle(geoStyle);
    
            // 人口大于十二亿的分段专题图子项的设置
            ThemeRangeItem themeRangeItem5 = new ThemeRangeItem();
            themeRangeItem5.setCaption("大于十二亿");
            themeRangeItem5.setEnd(Double.MAX_VALUE);
            themeRangeItem5.setStart(120000000);
            themeRangeItem5.setVisible(true);
            geoStyle.setFillForeColor(new Color(94, 53, 77));
            themeRangeItem5.setStyle(geoStyle);
    
            //添加专题图子项到分段专题图对象中
            themeRangeMap.addToHead(themeRangeItem1);
            themeRangeMap.addToTail(themeRangeItem2);
            themeRangeMap.addToTail(themeRangeItem3);
            themeRangeMap.addToTail(themeRangeItem4);
            themeRangeMap.addToTail(themeRangeItem5);
    
            //显示
            MapControl mapControl = new MapControl();
            mapControl.getMap().setWorkspace(workspace);
            Layer layerTheme = mapControl.getMap().getLayers().add(targetDataset,themeRangeMap, true);
            mapControl.getMap().refresh();
    
            //释放占用的资源
            mapControl.dispose();
            workspace.dispose();
        }
     

    构造方法摘要
    ThemeRange()
              默认构造函数,构造一个新的 ThemeRange 对象。
    ThemeRange(ThemeRange themeRange)
              拷贝构造函数,根据给定的 ThemeRange 对象构造一个与其完全相同的新对象。
     
    方法摘要
     boolean addToHead(ThemeRangeItem item)
              把一个分段专题图子项添加到分段列表的开头。
     boolean addToHead(ThemeRangeItem item, boolean normalize)
              把一个分段专题图子项添加到分段列表的开头。
     boolean addToTail(ThemeRangeItem item)
              把一个分段专题图子项添加到分段列表的尾部。
     boolean addToTail(ThemeRangeItem item, boolean normalize)
              把一个分段专题图子项添加到分段列表的尾部。
     void clear()
              删除分段专题图的所有分段子项。
     void dispose()
              释放对象所占用的资源。
     int getCount()
              返回分段专题图中分段的个数。
     double getCustomInterval()
              获取自定义段长。
     ThemeRangeItem getItem(int index)
              返回指定序号的分段专题图中分段专题图子项。
     java.lang.String getOffsetX()
              返回X偏移量。
     java.lang.String getOffsetY()
              返回Y偏移量。
     double getPrecision()
              获取范围分段专题图的舍入精度。
     java.lang.String getRangeExpression()
              返回分段字段表达式。
     RangeMode getRangeMode()
              返回当前的分段模式。
     int indexOf(double value)
              返回分段专题图中指定分段字段值在当前分段序列中的序号。
     boolean isOffsetFixed()
              返回是否固定偏移量。
    static ThemeRange makeDefault(DatasetVector dataset, java.lang.String rangeExpression, RangeMode rangeMode, double rangeParameter)
              根据给定的矢量数据集、分段字段表达式、分段模式和相应的分段参数生成默认的分段专题图。
    static ThemeRange makeDefault(DatasetVector dataset, java.lang.String rangeExpression, RangeMode rangeMode, double rangeParameter, ColorGradientType colorGradientType)
              根据给定的矢量数据集、分段字段表达式、分段模式、相应的分段参数和颜色渐变模式生成默认的分段专题图。
    static ThemeRange makeDefault(DatasetVector dataset, java.lang.String rangeExpression, RangeMode rangeMode, double rangeParameter, ColorGradientType colorGradientType, JoinItems joinItems)
              根据给定的矢量数据集、分段字段表达式、分段模式、相应的分段参数、颜色渐变填充模式和外部连接表项生成默认的分段专题图。
    static ThemeRange makeDefault(DatasetVector dataset, java.lang.String rangeExpression, RangeMode rangeMode, double rangeParameter, ColorGradientType colorGradientType, JoinItems joinItems, double rangePrecision)
              根据给定的矢量数据集、分段字段表达式、分段模式、相应的分段参数、颜色渐变填充模式、外部连接表项和舍入精度,生成默认的分段专题图。
     boolean merge(int index, int count, GeoStyle style, java.lang.String caption)
              合并一个从指定序号起始的给定个数的分段专题图子项,并赋给合并后分段专题图子项显示风格和名称。
     void reverseStyle()
              对分段专题图中分段的风格进行反序显示。
     void setOffsetFixed(boolean value)
              设置是否固定偏移量。
     void setOffsetX(java.lang.String value)
              设置X偏移量。
     void setOffsetY(java.lang.String value)
              设置Y偏移量。
     void setPrecision(double value)
              设置范围分段专题图的舍入精度。
     void setRangeExpression(java.lang.String value)
              设置分段字段表达式。
     boolean split(int index, double splitValue, GeoStyle style1, java.lang.String caption1, GeoStyle style2, java.lang.String caption2)
              根据给定的拆分分段值将一个指定序号的分段专题图子项拆分成两个具有各自风格和名称的分段专题图子项。
     java.lang.String toString()
              输出专题图格式化字符串。
     
    从类 com.supermap.mapping.Theme 继承的方法
    fromXML, getMemoryData, getType, setMemoryData, toXML
     
    从类 java.lang.Object 继承的方法
    equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
     

    构造方法详细信息

    ThemeRange

    public ThemeRange()
    默认构造函数,构造一个新的 ThemeRange 对象。


    ThemeRange

    public ThemeRange(ThemeRange themeRange)
    拷贝构造函数,根据给定的 ThemeRange 对象构造一个与其完全相同的新对象。

    参数:
    themeRange - 给定的分段专题图对象。
    方法详细信息

    getItem

    public ThemeRangeItem getItem(int index)
    返回指定序号的分段专题图中分段专题图子项。有关分段专题图子项详细信息,请参见 ThemeRangeItem 类。

    参数:
    index - 指定的分段专题图序号。
    返回:
    指定序号的分段专题图中分段专题图子项。
    另请参见:
    ThemeRangeItem

    getCount

    public int getCount()
    返回分段专题图中分段的个数。

    返回:
    分段专题图中分段的个数。
    默认值:
    默认值为 0。

    getRangeExpression

    public java.lang.String getRangeExpression()
    返回分段字段表达式。

    通过对比某要素分段字段表达式的值与(按照一定的分段模式确定的)各分段范围的分段值,来确定该要素所在的范围段,从而对落在不同分段内的要素设置为不同的风格。

    返回:
    分段字段表达式。
    默认值:
    默认值为一个空字符串。

    setRangeExpression

    public void setRangeExpression(java.lang.String value)
    设置分段字段表达式。

    通过对比某要素分段字段表达式的值与(按照一定的分段模式确定的)各分段范围的分段值,来确定该要素所在的范围段,从而对落在不同分段内的要素设置为不同的风格。

    参数:
    value - 指定分段字段表达式。

    addToHead

    public boolean addToHead(ThemeRangeItem item)
    把一个分段专题图子项添加到分段列表的开头。

    参数:
    item - 需要添加的分段专题图子项。
    返回:
    如果添加成功返回 true,否则返回 false。

    addToHead

    public boolean addToHead(ThemeRangeItem item,
                             boolean normalize)
    把一个分段专题图子项添加到分段列表的开头。

    参数:
    item - 需要添加的分段专题图子项。
    normalize - 表示是否规整化,normalize 为 true时, item 值不合法,则进行规整,normalize 为 fasle时, item 值不合法则抛异常。
    返回:
    如果添加成功返回 true,否则返回 false。

    addToTail

    public boolean addToTail(ThemeRangeItem item)
    把一个分段专题图子项添加到分段列表的尾部。

    参数:
    item - 需要添加的分段专题图子项。
    返回:
    如果添加成功返回 true,否则返回 false。

    addToTail

    public boolean addToTail(ThemeRangeItem item,
                             boolean normalize)
    把一个分段专题图子项添加到分段列表的尾部。

    参数:
    item - 需要添加的分段专题图子项。
    normalize - 表示是否规整化,normalize 为 true时, item 值不合法,则进行规整,normalize 为 fasle时, item 值不合法则抛异常。
    返回:
    如果添加成功返回 true,否则返回 false。

    split

    public boolean split(int index,
                         double splitValue,
                         GeoStyle style1,
                         java.lang.String caption1,
                         GeoStyle style2,
                         java.lang.String caption2)
    根据给定的拆分分段值将一个指定序号的分段专题图子项拆分成两个具有各自风格和名称的分段专题图子项。注:splitValue 必须在拆分的范围之内。即大于分段专题图子项的起始值(Start)并且小于分段专题图子项的终止值(End),如果不满足上述条件,则抛出异常。

    参数:
    index - 指定的分段专题图子项的序号。
    splitValue - 指定的拆分分段值。
    style1 - 被拆分的两个分段专题图子项中的一个分段专题图子项的名称。
    caption1 - 被拆分的两个分段专题图子项中的一个分段专题图子项的名称。
    style2 - 被拆分的两个分段专题图子项中的另一个分段专题图子项的风格。
    caption2 - 被拆分的两个分段专题图子项中的另一个分段专题图子项的名称。
    返回:
    如果拆分成功返回 true,否则返回 false。

    merge

    public boolean merge(int index,
                         int count,
                         GeoStyle style,
                         java.lang.String caption)
    合并一个从指定序号起始的给定个数的分段专题图子项,并赋给合并后分段专题图子项显示风格和名称。执行该方法后,被合并的对象将被释放,不再可用。

    参数:
    index - 指定的分段专题图子项的序号,并以此序号为起始。
    count - 要合并的分段专题图子项个数,即从指定的序号开始计算。
    style - 合并后的分段专题图子项的风格。
    caption - 合并后的分段专题图子项名称。
    返回:
    如果合并成功返回 true,否则返回 false。

    makeDefault

    public static ThemeRange makeDefault(DatasetVector dataset,
                                         java.lang.String rangeExpression,
                                         RangeMode rangeMode,
                                         double rangeParameter)
    根据给定的矢量数据集、分段字段表达式、分段模式和相应的分段参数生成默认的分段专题图。

    参数:
    dataset - 矢量数据集。
    rangeExpression - 分段字段表达式。
    rangeMode - 分段模式。包括等距离分段法,平方根分段法,标准差分段法,对数分段法,等计数分段法,以及自定义距离法。
    rangeParameter - 分段参数。当分段模式为等距离分段法,平方根分段,对数分段法,等计数分段法其中一种模式时,该参数为分段个数;当分段模式为标准差分段法的时候,该参数不起作用;当分段模式为自定义距离时,该参数表示自定义距离。
    返回:
    根据参数构造得到一个新的 ThemeRange 的对象实例。

    makeDefault

    public static ThemeRange makeDefault(DatasetVector dataset,
                                         java.lang.String rangeExpression,
                                         RangeMode rangeMode,
                                         double rangeParameter,
                                         ColorGradientType colorGradientType)
    根据给定的矢量数据集、分段字段表达式、分段模式、相应的分段参数和颜色渐变模式生成默认的分段专题图。

    参数:
    dataset - 矢量数据集。
    rangeExpression - 分段字段表达式。
    rangeMode - 分段模式。包括等距离分段法,平方根分段法,标准差分段法,对数分段法,等计数分段法,以及自定义距离法。
    rangeParameter - 分段参数。当分段模式为等距离分段法,平方根分段,对数分段法,等计数分段法其中一种时,该参数为分段个数;当分段模式为标准差分段法的时候,该参数不起作用;当分段模式为自定义距离时,该参数表示自定义距离。
    colorGradientType - 颜色渐变模式。
    返回:
    根据参数构造得到一个新的 ThemeRange 的对象实例。

    makeDefault

    public static ThemeRange makeDefault(DatasetVector dataset,
                                         java.lang.String rangeExpression,
                                         RangeMode rangeMode,
                                         double rangeParameter,
                                         ColorGradientType colorGradientType,
                                         JoinItems joinItems)
    根据给定的矢量数据集、分段字段表达式、分段模式、相应的分段参数、颜色渐变填充模式和外部连接表项生成默认的分段专题图。

    注意:通过连接外部表的方式制作专题图时,对于 UDB 数据源,连接类型不支持内连接,即不支持 JoinType.INNERJOIN 连接类型。

    参数:
    dataset - 矢量数据集。
    rangeExpression - 分段字段表达式。
    rangeMode - 分段模式。包括等距离分段法,平方根分段法,标准差分段法,对数分段法,等计数分段法,以及自定义距离法。
    rangeParameter - 分段参数。当分段模式为等距离分段法,平方根分段,对数分段法,等计数分段法其中一种时,该参数为分段个数;当分段模式为标准差分段法的时候,该参数不起作用;当分段模式为自定义距离时,该参数表示自定义距离。
    colorGradientType - 颜色渐变模式。
    joinItems - 外部表连接项。

    如果要将制作的专题图添加到地图中,作为地图中的图层,需要对该专题图图层进行以下设置,通过该专题图图层对应的 Layer 对象的 setDisplayFilter 方法,该方法中的 queryParameter 参数为 QueryParameter 对象,这里需要通过 QueryParameter 对象的 setJoinItems 方法,将专题的外部表连接项(即当前方法的 joinItems参数)指定给该专题图图层对应的 Layer 对象,这样所做的专题图在地图中显示才正确。

    返回:
    根据参数构造得到一个新的 ThemeRange 的对象实例。

    makeDefault

    public static ThemeRange makeDefault(DatasetVector dataset,
                                         java.lang.String rangeExpression,
                                         RangeMode rangeMode,
                                         double rangeParameter,
                                         ColorGradientType colorGradientType,
                                         JoinItems joinItems,
                                         double rangePrecision)
    根据给定的矢量数据集、分段字段表达式、分段模式、相应的分段参数、颜色渐变填充模式、外部连接表项和舍入精度,生成默认的分段专题图。

    注意:通过连接外部表的方式制作专题图时,对于 UDB 数据源,连接类型不支持内连接,即不支持 JoinType.INNERJOIN 连接类型。

    参数:
    dataset - 指定的矢量数据集。
    rangeExpression - 分段字段表达式。
    rangeMode - 分段模式。包括等距离分段法,平方根分段法,标准差分段法,对数分段法,等计数分段法,以及自定义距离法。请参见 RangeMode 类。
    rangeParameter - 分段参数。当分段模式为等距离分段法,平方根分段,对数分段法,等计数分段法其中一种时,该参数为分段个数;当分段模式为标准差分段法的时候,该参数不起作用;当分段模式为自定义距离时,该参数表示自定义距离。
    colorGradientType - 颜色渐变模式。
    joinItems - 外部表连接项。

    如果要将制作的专题图添加到地图中,作为地图中的图层,需要对该专题图图层进行以下设置,通过该专题图图层对应的 Layer 对象的 setDisplayFilter 方法,该方法中的 queryParameter 参数为 QueryParameter 对象,这里需要通过 QueryParameter 对象的 setJoinItems 方法,将专题的外部表连接项(即当前方法的 joinItems参数)指定给该专题图图层对应的 Layer 对象,这样所做的专题图在地图中显示才正确。

    rangePrecision - 分段值的精度。如,计算得到的分段值为13.02145,而分段精度为0.001,则分段值取13.021。
    返回:
    根据参数构造得到一个新的 ThemeRange 的对象实例。

    indexOf

    public int indexOf(double value)
    返回分段专题图中指定分段字段值在当前分段序列中的序号。

    参数:
    value - 给定的分段字段值。
    返回:
    分段字段值在分段序列中的序号。如果该值不存在,就返回 -1。

    reverseStyle

    public void reverseStyle()
    对分段专题图中分段的风格进行反序显示。比如,专题图有三个分段,分别为 item1,item2,item3,调用反序显示后,item3 的风格与 item1 会调换,item2 的显示风格不变。


    clear

    public void clear()
    删除分段专题图的所有分段子项。执行该方法后,所有的分段专题图子项都被释放,不再可用。


    dispose

    public void dispose()
    释放对象所占用的资源。调用该方法之后,此对象不再可用。


    toString

    public java.lang.String toString()
    从类 Theme 复制的描述
    输出专题图格式化字符串。格式化字符串提供专题图的相关设置信息,与 XML 字符串不同的是,格式化字符串不可导入显示专题图,只用于提供专题图的相关信息。
    1. 对于栅格分段专题图,其格式为{Caption=”china”, Start=10 End=20, Visible=true?false, Style={linestyle=,markerstyle=,fillstyle=} };
    2. 对于栅格单值专题图,其格式为{Caption=”china”, Unique =20, Visible=true?false, Style={linestyle=,markerstyle=,fillstyle=} };
    3. 对于标签专题图,其格式为{Caption=”China”, Start=10 End=20, Visible=true, Style={name=,width=,height=,color=()} };
    4. 对于分段专题图,其格式为{Caption=”china”, Start=10 End=20, Visible=true?false, Style={linestyle=,markerstyle=,fillstyle=};
    5. 对于单值专题图,其格式为{Caption=”china”, Unique =20, Visible=true?false, Style={linestyle=,markerstyle=,fillstyle=} }。

    指定者:
    Theme 中的 toString
    返回:
    专题图的格式化字符串。

    getRangeMode

    public RangeMode getRangeMode()
    返回当前的分段模式。

    返回:
    当前的分段模式。

    getOffsetX

    public java.lang.String getOffsetX()
    返回X偏移量。

    返回:
    X偏移量。

    setOffsetX

    public void setOffsetX(java.lang.String value)
    设置X偏移量。

    参数:
    value - X偏移量

    getOffsetY

    public java.lang.String getOffsetY()
    返回Y偏移量。

    返回:
    Y偏移量。

    setOffsetY

    public void setOffsetY(java.lang.String value)
    设置Y偏移量。

    参数:
    value - Y偏移量

    isOffsetFixed

    public boolean isOffsetFixed()
    返回是否固定偏移量。

    返回:
    一个布尔值,固定偏移量返回true,否则返回false。

    setOffsetFixed

    public void setOffsetFixed(boolean value)
    设置是否固定偏移量。

    参数:
    value - 参数为True表示固定偏移量,否则表示不固定偏移量。

    getCustomInterval

    public double getCustomInterval()
    获取自定义段长。

    返回:
    自定义段长。

    getPrecision

    public double getPrecision()
    获取范围分段专题图的舍入精度。

    返回:
    舍入精度

    setPrecision

    public void setPrecision(double value)
    设置范围分段专题图的舍入精度。

    参数:
    value - 舍入精度