com.supermap.data
类 DatasetGrid

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

public class DatasetGrid
extends Dataset

栅格数据集类。

栅格数据集类,该类用于描述栅格数据,例如高程数据集和土地利用图。栅格数据采用网格形式组织并使用二维的栅格的像素值来记录数据,每个栅格(cell)代表一个像素要素,栅格值可以描述各种数据信息。栅格数据集中每一个栅格(cell)存储的是表示地物的属性值,属性值可以是土壤类型、密度值、高程、温度、湿度等。

注意:在对数据集进行操作前需要先打开数据集,即调用 Dataset.open() 方法。


方法摘要
 boolean buildPyramid()
          该方法用于给栅格数据创建金字塔。
 boolean buildPyramid(ResamplingMethod eMethod)
          该方法用于给栅格数据创建指定类型的金字塔,目的是提高栅格数据的显示速度。
 StatisticsResult buildStatistics()
          对栅格数据集执行统计操作,返回该栅格数据集的统计结果对象。
 DatasetVector buildValueTable(Datasource targetDatasource, java.lang.String tableName)
          创建栅格值属性表,其类型为属性表数据集类型TABULAR
 boolean calculateExtremum()
          计算栅格数据集的极值,即最大值和最小值。
 boolean CalculateHistogram(int[] arrBandSelect)
          计算直方图
 BlockSizeOption getBlockSizeOption()
          返回像素分块类型。
 GeoRegion getClipRegion()
          返回对栅格数据集的显示区域。
 Colors getColorTable()
          打开数据集时返回颜色表。
 int getColumnBlockCount()
          返回栅格数据集分块后的所得到的总列数。
 StatisticsResult getGridStatisticsResult()
          返回栅格数据集的统计结果,包括最大值、最小值、均值、中值、众数、稀数、方差、标准差等。
 boolean getHasPyramid()
          已过时。 返回栅格数据集是否已创建金字塔。true 表示已创建金字塔,false 表示未创建金字塔。
 int getHeight()
          返回栅格数据集的栅格的高度。
 Histogram GetHistogram(int nBandIndex)
          获取指定波段的直方图
 double getMaxValue()
          返回栅格数据集中栅格值的最大值。
 double getMinValue()
          返回栅格数据集中栅格值的最小值。
 NetCDFVarInfo getNetCDFVarInfo()
          返回当前 NetCDFVarInfo 的信息。
 double getNoValue()
          返回栅格数据集的空值,当此数据集为空值时,用户可采用-9999来表示。
 PixelFormat getPixelFormat()
          返回栅格数据存储的像素格式。
 int getRowBlockCount()
          返回栅格数据经过分块后所得到的总行数。
 double getValue(int column, int row)
          根据给定的行数和列数返回栅格数据集的栅格所对应的栅格值。
 int getWidth()
          返回栅格数据集的栅格的宽度。
 Point2D gridToXY(java.awt.Point point)
          根据指定的行数和列数所对应的栅格点转换为地理坐标系下的点,即 X, Y 坐标。
 boolean hasHistograms()
          栅格数据集是否有直方图信息
 boolean hasPyramid()
          栅格数据集是否有金字塔
 boolean hasStatistics()
          栅格数据集是否有统计信息
 boolean removePyramid()
          删除已创建的金字塔。
 void setClipRegion(GeoRegion value)
          设置栅格数据集的显示区域。
 void setColorTable(Colors colors)
          设置颜色表。
 void setGeoReference(Rectangle2D bounds)
          将栅格数据集对应到地理坐标系中指定的地理范围。
 void setNetCDFVarInfo(NetCDFVarInfo netCDFVarInfo)
          设置当前 NetCDFVarInfo 的信息。
 void setNoValue(double value)
          设置栅格数据集的空值,当此数据集为空值时,用户可采用-9999来表示。
 double setValue(int column, int row, double value)
          根据给定的行数和列数设置栅格数据集的栅格所对应的栅格值。
 boolean update(DatasetGrid dataset)
          根据指定的栅格数据集更新。
 boolean updatePyramid(Rectangle2D rectangle2D)
          按指定范围更新栅格数据集影像金字塔。
 java.awt.Point xyToGrid(Point2D point)
          将地理坐标系下的点(X Y)转换为栅格数据集中对应的栅格。
 
从类 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()
返回栅格数据集的栅格的高度。单位为像素。

返回:
栅格数据集的栅格的高度。

getHasPyramid

public boolean getHasPyramid()
已过时。 返回栅格数据集是否已创建金字塔。true 表示已创建金字塔,false 表示未创建金字塔。

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

getPixelFormat

public PixelFormat getPixelFormat()
返回栅格数据存储的像素格式。每个象素采用不同的字节进行表示,单位为比特(bit)。详细信息请参考 PixelFormat

返回:
栅格数据存储的像素格式。
另请参见:
PixelFormat

getRowBlockCount

public int getRowBlockCount()
返回栅格数据经过分块后所得到的总行数。

返回:
栅格数据经过分块后所得到的总行数。

getColumnBlockCount

public int getColumnBlockCount()
返回栅格数据集分块后的所得到的总列数。

返回:
栅格数据集分块后的所得到的总列数。

getNoValue

public double getNoValue()
返回栅格数据集的空值,当此数据集为空值时,用户可采用-9999来表示。

返回:
栅格数据集的空值。

setNoValue

public void setNoValue(double value)
设置栅格数据集的空值,当此数据集为空值时,用户可采用-9999来表示。

参数:
value - 栅格数据集的空值。

getMinValue

public double getMinValue()
返回栅格数据集中栅格值的最小值。

返回:
栅格数据集中栅格值的最小值。
另请参见:
calculateExtremum()
示例:
请参见 DatasetGrid.calculateExtremum() 方法的示例。

getMaxValue

public double getMaxValue()
返回栅格数据集中栅格值的最大值。

返回:
栅格数据集中栅格值的最大值。
另请参见:
calculateExtremum()
示例:
请参见 DatasetGrid.calculateExtremum() 方法的示例。

getClipRegion

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

注意:

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

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

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

setClipRegion

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

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

注意:

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

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

参数:
value - 栅格数据集的显示区域。
示例:
以下代码示范如何给栅格数据集设置显示区域。
 public void setClipRegionTest() {
        // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象
        // 数据源(datasource)中包含一个栅格数据集 Raster (datasetGrid),打开栅格数据集
        // 定义显示区域的范围
        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);
        // 设置显示区域
        datasetGrid.setClipRegion(georegion);
        datasetGrid.close();
    }

calculateExtremum

public boolean calculateExtremum()
计算栅格数据集的极值,即最大值和最小值。建议:栅格数据集在一些分析或者操作之后,建议调用此接口,计算一下最大最小值。

返回:
如果计算成功返回 true,否则返回 false。
示例:
以下代码示范如何计算栅格数据集中栅格的最大值最小值。
 public void calculateExtremumTest() {
        // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象
        // 数据源(datasource)中包含一个栅格数据集 Raster,打开栅格数据集
        // 计算栅格数据集中栅格值的最大值最小值
        DatasetGrid datasetGrid = (DatasetGrid) datasource.getDatasets().get(
                "Raster");
        datasetGrid.open();
        if (datasetGrid.calculateExtremum()) {
            double maxValue = datasetGrid.getMaxValue();
            double minValue = datasetGrid.getMinValue();
            System.out.println("栅格值的最大值为:" + maxValue + "栅格值的最小值为:" + minValue);
        }
        datasetGrid.close();
    }
 

getValue

public double getValue(int column,
                       int row)
根据给定的行数和列数返回栅格数据集的栅格所对应的栅格值。注意:该方法的参数值的行、列数从零开始计数。

参数:
column - 列
row - 行
返回:
栅格数据集的栅格所对应的栅格值。
另请参见:
gridToXY(Point)
示例:
请参见 DatasetGrid.gridToXY() 方法的示例。

setGeoReference

public void setGeoReference(Rectangle2D bounds)
将栅格数据集对应到地理坐标系中指定的地理范围。

参数:
bounds - 指定的地理范围。

setValue

public double setValue(int column,
                       int row,
                       double value)
根据给定的行数和列数设置栅格数据集的栅格所对应的栅格值。

注意:该方法的参数值的行、列数从零开始计数。

参数:
column - 指定的栅格数据集中的列数
row - 指定的栅格数据集中的行数
value - 指定的栅格数据集的栅格所对应的栅格值。
返回:
栅格数据集的栅格所对应的修改之前的栅格值。

gridToXY

public Point2D gridToXY(java.awt.Point point)
根据指定的行数和列数所对应的栅格点转换为地理坐标系下的点,即 X, Y 坐标。

参数:
point - 指定的行数和列数所对应的栅格。
返回:
地理坐标系下的对应的点坐标。
示例:
以下代码示范如何将指定行列数处的栅格点的值转换为地理坐标系下的点。
 public void gridToXYTest() {
        // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象
        // 数据源(datasource)中包含一个栅格数据集 Raster,打开栅格数据集
        // 取出指定行列数处的栅格点的值,并将该点转换为地理坐标系下的点
        DatasetGrid datasetGrid = (DatasetGrid) datasource.getDatasets().get(
                "Raster");
        datasetGrid.open();

        java.awt.Point point = new java.awt.Point(100, 50);
        double value = datasetGrid.getValue(100, 50);
        Point2D point2D = datasetGrid.gridToXY(point);
        System.out.println("该点的栅格值为:" + value + "地理坐标为:" + point2D);
        datasetGrid.close();
    }
 

xyToGrid

public java.awt.Point xyToGrid(Point2D point)
将地理坐标系下的点(X Y)转换为栅格数据集中对应的栅格。

参数:
point - 指定的地理坐标系下的点。
返回:
栅格数据集对应的栅格。

buildPyramid

public boolean buildPyramid(ResamplingMethod eMethod)
该方法用于给栅格数据创建指定类型的金字塔,目的是提高栅格数据的显示速度。

参数:
eMethod - 指定的建金字塔方法的类型。
返回:
创建是否成功,成功返回true,失败返回false。

buildPyramid

public boolean buildPyramid()
该方法用于给栅格数据创建金字塔。目的是提高栅格数据的显示速度。金字塔只能针对原始的数据进行创建;用户仅能给一个数据集创建一次金字塔,如果想再次创建需要将原来创建的金字塔进行删除,当该栅格数据集显示的时候,已创建的金字塔都将被访问。下图所示为不同比例尺下金字塔的建立过程。

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

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

updatePyramid

public boolean updatePyramid(Rectangle2D rectangle2D)
按指定范围更新栅格数据集影像金字塔。

参数:
rectangle2D - 更新金字塔的指定影像范围。
返回:
如果更新成功,返回 true,否则返回 false。
示例:
以下代码示范如何根据指定范围更新栅格数据集影像金字塔。
 public void updatePyramidTest() {
        // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象
        // 数据源(datasource)中包含一个栅格数据集 Raster,打开栅格数据集
        DatasetGrid datasetGrid = (DatasetGrid) datasource.getDatasets().get("Raster");
        datasetGrid.open();

        //指定栅格数据集金字塔更新范围
        Rectangle2D rectangle2D = datasetGrid.getBounds();
        double width = rectangle2D.getRight() - rectangle2D.getLeft();
        double height = rectangle2D.getTop() - rectangle2D.getBottom();
        rectangle2D.setLeft(rectangle2D.getLeft() + width/4);
        rectangle2D.setRight(rectangle2D.getRight() - width/4);
        rectangle2D.setTop(rectangle2D.getTop() + height/4);
        rectangle2D.setBottom(rectangle2D.getBottom() + height/4);

        //按指定范围更新影像金字塔
        datasetGrid.updatePyramid(rectangle2D);

        //关闭数据集
        datasetGrid.close();
    }
 

removePyramid

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

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

getColorTable

public Colors getColorTable()
打开数据集时返回颜色表。

返回:
颜色表。

setColorTable

public void setColorTable(Colors colors)
设置颜色表。

参数:
colors - 颜色表对象。

getNetCDFVarInfo

public NetCDFVarInfo getNetCDFVarInfo()
返回当前 NetCDFVarInfo 的信息。

返回:
当前 NetCDFVarInfo 的信息。

setNetCDFVarInfo

public void setNetCDFVarInfo(NetCDFVarInfo netCDFVarInfo)
设置当前 NetCDFVarInfo 的信息。调用该方法之后必须重新打开数据集才能起作用。

参数:
netCDFVarInfo - 当前 NetCDFVarInfo 的信息。

update

public boolean update(DatasetGrid dataset)
根据指定的栅格数据集更新。

注意:指定的栅格数据集和被更新的栅格数据集的编码方式(EncodeType)和像素类型(PixelFormat)必须保持一致。

参数:
dataset - 指定的栅格数据集。
返回:
一个布尔值,表示更新是否成功,如果更新成功,返回 true,否则返回 false。
示例:
请参见 DatasetImage.create(DatasetImageInfo) 方法的示例。

getGridStatisticsResult

public StatisticsResult getGridStatisticsResult()
返回栅格数据集的统计结果,包括最大值、最小值、均值、中值、众数、稀数、方差、标准差等。

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

若栅格数据集的像素格式为SINGLEDOUBLE 时,统计结果对象中的众数数组(通过 getMajority() 方法取得)和稀数数组(通过 getMinority() 方法取得)为空数组,兵且中值(通过 getMedianValue() 方法取得)为0,统计不包含这三个结果。

返回:
栅格数据集的统计结果对象。

buildStatistics

public StatisticsResult buildStatistics()
对栅格数据集执行统计操作,返回该栅格数据集的统计结果对象。统计的结果包括栅格数据集的最大值、最小值、均值、中值、众数、稀数、方差、标准差等。

返回:
栅格数据集的统计结果对象。

buildValueTable

public DatasetVector buildValueTable(Datasource targetDatasource,
                                     java.lang.String tableName)
创建栅格值属性表,其类型为属性表数据集类型TABULAR

栅格数据集的像素格式为SINGLEDOUBLE ,无法创建属性表,即调用该方法返回为 null。

返回属性表数据集含有系统字段和两个记录栅格信息字段,GRIDVALUE 记录栅格值,GRIDCOUNT 记录栅格值对应的像元个数。

参数:
targetDatasource - 指定的用于存储属性表数据集的数据源。
tableName - 所创建的属性表数据集的名称。
返回:
返回栅格值属性表对象。

getBlockSizeOption

public BlockSizeOption getBlockSizeOption()
返回像素分块类型。用于栅格数据集或影像数据。

返回:
返回像素分块类型。

CalculateHistogram

public boolean CalculateHistogram(int[] arrBandSelect)
计算直方图

参数:
arrBandSelect - 波段索引数组

GetHistogram

public Histogram GetHistogram(int nBandIndex)
获取指定波段的直方图

参数:
nBandIndex - 波段索引
返回:
指定波段的直方图

hasPyramid

public boolean hasPyramid()
栅格数据集是否有金字塔

返回:
有金字塔返回true,否则返回false。

hasStatistics

public boolean hasStatistics()
栅格数据集是否有统计信息

返回:
有统计信息返回true,否则返回false。

hasHistograms

public boolean hasHistograms()
栅格数据集是否有直方图信息

返回:
有直方图信息返回true,否则返回false。