public class ImageCacheBuilder
extends com.supermap.data.InternalHandleDisposable
在三维场景中影像图层是必不可少的,如何添加影像图层请查看 Layer3Ds.add(…)
等方法的说明。
三维缓存是一种用于改善三维场景浏览用户体验的优化策略。服务器端创建了三维缓存之后,客户端用户的每一次地图浏览,比如平移、放大、缩小地图,都会向服务器端发送一个 URL 请求,此时,服务器端按照匹配的条件,将已缓存的数据返回到客户端。
ImageCacheBuilder 类为用户提供了影像缓存生成的相关接口,生成影像缓存通常情况下包含以下步骤:
1、获得用于生成缓存的原始数据,即 Image 数据集。
2、使用 ImageCacheBuilder 类完成影像数据集到影像缓存的生成。
若需要在三维场景中显示的原始影像数据分开存储在多个数据集中,则此时需要通过该类分别生成缓存,存放在不同的目录下,然后分别加载影像缓存;或者将这些数据集加载到三维场景中,通过 SceneCacheBuilder.build()
方法以生成场景缓存的方式,通过一次调用即可生成对应的影像缓存。
若需要生成缓存的原始数据集的数量较大,如100,1000,建议用户将这些数据集配成一张地图,然后生成二维或三维地图缓存,关于二三维地图缓存的生成可参见 MapCacheBuilder
、MapCache3DBuilder
类。
关于影像缓存的详细介绍请参见《二三维缓存》技术文档。
构造器和说明 |
---|
ImageCacheBuilder()
构造一个新的缓存生成类对象。
|
ImageCacheBuilder(DatasetImage dataset,
String outputFolder)
根据指定的影像数据集和输出缓存文件所在文件夹的全路径名,构造一个缓存生成类对象。
|
ImageCacheBuilder(DatasetImage dataset,
String outputFolder,
String name)
根据指定的影像数据集、输出缓存文件所在文件夹的全路径名以及生成的缓存对象名称,构造一个缓存生成类对象。
|
限定符和类型 | 方法和说明 |
---|---|
void |
addSteppedListener(SteppedListener l)
添加一个用于接收进度条事件(
SteppedEvent )的监听器。 |
boolean |
build()
创建影像缓存。
|
boolean |
buildWithoutConfigFile()
为影像数据创建 SCI3D 影像缓存。
|
String[] |
computeImageFileName()
已过时。
|
String[] |
computeImageFileName(int specialLevel)
已过时。
|
boolean |
computeLevel()
计算并设置数据所适合的缓存级数。
|
boolean |
computeOutputScales()
计算生成影像缓存时的合适输出比例尺,即提供的默认输出比例尺。
|
void |
dispose()
释放该对象所占用的资源。
|
byte[] |
extractFilesFromSciCache(String[] sourceFileNames)
批量获取指定tiles的流
|
boolean |
fromConfigFile(String fileName)
导入缓存文件,根据缓存数据的配置文件中的内容来指定 SCI3D 影像缓存生成类对象相关设置的值。
|
int |
getBeginLevel()
返回开始生成缓存的层数。
|
int |
getBlockScale()
获取组合因子(球面)
|
String |
getCacheName()
返回生成的缓存配置文件的名称。
|
GeoRegion |
getClipRegion()
返回数据集的裁剪区域。
|
Colors |
getColorTable()
返回颜色表,即一个颜色集合对象。
|
DatasetImage |
getDataset()
返回用于创建缓存的影像数据集。
|
DatasetGrid |
getDatasetGrid()
返回用于创建缓存的
GRID 数据集,影像缓存中的颜色由数据集的颜色表来控制。 |
DatasetMosaic |
getDatasetMosaic()
获取镶嵌数据集。
|
DatasetVolume |
getDatasetVolume()
获取三维栅格数据集。
|
int |
getDefaultBeginLevel()
返回生成影像缓存的默认起始层数。
|
int |
getDefaultEndLevel()
返回生成影像缓存的默认结束层数。
|
double[] |
getDefaultOutputScales()
返回默认的缓存生成比例尺。
|
PrjCoordSysType |
getDynamicPrjCoordSysType()
返回基于栅格数据集生成的影像缓存所使用的投影坐标系。
|
int |
getEndLevel()
返回结束生成缓存的层数。
|
double[] |
getGridValueTable()
返回栅格值表。
|
String |
getImageFileName()
返回用于生产缓存的影像文件的名称。
|
CacheImageType |
getImageType()
返回缓存图片的类型。
|
String |
getOutputFolder()
返回输出的缓存文件所在的目录的全路径名。
|
HashMap<Double,String> |
getOutputScaleCaptions()
返回影像缓存比例尺的别名。
|
double[] |
getOutputScales()
返回影像缓存的比例尺数组。
|
String |
getPassword()
返回用于创建缓存时对数据进行加密的密码。
|
int |
getProcessThreadsCount()
用于获取线程数(球面)。
|
int |
getSampleSize()
返回缓存预处理后生成的每个缓存分块文件的采样尺寸,单位为像素。
|
double |
getSpecialValue()
返回基于栅格数据集的所生成的影像缓存的指定栅格值。
|
Color |
getSpecialValueColor()
返回基于栅格数据集的所生成的影像缓存的指定栅格值的颜色。
|
StorageType |
getStorageType()
返回缓存存储方式。
|
Tile[] |
getTiles(Rectangle2D tileBounds,
double scale)
返回指定条件的瓦片。
|
ImageTilingMode |
getTilingMode()
获取影像缓存的剖分方式。
|
GeoRegion |
getUpdateRegion()
获取影像缓存局部更新,实现指定区域进行影像缓存数据更新。
|
boolean |
isSpecialValueTransparent()
返回基于栅格数据集的所生成的影像缓存的指定栅格值(SpecialValue)所处区域是否透明。
|
boolean |
reBuildPyramid(String sci3dPath)
影像缓存重建金字塔
|
void |
removeSteppedListener(SteppedListener l)
移除一个用于接收进度条事件(
SteppedEvent )的监听器。 |
byte[] |
SciConfigFileToSci3DConfigFile(byte[] srcStream,
String password)
sci转sci3d(支持流传递)。
|
boolean |
SciConfigFileToSci3DConfigFile(String sciSourcePath,
String outPutFileName,
String password)
sci转sci3d(配置文件)
仅支持以文件方式转换的配置文件提取数据,不支持以sci配置文件流转sci3d配置文件流的方式。
|
void |
setBeginLevel(int beginLevel)
设置开始生成缓存的层数。
|
void |
setBlockScale(int blockScale)
设置组合因子(球面)
|
void |
setCacheName(String value)
设置生成的缓存配置文件的名称。
|
void |
setClipRegion(GeoRegion clipRegion)
设置数据集的裁剪区域。
|
void |
setColorTable(Colors colorTable)
根据指定的颜色集合对象设置颜色表。
|
void |
setDataset(DatasetImage dataset)
设置用于创建缓存的影像数据集。
|
void |
setDatasetGrid(DatasetGrid datasetGrid)
设置用于创建缓存的
GRID 数据集,影像缓存中的颜色由数据集的颜色表来控制。 |
void |
setDatasetMosaic(DatasetMosaic value)
设置镶嵌数据集。
|
void |
setDatasetVolume(DatasetVolume value)
设置三维栅格数据集。
|
void |
setDynamicPrjCoordSysType(PrjCoordSysType prjType)
设置基于栅格数据集生成的影像缓存所使用的投影坐标系。
|
void |
setEndLevel(int endLevel)
设置结束生成缓存的层数。
|
void |
setGridValueTable(double[] value)
根据指定的栅格值数组设置栅格值表。
|
void |
setImageFileName(String imageFileName)
设置用于生产缓存的影像文件的名称。
|
void |
setImageType(CacheImageType imageType)
设置缓存图片的类型。
|
static void |
setIsDisposable(com.supermap.data.InternalHandleDisposable obj,
boolean disposable) |
void |
setOutputFolder(String value)
设置输出的缓存文件所在的目录的全路径名。
|
void |
setOutputScaleCaptions(HashMap<Double,String> scaleCaptions)
设置影像缓存比例尺的别名。
|
void |
setOutputScales(double[] values)
设置影像缓存的比例尺数组。
|
void |
setPassword(String password)
设置用于创建缓存时对数据进行加密的密码。
|
void |
setProcessThreadsCount(int threadsCount)
用于设置线程数(球面)。
|
void |
setSampleSize(int value)
设置缓存预处理后生成的每个缓存分块文件的采样尺寸,单位为像素。
|
void |
setSpecialValue(double value)
设置基于栅格数据集的所生成的影像缓存的指定栅格值。
|
void |
setSpecialValueColor(Color value)
设置基于栅格数据集的所生成的影像缓存的指定栅格值的颜色。
|
void |
setSpecialValueTransparent(boolean transparent)
设置基于栅格数据集的所生成的影像缓存的指定栅格值(SpecialValue)所处区域是否透明。
|
void |
setStorageType(StorageType storageType)
设置缓存存储方式。
|
void |
setTilingMode(ImageTilingMode value)
设置影像缓存的剖分方式。
|
void |
setUpdateRegion(GeoRegion geoRegion)
设置影像缓存局部更新,实现指定区域进行影像缓存数据更新。
|
boolean |
toConfigFile(String fileName)
将SCI3D影像缓存生成类对象的相关设置写到指定的文件中,文件的后缀名为.sci3d,即缓存数据的配置文件。
|
public ImageCacheBuilder()
public ImageCacheBuilder(DatasetImage dataset, String outputFolder)
该构造函数生成的缓存对象的名字与影像数据集的名称相同。
dataset
- 指定的影像数据集outputFolder
- 指定的输出缓存文件所在文件夹的全路径名public ImageCacheBuilder(DatasetImage dataset, String outputFolder, String name)
dataset
- 指定的影像数据集outputFolder
- 指定的输出缓存文件所在文件夹的全路径名name
- 指定的生成的缓存对象名称public DatasetImage getDataset()
public void setDataset(DatasetImage dataset)
setImageFileName()
,setDataset()
和setDatasetGrid()
三个方法互斥,即以最后一个设置的方法为有效设置,相应的另外两个方法即使设置了也会被置为null。
dataset
- 用于创建缓存的影像数据集。public DatasetGrid getDatasetGrid()
GRID
数据集,影像缓存中的颜色由数据集的颜色表来控制。GRID
数据集。public void setDatasetGrid(DatasetGrid datasetGrid)
GRID
数据集,影像缓存中的颜色由数据集的颜色表来控制。
setImageFileName()
,setDataset()
和setDatasetGrid()
三个方法互斥,即以最后一个设置的方法为有效设置,相应的另外两个方法即使设置了也会被置为null。
datasetGrid
- 用于创建缓存的 GRID
数据集。public String getOutputFolder()
public void setOutputFolder(String value)
value
- 输出的缓存文件所在的目录的全路径名。public String getCacheName()
public void setCacheName(String value)
该名称对应缓存配置文件的名称,不含后缀名以及路径信息。
value
- 生成的缓存配置文件的名称。public GeoRegion getClipRegion()
数据集的裁剪区域为可以访问的区域。
public void setClipRegion(GeoRegion clipRegion)
数据集的裁剪区域为可以访问的区域。
clipRegion
- 数据集的裁剪区域。public boolean computeOutputScales()
setOutputScales()
方法的设置值,通过该方法可以查看默认的输出比例尺。public double[] getDefaultOutputScales()
public HashMap<Double,String> getOutputScaleCaptions()
public void setOutputScaleCaptions(HashMap<Double,String> scaleCaptions)
一般设置为比例尺大小倒数的字符串,如1:10000为10000。
当设置的别名不唯一时,程序抛出异常。
scaleCaptions
- 影像缓存比例尺的别名。public double[] getOutputScales()
public void setOutputScales(double[] values)
缓存比例尺数组中有一个非法(数值非法或出缓存时比例尺数组不是子集)时,缓存生成失败。
values
- 影像缓存的比例尺数组。public int getBeginLevel()
层是存放数据的根节点,每层存放了不同比例尺下的数据,开始的层数用来指定显示数据的最小分辨率。
开始的层数是一个大于0的整数。
public void setBeginLevel(int beginLevel)
层是存放数据的根节点,每层存放了不同比例尺下的数据,开始的层数用来指定显示数据的最小分辨率。
开始的层数是一个大于0的整数。
beginLevel
- 开始生成缓存的层数。public String getImageFileName()
public void setImageFileName(String imageFileName)
目前支持的文件格式为SIT,该方式的生成与通过设置数据集方式生成效果一样,该接口的使用可以简化用户的使用。
setImageFileName()
,setDataset()
和setDatasetGrid()
三个方法互斥,即以最后一个设置的方法为有效设置,相应的另外两个方法即使设置了也会被置为null。
imageFileName
- 用于生产缓存的影像文件的名称。public CacheImageType getImageType()
public void setImageType(CacheImageType imageType)
imageType
- 缓存图片的类型。public StorageType getStorageType()
StorageType.Original
,即原始模式。public void setStorageType(StorageType storageType)
storageType
- 缓存存储方式。public int getEndLevel()
层是存放数据的根节点,每层存放了不同比例尺下的数据,结束的层数用来指定显示数据的最高分辨率。
public void setEndLevel(int endLevel)
层是存放数据的根节点,每层存放了不同比例尺下的数据,结束的层数用来指定显示数据的最高分辨率。
结束的层数一般不超过20。
对于每个用来创建影像缓存的文件,都有一个最合适的结束层数,即使你通过该方法设置了大于该默认结束层数的层数,所生成的缓存也不会包含大于默认结束层数的缓存。
endLevel
- 结束生成缓存的层数。public int getDefaultBeginLevel()
public int getDefaultEndLevel()
public int getSampleSize()
对于影像数据来说,该方法返回值即为缓存预处理后每个分块影像的影像尺寸。
public void setSampleSize(int value)
value
- 缓存预处理后生成的每个缓存分块文件的采样尺寸,单位为像素public String getPassword()
该密码不会写到缓存数据的配置文件中,同时,fromConfigFile
方法也不会还原该密码。
public void setPassword(String password)
该密码不会写到缓存数据的配置文件中,同时,fromConfigFile
方法也不会还原该密码。
注意:当 StorageType.Original 时,该方法是无效的;当 StorageType.Compact 时,该方法才有效。
password
- 用于创建缓存时对数据进行加密的密码。public Colors getColorTable()
Colors.getCount()
方法的返回值为0。public void setColorTable(Colors colorTable)
当颜色集合对象中的颜色个数为0时,则基于栅格数据集的所生成的影像缓存保持其栅格数据集本身的颜色。
当颜色集合对象中的颜色个数为1时,则基于栅格数据集的所生成的影像缓存的所有栅格颜色都被设置为颜色表中的这种颜色。
当颜色集合对象中的颜色个数大于1时,则基于栅格数据集的所生成的影像缓存的颜色根据颜色表中的颜色插值。
colorTable
- 指定的颜色集合对象。public double[] getGridValueTable()
public void setGridValueTable(double[] value)
栅格数据集的栅格颜色是setColorTable()
方法与setGridValueTable()
相关作用的结果,有以下几点注意:
1.如果没有通过 setColorTable()
方法设置颜色表或颜色表中的颜色个数为1,调用该方法设置栅格值无效。
2.如果颜色表中的颜色个数为2时,栅格数据集的栅格值以栅格值数组中的最后一个栅格值为分界值,最小栅格值到分界值之间的所有栅格颜色为颜色表中的第一个颜色,分界值到最大栅格值之间的所有栅格颜色被设置为颜色表中的第二个颜色。
3.如果颜色表中的颜色个数大于2,当栅格值数组中的栅格值的个数为1,栅格数据集的栅格值以这个栅格值为分界值,最小栅格值到分界值之间的所有栅格颜色为颜色表中的第一个颜色,分界值到最大栅格值之间的所有栅格颜色被设置为颜色表中的最后一个颜色;当栅格数组中的栅格值个数大于等于2时,栅格值表中的第一个栅格值到最小栅格值之间的所有栅格颜色被设置为颜色表中的第一个颜色,栅格值表中的最后一个栅格值到最大栅格值这个区间的所有栅格被设置为颜色表中的最后一个颜色,栅格值表中最小值和最大值这个区间的栅格颜色通过剩下的颜色表中的颜色个数插值得到。
value
- 指定的栅格值数组。public Color getSpecialValueColor()
public void setSpecialValueColor(Color value)
可对将指定的栅格值的栅格颜色半透明显示,例如:ImageCacheBuilder.setSpecialValueColor(new Color(255, 0, 0,127)),以红色半透明的颜色显示指定栅格值。半透显示的前提条件是将setSpecialValueTransparent()
设置为false。
value
- 指定栅格值的颜色。public double getSpecialValue()
该方法的返回值与栅格数据集的getNoValue()
方法的返回值相等。
public void setSpecialValue(double value)
用来生成影像缓存的栅格数据集中的每一个栅格都有不同的栅格值,该方法可使与该值相等的栅格以调用setSpecialValueColor()
所设置的颜色显示出来。
value
- 指定的栅格值。public boolean isSpecialValueTransparent()
public void setSpecialValueTransparent(boolean transparent)
transparent
- 一个布尔值,true 表示指定栅格值所处区域透明,false表示不透明。public PrjCoordSysType getDynamicPrjCoordSysType()
public void setDynamicPrjCoordSysType(PrjCoordSysType prjType)
prjType
- 投影坐标系类型,指明设置的投影坐标系。public boolean build()
如果没有对要创建影像缓存的文件设置起始层和终止层,则在调用该方法创建缓存时,会自动调用computeLevel()
方法。
public boolean buildWithoutConfigFile()
public boolean computeLevel()
缓存的层级主要与用来创建缓存的文件(影像文件、影像数据集和栅格数据集)的范围相关。。
如果调用了该方法,则相当于调用了setBeginLevel()
方法和setEndLevel()
方法对数据集设置系统计算的默认的起始层和终止层。
@Deprecated public String[] computeImageFileName()
@Deprecated public String[] computeImageFileName(int specialLevel)
public boolean toConfigFile(String fileName)
setDataset()
方法的设置值,即用于生成缓存的原始数据集不会写到配置文件中。
fileName
- 缓存配置文件的全路径。public boolean fromConfigFile(String fileName)
该方法不会修改 setDataset()
方法的设置值,即用于生成缓存的原始数据集不会修改。
fileName
- 缓存配置文件的全路径。public Tile[] getTiles(Rectangle2D tileBounds, double scale)
tileBounds
- 瓦片范围。scale
- 瓦片比例尺。public ImageTilingMode getTilingMode()
public void setTilingMode(ImageTilingMode value)
value
- 指定的剖分方式。public DatasetVolume getDatasetVolume()
public void setDatasetVolume(DatasetVolume value)
value
- 指定的三维栅格数据集。public DatasetMosaic getDatasetMosaic()
public void setDatasetMosaic(DatasetMosaic value)
value
- 指定的镶嵌数据集。public boolean SciConfigFileToSci3DConfigFile(String sciSourcePath, String outPutFileName, String password)
仅支持以文件方式转换的配置文件提取数据,不支持以sci配置文件流转sci3d配置文件流的方式。
sciSourcePath
- 待转换sci文件路径。outPutFileName
- 设置转换结果sci3d文件全路径。password
- 密码public byte[] SciConfigFileToSci3DConfigFile(byte[] srcStream, String password)
sci配置文件流转sci3d配置文件流,仅支持转配置文件,不支持提取数据。
srcStream
- password
- 密码public byte[] extractFilesFromSciCache(String[] sourceFileNames)
sourceFileNames
- 指定的tiles名称(层行列+下划线组成,例:10_377_1675)public int getProcessThreadsCount()
public void setProcessThreadsCount(int threadsCount)
public int getBlockScale()
public void setBlockScale(int blockScale)
public GeoRegion getUpdateRegion()
public void setUpdateRegion(GeoRegion geoRegion)
进行局部更新时,"ImageCacheBuilder.OutputFolder"和"ImageCacheBuilder.CacheName"的值要与被更新的数据保持一致。
geoRegion
- 影像缓存更新区域public void addSteppedListener(SteppedListener l)
SteppedEvent
)的监听器。l
- 一个用于接收进度条事件的监听器。public void removeSteppedListener(SteppedListener l)
SteppedEvent
)的监听器。l
- 一个用于接收进度条事件的监听器。public void dispose()
public boolean reBuildPyramid(String sci3dPath)
public static void setIsDisposable(com.supermap.data.InternalHandleDisposable obj, boolean disposable)
Copyright © 2021–2024 SuperMap. All rights reserved.