public class ConversionAnalyst extends Object
通过本类提供的接口可以实现矢量转为栅格、栅格转为矢量、栅格指定值转为矢量以及栅格细化等功能。
矢栅转换的方法,需要传入一个矢栅转换参数(ConversionAnalystParameter
)对象作为参数,由矢量转为栅格、由栅格转为矢量需要设置的参数有所不同,请参见 ConversionAnalystParameter
类。
限定符和类型 | 方法和说明 |
---|---|
static void |
addSteppedListener(SteppedListener l)
添加一个进度条事件(
SteppedEvent )的监听器。 |
static GeoRegion |
extractRegion(Dataset sourceDataset,
GeoLine geoLineIn,
GeoLine geoLineOut,
int lineWidth,
int boundWidth)
从影像数据中提取面
|
static GridAnalystSetting |
getAnalystSetting()
返回栅格分析环境设置。
|
static DatasetVolume |
point3DToRaster(ConversionAnalystParameter parameter,
int sliceCount,
double startHeight,
double sliceHeight)
三维点转体元栅格。
|
static DatasetVolume |
point3DToRaster(ConversionAnalystParameter parameter,
int sliceCount,
double startHeight,
double sliceHeight,
SteppedListener... listeners)
三维点转体元栅格
|
static GeoLine3D |
rasterBoundaryLine(Dataset sourceDataset)
提取栅格数据集数据部分的栅格范围线。
|
static GeoRegion3D |
rasterBoundaryRegion(Dataset sourceDataset)
提取栅格数据集数据部分的栅格范围面。
|
static DatasetVector |
rasterToVector(ConversionAnalystParameter parameter)
通过指定转换参数设置将栅格数据集转换为矢量数据集。
|
static DatasetVector |
rasterToVector(ConversionAnalystParameter parameter,
SteppedListener... listeners)
栅格转矢量
|
static void |
removeSteppedListener(SteppedListener l)
移除一个进度条事件(
SteppedEvent )的监听器。 |
static void |
setAnalystSetting(GridAnalystSetting gridAnalystSetting)
设置栅格分析环境设置。
|
static Dataset |
thinRaster(Dataset sourceDataset,
Datasource targetDatasource,
String targetDatasetName,
long backOrNoValue,
boolean isSaveAsGrid)
已过时。
此方法已废弃,请使用支持进度监听的新方法
ConversionAnalyst.thinRaster(Dataset, Datasource, String, long, boolean, SteppedListener...) 替换。 |
static Dataset |
thinRaster(Dataset sourceDataset,
Datasource targetDatasource,
String targetDatasetName,
long backOrNoValue,
boolean isSaveAsGrid,
SteppedListener... listeners)
通过减少要素宽度的像元来对栅格化的线状要素进行细化,该方法是处理二值图像的细化方法,如果不是二值图像会先处理为二值图像,只需指定背景色的值,背景色以外的值都是需要细化的值。
|
static Dataset |
thinRaster(Dataset sourceDataset,
long backOrNoValue,
double backOrNoDataTolerance,
Datasource targetDatasource,
String targetDatasetName)
栅格细化,通常在将栅格转换为矢量线数据前使用。
|
static Dataset |
thinRaster(Dataset sourceDataset,
long backOrNoValue,
double backOrNoDataTolerance,
Datasource targetDatasource,
String targetDatasetName,
SteppedListener... listeners)
栅格细化
|
static DatasetGrid |
vectorToRaster(ConversionAnalystParameter parameter)
通过指定转换参数设置将矢量数据集转换为栅格数据集。
|
static DatasetGrid |
vectorToRaster(ConversionAnalystParameter parameter,
SteppedListener... listeners)
矢量转栅格
|
public static GridAnalystSetting getAnalystSetting()
有关“栅格分析环境设置”请参见 GridAnalystSetting
类的介绍。
public static void setAnalystSetting(GridAnalystSetting gridAnalystSetting)
有关“栅格分析环境设置”请参见 GridAnalystSetting
类的介绍。
gridAnalystSetting
- 栅格分析环境设置。public static DatasetGrid vectorToRaster(ConversionAnalystParameter parameter)
将矢量数据转为栅格数据,需要设置哪些参数,请参阅 ConversionAnalystParameter
类。
注意:如果将矢量数据转为像素格式(PixelFormat
)为 UBIT1、UBIT4 和 UBIT8 的栅格数据集,矢量数据中值为 0 的对象在结果栅格中会丢失。
parameter
- 指定的矢量栅格转换参数设置。public DatasetGrid VectorToRaster(Dataset sourceDatasetVector, Datasource targetDatasource) { //实例化一个转换参数设置对象 ConversionAnalystParameter conversionParameter = new ConversionAnalystParameter(); conversionParameter.setSourceDataset(sourceDatasetVector); conversionParameter.setTargetDatasource(targetDatasource); //检查是否存在与结果数据集同名的数据集,如存在则删除 String targetDatasetName = "resultRaster"; if (targetDatasource.getDatasets().contains(targetDatasetName)) { targetDatasource.getDatasets().delete(targetDatasetName); } conversionParameter.setTargetDatasetName(targetDatasetName); conversionParameter.setPixelFormat(PixelFormat.DOUBLE); conversionParameter.setValueFieldName("Value"); conversionParameter.setCellSize(0.05); //将矢量数据集转为栅格数据集 DatasetGrid resultDatasetGrid = ConversionAnalyst.vectorToRaster(conversionParameter); return resultDatasetGrid; }
public static DatasetGrid vectorToRaster(ConversionAnalystParameter parameter, SteppedListener... listeners)
parameter
- 矢量栅格转换参数public static DatasetVector rasterToVector(ConversionAnalystParameter parameter)
将栅格数据转为矢量数据,需要设置哪些参数,请参阅 ConversionAnalystParameter
类。
使用该方法时,通过 ConversionAnalystParameter
对象的 ConversionAnalystParameter.setSpecifiedValue(long)
方法,指定一个栅格值,可以只将具有该值的栅格转为矢量。
parameter
- 指定的矢量栅格转换参数设置。public DatasetVector RasterToVector(Dataset sourceDataset, Datasource targetDatasource) { //检查是否存在与结果数据集同名的数据集,如存在则删除 String targetDatasetName = "resultVector"; if (targetDatasource.getDatasets().contains(targetDatasetName)) { targetDatasource.getDatasets().delete(targetDatasetName); } //实例化一个转换参数设置对象 ConversionAnalystParameter conversionParameter = new ConversionAnalystParameter(); conversionParameter.setSourceDataset(sourceDataset); conversionParameter.setTargetDatasource(targetDatasource); conversionParameter.setTargetDatasetName("resultVector"); //设置转换类型为面状 conversionParameter.setTargetDatasetType(DatasetType.REGION); //设置结果矢量数据集的值字段 conversionParameter.setValueFieldName("GridValue"); //调用 ConvertToVector() 方法将栅格数据集转为矢量数据集,并获取结果矢量数据集 DatasetVector resultDatasetVector = ConversionAnalyst.rasterToVector(conversionParameter); return resultDatasetVector; }
public static DatasetVector rasterToVector(ConversionAnalystParameter parameter, SteppedListener... listeners)
parameter
- 矢量栅格转换参数public static GeoRegion extractRegion(Dataset sourceDataset, GeoLine geoLineIn, GeoLine geoLineOut, int lineWidth, int boundWidth)
sourceDataset
- 影像数据geoLineIn
- 要提取的地物内部线geoLineOut
- 要提取的地物外部线lineWidth
- 线的像素宽度(像素单位)boundWidth
- 范围扩展宽度(像素单位)public static Dataset thinRaster(Dataset sourceDataset, long backOrNoValue, double backOrNoDataTolerance, Datasource targetDatasource, String targetDatasetName)
栅格数据细化处理可以减少栅格数据中用于标识线状地物的单元格的数量,从而提高矢量化的速度和精度。一般作为栅格转线矢量数据之前的预处理,使转换的效果更好。例如一幅扫描的等高线图上可能使用 5、6 个单元格来显示一条等高线的宽度,细化处理后,等高线的宽度就只用一个单元格来显示了,有利于更好地进行矢量化。
关于无值/背景色及其容限的说明
进行栅格细化时,允许用户标识那些不需要细化的单元格。对于栅格数据集,通过无值及其容限来确定这些值,对于影像数据集,则通过背景色及其容限来确定。
当对影像数据集进行细化时,栅格值为指定的值的单元格被视为背景色,不参与细化;同时,在 backOrNoValueTolerance 参数指定的背景色的容限范围内的单元格也不参与细化。
需要注意,影像数据集中栅格值代表的是一个颜色值,因此,如果想要将某种颜色设为背景色,为 backOrNoValue 参数指定的值应为将该颜色(RGB 值)转为 32 位整型之后的值,系统内部会根据像素格式再进行相应的转换。背景色的容限同样为一个 32 位整型值。该值在系统内部被转为分别对应 R、G、B 的三个容限值,例如,指定为背景色的颜色为 (100,200,60),指定的容限值为 329738,该值对应的 RGB 值为 (10,8,5),则值在 (90,192,55) 和 (110,208,65) 之间的颜色均不参与细化。
注意:对于栅格数据集,如果指定的无值的值,在待细化的栅格数据集的值域范围外,会分析失败,返回 null。
sourceDataset
- 指定的待细化的栅格数据集。支持影像数据集。backOrNoValue
- 指定的指定栅格的背景色或表示无值的值。backOrNoDataTolerance
- 栅格背景色的容限或无值的容限。targetDatasource
- 指定的用于存储结果数据集的数据源。targetDatasetName
- 指定的结果数据集的名称。public Dataset ThinRasterData(Dataset sourceDataset, Datasource targetDatasource) { //设置结果栅格数据集的名称,并检查数据源中是否已存在该数据集,如存在则删除 String targetDatasetName = "resultThinnedRaster"; if (targetDatasource.getDatasets().contains(targetDatasetName)) { targetDatasource.getDatasets().delete(targetDatasetName); } //调用栅格数据集细化方法,获取结果数据集 Dataset resultDatasetGrid = ConversionAnalyst.thinRaster(sourceDataset, -9999, 0, targetDatasource, targetDatasetName); return resultDatasetGrid; }
public static Dataset thinRaster(Dataset sourceDataset, long backOrNoValue, double backOrNoDataTolerance, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
sourceDataset
- 待细化的栅格数据集backOrNoValue
- 背景色或空值backOrNoDataTolerance
- 背景色或控制容限targetDatasource
- 输出数据集所在的数据源targetDatasetName
- 输出数据集名称@Deprecated public static Dataset thinRaster(Dataset sourceDataset, Datasource targetDatasource, String targetDatasetName, long backOrNoValue, boolean isSaveAsGrid)
ConversionAnalyst.thinRaster(Dataset, Datasource, String, long, boolean, SteppedListener...)
替换。sourceDataset
- 指定的待细化的栅格数据集或影像数据集。targetDatasource
- 保存结果的数据源。targetDatasetName
- 结果数据集的名称。backOrNoValue
- 指定的背景色的值,背景色的值和无值都会当成背景色。isSaveAsGrid
- 是否保存为栅格数据集,ture表示保存为栅格数据集,false保存为原数据类型(栅格或影像)。保存为栅格数据集便于栅格矢量化时指定值矢量化,方便快速获取线数据。public static Dataset thinRaster(Dataset sourceDataset, Datasource targetDatasource, String targetDatasetName, long backOrNoValue, boolean isSaveAsGrid, SteppedListener... listeners)
sourceDataset
- 指定的待细化的栅格数据集或影像数据集。targetDatasource
- 保存结果的数据源。targetDatasetName
- 结果数据集的名称。backOrNoValue
- 指定的背景色的值,背景色的值和无值都会当成背景色。isSaveAsGrid
- 是否保存为栅格数据集,ture表示保存为栅格数据集,false保存为原数据类型(栅格或影像)。保存为栅格数据集便于栅格矢量化时指定值矢量化,方便快速获取线数据。listeners
- 用于接收进度条事件的监听器。public static GeoRegion3D rasterBoundaryRegion(Dataset sourceDataset)
sourceDataset
- 指定的待处理的栅格数据集。public static GeoLine3D rasterBoundaryLine(Dataset sourceDataset)
sourceDataset
- 指定的待处理的栅格数据集。public static DatasetVolume point3DToRaster(ConversionAnalystParameter parameter, int sliceCount, double startHeight, double sliceHeight)
注意:该方法只会将起始、终止高度内的三维点进行转换,终止高度=起始高度+体元栅格层数*分层间隔高度。
parameter
- 矢量转栅格基础参数。sliceCount
- 体元栅格层数。startHeight
- 体元栅格起始高度。一般可以用所有点的最小z值作为起始高度。sliceHeight
- 体元栅格分层间隔高度。public static DatasetVolume point3DToRaster(ConversionAnalystParameter parameter, int sliceCount, double startHeight, double sliceHeight, SteppedListener... listeners)
parameter
- 矢量转栅格基础参数sliceCount
- 体元栅格层数startHeight
- 体元栅格起始高度sliceHeight
- 体元栅格分层间隔高度public static void addSteppedListener(SteppedListener l)
SteppedEvent
)的监听器。l
- 一个用于接收进度条事件的监听器。public static void removeSteppedListener(SteppedListener l)
SteppedEvent
)的监听器。l
- 一个用于接收进度条事件的监听器。Copyright © 2021–2024 SuperMap. All rights reserved.