public class DatasetGrid extends Dataset
栅格数据集类。
栅格数据集类,该类用于描述栅格数据,例如高程数据集和土地利用图。栅格数据采用网格形式组织并使用二维的栅格的像素值来记录数据,每个栅格(cell)代表一个像素要素,栅格值可以描述各种数据信息。栅格数据集中每一个栅格(cell)存储的是表示地物的属性值,属性值可以是土壤类型、密度值、高程、温度、湿度等。
注意:在对数据集进行操作前需要先打开数据集,即调用 Dataset.open()
方法。
限定符和类型 | 方法和说明 |
---|---|
boolean |
buildPyramid()
创建影像金字塔,创建影像金字塔前,必须先关闭数据集
|
StatisticsResult |
buildStatistics()
对栅格数据集执行统计操作,返回该栅格数据集的统计结果对象。
|
DatasetVector |
buildValueTable(Datasource targetDatasource, java.lang.String tableName)
创建栅格值属性表,其类型为属性表数据集类型
TABULAR 。 |
boolean |
calculateExtremum()
计算栅格数据集的极值,即最大值和最小值。
|
int |
getBlockSize()
返回栅格数据集像素分块存储的大小。
|
GeoRegion |
getClipRegion()
返回对栅格数据集的显示区域。
|
Colors |
getColorTable()
打开数据集时返回颜色表,关闭数据集时不保存对颜色表进行的设置。
|
int |
getColumnBlockCount()
返回栅格数据集分块后的所得到的总列数。
|
StatisticsResult |
getGridStatisticsResult()
返回栅格数据集的统计结果,包括最大值、最小值、均值、中值、众数、稀数、方差、标准差等。
|
boolean |
getHasPyramid()
返回栅格数据集是否已创建金字塔。
|
int |
getHeight()
返回栅格数据集的栅格的高度。
|
double |
getMaxValue()
返回栅格数据集中栅格值的最大值。
|
double |
getMinValue()
返回栅格数据集中栅格值的最小值。
|
double |
getNoValue()
返回栅格数据集的空值,当此数据集为空值时,用户可采用-9999来表示。
|
PixelFormat |
getPixelFormat()
返回栅格数据存储的像素格式。
|
int |
getRowBlockCount()
返回栅格数据经过分块后所得到的总行数。
|
double |
getValue(int x, int y)
根据给定的行数和列数返回栅格数据集的栅格所对应的栅格值。
|
int |
getWidth()
返回栅格数据集的栅格的宽度。
|
Point2D |
gridToXY(java.awt.Point point)
根据指定的行数和列数所对应的栅格点转换为地理坐标系下的点,即 X, Y 坐标。
|
boolean |
removePyramid()
删除已创建的金字塔。
|
void |
setClipRegion(GeoRegion value)
设置栅格数据集的显示区域。
|
void |
setColorTable(Colors colors)
设置颜色表。
|
void |
setGeoReference(Rectangle2D bounds)
将栅格数据集对应到地理坐标系中指定的地理范围。
|
void |
setNoValue(double value)
设置栅格数据集的空值,当此数据集为空值时,用户可采用-9999来表示。
|
double |
setValue(int x, int y, double value)
根据给定的行数和列数设置栅格数据集的栅格所对应的栅格值。
|
boolean |
update(DatasetGrid dataset)
根据指定的栅格数据集更新。
|
boolean |
updatePyramid(Rectangle2D rectangle2D)
按指定范围更新栅格数据集影像金字塔。
|
java.awt.Point |
xyToGrid(Point2D point)
将地理坐标系下的点(X Y)转换为栅格数据集中对应的栅格。
|
close, getBounds, getDatasource, getDescription, getEncodeType, getName, getPrjCoordSys, getType, isOpen, isReadOnly, open, setDescription, setName, setPrjCoordSys, setReadOnly
public int getWidth()
public int getHeight()
public boolean getHasPyramid()
public PixelFormat getPixelFormat()
PixelFormat
。PixelFormat
public int getBlockSize()
public int getRowBlockCount()
public int getColumnBlockCount()
public double getNoValue()
public void setNoValue(double value)
value
- 栅格数据集的空值。public double getMinValue()
calculateExtremum()
DatasetGrid.calculateExtremum()
方法的示例。public double getMaxValue()
calculateExtremum()
DatasetGrid.calculateExtremum()
方法的示例。public GeoRegion getClipRegion()
注意:
1.当用户所设定的栅格数据集的地理范围(即调用 DatasetGrid.SetGeoReference()
方法)与所设定的裁剪区域无重叠区域,栅格数据集不显示。
2.当重新设置栅格数据集的地理范围,不自动修改栅格数据集的裁剪区域。
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(); }
public boolean calculateExtremum()
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(); }
public double getValue(int x, int y)
x
- 指定的栅格数据集的行。y
- 指定栅格数据集的列。gridToXY(Point)
DatasetGrid.gridToXY()
方法的示例。public void setGeoReference(Rectangle2D bounds)
bounds
- 指定的地理范围。public double setValue(int x, int y, double value)
注意:该方法的参数值的行、列数从零开始计数。
x
- 指定的栅格数据集中的行数。y
- 指定的栅格数据集中的列数。value
- 指定的栅格数据集的栅格所对应的栅格值。public Point2D gridToXY(java.awt.Point point)
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(); }
public java.awt.Point xyToGrid(Point2D point)
point
- 指定的地理坐标系下的点。public boolean updatePyramid(Rectangle2D rectangle2D)
rectangle2D
- 更新金字塔的指定影像范围。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(); }
public boolean removePyramid()
public Colors getColorTable()
public void setColorTable(Colors colors)
colors
- 颜色表对象。public boolean update(DatasetGrid dataset)
注意:指定的栅格数据集和被更新的栅格数据集的编码方式(EncodeType
)和像素类型(PixelFormat
)必须保持一致。
dataset
- 指定的栅格数据集。public StatisticsResult getGridStatisticsResult()
若栅格数据集没有进行过栅格统计,即没有调用 buildStatistics()
方法,则统计结果对象的各项统计值均为0。
若栅格数据集的像素格式为SINGLE
和 DOUBLE
时,统计结果对象中的众数数组(通过 getMajority()
方法取得)和稀数数组(通过 getMinority()
方法取得)为空数组,并且中值(通过 getMedianValue()
方法取得)为0,统计不包含这三个结果。
public StatisticsResult buildStatistics()
public DatasetVector buildValueTable(Datasource targetDatasource, java.lang.String tableName)
TABULAR
。
栅格数据集的像素格式为SINGLE
和 DOUBLE
,无法创建属性表,即调用该方法返回为 null。
返回属性表数据集含有系统字段和两个记录栅格信息字段,GRIDVALUE 记录栅格值,GRIDCOUNT 记录栅格值对应的像元个数。
targetDatasource
- 指定的用于存储属性表数据集的数据源。tableName
- 所创建的属性表数据集的名称。public boolean buildPyramid()