public class Layer
extends com.supermap.data.InternalHandle
图层类。
该类提供了图层显示和控制等的便于地图管理的一系列方法。当数据集被加载到地图窗口中显示时,就形成了一个图层,因此图层是数据集的可视化显示。一个图层是对一个数据集的引用或参考。通过对可视化的图层的编辑,可以对相应的数据集的要素进行编辑。一个图层或多个图层叠加显示则形成了地图。图层分为普通图层和专题图层,矢量的普通图层中所有要素采用相同的渲染风格,栅格图层采用颜色表来显示其像元;而专题图层的则采用指定类型的专题图风格来渲染其中的要素或像元。影像数据只对应普通图层。普通图层的风格通过 getAdditionalSetting()
和 setAdditionalSetting()
方法来返回或设置,而专题图层的专题风格则通过 getTheme()
来返回。该类型提供了对图层的显示,选择,编辑,捕捉等状态的控制方法,同时也提供了图层显示的设置方法,如最大和最小显示比例尺以及过滤条件等。
构造器和说明 |
---|
Layer()
构造一个新的Layer对象。
|
限定符和类型 | 方法和说明 |
---|---|
void |
addCaptionChangedListener(LayerCaptionChangedListener l)
已过时。
|
void |
addEditableChangedListener(LayerEditableChangedListener l)
已过时。
|
void |
addElementDrawingListener(ElementDrawingListener l)
添加一个用于接收元素绘制事件(
ElementDrawingEvent )的监听器。 |
int |
addGridFunction(GridFunctionType type,
Map<String,String> args)
对栅格图层的函数链中添加新的处理函数。
|
void |
addSelectableChangedListener(LayerSelectableChangedListener l)
已过时。
|
void |
addSnapableChangedListener(LayerSnapableChangedListener l)
已过时。
|
void |
addVisibleChangedListener(LayerVisibleChangedListener l)
已过时。
|
static LayerType |
checkLayerSubType(Dataset dataset) |
void |
clearThemeElementPositions()
清空所有的自定义位置,清空后专题图的绘制将按照默认的位置来完成。
|
Layer |
findLayer(String layerName)
根据给定的图层名称获取图层。
|
boolean |
fromXML(String xml)
根据指定的XML字符串创建图层对象。
|
LayerSetting |
getAdditionalSetting()
返回普通图层的风格设置。
|
BlendMode |
getBlendMode() |
Rectangle2D |
getBounds()
获取图层的范围。
|
String |
getCaption()
返回图层的标题。
|
GeoRegion |
getClipRegion()
返回图层的裁剪区域。
|
Dataset |
getDataset()
返回此图层对应的数据集对象。
|
int |
getDeduplicateThreshold()
返回开启线面抽稀显示时的抽稀阈值,阈值表示单个对象的节点数目,当对象的节点数目大于抽稀阈值时进行抽稀显示。
|
double |
getDeduplicateTolerance()
返回开启线面抽稀显示时的抽稀容限,单位为像素。
|
String |
getDescription()
返回此图层的描述信息。
|
Layer |
getDisplayControledLayer()
返回与当前图层建立绑定关系的图层对象。
|
QueryParameter |
getDisplayFilter()
返回图层显示过滤条件。
|
String |
getDisplayFilterStr() |
LayerExtensionPlugin |
getExtensionPlugin() |
Map<String,Object> |
getExtensionUserInfo() |
String |
getExternalInfo()
获取图层自定义信息。
|
FieldValuesDisplayFilter |
getFieldValuesDisplayFilter()
返回对图层通过字段值进行过滤显示的设置对象。
|
FillMarkerOrderMode |
getFillMarkerOrder()
返回图层的填充模式。
|
Map<String,String> |
getGridFunctionArgs(int index) |
GridFunctionType |
getGridFunctionType(int index) |
int |
getGridFunctonCount() |
int |
getLayerWeight() |
Map |
getMap() |
double |
getMaxVisibleScale()
返回此图层的最大可见比例尺。
|
double |
getMinVisibleGeometrySize()
返回几何对象的最小可见大小,以像素为单位,默认值为 0.4。
|
double |
getMinVisibleScale()
返回此图层的最小可见比例尺。
|
String |
getName()
返回图层的名称。
|
int |
getOpaqueRate()
返回图层的不透明度。
|
int |
getOverlapGeometryPixel()
矢量数据绘制时,如果开启了过滤重叠小对象,该方法返回单位像素区域的大小。
|
double |
getOverlapGeometryThreshold()
矢量数据绘制时,如果开启了过滤重叠小对象,该方法返回参与过滤的对象的尺寸阈值。
|
LayerGroup |
getParentGroup()
返回当前图层所在图层分组。
|
LayerSnapshot |
getParentSnapshot()
返回地图中的被加入到快照图层中的图层对象所处的快照图层对象。
|
String |
getRepresentationField()
返回存储制图表达信息的字段。
|
Selection |
getSelection()
返回此图层中的选择集对象。
|
DatasourceConnectionInfo |
getSource() |
LayerType |
getSubLayerType() |
static LayerType |
getSubType(long layerHndle) |
double |
getSymbolScale()
返回图层的符号缩放基准比例尺。
|
Theme |
getTheme()
返回专题图层的专题图对象,针对专题图层。
|
Point2D |
getThemeElementPosition(int geometryID)
根据给定的几何对象的 ID,获取该几何对象所对应的专题元素的自定义位置。
|
String |
getTimeEndField() |
Date |
getTimeFilterEnding()
返回图层时间过滤条件的终止时间值。
|
Date |
getTimeFilterStarting()
返回图层时间过滤条件的起始时间值。
|
String |
getTimeStartField() |
TimeSpan |
getTimeStepInterval()
返回时态数据的时间步长间隔。
|
String[] |
getValueExpressions()
返回字段表达式定义的值。
|
Selection |
hitTest(Point2D point,
double tolerance)
返回选中的对象的集合。
|
boolean |
hitTest(Point2D pt,
double tolerance,
ArrayList<GeoText> testResult)
返回选中的专题元素。
|
boolean |
hitTest(Point2D pt,
double tolerance,
String resultExpression,
ArrayList<GeoText> testResult)
返回选中的专题元素。
|
boolean |
hitTestGeoCompound(Point2D pt,
double tolerance,
String resultExpression,
ArrayList<GeoCompound> testResult)
返回选中的专题元素。
|
boolean |
isAntialias()
返回图层是否开启反走样。
|
boolean |
isClipRegionEnabled()
返回裁剪区域是否有效。
|
boolean |
isCompleteLineSymbolDisplayed()
返回是否显示完整线型。
|
boolean |
isCrossroadOptimized()
返回是否进行十字路口优化。
|
Boolean |
isDeduplicateEnabled()
返回是否启用线面绘制时去重复抽稀功能。
|
boolean |
isDiposed()
已过时。
|
boolean |
isDisposed()
返回对象是否已被释放。
|
boolean |
isEditable()
返回图层是否处于可编辑状态。
|
boolean |
isFullLabelEnabled() |
boolean |
isInteroperable() |
boolean |
isLayerCacheEnabled() |
boolean |
isModified() |
boolean |
isOverlapDisplayed()
返回是否显示压盖对象。
|
Boolean |
isOverlapGeometryEnabled()
返回矢量数据绘制时,是否过滤重叠小对象,默认值为false,表示不过滤。
|
boolean |
isRepresentationEnabled()
返回该图层是否采用制图表达。
|
boolean |
isSelectable()
返回图层中对象是否可以选择。
|
boolean |
isSnapable()
返回图层是否可捕捉。
|
boolean |
isSuperAndSubScript() |
Boolean |
isSwipeEnabled() |
boolean |
isSymbolScalable()
返回图层的符号大小是否随图缩放。
|
boolean |
IsTimeFilterEnable()
返回是否启用该图层的时间过滤显示功能,true表示启用,相关时间设置才有效。
|
boolean |
isVisible()
返回此图层是否可见。
|
boolean |
isVisibleScale(double dScale)
返回指定的比例尺是否为可视比例尺,即在设定的最小显示比例尺和最大显示比例尺之间。
|
void |
removeCaptionChangedListener(LayerCaptionChangedListener l)
已过时。
|
void |
removeEditableChangedListener(LayerEditableChangedListener l)
已过时。
|
void |
removeElementDrawingListener(ElementDrawingListener l)
移除一个用于接收元素绘制事件(
ElementDrawingEvent )的监听器。 |
void |
removeGridFunction(int index) |
void |
removeSelectableChangedListener(LayerSelectableChangedListener l)
已过时。
|
void |
removeSnapableChangedListener(LayerSnapableChangedListener l)
已过时。
|
boolean |
removeThemeElementPosition(int geometryID)
根据给定的几何对象的 ID,清除该几何对象所对应的专题元素的自定义位置,清除后该专题元素采用默认的位置。
|
void |
removeVisibleChangedListener(LayerVisibleChangedListener l)
已过时。
|
void |
setAdditionalSetting(LayerSetting layerSetting)
设置普通图层的风格。
|
void |
setAntialias(boolean value)
设置图层是否开启反走样。
|
void |
setBlendMode(BlendMode mode) |
void |
setCaption(String value)
设置图层的标题。
|
void |
setClipRegion(GeoRegion geoRegion)
设置图层的裁剪区域。
|
void |
setClipRegionEnabled(boolean value)
设置裁剪区域是否有效。
|
void |
setCompleteLineSymbolDisplayed(boolean value)
设置是否显示完整线型。
|
void |
setCrossroadOptimized(boolean value)
设置是否进行十字路口优化 。
|
void |
setDataset(Dataset dataset)
设置此图层对应的数据集对象。
|
void |
setDeduplicateEnabled(Boolean value)
设置是否启用线面绘制时去重复抽稀功能。
|
void |
setDeduplicateThreshold(int value)
设置开启线面抽稀显示时的抽稀阈值,阈值表示单个对象的节点数目,当对象的节点数目大于抽稀阈值时进行抽稀显示。
|
void |
setDeduplicateTolerance(double value)
设置开启线面抽稀显示时的抽稀容限,单位为像素。
|
void |
setDescription(String value)
设置此图层的描述信息。
|
boolean |
setDisplayControledLayer(Layer layer)
设置被当前图层控制显示的图层,即指定图层与当前图层建立一种绑定关系,指定的图层将会与当前的图层显示相同的对象。
|
void |
setDisplayFilter(QueryParameter queryParameter)
设置图层显示过滤条件。
|
void |
setDisplayFilterStr(String value) |
void |
setEditable(boolean value)
设置图层是否处于可编辑状态。
|
void |
setExtensionUserInfo(Map<String,Object> map) |
void |
setExternalInfo(String value)
设置图层自定义信息,用于通过用户自定义条件查找、筛选图层。
|
void |
setFillMarkerOrder(FillMarkerOrderMode value)
设置图层的填充模式。
|
void |
setFullLabelEnabled(boolean value) |
void |
setInteroperable(boolean isInteroperable) |
void |
SetLayerCacheEnabled(boolean value) |
void |
SetLayerCacheRefresh() |
void |
setLayerWeight(int value) |
void |
setMaxVisibleScale(double value)
设置此图层的最大可见比例尺。
|
void |
setMinVisibleGeometrySize(double value)
设置几何对象的最小可见大小,以像素为单位,默认值为0.4。
|
void |
setMinVisibleScale(double value)
设置此图层的最小可见比例尺。
|
void |
setModified(boolean value) |
void |
setOpaqueRate(int value)
设置图层的不透明度。
|
void |
setOverlapDisplayed(boolean value)
设置是否显示压盖对象。
|
void |
setOverlapGeometryEnabled(Boolean value)
设置矢量数据绘制时,是否过滤重叠小对象,默认值为false,表示不过滤。
|
void |
setOverlapGeometryPixel(int value)
矢量数据绘制时,如果开启了过滤重叠小对象,该方法设置单位像素区域的大小。
|
void |
setOverlapGeometryThreshold(double value)
矢量数据绘制时,如果开启了过滤重叠小对象,该方法设置参与过滤的对象的尺寸阈值。
|
void |
setRepresentationEnabled(boolean value)
设置该图层是否采用制图表达。
|
void |
setRepresentationField(String value)
设置存储制图表达信息的字段。
|
void |
setSelectable(boolean value)
设置图层中对象是否可以选择。
|
void |
setSelection(Selection selection)
设置此图层中的选择集对象。
|
void |
setSnapable(boolean value)
设置图层是否可捕捉。
|
void |
setSource(DatasourceConnectionInfo info,
String datasetName)
根据数据集连接信息设置此图层对应的数据集对象。
|
void |
setSource(String filePath,
Map<String,String> imageReaderParameter,
ElevationData elevationData,
String rpcPath,
boolean isObjectSpace)
根据影像文件设置此图层对应的数据集对象。
|
void |
setSuperAndSubScript(boolean value) |
void |
setSwipeEnabled(Boolean value) |
void |
setSymbolScalable(boolean value)
设置图层的符号大小是否随图缩放。
|
void |
setSymbolScale(double value)
设置图层的符号缩放基准比例尺。
|
void |
setThemeElementPosition(int geometryID,
Point2D position)
根据给定的几何对象的 ID 和地理位置坐标,设置该几何对象所对应的专题元素的自定义位置。
|
void |
setTimeEndField(String strField) |
void |
setTimeFilterEnable(boolean bEnable)
设置是否启用该图层的时间过滤显示功能,true表示启用,相关时间设置才有效。
|
void |
setTimeFilterEnding(Date endTime)
设置图层时间过滤条件的终止时间值。
|
void |
setTimeFilterStarting(Date startTime)
设置图层时间过滤条件的起始时间值。
|
void |
setTimeStartField(String strField) |
void |
setTimeStepInterval(TimeSpan timeSpan)
设置时态数据的时间步长间隔。
|
void |
setValueExpressions(String[] value)
设置字段表达式定义的值。
|
void |
setVisible(boolean value)
设置此图层是否可见。
|
Geometry[] |
themeSymbolsToGeometries(Recordset recordset)
将专题图的点符号转换为 Geometry 对象。
|
Geometry[] |
themeSymbolsToGeometrys(Recordset recordset)
已过时。
|
DatasetVector |
themeToDatasetVector(Datasource datasource,
String datasetName)
将专题图转换为 CAD 数据集。
|
String |
toXML()
返回此图层对象的 XML字符串形式的描述。
|
public boolean isCompleteLineSymbolDisplayed()
public void setCompleteLineSymbolDisplayed(boolean value)
value
- 一个布尔值,指定是否显示完整线型。public boolean isClipRegionEnabled()
图层显示的裁剪区域与以下方法的返回值有关:Map.getClipRegion()
,Map.isClipRegionEnabled()
,Layer.getClipRegion()
,Layer.isClipRegionEnabled()
。
图层显示的裁剪区域是 Layer.getClipRegion()
和 Map.getClipRegion()
的返回值的并集。
当然在 Map.isClipRegionEnabled()
或者 Layer.isClipRegionEnabled()
方法的返回值为 false 时,
对应的 Map.getClipRegion()
或者 Layer.getClipRegion()
返回值在参与并集计算时为空。
public void setClipRegionEnabled(boolean value)
value
- 一个布尔值,指定裁剪区域是否有效,true 表示有效,false 表示无效。public String getName()
public String getCaption()
public void setCaption(String value)
value
- 指定图层的标题。public String getDescription()
public void setDescription(String value)
value
- 指定图层的描述信息。public Dataset getDataset()
public void setDataset(Dataset dataset)
当该方法设置为 null 时,抛出异常。
dataset
- 此图层对应的数据集对象。public QueryParameter getDisplayFilter()
注意:在空间查询中,该方法仅对属性数据起作用,对空间数据不起作用。
public void setDisplayFilter(QueryParameter queryParameter)
注意:在空间查询中,该方法仅对属性数据起作用,对空间数据不起作用。
queryParameter
- 指定图层显示过滤条件。private void setDisplayFilterTest() { // 打开数据源 Workspace workspace = new Workspace(); MapControl mapControl = new MapControl(); mapControl.getMap().setWorkspace(workspace); DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo("G:/World/World.udb", "world", ""); Datasource datasource = workspace.getDatasources().open( datasourceConnectionInfo); // 将数据集添加到图层 Dataset dataset = datasource.getDatasets().get("World"); Layer layer = mapControl.getMap().getLayers().add(dataset, true); // 设置图层显示过滤条件 QueryParameter queryParameter = new QueryParameter(); queryParameter.setAttributeFilter("SmID<50"); layer.setDisplayFilter(queryParameter); // 输出地图到 BMP 文件 mapControl.getMap().setImageSize(new java.awt.Dimension(500, 500)); mapControl.getMap().outputMapToBMP("c:/temp/outFile.bmp"); // 释放资源 mapControl.dispose(); workspace.dispose(); }
public LayerSetting getAdditionalSetting()
LayerSettingVector
,LayerSettingGrid
,LayerSettingImage
类分别用来对矢量数据图层,栅格数据图层和影像数据图层的风格进行设置和修改。private void getAdditionalSettingTest() { // 打开工作空间,并建立与 MapControl 的关联 Workspace workspace = new Workspace(); MapControl mapControl = new MapControl(); mapControl.getMap().setWorkspace(workspace); // 打开数据源并获取数据集 String path = "G:/world/World.udb"; DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo(path, "World", ""); Datasource datasource = workspace.getDatasources().open( datasourceConnectionInfo); Dataset dataset = datasource.getDatasets().get("world"); // 将数据集加载到图层 Layer layer = mapControl.getMap().getLayers().add(dataset, true); // 判断图层的风格设置类型 // 针对矢量图层设置生成默认的单值专题图,并添加到图层显示 if (layer.getAdditionalSetting().getType() == LayerSettingType.VECTOR) { ThemeUnique themeUnique = ThemeUnique.makeDefault((DatasetVector) dataset, "SmID", ColorGradientType.PINKBLUE); Layer layer2 = mapControl.getMap().getLayers().add(dataset, themeUnique, true); } // 针对栅格图层设置生成默认的栅格单值专题图,并添加到图层显示 if (layer.getAdditionalSetting().getType() == LayerSettingType.GRID) { ThemeGridUnique themeGridUnique = ThemeGridUnique.makeDefault( (DatasetGrid) dataset, ColorGradientType.PINKBLUE); Layer layer2 = mapControl.getMap().getLayers().add(dataset, themeGridUnique, true); } // 释放资源 mapControl.dispose(); workspace.dispose(); }
public void setAdditionalSetting(LayerSetting layerSetting)
LayerSettingVector
,LayerSettingGrid
,LayerSettingImage
类分别用来对矢量数据图层,栅格数据图层和影像数据图层的风格进行设置和修改。layerSetting
- 普通图层的风格设置。public Theme getTheme()
Layers.add()
方法指定,之后不可更改其专题图类型,只可以对其专题图风格进行修改。private ThemeUnique getThemeTest() { // 返回工作空间连接信息 WorkspaceConnectionInfo connectionInfo = new WorkspaceConnectionInfo( "G:/world/world.sxw"); // 实例化工作空间 Workspace workspace = new Workspace(); ThemeUnique theme = null; try { // 打开已有的工作空间并打开指定名称的地图 workspace.open(connectionInfo); Map map = new Map(workspace); map.open("世界地图"); // 获取当前地图所包含的图层集合对象 Layer layer = map.getLayers().get("World@world#1"); // 获取专题图层的单值专题图对象 theme = (ThemeUnique) layer.getTheme(); } finally { // 释放资源 workspace.dispose(); } // 返回新的单值专题图对象 return new ThemeUnique(theme); }
public Selection getSelection()
public void setSelection(Selection selection)
selection
- 指定图层中的选择集对象。public boolean isSelectable()
public void setSelectable(boolean value)
value
- 指定图层中对象是否可以选择。public boolean isSnapable()
public void setSnapable(boolean value)
value
- 指定图层是否可捕捉。public boolean isSymbolScalable()
public void setSymbolScalable(boolean value)
value
- 指定图层的符号大小是否随图缩放。public double getSymbolScale()
public void setSymbolScale(double value)
value
- 指定图层的符号的比例。public boolean isVisible()
public void setVisible(boolean value)
value
- 指定图层是否可见。public boolean isAntialias()
public void setAntialias(boolean value)
value
- 一个布尔值,指示图层是否开启反走样。true 为开启反走样,false 为不开启。public double getMaxVisibleScale()
public void setMaxVisibleScale(double value)
value
- 指定图层的最大可见比例尺。public double getMinVisibleScale()
public void setMinVisibleScale(double value)
value
- 指定图层的最小可见比例尺。public double getMinVisibleGeometrySize()
public void setMinVisibleGeometrySize(double value)
value
- 指定几何对象的最小可见大小。public boolean isEditable()
当图层为可编辑时,意味着可以对图层所引用的数据进行修改和编辑,通过图层,可以对数据进行可视化的编辑。当你只希望对图层所引用的数据进行渲染或相关分析操作而不希望影响原数据时,建议将图层设置为不可编辑,以免不经意的操作修改了数据。
public void setEditable(boolean value)
当图层为可编辑时,意味着可以对图层所引用的数据进行修改和编辑,通过图层,可以对数据进行可视化的编辑。当你只希望对图层所引用的数据进行渲染或相关分析操作而不希望影响原数据时,建议将图层设置为不可编辑,以免不经意的操作修改了数据。
value
- 图层是否处于可编辑状态。public String[] getValueExpressions()
ElementDrawingEvent
)时,由该事件参数类(ElementDrawingEvent
)提取到的一系列字段表达式。通过 ElementDrawingEvent.getValues()
方法返回对应的字段值。public void setValueExpressions(String[] value)
ElementDrawingEvent
)时,由该事件参数类(ElementDrawingEvent
)提取到的一系列字段表达式。通过 ElementDrawingEvent.getValues()
方法返回对应的字段值。
注意:对于统计专题图层,该方法设置无效。
value
- 指定的字段表达式定义的值。public GeoRegion getClipRegion()
public void setClipRegion(GeoRegion geoRegion)
geoRegion
- 图层的裁剪区域。public int getOpaqueRate()
public void setOpaqueRate(int value)
value
- 图层的不透明度。public void setFillMarkerOrder(FillMarkerOrderMode value)
FillMarkerOrderMode.GeometryTopLeft
表示从单个几何对象的左上角进行填充;
FillMarkerOrderMode.LayerTopLeft
表示从整个图层的左上角进行填充。value
- 图层的填充模式。public FillMarkerOrderMode getFillMarkerOrder()
FillMarkerOrderMode.GeometryTopLeft
表示从单个几何对象的左上角进行填充;
FillMarkerOrderMode.LayerTopLeft
表示从整个图层的左上角进行填充。FillMarkerOrderMode.GeometryTopLeft
。public boolean removeThemeElementPosition(int geometryID)
geometryID
- 给定的几何对象的 ID。public Point2D getThemeElementPosition(int geometryID)
geometryID
- 给定的几何对象的 ID。Point2D.getEMPTY()
,即返回一个空的点对象。public void setThemeElementPosition(int geometryID, Point2D position)
geometryID
- 给定的几何对象的ID。position
- 自定义专题元素位置的地理坐标。private void setThemeElementPositionTest() { // 打开数据源 String path = "G:/World/World.udb"; DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo(path, "World", ""); Workspace workspace = new Workspace(); Datasource datasource = workspace.getDatasources().open(datasourceConnectionInfo); // 在地图中打开面数据集 DatasetVector dataset = (DatasetVector) datasource.getDatasets().get( "World"); // 为该数据集制作标签专题图,并添加到地图 MapControl mapControl = new MapControl(workspace); Map map = mapControl.getMap(); Layer layer = map.getLayers().add(dataset, true); ThemeLabel theme = ThemeLabel.makeDefault(dataset, "SmID",RangeMode.EQUALINTERVAL, 5); theme.setLabelExpression("Capital"); Layer layertheme = map.getLayers().add(dataset, theme, true); // 将该标签专题图的专题图元素设定到指定位置 layertheme.setThemeElementPosition(1, new Point2D(16000000, 10000000)); // 释放资源 mapControl.dispose(); workspace.dispose(); }
public Rectangle2D getBounds()
public void clearThemeElementPositions()
public boolean hitTest(Point2D pt, double tolerance, ArrayList<GeoText> testResult)
pt
- 要测试的点。tolerance
- 指定的容限。testResult
- 用于存储该方法得到的专题图元素,在没有得到满足条件的对象时,该参数对象的长度为 0,该参数不能为 null。private void hitTestTest() { // 打开数据源 Workspace workspace = new Workspace(); MapControl mapControl = new MapControl(); mapControl.getMap().setWorkspace(workspace); DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo("G:/world/World.udb", "World", ""); Datasource datasource = workspace.getDatasources().open( datasourceConnectionInfo); // 返回指定名称的数据集 DatasetVector dataset = (DatasetVector) datasource.getDatasets().get( "World"); // 制作标签专题图并将其添加到图层 ThemeLabel themeLabel = ThemeLabel.makeDefault(dataset, "SmID", RangeMode.EQUALINTERVAL, 4); themeLabel.setLabelExpression("SmID"); Layer layer = mapControl.getMap().getLayers().add(dataset, themeLabel, true); mapControl.getMap().viewEntire(); // 通过给定的条件查询得到记录集 int id = 217; Recordset recordset = dataset.query(new int[] {id}, CursorType.STATIC); recordset.moveFirst(); // 设置要测试的点、容限和专题图元素 Point2D hitPoint = recordset.getGeometry().getInnerPoint(); double tolerance = 1000; java.util.ArrayListresult = new java.util.ArrayList (); // 返回选中的专题元素 layer.hitTest(hitPoint, tolerance, result); // 释放资源 mapControl.dispose(); recordset.dispose(); workspace.dispose(); }
public boolean hitTest(Point2D pt, double tolerance, String resultExpression, ArrayList<GeoText> testResult)
pt
- 要测试的点。tolerance
- 指定的容限。resultExpression
- 指定的字段表达式,设置该字段表达式之后可以,可以从结果中取到特定的专题元素对应的几何对象的相关数据。testResult
- 用于存储该方法得到的专题图元素,在没有得到满足条件的对象时,该参数对象的长度为 0,该参数不能为 null。public boolean hitTestGeoCompound(Point2D pt, double tolerance, String resultExpression, ArrayList<GeoCompound> testResult)
pt
- 要测试的点。tolerance
- 指定的容限。resultExpression
- 指定的字段表达式,设置该字段表达式之后可以,可以从结果中取到特定的专题元素对应的几何对象的相关数据。testResult
- 用于存储该方法得到的专题图元素,在没有得到满足条件的对象时,该参数对象的长度为 0,该参数不能为 null。public Selection hitTest(Point2D point, double tolerance)
point
- 要测试的点。tolerance
- 指定的容限。public boolean isVisibleScale(double dScale)
dScale
- 指定的显示比例尺。public String getRepresentationField()
什么是制图表达?
制图表达是矢量数据集中几何对象所关联的信息,它可以使相应的几何对象在地图窗口中显示时,采用其他的表现方式,而原来的几何对象不再显示,注意原几何对象的数据并没有改变,只是显示方式有所变化。
设置矢量数据集中的几何对象的制图表达信息是通过 Recordset
类中的相关方法实现的,利用 Recordset
类中的相关方法可以将制图表达信息写入数据集中指定的用于存储制图表达信息的字段。
当矢量数据集作为图层显示在地图窗口中时,通过该矢量数据集所对应的 Layer 对象的 Layer.setRepresentationField()
方法指定存储制图表达信息的字段,那么在图层显示时,就会根据制图表达字段中存储的信息显示相应的几何对象,制图表达信息只是以另一种方式可视化显示数据集中的几何对象,并没有改变原几何对象的空间和属性信息 。
public void setRepresentationField(String value)
什么是制图表达?
制图表达是矢量数据集中几何对象所关联的信息,它可以使相应的几何对象在地图窗口中显示时,采用其他的表现方式,而原来的几何对象不再显示,注意原几何对象的数据并没有改变,只是显示方式有所变化。
设置矢量数据集中的几何对象的制图表达信息是通过 Recordset
类中的相关方法实现的,利用 Recordset
类中的相关方法可以将制图表达信息写入数据集中指定的用于存储制图表达信息的字段。
当矢量数据集作为图层显示在地图窗口中时,通过该矢量数据集所对应的 Layer 对象的 Layer.setRepresentationField()
方法指定存储制图表达信息的字段,那么在图层显示时,就会根据制图表达字段中存储的信息显示相应的几何对象,制图表达信息只是以另一种方式可视化显示数据集中的几何对象,并没有改变原几何对象的空间和属性信息 。
value
- 存储制图表达信息的字段。public boolean isRepresentationEnabled()
public void setRepresentationEnabled(boolean value)
value
- 一个布尔值指定该图层是否采用制图表达。public DatasetVector themeToDatasetVector(Datasource datasource, String datasetName)
Map.getScale()
方法的返回值为 0 时,该方法不起作用。
datasource
- 表示转换后 CAD 数据集所在的数据源。datasetName
- 表示转换后 CAD 数据集的名称。private void themeToDatasetVectorTest() { // 打开数据源 Workspace workspace = new Workspace(); MapControl mapControl = new MapControl(); mapControl.getMap().setWorkspace(workspace); String path = "G:/world/world.sxw"; DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo(path, "World", ""); Datasource datasource = workspace.getDatasources().open( datasourceConnectionInfo); // 生成单值专题图 DatasetVector dataset = (DatasetVector) datasource.getDatasets().get( "world"); ThemeUnique theme = ThemeUnique.makeDefault(dataset, "Country"); // 将专题图层添加到图层 Map map = mapControl.getMap(); Layer layer = map.getLayers().add(dataset, theme, true); map.viewEntire(); // 从该专题图层生成数据集 String outDatasetName = datasource.getDatasets(). getAvailableDatasetName( "New_CAD"); DatasetVector datasetCAD = layer.themeToDatasetVector(datasource, outDatasetName); // 释放资源 mapControl.dispose(); datasource.getWorkspace().dispose(); }
@Deprecated public Geometry[] themeSymbolsToGeometrys(Recordset recordset)
public Geometry[] themeSymbolsToGeometries(Recordset recordset)
recordset
- 需要转换为 Geometry 对象的专题图点符号的记录集。@Deprecated public boolean isDiposed()
public boolean isDisposed()
public void addElementDrawingListener(ElementDrawingListener l)
ElementDrawingEvent
)的监听器。
在绘制专题图的元素或绘制几何对象时会触发该事件,可以通过该事件来完成自定义专题图元素的绘制,或是修改图层的默认绘制。
l
- 一个用于接收元素绘制事件的监听器。public void removeElementDrawingListener(ElementDrawingListener l)
ElementDrawingEvent
)的监听器。
在绘制专题图的元素或绘制几何对象时会触发该事件,可以通过该事件来完成自定义专题图元素的绘制,或是修改图层的默认绘制。
l
- 一个用于接收元素绘制事件的监听器。@Deprecated public void addCaptionChangedListener(LayerCaptionChangedListener l)
@Deprecated public void removeCaptionChangedListener(LayerCaptionChangedListener l)
@Deprecated public void addSelectableChangedListener(LayerSelectableChangedListener l)
@Deprecated public void removeSelectableChangedListener(LayerSelectableChangedListener l)
@Deprecated public void addEditableChangedListener(LayerEditableChangedListener l)
@Deprecated public void removeEditableChangedListener(LayerEditableChangedListener l)
@Deprecated public void addVisibleChangedListener(LayerVisibleChangedListener l)
@Deprecated public void removeVisibleChangedListener(LayerVisibleChangedListener l)
@Deprecated public void addSnapableChangedListener(LayerSnapableChangedListener l)
@Deprecated public void removeSnapableChangedListener(LayerSnapableChangedListener l)
public boolean isCrossroadOptimized()
public void setCrossroadOptimized(boolean value)
value
- true 为使用十字路口优化,false 为不使用十字路口优化。public void setExternalInfo(String value)
value
- 自定义信息public String getExternalInfo()
public LayerGroup getParentGroup()
public LayerSnapshot getParentSnapshot()
public boolean setDisplayControledLayer(Layer layer)
layer
- 被当前图层控制显示的图层,这里称为被绑定图层,被绑定的图层必须是以下类型的图层:标签专题图,统计专题图、点密度专题图、等级符号专题图。public Layer getDisplayControledLayer()
如果当前图层通过 setDisplayControledLayer() 方法与某个图层建立了绑定关系,那么指定的图层将会与当前的图层显示相同的对象。
public Layer findLayer(String layerName)
layerName
- 图层名称。public FieldValuesDisplayFilter getFieldValuesDisplayFilter()
根据图层对应数据集的指定字段,您可以通过FieldValuesDisplayFilter类提供的功能,指定一系列的字段值(值通过数组存储),那么可以控制与指定字段值匹配对象的显示模式。FieldValuesDisplayMode枚举值可以控制与指定字段值匹配对象的显示模式,,如果该枚举值为DISPLAY,表示,该图层中只有与指定字段值匹配的对象才显示;如果该枚举值为DISABLE,表示该图层中与指定字段值的匹配对象隐藏不显示。
public LayerType getSubLayerType()
public boolean fromXML(String xml)
xml
- 用来创建图层的XML字符串。public String toXML()
public static LayerType getSubType(long layerHndle)
public int addGridFunction(GridFunctionType type, Map<String,String> args)
type
- 要添加的函数类型。args
- 对应函数的参数及参数的值,该参数为Map类型,键值对中键为参数的名称;值即为参数的值。通过栅格函数的方式,对栅格数据应用一些分析处理方式,在访问和查看栅格数据时,这些函数将动态应用到栅格数据,因此,可以快速地展现这些分析处理操作的结果;而通过相应的分析方法实现这些处理任务,处理时间长而且还会产生庞大的处理结果文件。
一个栅格图层数据可以应用多个函数进行处理,这些函数的集合,这里称为函数链,函数链内的函数按照其索引顺序依次作用于栅格图层上。所支持的函数以及函数需要的参数,请参见:GridFunctionType
中有关各函数的描述。
public void removeGridFunction(int index)
public GridFunctionType getGridFunctionType(int index)
public int getGridFunctonCount()
public boolean IsTimeFilterEnable()
图层的时间相关设置主要用于时态数据的播放显示,播放显示由Map对象实现。地图播放显示时态数据的实质是通过时间过滤条件过滤显示对象,具体参见下文。
首先,在Map对象中指定播放数据的时间范围(时间线起止时间)、时间步长间隔、时间窗,并可以根据这些设置参数计算获得当前地图播放时态数据的总帧数。
然后,确定地图当前帧显示的对象内容:
1.确定地图显示的当前帧(Map.getCurrentPlayerTick()
);
2.根据时间步长间隔(Map.getTimeStep()
)、时间窗(Map.getTimeWindow()
)、时间线起始时间(Map.getMapStartTime()
和Map.getMapEndTime()
),计算当前帧的起止时间;
3.当前帧的起止时间传入启用时间的Layer对象,即分别赋值给Layer.setTimeFilterStarting()
和Layer.setTimeFilterEnding()
。
4.根据Layer对象的getTimeFilterStarting()
和getTimeFilterEnding()
返回值,构成时间过滤条件(getTimeFilterStarting(),getTimeFilterEnding()]来过滤显示图层对象,具体为:判断图层对象时间值构成的时间区间[getStartTimeField()
,getEndTimeField()
]是否与查询时间条件有交集,若有对象显示,否则,对象不显示。
由此,实现Map对象按照某时间序列播放显示时态数据的效果,方便查看数据随时间推移而呈现出的模式或变化趋势。
地图中那些启用时间且可见的图层才能播放显示,并且相关参数的计算也基于这些图层。
public void setTimeFilterEnable(boolean bEnable)
bEnable
- 一个布尔值,指示是否启用该图层的时间过滤显示功能,true表示启用,相关时间设置才有效。默认值为false,表示不启用。public String getTimeStartField()
public void setTimeStartField(String strField)
public String getTimeEndField()
public void setTimeEndField(String strField)
public Date getTimeFilterStarting()
public void setTimeFilterStarting(Date startTime)
图层时间过滤条件的起止时间值构成了过滤对象的时间范围,对象时间值在此范围内的显示,否则不显示,关于具体如何判断,请参见:IsTimeFilterEnable
接口备注说明中第4条。
startTime
- public Date getTimeFilterEnding()
public void setTimeFilterEnding(Date endTime)
图层时间过滤条件的起止时间值构成了过滤对象的时间范围,对象时间值在此范围内的显示,否则不显示,关于具体如何判断,请参见:IsTimeFilterEnable
接口备注说明中第4条。
endTime
- public TimeSpan getTimeStepInterval()
public void setTimeStepInterval(TimeSpan timeSpan)
时态数据一般是以固定的时间间隔采集,如每小时或每天。时间步长间隔用于指定时态数据的时间间隔长度。
Layer.getTimeStepInterval()
和Map.getTimeStep()
都表示时间步长间隔,两者的区别在于:
Map.getTimeStep()
用于控制地图播放显示时态数据的时间间隔,不管地图中各图层的时间步长间隔(Layer.getTimeStepInterval()
)的值为多少。
Layer.getTimeStepInterval()
可以描述图层对象的采集时间间隔;也可以计算Map.getTimeStep()
默认值,计算由Map.getMinTimeStep()
方法实现,具体为:若地图中包含多个启用时间的图层,并且各图层的时间步长间隔(Layer.getTimeStepInterval()
)值不同,Map.getMinTimeStep()方法返回最小的图层时间步长间隔。
timeSpan
- 时态数据的时间步长间隔。public void setSwipeEnabled(Boolean value)
public Boolean isSwipeEnabled()
public void setDeduplicateEnabled(Boolean value)
value
- 一个布尔值,指示线面绘制时。是否启用去重复抽稀功能,true表示启用;false表示不启用。
小比例尺下的数据显示时,对于节点较多的对象,此时节点就显得过于密集,若能在不改变对象形状特征的前提下,降低节点密集度,在一定程度上可以显著提升地图的显示效率。抽稀显示(关联接口:Layer.setDeduplicateEnabled、Layer.setDeduplicateThreshold、Layer.setDeduplicateTolerance),可以在不改变原始数据的条件下,在显示时,对线面对象的节点进行抽稀,实现地图显示性能的提升。
首先,以抽稀显示对象的第一个节点为中心,以2倍的抽稀容限(Layer.getDeduplicateTolerance)为边长确定正方形区域,如下图所示,只保留显示该节点,区域内的其他节点不显示;然后,找到下一个节点,再以该节点为中心,确定正方形区域,在该区域内的其他节点也将不显示,依次类推,完成对象的抽稀显示。
请您根据图层显示比例尺的情况,合理设置抽稀容限,容限过大会产生明显的对象形变,容限过小又无法达到显示性能的提升。抽稀阈值默认为500,抽稀容限默认为0.5像素。
public Boolean isDeduplicateEnabled()
关于线面图层的抽稀显示,请参见:Layer.setDeduplicateEnabled
接口的备注说明。
public void setDeduplicateTolerance(double value)
value
- 抽稀容限,单位为像素。抽稀容限用来限定一个正方形像素区域,正方形边长等于2倍的抽稀容限。当开启抽稀显示时,正方形区域内将只保留显示一个有效节点。
关于线面图层的抽稀显示,请参见:Layer.setDeduplicateEnabled
接口的备注说明。
public double getDeduplicateTolerance()
关于线面图层的抽稀显示,请参见:Layer.setDeduplicateEnabled
接口的备注说明。
public void setDeduplicateThreshold(int value)
value
- 抽稀阈值,表示单个对象的节点数目,当对象的节点数目大于抽稀阈值时进行抽稀显示。
关于线面图层的抽稀显示,请参见:Layer.setDeduplicateEnabled
接口的备注说明。
public int getDeduplicateThreshold()
关于线面图层的抽稀显示,请参见:Layer.setDeduplicateEnabled
接口的备注说明。
public boolean isOverlapDisplayed()
public void setOverlapDisplayed(boolean value)
value
- 一个布尔值,指示是否显示压盖对象。true 为显示压盖对象,false 为不显示压盖对象。public void setOverlapGeometryEnabled(Boolean value)
value
- 一个布尔值,指示矢量数据绘制时,是否过滤重叠小对象,默认值为false,表示不过滤。
对象的Bounds的长宽同时小于重叠小对象阈值(Layer.getOverlapGeometryThreshold),该对象被视为小对象。重叠小对象阈值的有效范围为[1,10],单位为像素。而重叠小对象是在指定的单位像素区域 (一个正方形区域,正方形边长等于Layer.getOverlapGeometryPixel返回值),若该区域内绘制了多个小对象(小对象Bounds的中心点在这个正方形区域,则认为该小对象绘制在了该区域内。),就认为这些小对象为重叠小对象。单位像素区域的有效范围为[1,10],单位为像素。
过滤重叠小对象,是指在绘制图层中的小对象时,单位像素区域只进行一次绘制,因此,该区域只会显示一个小对象,其他重叠小对象不显示。通过下面的示意图,可以帮助您理解过滤小对象功能。
假设:重叠小对象阈值设置为8像素,Bounds长和宽都小于8像素的对象参与过滤;指定单位像素区域为边长8像素的正方形区域,单位像素区域的起算点为地图窗口左上角点。如图3所示,基于设定的单位像素区域,对地图窗口划分了规则的格网,以绘制图中第2行第2列区域的对象为例,假设标记紫色箭头的对象先于标记红色箭头对象绘制,当绘制紫色箭头所指对象时,判断该对象为小对象,中心点位于正方形区域内,并且判断该正方形区域没有绘制其他小对象,则该小对象保持显示,同时,标记该区域已绘制了小对象;当绘制红色箭头所指的对象时,该对象也为小对象,中心点在正方形区域内,但是该区域已经标记有小对象绘制,所以该对象不显示。
图1 未过滤重叠小对象
图2 过滤重叠小对象(重叠小对象阈值=8,单位像素区域=8
图3 过滤重叠小对象的过程示意图
过滤重叠小对象可以降低大量小对象在小比例尺下的显示耗时。过滤重叠小对象与通过对象最小尺寸来过滤小对象的区别在于:显示对象的最小尺寸设定后,所有小于这个最小尺寸的对象都将不显示,这会导致地图显示时,小对象集中的大片区域没有对象可显示;而过滤重叠小对象可以保证在单位像素区域内至少有一个小对象显示,避免了小对象集中的大片区域没有对象显示的问题。
public Boolean isOverlapGeometryEnabled()
关于过滤重叠小对象,请参见:Layer.setOverlapGeometryEnabled
接口的备注说明。
public void setOverlapGeometryThreshold(double value)
value
- 参与过滤的对象的尺寸阈值。阈值的有效范围为[1,10]。
关于过滤重叠小对象,请参见:Layer.setOverlapGeometryEnabled
接口的备注说明。
public double getOverlapGeometryThreshold()
关于过滤重叠小对象,请参见:Layer.setOverlapGeometryEnabled
接口的备注说明。
public void setOverlapGeometryPixel(int value)
value
- 指定单位像素区域的大小,该值得的有效范围为[1,10],单位像素区域的大小。
关于过滤重叠小对象,请参见:Layer.setOverlapGeometryEnabled
接口的备注说明。
public int getOverlapGeometryPixel()
关于过滤重叠小对象,请参见:Layer.setOverlapGeometryEnabled
接口的备注说明。
public LayerExtensionPlugin getExtensionPlugin()
public boolean isLayerCacheEnabled()
public void SetLayerCacheEnabled(boolean value)
public void SetLayerCacheRefresh()
public boolean isModified()
public void setModified(boolean value)
public boolean isFullLabelEnabled()
public void setFullLabelEnabled(boolean value)
public DatasourceConnectionInfo getSource()
public void setSource(DatasourceConnectionInfo info, String datasetName)
info
- 数据源连接信息datasetName
- 数据集名称IllegalStateException
- 当Layer已经释放时,再次调用该接口时抛出 IllegalStateException 异常。IllegalArgumentException
- 当数据源连接信息为空时,或数据源连接信息已经释放时抛出 IllegalArgumentException 异常。public void setSource(String filePath, Map<String,String> imageReaderParameter, ElevationData elevationData, String rpcPath, boolean isObjectSpace)
filePath
- 影像文件imageReaderParameter
- 影像读取参数elevationData
- 高程数据rpcPath
- RPC文件, 可以设置RPC文件或RPC文件所在文件夹。isObjectSpace
- 是否物方显示. 当设置为True时,则使用 WGS_1984 坐标系下的正射影像显示。设置为false时,则在 平面坐标系 下显示像方影像。IllegalStateException
- 当Layer已经释放时,再次调用该接口时抛出 IllegalStateException 异常。IllegalArgumentException
- 当影像文件为空时,或文件不存在时抛出 IllegalArgumentException 异常。NullPointerException
- 当影像读取参数为空时抛出 NullPointerException 异常。IllegalArgumentException
- 当输入了RPC文件路径时,且RPC文件不存在时抛出 IllegalArgumentException 异常。IllegalArgumentException
- 当根据输入的参数构建影像数据集失败时,抛出 IllegalArgumentException 异常。public Map getMap()
public void setLayerWeight(int value)
public int getLayerWeight()
public void setSuperAndSubScript(boolean value)
public boolean isSuperAndSubScript()
public void setDisplayFilterStr(String value)
public String getDisplayFilterStr()
public void setBlendMode(BlendMode mode)
public BlendMode getBlendMode()
public void setInteroperable(boolean isInteroperable)
public boolean isInteroperable()
Copyright © 2021–2024 SuperMap. All rights reserved.