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)的风格。
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()
释放对象所占用的资源。
|
boolean |
fromXML(String xml)
通过包含专题图信息的 XML 字符串来初始化分段专题图
|
int |
getCount()
返回分段专题图中分段的个数。
|
double |
getCustomInterval()
获取自定义段长。
|
ThemeRangeItem |
getItem(int index)
返回指定序号的分段专题图中分段专题图子项。
|
String |
getOffsetX()
返回X偏移量。
|
String |
getOffsetY()
返回Y偏移量。
|
double |
getPrecision()
获取范围分段专题图的舍入精度。
|
String |
getRangeExpression()
返回分段字段表达式。
|
RangeMode |
getRangeMode()
返回当前的分段模式。
|
int |
indexOf(double value)
返回分段专题图中指定分段字段值在当前分段序列中的序号。
|
boolean |
isOffsetFixed()
返回是否固定偏移量。
|
static ThemeRange |
makeDefault(DatasetVector dataset,
String rangeExpression,
RangeMode rangeMode,
double rangeParameter)
根据给定的矢量数据集、分段字段表达式、分段模式和相应的分段参数生成默认的分段专题图。
|
static ThemeRange |
makeDefault(DatasetVector dataset,
String rangeExpression,
RangeMode rangeMode,
double rangeParameter,
ColorGradientType colorGradientType)
根据给定的矢量数据集、分段字段表达式、分段模式、相应的分段参数和颜色渐变模式生成默认的分段专题图。
|
static ThemeRange |
makeDefault(DatasetVector dataset,
String rangeExpression,
RangeMode rangeMode,
double rangeParameter,
ColorGradientType colorGradientType,
JoinItems joinItems)
根据给定的矢量数据集、分段字段表达式、分段模式、相应的分段参数、颜色渐变填充模式和外部连接表项生成默认的分段专题图。
|
static ThemeRange |
makeDefault(DatasetVector dataset,
String rangeExpression,
RangeMode rangeMode,
double rangeParameter,
ColorGradientType colorGradientType,
JoinItems joinItems,
double precision)
根据给定的矢量数据集、分段字段表达式、分段模式、相应的分段参数、颜色渐变填充模式、外部连接表项和舍入精度,生成默认的分段专题图。
|
boolean |
merge(int index,
int count,
GeoStyle style,
String caption)
合并一个从指定序号起始的给定个数的分段专题图子项,并赋给合并后分段专题图子项显示风格和名称。
|
void |
reSetUseRealMinMax(DatasetVector dataset,
JoinItems joinItems)
从数据集读取最大最小值并设置给当前分段专题图
|
void |
reverseStyle()
对分段专题图中分段的风格进行反序显示。
|
void |
setOffsetFixed(boolean value)
设置是否固定偏移量。
|
void |
setOffsetX(String value)
设置X偏移量。
|
void |
setOffsetY(String value)
设置Y偏移量。
|
void |
setPrecision(double value)
设置范围分段专题图的舍入精度。
|
void |
setRangeExpression(String value)
设置分段字段表达式。
|
boolean |
split(int index,
double splitValue,
GeoStyle style1,
String caption1,
GeoStyle style2,
String caption2)
根据给定的拆分分段值将一个指定序号的分段专题图子项拆分成两个具有各自风格和名称的分段专题图子项。
|
String |
toString()
输出一个字符串来表达当前分段专题图对象
|
getMemoryData, getThemeWeight, getType, setMemoryData, setThemeWeight, toXML
public ThemeRange()
ThemeRange
对象。public ThemeRange(ThemeRange themeRange)
ThemeRange
对象构造一个与其完全相同的新对象。themeRange
- 给定的分段专题图对象。public ThemeRangeItem getItem(int index)
ThemeRangeItem
类。index
- 指定的分段专题图序号。ThemeRangeItem
public int getCount()
public String getRangeExpression()
通过对比某要素分段字段表达式的值与(按照一定的分段模式确定的)各分段范围的分段值,来确定该要素所在的范围段,从而对落在不同分段内的要素设置为不同的风格。
public void setRangeExpression(String value)
通过对比某要素分段字段表达式的值与(按照一定的分段模式确定的)各分段范围的分段值,来确定该要素所在的范围段,从而对落在不同分段内的要素设置为不同的风格。
value
- 指定分段字段表达式。public boolean addToHead(ThemeRangeItem item)
item
- 需要添加的分段专题图子项。public boolean addToTail(ThemeRangeItem item)
item
- 需要添加的分段专题图子项。public boolean addToHead(ThemeRangeItem item, boolean normalize)
item
- 需要添加的分段专题图子项。normalize
- 表示是否规整化,normalize 为 true时, item 值不合法,则进行规整,normalize 为 fasle时, item 值不合法则抛异常。public boolean addToTail(ThemeRangeItem item, boolean normalize)
item
- 需要添加的分段专题图子项。normalize
- 表示是否规整化,normalize 为 true时, item 值不合法,则进行规整,normalize 为 fasle时, item 值不合法则抛异常。public boolean split(int index, double splitValue, GeoStyle style1, String caption1, GeoStyle style2, String caption2)
index
- 指定的分段专题图子项的序号。splitValue
- 指定的拆分分段值。style1
- 被拆分的两个分段专题图子项中的一个分段专题图子项的名称。caption1
- 被拆分的两个分段专题图子项中的一个分段专题图子项的名称。style2
- 被拆分的两个分段专题图子项中的另一个分段专题图子项的风格。caption2
- 被拆分的两个分段专题图子项中的另一个分段专题图子项的名称。public boolean merge(int index, int count, GeoStyle style, String caption)
index
- 指定的分段专题图子项的序号,并以此序号为起始。count
- 要合并的分段专题图子项个数,即从指定的序号开始计算。style
- 合并后的分段专题图子项的风格。caption
- 合并后的分段专题图子项名称。public static ThemeRange makeDefault(DatasetVector dataset, String rangeExpression, RangeMode rangeMode, double rangeParameter)
dataset
- 矢量数据集。rangeExpression
- 分段字段表达式。rangeMode
- 分段模式。包括等距离分段法,平方根分段法,标准差分段法,对数分段法,等计数分段法,以及自定义距离法。rangeParameter
- 分段参数。当分段模式为等距离分段法,平方根分段,对数分段法,等计数分段法其中一种模式时,该参数为分段个数;当分段模式为标准差分段法的时候,该参数不起作用;当分段模式为自定义距离时,该参数表示自定义距离。ThemeRange
的对象实例。public static ThemeRange makeDefault(DatasetVector dataset, String rangeExpression, RangeMode rangeMode, double rangeParameter, ColorGradientType colorGradientType)
dataset
- 矢量数据集。rangeExpression
- 分段字段表达式。rangeMode
- 分段模式。包括等距离分段法,平方根分段法,标准差分段法,对数分段法,等计数分段法,以及自定义距离法。rangeParameter
- 分段参数。当分段模式为等距离分段法,平方根分段,对数分段法,等计数分段法其中一种时,该参数为分段个数;当分段模式为标准差分段法的时候,该参数不起作用;当分段模式为自定义距离时,该参数表示自定义距离。colorGradientType
- 颜色渐变模式。ThemeRange
的对象实例。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
的对象实例。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
的对象实例。public void reSetUseRealMinMax(DatasetVector dataset, JoinItems joinItems)
dataset
- 所使用的数据集joinItems
- 连接信息集合 JoinItems
IllegalStateException
- 当前对象已经释放时,再次调用该接口时抛出 IllegalStateException 异常。IllegalArgumentException
- 当数据集为空时,或数据集已经被释放时抛出 IllegalArgumentException 异常。IllegalArgumentException
- 当连接信息集合为空时,或连接信息集合已经被释放时抛出 IllegalArgumentException 异常。public double getPrecision()
public void setPrecision(double value)
value
- 舍入精度public int indexOf(double value)
value
- 给定的分段字段值。public void reverseStyle()
public void clear()
public boolean fromXML(String xml)
public void dispose()
public RangeMode getRangeMode()
public String getOffsetX()
public void setOffsetX(String value)
value
- X偏移量public String getOffsetY()
public void setOffsetY(String value)
value
- Y偏移量public boolean isOffsetFixed()
public void setOffsetFixed(boolean value)
value
- 参数为True表示固定偏移量,否则表示不固定偏移量。public double getCustomInterval()
Copyright © 2021–2024 SuperMap. All rights reserved.