|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object com.supermap.mapping.Theme com.supermap.mapping.ThemeUnique
public class ThemeUnique
单值专题图类。
将字段或表达式的值相同的要素采用相同的风格来显示,从而用来区分不同的类别。例如,在表示土地的面数据中表示土地利用类型的字段中有草地,林地,居民地,耕地等值,使用单值专题图进行渲染时,每种类型的土地利用类型被赋予一种颜色或填充风格,从而可以看出每种类型的土地利用的分布区域和范围。可用于地质图、地貌图、植被图、土地利用图、政治行政区划图、自然区划图、经济区划图等。单值专题图着重表示现象质的差别,一般不表示数量的特征。尤其是有交叉或重叠现象时,此类不推荐使用,例如:民族分布区等。
注意:如果通过连接(Join)或关联(Link)的方式与一个外部表建立了联系,当专题图的专题变量用到外部表的字段时,在显示专题图时,需要调用 Layer.getDisplayFilter()
或 Layer.setDisplayFilter()
方法,否则专题图将出图失败。
public void themeUniqueTest() { // 打开数据源,获得点数据集ProvinceCapital_P Workspace workspace = new Workspace(); String path = "G:/World/World.udb"; DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo(path, "World", ""); Datasource datasource = workspace.getDatasources().open(datasourceConnectionInfo); DatasetVector datasetVector = (DatasetVector) datasource.getDatasets().get("ProvinceCapital_P"); // 构造单值专题图并进行单值子项的风格设置 ThemeUnique theme = ThemeUnique.makeDefault(datasetVector, "SmID"); for (int i = 0; i < theme.getCount(); i++) { ThemeUniqueItem item = theme.getItem(i); item.getStyle().setMarkerSymbolID(0); item.getStyle().setMarkerSize(new Size2D(4, 4)); Color color = new Color(255,255,100 + i); item.getStyle().setLineColor(color); } // 将得到的专题图添加到地图 MapControl mapControl = new MapControl(workspace); Layer layer = mapControl.getMap().getLayers().add(datasetVector, true); Layer layerTheme = mapControl.getMap().getLayers().add(datasetVector, theme, true); // 出图成 JPG 文件 mapControl.getMap().setImageSize(new java.awt.Dimension(512, 512)); String outFile = "c:/temp/themeUnique.jpg"; mapControl.getMap().outputMapToJPG(outFile); // 释放资源 mapControl.dispose(); workspace.dispose(); }
构造方法摘要 | |
---|---|
ThemeUnique()
默认构造函数,构造一个新的 ThemeUnique 对象。 |
|
ThemeUnique(ThemeUnique themeUnique)
拷贝构造函数,根据给定的 ThemeUnique 对象构造一个与其完全相同的新对象。 |
方法摘要 | |
---|---|
int |
add(ThemeUniqueItem item)
添加一个单值专题图子项到单值专题图子项列表中。 |
void |
clear()
删除所有单值专题图子项。 |
void |
dispose()
释放对象所占用的资源。 |
boolean |
fromXML(java.lang.String xml)
根据传入的 XML 字符串重新构造对象。 |
int |
getCount()
返回单值专题图子项个数。 |
java.lang.String |
getCustomMarkerAngleExpression()
返回一个字段表达式,该字段表达式用于控制对象对应的点单值题图中点符号的旋转角度,字段表达式中的字段必须为数值型字段。 |
java.lang.String |
getCustomMarkerSizeExpression()
返回一个字段表达式,该字段表达式用于控制对象对应的点单值题图中点符号的大小,字段表达式中的字段必须为数值型字段。 |
GeoStyle |
getDefaultStyle()
返回单值专题图的默认风格。 |
ThemeUniqueItem |
getItem(int index)
返回指定序号的单值专题图子项。 |
java.lang.String |
getOffsetX()
返回点、线、面图层制作的单值专题图中的对象相对于原来位置的水平偏移量。 |
java.lang.String |
getOffsetY()
返回点、线、面图层制作的单值专题图中的对象相对于原来位置的垂直偏移量。 |
java.lang.String |
getUniqueExpression()
单值专题图字段表达式。 |
int |
indexOf(java.lang.String unique)
返回单值专题图中指定子项单值在当前序列中的序号。 |
boolean |
insert(int index,
ThemeUniqueItem item)
将给定的单值专题图子项插入到指定序号的位置。 |
boolean |
isDefaultStyleVisible()
返回单值专题图默认风格是否可见。 |
boolean |
isOffsetFixed()
返回True表示采用设备单位,否则采用地理坐标单位。 |
static ThemeUnique |
makeDefault(DatasetVector dataset,
java.lang.String uniqueExpression)
根据给定的矢量数据集和单值专题图字段表达式生成默认的单值专题图。 |
static ThemeUnique |
makeDefault(DatasetVector dataset,
java.lang.String uniqueExpression,
ColorGradientType colorGradientType)
根据给定的矢量数据集、单值专题图字段表达式和颜色渐变模式生成默认的单值专题图。 |
static ThemeUnique |
makeDefault(DatasetVector dataset,
java.lang.String uniqueExpression,
ColorGradientType colorGradientType,
JoinItems joinItems)
根据给定的矢量数据集、单值专题图字段表达式、颜色渐变模式和外部表连接项生成默认的单值专题图。 |
static ThemeUnique |
makeDefault(DatasetVector dataset,
java.lang.String colorField,
Colors colors)
根据指定的面数据集、颜色字段名称、颜色生成默认的四色单值专题图。 |
boolean |
remove(int index)
删除一个指定序号的单值专题图子项。 |
void |
reverseStyle()
对单值专题图中子项的风格进行反序显示。 |
void |
setCustomMarkerAngleExpression(java.lang.String value)
设置一个字段表达式,该字段表达式用于控制对象对应的点单值题图中点符号的旋转角度,字段表达式中的字段必须为数值型字段。 |
void |
setCustomMarkerSizeExpression(java.lang.String value)
设置一个字段表达式,该字段表达式用于控制对象对应的点单值题图中点符号的大小,字段表达式中的字段必须为数值型字段。 |
void |
setDefaultStyle(GeoStyle style)
设置单值专题图的默认风格。 |
void |
setDefaultStyleVisible(boolean value)
设置单值专题图默认风格是否可见。 |
void |
setOffsetFixed(boolean value)
参数为True表示采用设备单位,否则采用地理坐标单位。 |
void |
setOffsetX(java.lang.String value)
设置点、线、面图层制作的单值专题图中的对象相对于原来位置的水平偏移量。 |
void |
setOffsetY(java.lang.String value)
设置点、线、面图层制作的单值专题图中的对象相对于原来位置的垂直偏移量。 |
void |
setUniqueExpression(java.lang.String value)
设置单值专题图字段表达式。 |
java.lang.String |
toString()
输出专题图格式化字符串。 |
从类 com.supermap.mapping.Theme 继承的方法 |
---|
getMemoryData, getType, setMemoryData, toXML |
从类 java.lang.Object 继承的方法 |
---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
构造方法详细信息 |
---|
public ThemeUnique()
ThemeUnique
对象。
public ThemeUnique(ThemeUnique themeUnique)
ThemeUnique
对象构造一个与其完全相同的新对象。
themeUnique
- 给定的单值专题图对象。方法详细信息 |
---|
public ThemeUniqueItem getItem(int index)
index
- 指定的单值专题图子项的序号。
public int getCount()
public java.lang.String getUniqueExpression()
public void setUniqueExpression(java.lang.String value)
value
- 指定单值专题图字段表达式。public GeoStyle getDefaultStyle()
public void setDefaultStyle(GeoStyle style)
style
- 指定单值专题图的默认风格。public int add(ThemeUniqueItem item)
item
- 将被添加的单值专题图子项。
public int addTest() { // 实例化单值专题图子项,并进行对象设置 ThemeUnique theme = new ThemeUnique(); ThemeUniqueItem item = new ThemeUniqueItem(); item.setCaption("Caption"); item.setVisible(false); item.setUnique("Unique"); // 添加单值专题图子项 theme.add(item); // 返回单值专题图子项个数 return (theme.getCount()); }
public boolean insert(int index, ThemeUniqueItem item)
index
- 指定的单值专题图子项序列的序号。item
- 将被插入的单值专题图子项。
public boolean remove(int index)
index
- 指定的将被删除的单值专题图子项序列的序号。
public void clear()
public static ThemeUnique makeDefault(DatasetVector dataset, java.lang.String uniqueExpression)
dataset
- 给定的矢量数据集。uniqueExpression
- 单值专题图字段表达式。
public static ThemeUnique makeDefault(DatasetVector dataset, java.lang.String uniqueExpression, ColorGradientType colorGradientType)
dataset
- 给定的矢量数据集。uniqueExpression
- 单值专题图字段表达式。colorGradientType
- 颜色渐变模式。
public void makeDefaultTest() { // 打开数据源,得到给定World名称的数据集datasetVector Workspace workspace = new Workspace(); String path = "G:/World/World.udb"; DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo(path, "World", ""); Datasource datasource = workspace.getDatasources().open(datasourceConnectionInfo); DatasetVector datasetVector = (DatasetVector) datasource.getDatasets().get("World"); // 生成默认的单值专题图 ThemeUnique theme = new ThemeUnique(); theme = ThemeUnique.makeDefault(datasetVector, "SmID",ColorGradientType.YELLOWRED); // 添加到图层显示 MapControl mapControl = new MapControl(workspace); Layer layer = mapControl.getMap().getLayers().add(datasetVector, theme, true); mapControl.getMap().refresh(); // 释放资源 mapControl.dispose(); workspace.dispose(); }
public static ThemeUnique makeDefault(DatasetVector dataset, java.lang.String uniqueExpression, ColorGradientType colorGradientType, JoinItems joinItems)
注意:通过连接外部表的方式制作专题图时,对于 UDB 数据源,连接类型不支持内连接,即不支持 JoinType.INNERJOIN
连接类型。
dataset
- 给定的矢量数据集。uniqueExpression
- 单值专题图字段表达式。colorGradientType
- 颜色渐变模式。joinItems
- 外部表连接项。如果要将制作的专题图添加到地图中,作为地图中的图层,需要对该专题图图层进行以下设置,通过该专题图图层对应的 Layer 对象的 setDisplayFilter 方法,该方法中的 queryParameter 参数为 QueryParameter 对象,这里需要通过 QueryParameter 对象的 setJoinItems 方法,将专题的外部表连接项(即当前方法的 joinItems参数)指定给该专题图图层对应的 Layer 对象,这样所做的专题图在地图中显示才正确。
public static ThemeUnique makeDefault(DatasetVector dataset, java.lang.String colorField, Colors colors)
四色单值专题图是指在一幅地图上,只用四种颜色就能使具有公共边的面对象着上不同的颜色。
生成四色单值专题图的输入数据必须满足,二维平面不存在交叉直线,只存在共点直线。
注意:对于面数据集复杂度低的情形下,采用四种颜色即可生成四色单值专题图;若面数据集复杂度高,则着色结果可能为五色。
dataset
- 指定的面数据集。由于该构造函数将修改面数据集的属性信息,因此,需保证 dataset 为非只读。colorField
- 着色字段的名称。着色字段必须为整型字段。它可以为面数据集中已有属性字段,也可以是自定义的其它字段。若为已存在属性字段,需保证该字段类型为整型,系统将修改该字段的属性值,并分别赋值为1、2、3、4;若为自定义的其它字段,需保证字段名合法,则系统首先在面数据集中创建该字段,并分别赋值为1、2、3、4。由此,着色字段已分别赋值为1、2、3、4,代表着四种不同的颜色,根据该字段的值即可生成四色专题图。colors
- 用户传入的用来制作专题图的颜色。系统对传入颜色的数目不做规定,比如,用户只传入了一种颜色,则在生成专题图时,系统会自动补齐出图所需的颜色。
public int indexOf(java.lang.String unique)
unique
- 给定的单值专题图子项单值。
public void reverseStyle()
public void dispose()
public boolean fromXML(java.lang.String xml)
Theme
中的 fromXML
xml
- 传入的 XML 字符串。
public java.lang.String toString()
Theme
复制的描述
Theme
中的 toString
public boolean isDefaultStyleVisible()
public void setDefaultStyleVisible(boolean value)
value
- 单值专题图默认风格是否可见。public java.lang.String getOffsetX()
偏移量的单位由 isOffsetFixed()的设置决定,参数为True表示采用设备单位,否则采用地理坐标单位。
public void setOffsetX(java.lang.String value)
偏移量的单位由 isOffsetFixed()的设置决定,参数为True表示采用设备单位,否则采用地理坐标单位。
value
- 点、线、面图层制作的单值专题图中的对象相对于原来位置的水平偏移量。public void OffsetXTest() { // 打开数据源,得到给定World名称的数据集datasetVector Workspace workspace = new Workspace(); String path = "G:/World/World.udb"; DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo(path, "World", ""); Datasource datasource = workspace.getDatasources().open(datasourceConnectionInfo); DatasetVector datasetVector = (DatasetVector) datasource.getDatasets().get("World"); // 生成默认的单值专题图 ThemeUnique theme = new ThemeUnique(); theme = ThemeUnique.makeDefault(datasetVector, "SmID",ColorGradientType.YELLOWRED); //设置单值专题图中对象的水平偏移量 theme.setOffsetX("10000"); // 添加到图层显示 MapControl mapControl = new MapControl(workspace); Layer layer = mapControl.getMap().getLayers().add(datasetVector, theme, true); mapControl.getMap().refresh(); // 释放资源 mapControl.dispose(); workspace.dispose(); }
public java.lang.String getOffsetY()
偏移量的单位由 isOffsetFixed()的设置决定,参数为True表示采用设备单位,否则采用地理坐标单位。
public void setOffsetY(java.lang.String value)
偏移量的单位由 isOffsetFixed()的设置决定,参数为True表示采用设备单位,否则采用地理坐标单位。
value
- 点、线、面图层制作的单值专题图中的对象相对于原来位置的垂直偏移量。public void OffsetYTest() { // 打开数据源,得到给定World名称的数据集datasetVector Workspace workspace = new Workspace(); String path = "G:/World/World.udb"; DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo(path, "World", ""); Datasource datasource = workspace.getDatasources().open(datasourceConnectionInfo); DatasetVector datasetVector = (DatasetVector) datasource.getDatasets().get("World"); // 生成默认的单值专题图 ThemeUnique theme = new ThemeUnique(); theme = ThemeUnique.makeDefault(datasetVector, "SmID",ColorGradientType.YELLOWRED); //设置单值专题图中对象的垂直偏移量 theme.setOffsetY("10000"); // 添加到图层显示 MapControl mapControl = new MapControl(workspace); Layer layer = mapControl.getMap().getLayers().add(datasetVector, theme, true); mapControl.getMap().refresh(); // 释放资源 mapControl.dispose(); workspace.dispose(); }
public boolean isOffsetFixed()
public void setOffsetFixed(boolean value)
value
- 是否采用设备单位public void setCustomMarkerSizeExpression(java.lang.String value)
通过该接口可以指定一个字段也可以指定一个字段表达式;还可以指定一个数值,此时所有专题图子项将以数值指定的大小统一显示。
该项设置仅对点单值专题图有效。
value
- 返回一个字段表达式。可以指定一个字段也可以指定一个字段表达式;还可以指定一个数值,此时所有专题图子项将以数值指定的大小统一显示。public java.lang.String getCustomMarkerSizeExpression()
通过该接口可以指定一个字段也可以指定一个字段表达式;还可以指定一个数值,此时所有专题图子项将以数值指定的大小统一显示。
该项设置仅对点单值专题图有效。
public java.lang.String getCustomMarkerAngleExpression()
通过该接口可以指定一个字段也可以指定一个字段表达式;还可以指定一个数值,此时所有专题图子项将以数值指定的角度统一进行旋转。
该项设置仅对点单值专题图有效。
public void setCustomMarkerAngleExpression(java.lang.String value)
通过该接口可以指定一个字段也可以指定一个字段表达式;还可以指定一个数值,此时所有专题图子项将以数值指定的角度统一进行旋转。
该项设置仅对点单值专题图有效。
value
- 返回一个字段表达式。可以指定一个字段也可以指定一个字段表达式;还可以指定一个数值,此时所有专题图子项将以数值指定的角度统一进行旋转。
|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |