com.supermap.data

类 DatasetVolume

  • 直接已知子类:
    InternalDatasetVolume


    public class DatasetVolume
    extends Dataset
    体数据集类。

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

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

    注意:

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

      • 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 HashMap<Integer,StatisticsResult> getVolumeStatisticsResult()
        返回一个哈希表对象,其中键值为体数据集的剖切面,映射值为该剖切面的统计结果。

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

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

        public boolean getHasPyramid()
        判断体数据集是否已创建金字塔。true 表示已经创建,false 表示未创建。
        返回:
        体数据集是否已创建金字塔。
        另请参阅:
        DatasetVolume.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 HashMap<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。
      • addSlice

        public int addSlice(String bandname,
                            PixelFormat value)
        根据指定剖切面名称和像素格式增加一个剖切面。
        参数:
        slicename - 指定的剖切面名称。
        value - 指定的像素格式(与体数据集保持一致)。
        返回:
        增加剖切面的剖切面索引号。
      • get

        public String get(int index)
        返回指定索引号的剖切面的名称。
        参数:
        index - 指定的剖切面的索引号。
        返回:
        指定索引号剖切面的名称。
      • set

        public void set(int index,
                        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(String bandName)
        根据指定的剖切面名字,返回该剖切面在多剖切面体数据集中的索引号。
        参数:
        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。

Copyright © 2021–2024 SuperMap. All rights reserved.