com.supermap.mapping

类 ThemeRange

  • 所有已实现的接口:
    IDisposable


    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

        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 String getRangeExpression()
        返回分段字段表达式。

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

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

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

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

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

        public boolean addToHead(ThemeRangeItem item)
        把一个分段专题图子项添加到分段列表的开头。
        参数:
        item - 需要添加的分段专题图子项。
        返回:
        如果添加成功返回 true,否则返回 false。
      • addToTail

        public boolean addToTail(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,
                                 boolean normalize)
        把一个分段专题图子项添加到分段列表的尾部。
        参数:
        item - 需要添加的分段专题图子项。
        normalize - 表示是否规整化,normalize 为 true时, item 值不合法,则进行规整,normalize 为 fasle时, item 值不合法则抛异常。
        返回:
        如果添加成功返回 true,否则返回 false。
      • split

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

        public boolean merge(int index,
                             int count,
                             GeoStyle style,
                             String caption)
        合并一个从指定序号起始的给定个数的分段专题图子项,并赋给合并后分段专题图子项显示风格和名称。执行该方法后,被合并的对象将被释放,不再可用。
        参数:
        index - 指定的分段专题图子项的序号,并以此序号为起始。
        count - 要合并的分段专题图子项个数,即从指定的序号开始计算。
        style - 合并后的分段专题图子项的风格。
        caption - 合并后的分段专题图子项名称。
        返回:
        如果合并成功返回 true,否则返回 false。
      • makeDefault

        public static ThemeRange makeDefault(DatasetVector dataset,
                                             String rangeExpression,
                                             RangeMode rangeMode,
                                             double rangeParameter)
        根据给定的矢量数据集、分段字段表达式、分段模式和相应的分段参数生成默认的分段专题图。
        参数:
        dataset - 矢量数据集。
        rangeExpression - 分段字段表达式。
        rangeMode - 分段模式。包括等距离分段法,平方根分段法,标准差分段法,对数分段法,等计数分段法,以及自定义距离法。
        rangeParameter - 分段参数。当分段模式为等距离分段法,平方根分段,对数分段法,等计数分段法其中一种模式时,该参数为分段个数;当分段模式为标准差分段法的时候,该参数不起作用;当分段模式为自定义距离时,该参数表示自定义距离。
        返回:
        根据参数构造得到一个新的 ThemeRange 的对象实例。
      • makeDefault

        public static ThemeRange makeDefault(DatasetVector dataset,
                                             String rangeExpression,
                                             RangeMode rangeMode,
                                             double rangeParameter,
                                             ColorGradientType colorGradientType)
        根据给定的矢量数据集、分段字段表达式、分段模式、相应的分段参数和颜色渐变模式生成默认的分段专题图。
        参数:
        dataset - 矢量数据集。
        rangeExpression - 分段字段表达式。
        rangeMode - 分段模式。包括等距离分段法,平方根分段法,标准差分段法,对数分段法,等计数分段法,以及自定义距离法。
        rangeParameter - 分段参数。当分段模式为等距离分段法,平方根分段,对数分段法,等计数分段法其中一种时,该参数为分段个数;当分段模式为标准差分段法的时候,该参数不起作用;当分段模式为自定义距离时,该参数表示自定义距离。
        colorGradientType - 颜色渐变模式。
        返回:
        根据参数构造得到一个新的 ThemeRange 的对象实例。
      • makeDefault

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

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

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

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

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

        public void reSetUseRealMinMax(DatasetVector dataset,
                                       JoinItems joinItems)
        从数据集读取最大最小值并设置给当前分段专题图
        参数:
        dataset - 所使用的数据集
        joinItems - 连接信息集合 JoinItems
        抛出:
        IllegalStateException - 当前对象已经释放时,再次调用该接口时抛出 IllegalStateException 异常。
        IllegalArgumentException - 当数据集为空时,或数据集已经被释放时抛出 IllegalArgumentException 异常。
        IllegalArgumentException - 当连接信息集合为空时,或连接信息集合已经被释放时抛出 IllegalArgumentException 异常。
        从以下版本开始:
        11.2.0
      • getPrecision

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

        public void setPrecision(double value)
        设置范围分段专题图的舍入精度。
        参数:
        value - 舍入精度
      • indexOf

        public int indexOf(double value)
        返回分段专题图中指定分段字段值在当前分段序列中的序号。
        参数:
        value - 给定的分段字段值。
        返回:
        分段字段值在分段序列中的序号。如果该值不存在,就返回 -1。
      • reverseStyle

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

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

        public String toString()
        输出一个字符串来表达当前分段专题图对象
        指定者:
        toString 在类中 Theme
        返回:
        描述分段专题图对象的字符串。
      • fromXML

        public boolean fromXML(String xml)
        通过包含专题图信息的 XML 字符串来初始化分段专题图
        覆盖:
        fromXML 在类中 Theme
        参数:
        xml - 包含专题图信息的 XML 字符串。
        返回:
        是否成功初始化
      • dispose

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

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

        public String getOffsetX()
        返回X偏移量。
        返回:
        X偏移量。
      • setOffsetX

        public void setOffsetX(String value)
        设置X偏移量。
        参数:
        value - X偏移量
      • getOffsetY

        public String getOffsetY()
        返回Y偏移量。
        返回:
        Y偏移量。
      • setOffsetY

        public void setOffsetY(String value)
        设置Y偏移量。
        参数:
        value - Y偏移量
      • isOffsetFixed

        public boolean isOffsetFixed()
        返回是否固定偏移量。
        返回:
        一个布尔值,固定偏移量返回true,否则返回false。
      • setOffsetFixed

        public void setOffsetFixed(boolean value)
        设置是否固定偏移量。
        参数:
        value - 参数为True表示固定偏移量,否则表示不固定偏移量。
      • getCustomInterval

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

Copyright © 2021–2024 SuperMap. All rights reserved.