com.supermap.data
类 DatasetVolume

java.lang.Object
  继承者 com.supermap.data.Dataset
      继承者 com.supermap.data.DatasetVolume

public class DatasetVolume
extends Dataset

体数据集类。

体数据集类,该类用于描述栅格体数据集合,例如指定空间范围的手机信号强度、雾霾污染指数等。

光栅数据采用网格形式组织并使用二维栅格的像素值来记录数据,每个栅格(cell)代表一个像素要素,栅格值可以描述各种数据信息。体数据集中每一个栅格存储的是三维体数据以切片采样方式的值。

注意:

  1. 在对数据集进行操作前需要先打开数据集,即调用 Dataset.open() 方法;
  2. SDE、ORACLESPATIAL、MONGODB、BEYONDB引擎类型目前不支持体数据集。


方法摘要
 int addSlice(java.lang.String slicename, PixelFormat value)
          根据指定剖切面名称和像素格式增加一个剖切面。
 boolean append(int DesIndex, DatasetGrid dataset)
          根据指定的目标体数据集剖切面索引号、源栅格数据集,追加源栅格数据集到目标体数据集相应剖切面。
 boolean append(int DesIndex, DatasetVolume dataset, int SrcIndex)
          根据指定的目标体数据集剖切面索引号、源体数据集、源体数据集剖切面索引号,追加源体数据集相应剖切面到目标体数据集相应剖切面。
 boolean buildPyramid()
          给体数据集创建金字塔。
 java.util.HashMap<java.lang.Integer,StatisticsResult> buildStatistics()
          对体数据集执行统计操作,返回一个哈希表对象,其中键值为体数据集的剖切面,映射值为该剖切面的统计结果。
 boolean calculateExtremum()
          计算体数据集的极值,即最大值和最小值。
 boolean calculateExtremum(int index)
          计算体数据集指定剖切面的极值,即最大值和最小值。
 boolean deleteSlice(int index)
          根据指定索引号删除某个剖切面。
 boolean deleteSlice(int startIndex, int count)
          根据指定的开始索引号和删除个数,删除多剖切面体数据集中的剖切面。
 java.lang.String get(int index)
          返回指定索引号的剖切面的名称。
 BlockSizeOption getBlockSizeOption()
          返回体数据集的像素分块类型。
 GeoRegion getClipRegion()
          返回体数据集的显示区域。
 Colors getColorTable()
          返回体数据集的颜色表。
 boolean getHasPyramid()
          判断体数据集是否已创建金字塔。
 int getHeight()
          返回体数据集的体数据的高度。
 double getMaxValue()
          返回体数据集的最大像素值。
 double getMaxValue(int index)
          返回体数据集指定剖切面的最大像素值。
 double getMinValue()
          返回体数据集的最小像素值。
 double getMinValue(int index)
          返回体数据集指定剖切面的最小像素值。
 double getNoData(int index)
          返回体数据集指定剖切面的无值。
 PixelFormat getPixelFormat(int index)
          返回体数据集指定剖切面的像素格式。
 double getSliceAltitude(int index)
          返回体数据集指定剖切面的高程值。
 int getSliceCount()
          返回剖切面的个数。
 double getValue(int column, int row, int index)
          返回体数据集指定剖切面中指定行列处的像素值。
 java.util.HashMap<java.lang.Integer,StatisticsResult> getVolumeStatisticsResult()
          返回一个哈希表对象,其中键值为体数据集的剖切面,映射值为该剖切面的统计结果。
 int getWidth()
          返回体数据集的体数据的宽度。
 int indexOf(java.lang.String sliceName)
          根据指定的剖切面名字,返回该剖切面在多剖切面体数据集中的索引号。
 boolean removePyramid()
          删除已创建的金字塔。
 void set(int index, java.lang.String value)
          设置指定索引号的剖切面的名称。
 void setClipRegion(GeoRegion value)
          设置体数据集的显示区域。
 void setColorTable(Colors colors)
          设置体数据集的颜色表,打开数据集的时候可以获取或设置颜色表。
 boolean setGeoReference(Rectangle2D value)
          将体数据集对应到地理坐标系中指定的地理范围。
 void setNoData(double value, int index)
          设置体数据集指定剖切面的无值。
 boolean setSliceAltitude(double value, int index)
          设置体数据集指定剖切面的高程值。
 double setValue(int column, int row, double value, int index)
          设置体数据集指定剖切面中指定行列处的像素值。
 boolean updatePyramid(Rectangle2D value)
          根据指定范围更新体数据集金字塔。
 
从类 com.supermap.data.Dataset 继承的方法
addClosedListener, addClosingListener, addSteppedListener, close, dispose, getBounds, getDatasource, getDescription, getEncodeType, getExtInfo, getLockState, getName, getPrjCoordSys, getTableName, getType, hasPrjCoordSys, hasVersion, isOpen, isReadOnly, open, removeClosedListener, removeClosingListener, removeSteppedListener, setBounds, setDescription, setExtInfo, setLockState, setPrjCoordSys, setReadOnly
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

getWidth

public int getWidth()
返回体数据集的体数据的宽度。单位为像素。

返回:
体数据集的体数据的宽度。

getHeight

public int getHeight()
返回体数据集的体数据的高度。单位为像素。

返回:
体数据集的体数据的高度。

getBlockSizeOption

public BlockSizeOption getBlockSizeOption()
返回体数据集的像素分块类型。

返回:
像素分块类型。

getClipRegion

public GeoRegion getClipRegion()
返回体数据集的显示区域。若用户设置了体数据集的显示区域,体数据集就按照给定的区域进行显示,区域之外的都不显示。

注意:

1.当用户所设定的体数据集的地理范围(即调用 DatasetVolume.SetGeoReference() 方法)与所设定的裁剪区域无重叠区域,体数据集不显示。

2.当重新设置体数据集的地理范围,不自动修改体数据集的裁剪区域。

返回:
体数据集的显示区域。

setClipRegion

public void setClipRegion(GeoRegion value)
设置体数据集的显示区域。

当用户设置此方法后,体数据集就按照给定的区域进行显示,区域之外的都不显示。

注意:

1.当用户所设定的体数据集的地理范围(即调用 DatasetVolume.SetGeoReference() 方法)与所设定的裁剪区域无重叠区域,体数据集不显示。

2.当重新设置体数据集的地理范围,不自动修改体数据集的显示区域。

参数:
value - 体数据集的显示区域。
示例:
以下代码示范如何给体数据集设置显示区域。
 public void setClipRegionTest() {
        // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象
        // 数据源(datasource)中包含一个体数据集(datasetVolume),打开体数据集
        // 定义显示区域的范围
        Point2Ds point2Ds = new Point2Ds();
        point2Ds.add(new Point2D(0, 0));
        point2Ds.add(new Point2D(800, 0));
        point2Ds.add(new Point2D(800, 800));
        point2Ds.add(new Point2D(0, 800));
        point2Ds.add(new Point2D(0, 0));
        GeoRegion georegion = new GeoRegion(point2Ds);
        // 设置显示区域
        datasetVolume.setClipRegion(georegion);
        datasetVolume.close();
    }

getVolumeStatisticsResult

public java.util.HashMap<java.lang.Integer,StatisticsResult> getVolumeStatisticsResult()
返回一个哈希表对象,其中键值为体数据集的剖切面,映射值为该剖切面的统计结果。

若体数据集没有进行过栅格统计,即没有调用 buildStatistics() 方法,则各剖切面的统计结果对象的各项统计值均为0。

返回:
返回一个哈希表对象,其中键值为体数据集的剖切面,映射值为该剖切面的统计结果。

getHasPyramid

public boolean getHasPyramid()
判断体数据集是否已创建金字塔。true 表示已经创建,false 表示未创建。

返回:
体数据集是否已创建金字塔。
另请参见:
buildPyramid()
示例:
请参见 DatasetVolume.buildPyramid() 方法的示例。

getSliceCount

public int getSliceCount()
返回剖切面的个数。

返回:
剖切面的个数。

getNoData

public double getNoData(int index)
返回体数据集指定剖切面的无值。

参数:
index - 指定的剖切面索引号,从 0 开始。
返回:
体数据集中指定剖切面的无值。

setNoData

public void setNoData(double value,
                      int index)
设置体数据集指定剖切面的无值。

参数:
value - 指定的无值。
index - 指定的剖切面索引号,从 0 开始。

getMinValue

public double getMinValue(int index)
返回体数据集指定剖切面的最小像素值。

参数:
index - 指定的剖切面索引号,从 0 开始。
返回:
体数据集指定剖切面的最小像素值。

getMaxValue

public double getMaxValue(int index)
返回体数据集指定剖切面的最大像素值。

参数:
index - 指定的剖切面索引号,从 0 开始。
返回:
体数据集指定剖切面的最大像素值。

getMinValue

public double getMinValue()
返回体数据集的最小像素值。

返回:
体数据集的最小像素值。

getMaxValue

public double getMaxValue()
返回体数据集的最大像素值。

返回:
体数据集的最大像素值。

getSliceAltitude

public double getSliceAltitude(int index)
返回体数据集指定剖切面的高程值。

参数:
index - 指定的剖切面索引号,从 0 开始。
返回:
体数据集指定剖切面的高程值。

setSliceAltitude

public boolean setSliceAltitude(double value,
                                int index)
设置体数据集指定剖切面的高程值。

参数:
value - 设置的高程值。
index - 指定的剖切面索引号,从 0 开始。
返回:
成功返回true,失败返回false。

getColorTable

public Colors getColorTable()
返回体数据集的颜色表。

返回:
体数据集的颜色表。

setColorTable

public void setColorTable(Colors colors)
设置体数据集的颜色表,打开数据集的时候可以获取或设置颜色表。

参数:
colors - 体数据集的颜色表。

getPixelFormat

public PixelFormat getPixelFormat(int index)
返回体数据集指定剖切面的像素格式。

参数:
index - 指定的剖切面索引号,从 0 开始。
返回:
体数据集指定剖切面的像素格式。

setGeoReference

public boolean setGeoReference(Rectangle2D value)
将体数据集对应到地理坐标系中指定的地理范围。

参数:
value - 指定的地理范围。
返回:
true表示成功,false表示失败。

calculateExtremum

public boolean calculateExtremum(int index)
计算体数据集指定剖切面的极值,即最大值和最小值。

参数:
index - 要计算极值的体数据的剖切面序号。
返回:
如果计算成功返回true,否则返回false。

calculateExtremum

public boolean calculateExtremum()
计算体数据集的极值,即最大值和最小值。

返回:
如果计算成功返回true,否则返回false。

getValue

public double getValue(int column,
                       int row,
                       int index)
返回体数据集指定剖切面中指定行列处的像素值。

参数:
column - 指定的列号,从 0 开始。
row - 指定的行号,从 0 开始。
index - 指定的剖切面索引号,从 0 开始。
返回:
体数据集指定剖切面中指定行列处的像素值。

setValue

public double setValue(int column,
                       int row,
                       double value,
                       int index)
设置体数据集指定剖切面中指定行列处的像素值。

参数:
column - 指定的列号,从 0 开始。
row - 指定的行号,从 0 开始。
value - 指定的要设置的像素值。
index - 指定的剖切面索引号,从 0 开始。
返回:
新设置的像素值。

buildStatistics

public java.util.HashMap<java.lang.Integer,StatisticsResult> buildStatistics()
对体数据集执行统计操作,返回一个哈希表对象,其中键值为体数据集的剖切面,映射值为该剖切面的统计结果。统计的结果包括数据集的最大值、最小值、均值、中值、众数、稀数、方差、标准差等。

返回:
返回一个哈希表对象,其中键值为体数据集的剖切面,映射值为该剖切面的统计结果。

buildPyramid

public boolean buildPyramid()
给体数据集创建金字塔。目的是提高体数据集的显示速度。金字塔只能针对原始的数据进行创建;一次仅能给一个数据集创建金字塔,当显示该体数据集的时候,已创建的金字塔都将被访问。下图为不同比例尺下金字塔的建立过程。

返回:
如果创建成功,返回 true;否则返回 false。
示例:
以下代码示范如何为体数据集创建金字塔。
 public void buildPyramidTest() {
        // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象
        // 数据源(datasource)包含一个名为 Volume 的体数据集 datasetVolume,打开体数据集
        DatasetVolume datasetVolume = (DatasetVolume) datasource.getDatasets().get(
                "Volume");
        datasetVolume.open();

        // 判断当前体数据集是否有金字塔,如果有,移除金字塔后重新创建;如果没有,直接创建金字塔
        if (datasetVolume.getHasPyramid()) {
            datasetVolume.removePyramid();
            System.out.println("判断当前影像数据集是否有金字塔的方法返回值为:" +
                               datasetVolume.getHasPyramid());
            datasetVolume.buildPyramid();
        } else {
            datasetVolume.buildPyramid();
        }

                datasetVolume.close();
    }
 

updatePyramid

public boolean updatePyramid(Rectangle2D value)
根据指定范围更新体数据集金字塔。

参数:
value - 指定的体数据集的范围。
返回:
如果更新成功,返回 true,否则返回 false。

removePyramid

public boolean removePyramid()
删除已创建的金字塔。

返回:
如果删除成功,返回 true;否则返回 false。
另请参见:
buildPyramid()
示例:
请参见 DatasetVolume.buildPyramid() 方法的示例。

addSlice

public int addSlice(java.lang.String slicename,
                    PixelFormat value)
根据指定剖切面名称和像素格式增加一个剖切面。

参数:
slicename - 指定的剖切面名称。
value - 指定的像素格式(与体数据集保持一致)。
返回:
增加剖切面的剖切面索引号。

get

public java.lang.String get(int index)
返回指定索引号的剖切面的名称。

参数:
index - 指定的剖切面的索引号。
返回:
指定索引号剖切面的名称。

set

public void set(int index,
                java.lang.String value)
设置指定索引号的剖切面的名称。

参数:
index - 指定的剖切面的索引号。
value - 指定索引号的剖切面的名称。

deleteSlice

public boolean deleteSlice(int index)
根据指定索引号删除某个剖切面。

参数:
index - 指定要删除剖切面的索引。
返回:
删除成功返回 true;否则返回 false。

deleteSlice

public boolean deleteSlice(int startIndex,
                           int count)
根据指定的开始索引号和删除个数,删除多剖切面体数据集中的剖切面。

参数:
startIndex - 指定删除剖切面的开始索引号。
count - 要删除的剖切面的个数。
返回:
删除成功返回 true;否则返回 false。

indexOf

public int indexOf(java.lang.String sliceName)
根据指定的剖切面名字,返回该剖切面在多剖切面体数据集中的索引号。

参数:
sliceName - 指定剖切面的名称。
返回:
剖切面的索引号。

append

public boolean append(int DesIndex,
                      DatasetVolume dataset,
                      int SrcIndex)
根据指定的目标体数据集剖切面索引号、源体数据集、源体数据集剖切面索引号,追加源体数据集相应剖切面到目标体数据集相应剖切面。

参数:
DesIndex - 目标体数据集剖切面索引号。
dataset - 源体数据集(源体数据集的BlockSize、ColBlocks、RowBlocks、Width、Height、Bounds与目标体数据集保持一致)。
SrcIndex - 源体数据集剖切面索引号。
返回:
追加成功返回 true;否则返回 false。

append

public boolean append(int DesIndex,
                      DatasetGrid dataset)
根据指定的目标体数据集剖切面索引号、源栅格数据集,追加源栅格数据集到目标体数据集相应剖切面。

参数:
DesIndex - 目标体数据集剖切面索引号。
dataset - 源栅格数据集(源栅格数据集的BlockSize、ColBlocks、RowBlocks、Width、Height、Bounds与目标体数据集保持一致)。
返回:
追加成功返回 true;否则返回 false。