类 DatasetGrid
- java.lang.Object
-
- com.supermap.data.InternalHandle
-
- com.supermap.data.Dataset
-
- com.supermap.data.DatasetGrid
-
public class DatasetGrid extends Dataset
栅格数据集类。
栅格数据集类,该类用于描述栅格数据,例如高程数据集和土地利用图。栅格数据采用网格形式组织并使用二维的栅格的像素值来记录数据,每个栅格(cell)代表一个像素要素,栅格值可以描述各种数据信息。栅格数据集中每一个栅格(cell)存储的是表示地物的属性值,属性值可以是土壤类型、密度值、高程、温度、湿度等。
注意:在对数据集进行操作前需要先打开数据集,即调用
Dataset.open()
方法。
-
-
方法概要
所有方法 实例方法 具体方法 已过时的方法 限定符和类型 方法和说明 boolean
buildPyramid()
该方法用于给栅格数据创建金字塔。boolean
buildPyramid(ResamplingMethod eMethod)
该方法用于给栅格数据创建指定类型的金字塔,目的是提高栅格数据的显示速度。boolean
buildPyramid(ResamplingMethod eMethod, boolean bCreateCOG)
创建金字塔StatisticsResult
buildStatistics()
对栅格数据集执行统计操作,返回该栅格数据集的统计结果对象。DatasetVector
buildValueTable(Datasource targetDatasource, String tableName)
创建栅格值属性表,其类型为属性表数据集类型TABULAR
。boolean
calculateExtremum()
计算栅格数据集的极值,即最大值和最小值。boolean
CalculateHistogram(int[] arrBandSelect)
计算直方图BlockSizeOption
getBlockSizeOption()
返回像素分块类型。Rectangle2D
getBounds()
返回数据集中包含所有对象的最小外接矩形。GeoRegion
getClipRegion()
返回对栅格数据集的显示区域。Colors
getColorTable()
打开数据集时返回颜色表。int
getColumnBlockCount()
返回栅格数据集分块后的所得到的总列数。StatisticsResult
getGridStatisticsResult()
返回栅格数据集的统计结果,包括最大值、最小值、均值、中值、众数、稀数、方差、标准差等。boolean
getHasPyramid()
已过时。判断栅格数据集是否已创建金字塔。int
getHeight()
返回栅格数据集的栅格的高度。Histogram
GetHistogram(int nBandIndex)
获取指定波段的直方图double
getMaxValue()
返回栅格数据集中栅格值的最大值。double
getMinValue()
返回栅格数据集中栅格值的最小值。NetCDFVarInfo
getNetCDFVarInfo()
返回当前NetCDFVarInfo
的信息。double
getNoValue()
返回栅格数据集的空值,当此数据集为空值时,用户可采用-9999来表示。PixelFormat
getPixelFormat()
返回栅格数据存储的像素格式。ResamplingMethod
getPyramidMethod()
获取栅格数据集的金字塔的生成算法。int
getRowBlockCount()
返回栅格数据经过分块后所得到的总行数。double
getValue(int column, int row)
根据给定的行数和列数返回栅格数据集的栅格所对应的栅格值。int
getWidth()
返回栅格数据集的栅格的宽度。Point2D
gridToXY(Point point)
根据指定的行数和列数所对应的栅格点转换为地理坐标系下的点,即 X, Y 坐标。boolean
hasHistograms()
栅格数据集是否有直方图信息boolean
hasPyramid()
栅格数据集是否有金字塔boolean
hasStatistics()
栅格数据集是否有统计信息boolean
removePyramid()
删除已创建的金字塔。void
setClipRegion(GeoRegion value)
设置栅格数据集的显示区域。void
setColorTable(Colors colors)
设置颜色表。void
setGeoReference(Rectangle2D value)
将栅格数据集对应到地理坐标系中指定的地理范围。void
setNetCDFVarInfo(NetCDFVarInfo value)
设置当前NetCDFVarInfo
的信息。void
setNoValue(double value)
设置栅格数据集的空值,当此数据集为空值时,用户可采用-9999来表示。double
setValue(int column, int row, double value)
根据给定的行数和列数设置栅格数据集的栅格所对应的栅格值。void
setValue2(int column, int row, double value)
设置指定行列号的栅格值。boolean
update(DatasetGrid dataset)
根据指定的栅格数据集更新。boolean
updatePyramid(Rectangle2D value)
按指定范围更新栅格数据集影像金字塔。Point
xyToGrid(Point2D point)
将地理坐标系下的点(X Y)转换为栅格数据集中对应的栅格。-
从类继承的方法 com.supermap.data.Dataset
addClosedListener, addClosingListener, addLockChangedListener, addSteppedListener, close, dispose, equals, getDatasource, getDescription, getEncodeType, getExtInfo, getGeoStoreType, getGroup, getID, getLockState, getName, getPrivilegeTypes, getPrivilegeTypes, getPrjCoordSys, getSchema, getTableName, getTransState, getType, hashCode, hasPrivilegeGrant, hasPrjCoordSys, isDisposed, isOpen, isReadOnly, isVersioned, open, refresh, removeClosedListener, removeClosingListener, removeLockChangedListener, removeSteppedListener, setBounds, setDescription, setExtInfo, setLockState, setPrivilegeTypes, setPrjCoordSys, setReadOnly, toString
-
-
-
-
方法详细资料
-
getWidth
public int getWidth()
返回栅格数据集的栅格的宽度。单位为像素。- 返回:
- 栅格数据集的栅格的宽度。
-
getHeight
public int getHeight()
返回栅格数据集的栅格的高度。单位为像素。- 返回:
- 栅格数据集的栅格的高度。
-
setGeoReference
public void setGeoReference(Rectangle2D value)
将栅格数据集对应到地理坐标系中指定的地理范围。- 参数:
value
- 指定的地理范围。
-
getPixelFormat
public PixelFormat getPixelFormat()
返回栅格数据存储的像素格式。每个象素采用不同的字节进行表示,单位为比特(bit)。详细信息请参考PixelFormat
。- 返回:
- 栅格数据存储的像素格式。
- 另请参阅:
PixelFormat
-
getBlockSizeOption
public BlockSizeOption getBlockSizeOption()
返回像素分块类型。用于栅格数据集或影像数据。- 返回:
- 返回像素分块类型。
-
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()
返回栅格数据集中栅格值的最小值。- 返回:
- 栅格数据集中栅格值的最小值。
- 另请参阅:
DatasetGrid.calculateExtremum()
- 示范代码:
- 请参见
DatasetGrid.calculateExtremum()
方法的示例。
-
getMaxValue
public double getMaxValue()
返回栅格数据集中栅格值的最大值。- 返回:
- 栅格数据集中栅格值的最大值。
- 另请参阅:
DatasetGrid.calculateExtremum()
- 示范代码:
- 请参见
DatasetGrid.calculateExtremum()
方法的示例。
-
getHasPyramid
@Deprecated public boolean getHasPyramid()
已过时。 判断栅格数据集是否已创建金字塔。- 返回:
- 栅格数据集是否已创建金字塔,已创建金字塔返回 true,否则返回 false。
- 另请参阅:
DatasetGrid.buildPyramid()
- 示范代码:
- 请参见
DatasetGrid.buildPyramid()
方法的示例。
-
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(); }
-
CalculateHistogram
public boolean CalculateHistogram(int[] arrBandSelect)
计算直方图- 参数:
arrBandSelect
- 波段索引数组
-
GetHistogram
public Histogram GetHistogram(int nBandIndex)
获取指定波段的直方图- 参数:
nBandIndex
- 波段索引- 返回:
- 指定波段的直方图
-
getNetCDFVarInfo
public NetCDFVarInfo getNetCDFVarInfo()
返回当前NetCDFVarInfo
的信息。- 返回:
- 当前
NetCDFVarInfo
的信息。
-
setNetCDFVarInfo
public void setNetCDFVarInfo(NetCDFVarInfo value)
设置当前NetCDFVarInfo
的信息。调用该方法之后必须重新打开数据集才能起作用。- 参数:
value
- 当前NetCDFVarInfo
的信息。
-
getValue
public double getValue(int column, int row)
根据给定的行数和列数返回栅格数据集的栅格所对应的栅格值。注意:该方法的参数值的行、列数从零开始计数。- 参数:
column
- 列row
- 行- 返回:
- 栅格数据集的栅格所对应的栅格值。
- 另请参阅:
DatasetGrid.gridToXY(Point)
- 示范代码:
- 请参见
DatasetGrid.gridToXY()
方法的示例。
-
setValue2
public void setValue2(int column, int row, double value)
设置指定行列号的栅格值。注意:这里的行、列号从零开始计数。
- 参数:
column
- 指定列。row
- 指定行。value
- 栅格值。
-
setValue
public double setValue(int column, int row, double value)
根据给定的行数和列数设置栅格数据集的栅格所对应的栅格值。注意:该方法的参数值的行、列数从零开始计数。
- 参数:
column
- 指定的栅格数据集中的列数row
- 指定的栅格数据集中的行数value
- 指定的栅格数据集的栅格所对应的栅格值。- 返回:
- 栅格数据集的栅格所对应的修改之前的栅格值。
-
gridToXY
public Point2D gridToXY(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 Point xyToGrid(Point2D point)
将地理坐标系下的点(X Y)转换为栅格数据集中对应的栅格。- 参数:
point
- 指定的地理坐标系下的点。- 返回:
- 栅格数据集对应的栅格。
-
buildPyramid
public boolean buildPyramid(ResamplingMethod eMethod, boolean bCreateCOG)
创建金字塔- 参数:
eMethod
- 金字塔算法,默认是平均值,目前只支持临近值和平均值bCreateCOG
- 是否创建COG格式内置金字塔,本参数仅影像直接打开起效- 返回:
- true or false
-
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(); }
-
getPyramidMethod
public ResamplingMethod getPyramidMethod()
获取栅格数据集的金字塔的生成算法。目前只支持邻近值和平均值算法。
- 返回:
- 创建金字塔的算法。
- 另请参阅:
ResamplingMethod
-
updatePyramid
public boolean updatePyramid(Rectangle2D value)
按指定范围更新栅格数据集影像金字塔。- 参数:
value
- 更新金字塔的指定影像范围。- 返回:
- 如果更新成功,返回 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。
- 另请参阅:
DatasetGrid.buildPyramid()
- 示范代码:
- 请参见
DatasetGrid.buildPyramid()
方法的示例。
-
getColorTable
public Colors getColorTable()
打开数据集时返回颜色表。- 返回:
- 颜色表。
-
setColorTable
public void setColorTable(Colors colors)
设置颜色表。- 参数:
colors
- 颜色表对象。
-
getBounds
public Rectangle2D getBounds()
从类复制的说明:Dataset
返回数据集中包含所有对象的最小外接矩形。对于矢量数据集来说,为数据集中所有对象的最小外接矩形;对于栅格数据集来说,为当前栅格或影像的地理范围。
-
buildValueTable
public DatasetVector buildValueTable(Datasource targetDatasource, String tableName)
创建栅格值属性表,其类型为属性表数据集类型TABULAR
。栅格数据集的像素格式为
SINGLE
和DOUBLE
,无法创建属性表,即调用该方法返回为 null。返回属性表数据集含有系统字段和两个记录栅格信息字段,GRIDVALUE 记录栅格值,GRIDCOUNT 记录栅格值对应的像元个数。
- 参数:
targetDatasource
- 指定的用于存储属性表数据集的数据源。tableName
- 所创建的属性表数据集的名称。- 返回:
- 返回栅格值属性表对象。
-
getGridStatisticsResult
public StatisticsResult getGridStatisticsResult()
返回栅格数据集的统计结果,包括最大值、最小值、均值、中值、众数、稀数、方差、标准差等。若栅格数据集没有进行过栅格统计,即没有调用
buildStatistics()
方法,则统计结果对象的各项统计值均为0。若栅格数据集的像素格式为
SINGLE
和DOUBLE
时,统计结果对象中的众数数组(通过getMajority()
方法取得)和稀数数组(通过getMinority()
方法取得)为空数组,兵且中值(通过getMedianValue()
方法取得)为0,统计不包含这三个结果。- 返回:
- 栅格数据集的统计结果对象。
-
buildStatistics
public StatisticsResult buildStatistics()
对栅格数据集执行统计操作,返回该栅格数据集的统计结果对象。统计的结果包括栅格数据集的最大值、最小值、均值、中值、众数、稀数、方差、标准差等。- 返回:
- 栅格数据集的统计结果对象。
-
update
public boolean update(DatasetGrid dataset)
根据指定的栅格数据集更新。注意:指定的栅格数据集和被更新的栅格数据集的编码方式(
EncodeType
)和像素类型(PixelFormat
)必须保持一致。- 参数:
dataset
- 指定的栅格数据集。- 返回:
- 一个布尔值,表示更新是否成功,如果更新成功,返回 true,否则返回 false。
- 示范代码:
- 请参见
DatasetImage.create(DatasetImageInfo)
方法的示例。
-
hasPyramid
public boolean hasPyramid()
栅格数据集是否有金字塔- 返回:
- 有金字塔返回true,否则返回false。
-
hasStatistics
public boolean hasStatistics()
栅格数据集是否有统计信息- 返回:
- 有统计信息返回true,否则返回false。
-
hasHistograms
public boolean hasHistograms()
栅格数据集是否有直方图信息- 返回:
- 有直方图信息返回true,否则返回false。
-
-
Copyright © 2021–2024 SuperMap. All rights reserved.