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)转换为栅格数据集中对应的栅格。
|
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
public int getWidth()
public int getHeight()
public void setGeoReference(Rectangle2D value)
value
- 指定的地理范围。public PixelFormat getPixelFormat()
PixelFormat
。PixelFormat
public BlockSizeOption getBlockSizeOption()
public int getRowBlockCount()
public int getColumnBlockCount()
public double getNoValue()
public void setNoValue(double value)
value
- 栅格数据集的空值。public double getMinValue()
DatasetGrid.calculateExtremum()
DatasetGrid.calculateExtremum()
方法的示例。public double getMaxValue()
DatasetGrid.calculateExtremum()
DatasetGrid.calculateExtremum()
方法的示例。@Deprecated public boolean getHasPyramid()
DatasetGrid.buildPyramid()
DatasetGrid.buildPyramid()
方法的示例。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 boolean CalculateHistogram(int[] arrBandSelect)
arrBandSelect
- 波段索引数组public Histogram GetHistogram(int nBandIndex)
nBandIndex
- 波段索引public NetCDFVarInfo getNetCDFVarInfo()
NetCDFVarInfo
的信息。NetCDFVarInfo
的信息。public void setNetCDFVarInfo(NetCDFVarInfo value)
NetCDFVarInfo
的信息。调用该方法之后必须重新打开数据集才能起作用。value
- 当前 NetCDFVarInfo
的信息。public double getValue(int column, int row)
column
- 列row
- 行DatasetGrid.gridToXY(Point)
DatasetGrid.gridToXY()
方法的示例。public void setValue2(int column, int row, double value)
注意:这里的行、列号从零开始计数。
column
- 指定列。row
- 指定行。value
- 栅格值。public double setValue(int column, int row, double value)
注意:该方法的参数值的行、列数从零开始计数。
column
- 指定的栅格数据集中的列数row
- 指定的栅格数据集中的行数value
- 指定的栅格数据集的栅格所对应的栅格值。public Point2D gridToXY(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 Point xyToGrid(Point2D point)
point
- 指定的地理坐标系下的点。public boolean buildPyramid(ResamplingMethod eMethod, boolean bCreateCOG)
eMethod
- 金字塔算法,默认是平均值,目前只支持临近值和平均值bCreateCOG
- 是否创建COG格式内置金字塔,本参数仅影像直接打开起效public boolean buildPyramid(ResamplingMethod eMethod)
eMethod
- 指定的建金字塔方法的类型。public boolean buildPyramid()
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(); }
public ResamplingMethod getPyramidMethod()
目前只支持邻近值和平均值算法。
ResamplingMethod
public boolean updatePyramid(Rectangle2D value)
value
- 更新金字塔的指定影像范围。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()
DatasetGrid.buildPyramid()
DatasetGrid.buildPyramid()
方法的示例。public Colors getColorTable()
public void setColorTable(Colors colors)
colors
- 颜色表对象。public Rectangle2D getBounds()
Dataset
public DatasetVector buildValueTable(Datasource targetDatasource, String tableName)
TABULAR
。
栅格数据集的像素格式为SINGLE
和 DOUBLE
,无法创建属性表,即调用该方法返回为 null。
返回属性表数据集含有系统字段和两个记录栅格信息字段,GRIDVALUE 记录栅格值,GRIDCOUNT 记录栅格值对应的像元个数。
targetDatasource
- 指定的用于存储属性表数据集的数据源。tableName
- 所创建的属性表数据集的名称。public StatisticsResult getGridStatisticsResult()
若栅格数据集没有进行过栅格统计,即没有调用 buildStatistics()
方法,则统计结果对象的各项统计值均为0。
若栅格数据集的像素格式为SINGLE
和 DOUBLE
时,统计结果对象中的众数数组(通过 getMajority()
方法取得)和稀数数组(通过 getMinority()
方法取得)为空数组,兵且中值(通过 getMedianValue()
方法取得)为0,统计不包含这三个结果。
public StatisticsResult buildStatistics()
public boolean update(DatasetGrid dataset)
注意:指定的栅格数据集和被更新的栅格数据集的编码方式(EncodeType
)和像素类型(PixelFormat
)必须保持一致。
dataset
- 指定的栅格数据集。DatasetImage.create(DatasetImageInfo)
方法的示例。public boolean hasPyramid()
public boolean hasStatistics()
public boolean hasHistograms()
Copyright © 2021–2024 SuperMap. All rights reserved.