public class DatasetImage extends Dataset
影像数据集类。
影像数据集类,该类用于描述影像数据,不具备属性信息,例如影像地图、多波段影像和实物地图等。
光栅数据采用网格形式组织并使用二维栅格的像素值来记录数据,每个栅格(cell)代表一个像素要素,栅格值可以描述各种数据信息。影像数据集中每一个栅格存储的是一个颜色值或颜色的索引值(RGB 值)。
注意:在对数据集进行操作前需要先打开数据集,即调用 Dataset.open()
方法。
限定符和类型 | 方法和说明 |
---|---|
int |
addBand(DatasetImage dataset)
向指定的多波段影像数据集中追加波段。
|
int |
addBand(DatasetImage[] datasets)
向指定的多波段影像数据集合中追加多个波段。
|
int |
addBand(DatasetImage dataset,
int[] indexes)
向指定的多波段影像数据集中按照指定的索引追加多个波段。
|
boolean |
buildPyramid()
给影像数据集创建金字塔。
|
boolean |
buildPyramid(ResamplingMethod eMethod)
创建金字塔。
|
boolean |
buildPyramid(ResamplingMethod eMethod,
boolean bCreateCOG)
创建金字塔
|
HashMap<Integer,StatisticsResult> |
buildStatistics()
对影像数据集执行统计操作,返回一个哈希表对象,其中键值为影像数据集的波段,映射值为该波段的统计结果。
|
boolean |
calculateExtremum()
计算影像数据集的极值,即像素的最大值和最小值。
|
boolean |
calculateExtremum(int index)
计算影像数据指定波段的极值,即最大值和最小值。
|
boolean |
CalculateHistogram(int[] arrBandSelect)
计算直方图
|
boolean |
deleteBand(int index)
根据指定索引号删除某个波段。
|
boolean |
deleteBand(int startIndex,
int count)
根据指定的开始索引和删除个数,删除多波段影像数据集中的波段。
|
String |
get(int index)
返回指定序号的波段的名称。
|
int |
getBandCount()
返回波段的个数。
|
BlockSizeOption |
getBlockSizeOption()
返回影像数据集的像素分块类型。
|
GeoRegion |
getClipRegion()
返回影像数据集的裁剪区域。
|
boolean |
getHasPyramid()
已过时。
判断影像数据集是否已创建金字塔。
|
int |
getHeight()
返回影像数据集的影像数据的高度。
|
Histogram |
GetHistogram(int nBandIndex)
获取指定波段的直方图
|
HashMap<Integer,StatisticsResult> |
getImageStatisticsResult()
返回一个哈希表对象,其中键值为影像数据集的波段,映射值为该波段的统计结果。
|
double |
getMaxValue(int index)
返回影像数据集指定波段的最大像素值。
|
double |
getMinValue(int index)
返回影像数据集指定波段的最小像素值。
|
double |
getNoData(int index)
返回影像数据集指定波段的无值。
|
Colors |
getPalette(int index)
返回影像数据集指定波段的颜色调色板。
|
PixelFormat |
getPixelFormat(int index)
返回影像数据集指定波段的像素格式。
|
ResamplingMethod |
getPyramidMethod()
获取影像数据集的金字塔的生成算法。
|
double |
getValue(int column,
int row,
int index)
返回影像数据集指定波段中指定行列处的像素值。
|
int |
getWidth()
返回影像数据集的影像数据的宽度。
|
boolean |
hasHistograms()
影像数据集是否有直方图信息
|
boolean |
hasPyramid()
影像数据集是否有金字塔
|
boolean |
hasStatistics()
影像数据集是否有统计信息
|
Point2D |
imageToXY(Point point)
将影像数据集的每一个像素点对应到地理坐标系下的坐标点,即 x, y 坐标。
|
int |
indexOf(String bandName)
根据指定的波段名字,返回该波段在多波段影像数据集中的索引。
|
boolean |
removePyramid()
删除已创建的金字塔。
|
void |
set(int index,
String value)
设置指定序号的波段的名称。
|
void |
setClipRegion(GeoRegion value)
设置影像数据集的裁剪区域。
|
void |
setGeoReference(Rectangle2D value)
将影像数据集对应到地理坐标系中指定的地理范围。
|
void |
setNoData(double value,
int index)
设置影像数据集指定波段的无值。
|
void |
setPalette(Colors value,
int index)
设置影像数据集指定波段的颜色调色板。
|
double |
setValue(int column,
int row,
double value,
int index)
设置影像数据集指定波段中指定行列处的像素值。
|
void |
setValue2(int column,
int row,
double value,
int index)
设置影像数据集指定波段中指定行列处的像素值。
|
boolean |
update(DatasetImage dataset)
根据指定的影像数据集更新。
|
boolean |
updatePyramid(Rectangle2D value)
根据指定范围更新影像数据集金字塔。
|
Point |
xyToImage(Point2D point)
将影像数据集的在地理坐标系下的点(X, Y 坐标)对应到像素中。
|
addClosedListener, addClosingListener, addLockChangedListener, addSteppedListener, close, dispose, equals, getBounds, 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()
DatasetImage.buildPyramid()
DatasetImage.buildPyramid()
方法的示例。public int getHeight()
DatasetImage.buildPyramid()
DatasetImage.buildPyramid()
方法的示例。public BlockSizeOption getBlockSizeOption()
public GeoRegion getClipRegion()
注意:
1.当用户所设定的影像数据集的地理范围(即调用 DatasetImage.SetGeoReference()
方法)与所设定的裁剪区域无重叠区域,影像数据集不显示。
2.当重新设置影像数据集的地理范围,不自动修改影像数据集的裁剪区域。
public void setClipRegion(GeoRegion value)
当该方法设置后,影像数据集就按照给定的区域进行显示,区域之外的都不显示。
注意:
1.当用户所设定的影像数据集的地理范围(即调用 DatasetImage.SetGeoReference()
方法)与所设定的裁剪区域无重叠区域,影像数据集不显示。
2.当重新设置影像数据集的地理范围,不自动修改影像数据集的裁剪区域。
value
- 影像数据集的显示区域。public void setClipRegionTest() { // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象 // 数据源(datasource)包含一个名为 Image 的影像数据集 datasetImage,打开影像数据集 // 定义显示区域的范围 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); // 设置显示区域 datasetImage.setClipRegion(georegion); datasetImage.close(); }
public HashMap<Integer,StatisticsResult> getImageStatisticsResult()
若影像数据集没有进行过栅格统计,即没有调用 buildStatistics()
方法,则各波段的统计结果对象的各项统计值均为0。
@Deprecated public boolean getHasPyramid()
DatasetImage.buildPyramid()
DatasetImage.buildPyramid()
方法的示例。public int getBandCount()
public double getNoData(int index)
index
- 指定的波段索引号,从 0 开始。public void setNoData(double value, int index)
value
- 指定的无值。index
- 指定的波段索引号,从 0 开始。public double getMinValue(int index)
index
- 指定的波段索引号,从 0 开始。public double getMaxValue(int index)
index
- 指定的波段索引号,从 0 开始。public PixelFormat getPixelFormat(int index)
index
- 指定的波段索引号,从 0 开始。public Colors getPalette(int index)
index
- 指定的波段索引号,从 0 开始。public void setPalette(Colors value, int index)
value
- 指定的颜色调色板。index
- 指定的波段索引号,从 0 开始。public void setGeoReference(Rectangle2D value)
value
- 指定的影像数据的地理范围。public boolean calculateExtremum()
调用改方法后,getMaxValue()
和 getMinValue()
方法的返回值为影像数据集的像素的最大值和最小值,不调用该方法,这两个方法返回值为默认值 0。
public void calculateExtremumTest() { // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象 // 数据源(datasource)中包含一个影像数据集 BeijingTerrian,打开栅格数据集 // 计算栅格数据集中栅格值的最大值最小值 DatasetImage datasetImage = (DatasetImage) datasource.getDatasets().get( "BeijingTerrian"); datasetImage.open(); if (datasetImage.calculateExtremum()) { double maxValue = datasetImage.getMaxValue(); double minValue = datasetImage.getMinValue(); System.out.println("像素值的最大值为:" + maxValue + "像素值的最小值为:" + minValue); } datasetGrid.close(); }
public boolean calculateExtremum(int index)
index
- 要计算极值的影像数据的波段序号。public boolean CalculateHistogram(int[] arrBandSelect)
arrBandSelect
- 波段索引数组public Histogram GetHistogram(int nBandIndex)
nBandIndex
- 波段索引public double getValue(int column, int row, int index)
column
- 指定的列号,从 0 开始。row
- 指定的行号,从 0 开始。index
- 指定的波段索引号,从 0 开始。public double setValue(int column, int row, double value, int index)
column
- 指定的列号,从 0 开始。row
- 指定的行号,从 0 开始。value
- 指定的要设置的像素值。对于PixelFormat为RGB和RGBA两种像素格式的影像数据,该值为Color对象中的int值。index
- 指定的波段索引号,从 0 开始。public void setValue2(int column, int row, double value, int index)
column
- 指定的列号,从 0 开始。row
- 指定的行号,从 0 开始。value
- 指定的要设置的像素值。对于PixelFormat为RGB和RGBA两种像素格式的影像数据,该值为Color对象中的int值。index
- 指定的波段索引号,从 0 开始。public Point2D imageToXY(Point point)
point
- 指定的行数和列数所对应的影像点。public void imageToXYTest() { // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象 // 数据源(datasource)包含一个名为 Image 的影像数据集 datasetImage,打开影像数据集 // 将指定行列数处的点转换为地理坐标系下的点 java.awt.Point point = new java.awt.Point(100, 50); Point2D point2D = datasetImage.imageToXY(point); System.out.println("该点的地理坐标为:" + point2D); datasetImage.close(); }
public Point xyToImage(Point2D point)
point
- 指定的地理坐标系下的点。public HashMap<Integer,StatisticsResult> buildStatistics()
public boolean buildPyramid(ResamplingMethod eMethod, boolean bCreateCOG)
eMethod
- 金字塔算法,默认是平均值,目前只支持临近值和平均值bCreateCOG
- 是否创建COG格式内置金字塔,本参数仅影像直接打开起效public boolean buildPyramid(ResamplingMethod eMethod)
eMethod
- 金字塔生成算法,目前只支持邻近值算法和平均值算法,默认为平均值算法。ResamplingMethod
public boolean buildPyramid()
public void buildPyramidTest() { // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象 // 数据源(datasource)包含一个名为 Image 的影像数据集 datasetImage,打开影像数据集 DatasetImage datasetImage = (DatasetImage) datasource.getDatasets().get( "Image"); datasetImage.close(); // 判断当前影像数据集是否有金字塔,如果有,移除金字塔后重新创建;如果没有,直接创建金字塔 if (datasetImage.hasPyramid()) { datasetImage.removePyramid(); System.out.println("判断当前影像数据集是否有金字塔的方法返回值为:" + datasetImage.hasPyramid()); datasetImage.buildPyramid(); } else { datasetImage.buildPyramid(); } // 输出影像数据集的高度与宽度 System.out.println("影像数据集的高度为:" + datasetImage.getHeight()); System.out.println("影像数据集的宽度为:" + datasetImage.getWidth()); }
public ResamplingMethod getPyramidMethod()
目前只支持邻近值和平均值算法。
ResamplingMethod
public boolean updatePyramid(Rectangle2D value)
value
- 更新金字塔的指定影像范围。DatasetGrid.updatePyramid()
方法的示例。public boolean removePyramid()
DatasetImage.buildPyramid()
DatasetImage.buildPyramid()
方法的示例。public int addBand(DatasetImage dataset)
dataset
- 影像数据集。public void addBandTest() { // 前提条件:已打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象,数据源中包含影像数据集"image"。 // 打开影像数据集 DatasetImage datasetImage = (DatasetImage) datasource.getDatasets().get("image"); // 新建一个多波段影像数据集 bandImage,向其追加一个波段 datasetImage,并将其命名为“波段1” DatasetImageInfo datasetImageInfo = new DatasetImageInfo("MultiBand", datasetImage ); DatasetImage bandImage = datasource.getDatasets().create(datasetImageInfo); bandImage.addBand(datasetImage); datasetImage.close(); }
public int addBand(DatasetImage[] datasets)
datasets
- 影像数据集合。public int addBand(DatasetImage dataset, int[] indexes)
dataset
- 要追加的波段所在的影像数据集。indexes
- 要追加的波段索引。public String get(int index)
index
- 指定的波段的序号。public void set(int index, String value)
index
- 指定的波段的序号。value
- 指定序号的波段的名称。DatasetImage.addBand(DatasetImage)
DatasetImage.addBand()
方法的示例。public boolean deleteBand(int index)
index
- 指定要删除波段的索引。public boolean deleteBand(int startIndex, int count)
startIndex
- 指定删除波段的开始索引号。count
- 要删除的波段的个数。public int indexOf(String bandName)
bandName
- 指定波段的名称。public boolean update(DatasetImage dataset)
注意:指定的影像数据集和被更新的影像数据集的编码方式(EncodeType
)和像素类型(PixelFormat
)必须保持一致。
dataset
- 指定的影像数据集。DatasetImage.create(DatasetImageInfo)
方法的示例。public boolean hasPyramid()
public boolean hasStatistics()
public boolean hasHistograms()
Copyright © 2021–2024 SuperMap. All rights reserved.