|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object com.supermap.data.Dataset com.supermap.data.DatasetImage
public class DatasetImage
影像数据集类。
影像数据集类,该类用于描述影像数据,不具备属性信息,例如影像地图、多波段影像和实物地图等。
光栅数据采用网格形式组织并使用二维栅格的像素值来记录数据,每个栅格(cell)代表一个像素要素,栅格值可以描述各种数据信息。影像数据集中每一个栅格存储的是一个颜色值或颜色的索引值(RGB 值)。
注意:在对数据集进行操作前需要先打开数据集,即调用 Dataset.open()
方法。
方法摘要 | |
---|---|
int |
addBand(DatasetImage dataset)
向指定的多波段影像数据集中追加波段。 |
int |
addBand(DatasetImage[] datasets)
向指定的多波段影像数据集合中追加多个波段。 |
int |
addBand(DatasetImage dataset,
int[] indexes)
向指定的多波段影像数据集中按照指定的索引追加多个波段。 |
boolean |
buildPyramid()
给影像数据集创建金字塔。 |
java.util.HashMap<java.lang.Integer,StatisticsResult> |
buildStatistics()
对影像数据集执行统计操作,返回一个哈希表对象,其中键值为影像数据集的波段,映射值为该波段的统计结果。 |
boolean |
calculateExtremum()
计算影像数据集的极值,即像素的最大值和最小值。 |
boolean |
calculateExtremum(int index)
计算影像数据指定波段的极值,即最大值和最小值。 |
boolean |
CalculateHistogram(int[] arrBandSelect)
计算直方图 |
boolean |
deleteBand(int index)
根据指定索引号删除某个波段。 |
boolean |
deleteBand(int startIndex,
int count)
根据指定的开始索引和删除个数,删除多波段影像数据集中的波段。 |
java.lang.String |
get(int index)
返回指定序号的波段的名称。 |
int |
getBandCount()
返回波段的个数。 |
BlockSizeOption |
getBlockSizeOption()
返回影像数据集的像素分块类型。 |
GeoRegion |
getClipRegion()
返回影像数据集的裁剪区域。 |
ColorSpaceType |
getColorSpace()
返回色彩显示模式。 |
boolean |
getHasPyramid()
已过时。 判断影像数据集是否已创建影像金字塔。true 表示已经创建,false 表示未创建。 |
int |
getHeight()
返回影像数据集的影像数据的高度。 |
Histogram |
GetHistogram(int nBandIndex)
获取指定波段的直方图 |
java.util.HashMap<java.lang.Integer,StatisticsResult> |
getImageStatisticsResult()
返回一个哈希表对象,其中键值为影像数据集的波段,映射值为该波段的统计结果。 |
double |
getMaxValue(int index)
返回影像数据集指定波段的最大像素值。 |
double |
getMinValue(int index)
返回影像数据集指定波段的最小像素值。 |
double |
getNoData(int index)
返回影像数据集指定波段的无值。 |
Colors |
getPalette(int index)
返回影像数据集指定波段的颜色调色板。 |
PixelFormat |
getPixelFormat(int index)
返回影像数据集指定波段的像素格式。 |
double |
getValue(int column,
int row,
int index)
返回影像数据集指定波段中指定行列处的像素值。 |
int |
getWidth()
返回影像数据集的影像数据的宽度。 |
boolean |
hasHistograms()
影像数据集是否有直方图信息 |
boolean |
hasPyramid()
影像数据集是否有金字塔 |
boolean |
hasStatistics()
影像数据集是否有统计信息 |
Point2D |
imageToXY(java.awt.Point point)
将影像数据集的每一个像素点对应到地理坐标系下的坐标点,即 x, y 坐标。 |
int |
indexOf(java.lang.String bandName)
根据指定的波段名字,返回该波段在多波段影像数据集中的索引。 |
boolean |
removePyramid()
删除已创建的金字塔。 |
void |
set(int index,
java.lang.String value)
设置指定序号的波段的名称。 |
void |
setClipRegion(GeoRegion value)
设置影像数据集的裁剪区域。 |
void |
setColorSpace(ColorSpaceType colorSpaceType)
设置色彩显示模式。 |
void |
setGeoReference(Rectangle2D value)
将影像数据集对应到地理坐标系中指定的地理范围。 |
void |
setNoData(double value,
int index)
设置影像数据集指定波段的无值。 |
void |
setPalette(Colors palette,
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 rectangle2D)
根据指定范围更新影像数据集金字塔。 |
java.awt.Point |
xyToImage(Point2D point)
将影像数据集的在地理坐标系下的点(X, Y 坐标)对应到像素中。 |
从类 java.lang.Object 继承的方法 |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
方法详细信息 |
---|
public int getWidth()
buildPyramid()
DatasetImage.buildPyramid()
方法的示例。public int getHeight()
buildPyramid()
DatasetImage.buildPyramid()
方法的示例。public boolean getHasPyramid()
buildPyramid()
DatasetImage.buildPyramid()
方法的示例。public int getBandCount()
public java.lang.String get(int index)
index
- 指定的波段的序号。
public void set(int index, java.lang.String value)
index
- 指定的波段的序号。value
- 指定序号的波段的名称。addBand(DatasetImage)
DatasetImage.addBand()
方法的示例。public ColorSpaceType getColorSpace()
public void setColorSpace(ColorSpaceType colorSpaceType)
colorSpaceType
- 色彩显示模式。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 Point2D imageToXY(java.awt.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 java.awt.Point xyToImage(Point2D point)
point
- 指定的地理坐标系下的点。
public void setGeoReference(Rectangle2D value)
value
- 指定的影像数据的地理范围。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 boolean updatePyramid(Rectangle2D rectangle2D)
rectangle2D
- 更新金字塔的指定影像范围。
DatasetGrid.updatePyramid()
方法的示例。public boolean removePyramid()
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 boolean deleteBand(int index)
index
- 指定要删除波段的索引。
public boolean deleteBand(int startIndex, int count)
startIndex
- 指定删除波段的开始索引号。count
- 要删除的波段的个数。
public int indexOf(java.lang.String bandName)
bandName
- 指定波段的名称。
public boolean update(DatasetImage dataset)
注意:指定的影像数据集和被更新的影像数据集的编码方式(EncodeType
)和像素类型(PixelFormat
)必须保持一致。
dataset
- 指定的影像数据集。
DatasetImage.create(DatasetImageInfo)
方法的示例。public java.util.HashMap<java.lang.Integer,StatisticsResult> getImageStatisticsResult()
若影像数据集没有进行过栅格统计,即没有调用 buildStatistics()
方法,则各波段的统计结果对象的各项统计值均为0。
public java.util.HashMap<java.lang.Integer,StatisticsResult> buildStatistics()
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 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 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 BlockSizeOption getBlockSizeOption()
public Colors getPalette(int index)
index
- 指定的波段索引号,从 0 开始。
public void setPalette(Colors palette, int index)
palette
- 指定的颜色调色板。index
- 指定的波段索引号,从 0 开始。public PixelFormat getPixelFormat(int index)
index
- 指定的波段索引号,从 0 开始。
public boolean CalculateHistogram(int[] arrBandSelect)
arrBandSelect
- 波段索引数组public Histogram GetHistogram(int nBandIndex)
nBandIndex
- 波段索引
public boolean hasPyramid()
public boolean hasStatistics()
public boolean hasHistograms()
|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |