com.supermap.data.processing
类 SceneCacheBuilder

java.lang.Object
  继承者 com.supermap.data.processing.SceneCacheBuilder

public class SceneCacheBuilder
extends java.lang.Object

场景缓存生成类,负责将整个场景中的各个图层生成对应的缓存数据,并形成新的场景。

场景缓存是基于整个场景生成缓存,通过一次操作,即可将已经加载到场景中的不同类型的数据图层生成对应类型的缓存。

在生成场景缓存时,影像图层对应影像缓存图层,地形图层对应地形缓存图层,矢量图层对应矢量缓存图层,地图图层对应地图缓存图层,如果是缓存图层(比如模型缓存图层)或者KML图层,则保持不变。

场景缓存生成后,形成一个新的工作空间和若干缓存文件夹。新的工作空间中不仅保存着各种新生成的缓存图层,还保存了各个缓存图层的风格信息。默认情况下,新生成的工作空间和用于生成缓存的场景名称相同,用户可以通过设置相应接口指定生成的工作空间及场景的名称。

提供该类的目的主要是满足用户采用默认或统一设置来完成相关缓存的生成,如果需要对某个图层进行单独的缓存参数设置,请单独使用该图层对应的缓存生成类来完成。


构造方法摘要
SceneCacheBuilder()
          构造一个场景相关缓存生成类的新实例。
SceneCacheBuilder(Scene scene, java.lang.String outputFolder)
          根据指定的参数构造一个场景相关缓存生成类的新实例。
 
方法摘要
 void addSteppedListener(SteppedListener l)
          添加一个用于接收进度条事件(SteppedEvent)的监听器。
static boolean appendAttributes(java.lang.String attributeFile, byte[] attributeData, java.lang.String password)
          将属性数据追加到指定的属性文件。
 boolean build()
          创建场景缓存。
static boolean buildOfflinePackage(java.lang.String workspacePath, java.lang.String sceneName)
          已过时。 
 void dispose()
          释放该对象所占用的资源。
static byte[] extractAttributeIDs(java.lang.String attributeFile, java.lang.String password)
          提取属性文件中的所有ID值,以流的方式输出结果。
 AttributeExtentType getAttributeExtentType()
          获取属性文件类型
 Rectangle2D getBounds()
          返回场景图层中需要生成缓存数据的范围。
 CompressedTextureType getCompressedTextureType()
          返回生成场景缓存时的压缩纹理的格式。
 CacheImageSize getImageSize()
          返回缓存图片的大小。
 boolean getIsCalNormal()
          获取是否重新计算法线
 java.lang.String getOutputFolder()
          返回生成缓存的路径。
 java.lang.String[] getOutputLayerNames()
          返回哪些普通图层对应的数据会生成缓存。
 java.lang.String getOutputSceneName()
          返回结果场景的名称,该场景名称会保存在 OutputWorkspaceConnectionInfo 对应的工作空间中。
 java.lang.String[] getOutputTerrainLayerNames()
          返回哪些地形图层对应的数据会生成缓存。
 WorkspaceConnectionInfo getOutputWorkspaceConnectionInfo()
          返回结果工作空间的链接信息。
 java.lang.String getPassword()
          返回对生成的各个图层的缓存数据进行加密的密码。
 java.lang.String[] getPreCacheLayerNames()
          获取对场景中待生成预缓存的图层名称。
 int getProcessThreadsCount()
          获取生成缓存的线程数。
 Scene getScene()
          返回用于生成缓存的场景对象。
 StorageType getStorageType()
          返回缓存的存储方式。
 int getUpdateSize()
          返回在 Scene 场景渲染该缓存图层时,每次更新缓存的块数,具体值为该方法返回值的平方,即 UpdateSize * UpdateSize 的个数。
 java.lang.String getUserIDField()
          获取对象ID字段
 boolean isBoundsCeiled()
          返回在生成缓存时是否对场景图层中指定的需要生成缓存数据的范围(对应 setBounds() 方法设置的范围)进行规整处理。
 boolean isBuildNormalMap()
          对场景中的地形数据,获取是否生成法线图。
 boolean isCombineRepeatTextures()
          对场景中的模型数据生成三维切片缓存时,用于获取是否重复贴图打组。
 void removeSteppedListener(SteppedListener l)
          移除一个用于接收进度条事件(SteppedEvent)的监听器。
 void setAttributeExtentType(AttributeExtentType type)
          设置属性文件类型
 void setBounds(Rectangle2D rectangle2D)
          设置返场景图层中需要生成缓存数据的范围。
 void setBoundsCeiled(boolean value)
          设置在生成缓存时是否对场景图层中指定的需要生成缓存数据的范围(对应 setBounds() 方法设置的范围)进行规整处理。
 void setBuildNormalMap(boolean isBuildNormalMap)
          对场景中的地形数据,设置是否生成法线图。
 void setCombineRepeatTextures(boolean isCombineRepeatTextures)
          对场景中的模型数据生成三维切片缓存时,用于设置是否重复贴图打组。
 void setCompressedTextureType(CompressedTextureType value)
          设置生成场景缓存时的压缩纹理的格式。
 void setImageSize(CacheImageSize cacheImageSize)
          设置缓存图片的大小。
 void setIsCalNormal(boolean value)
          设置是否重新计算法线
 void setIsInstance(boolean value)
          设置是否实例化
 void setOutputFolder(java.lang.String value)
          设置生成缓存的路径。
 void setOutputLayerNames(java.lang.String[] value)
          设置哪些普通图层对应的数据会生成缓存。
 void setOutputSceneName(java.lang.String value)
          设置结果场景的名称,该场景名称会保存在 OutputWorkspaceConnectionInfo 对应的工作空间中。
 void setOutputTerrainLayerNames(java.lang.String[] value)
          设置哪些地形图层对应的数据会生成缓存。
 void setOutputWorkspaceConnectionInfo(WorkspaceConnectionInfo workspaceConnectionInfo)
          设置结果工作空间的链接信息。
 void setPassword(java.lang.String value)
          设置对生成的各个图层的缓存数据进行加密的密码。
 void setPreCacheLayerNames(java.lang.String[] value)
          获取对场景中待生成预缓存的图层名称。
 void setProcessThreadsCount(int value)
          设置生成缓存的线程数。
 void setS3MVersion(S3MVersion version)
          设置S3M版本。
 void setScene(Scene scene)
          设置用于生成缓存的场景对象。
 void setStorageType(StorageType storageType)
          设置缓存的存储方式,默认为原始模式。
 void setUpdateSize(int value)
          设置在 Scene 场景渲染该缓存图层时,每次更新缓存的块数,具体值为该方法返回值的平方,即 UpdateSize * UpdateSize 的个数。
 void setUserIDField(java.lang.String userIDName)
          设置对象ID字段
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

SceneCacheBuilder

public SceneCacheBuilder()
构造一个场景相关缓存生成类的新实例。


SceneCacheBuilder

public SceneCacheBuilder(Scene scene,
                         java.lang.String outputFolder)
根据指定的参数构造一个场景相关缓存生成类的新实例。

通过该构造函数,进行生成缓存基本信息的设置,其他设置参数选择默认值。该构造函数生成的缓存对象的 getOutputSceneName() 方法的返回值与 scene 的名称相同。

参数:
scene - 要生成缓存的场景。
outputFolder - 生成缓存的路径。
方法详细信息

getScene

public Scene getScene()
返回用于生成缓存的场景对象。

返回:
用于生成缓存的场景对象。

setScene

public void setScene(Scene scene)
设置用于生成缓存的场景对象。

参数:
scene - 用于生成缓存的场景对象。

getStorageType

public StorageType getStorageType()
返回缓存的存储方式。

返回:
缓存的存储方式。
默认值:
默认值为 StorageType.Compact,即紧凑模式。

setStorageType

public void setStorageType(StorageType storageType)
设置缓存的存储方式,默认为原始模式。

参数:
storageType - 缓存的存储方式。

getUpdateSize

public int getUpdateSize()
返回在 Scene 场景渲染该缓存图层时,每次更新缓存的块数,具体值为该方法返回值的平方,即 UpdateSize * UpdateSize 的个数。

该字段值越大,则场景元素越不容易被过滤掉,但同时也会消耗更多的硬件资源,建议用户根据自身机器配置来选择该字段值的大小。对于已经生成的缓存文件,用户可以在缓存配置文件(*.scv)中自行修改LevelWidth的值,以配合当前硬件实现较流畅的视觉体验。

返回:
在 Scene 场景渲染该缓存图层时,每次更新缓存的块数。

setUpdateSize

public void setUpdateSize(int value)
设置在 Scene 场景渲染该缓存图层时,每次更新缓存的块数,具体值为该方法返回值的平方,即 UpdateSize * UpdateSize 的个数。

该字段值越大,则场景元素越不容易被过滤掉,但同时也会消耗更多的硬件资源,建议用户根据自身机器配置来选择该字段值的大小。对于已经生成的缓存文件,用户可以在缓存配置文件(*.scv)中自行修改LevelWidth的值,以配合当前硬件实现较流畅的视觉体验。

参数:
value - 在 Scene 场景渲染该缓存图层时,每次更新缓存的块数。

getImageSize

public CacheImageSize getImageSize()
返回缓存图片的大小。

返回:
缓存图片的大小。
默认值:
默认为 CacheImageSize.SIZE256,即:256*256。

setImageSize

public void setImageSize(CacheImageSize cacheImageSize)
设置缓存图片的大小。

参数:
cacheImageSize - 缓存图片的大小。

getOutputFolder

public java.lang.String getOutputFolder()
返回生成缓存的路径。

返回:
生成缓存的路径。

setOutputFolder

public void setOutputFolder(java.lang.String value)
设置生成缓存的路径。

参数:
value - 生成缓存的路径。

getOutputWorkspaceConnectionInfo

public WorkspaceConnectionInfo getOutputWorkspaceConnectionInfo()
返回结果工作空间的链接信息。

返回:
结果工作空间的链接信息。

setOutputWorkspaceConnectionInfo

public void setOutputWorkspaceConnectionInfo(WorkspaceConnectionInfo workspaceConnectionInfo)
设置结果工作空间的链接信息。

当使用默认的方式 null 时,将在 OutputFolder 目录下,生成一个 SMWU 类型的的工作空间文件,文件名称与输入的 Scene 的名称相同。

参数:
workspaceConnectionInfo - 结果工作空间的链接信息。

getOutputSceneName

public java.lang.String getOutputSceneName()
返回结果场景的名称,该场景名称会保存在 OutputWorkspaceConnectionInfo 对应的工作空间中。

返回:
结果场景的名称,该场景名称会保存在 OutputWorkspaceConnectionInfo 对应的工作空间中。

setOutputSceneName

public void setOutputSceneName(java.lang.String value)
设置结果场景的名称,该场景名称会保存在 OutputWorkspaceConnectionInfo 对应的工作空间中。

参数:
value - 结果场景的名称。

getBounds

public Rectangle2D getBounds()
返回场景图层中需要生成缓存数据的范围。

注意:在6R(2012) SP2 版本中,不推荐用户使用本方法。

返回:
场景图层中需要生成缓存数据的范围。

setBounds

public void setBounds(Rectangle2D rectangle2D)
设置返场景图层中需要生成缓存数据的范围。

注意:在6R(2012) SP2 版本中,不推荐用户使用本方法。

参数:
rectangle2D - 场景图层中需要生成缓存数据的范围。

build

public boolean build()
创建场景缓存。

返回:
若创建缓存成功返回 true,否则返回 false。
抛出:
java.lang.UnsupportedOperationException - 如果 Scene 与 OutputFolder 设置不正确时。

addSteppedListener

public void addSteppedListener(SteppedListener l)
添加一个用于接收进度条事件(SteppedEvent)的监听器。

参数:
l - 一个用于接收进度条事件的监听器。

removeSteppedListener

public void removeSteppedListener(SteppedListener l)
移除一个用于接收进度条事件(SteppedEvent)的监听器。

参数:
l - 一个用于接收进度条事件的监听器。

getPassword

public java.lang.String getPassword()
返回对生成的各个图层的缓存数据进行加密的密码。在添加图层时,需要使用该密码才能成功添加。如果使用默认值,便可不指定密码便能打开。

返回:
对生成的各个图层的缓存数据进行加密的密码。
默认值:
默认值为一个空的字符串。

setPassword

public void setPassword(java.lang.String value)
设置对生成的各个图层的缓存数据进行加密的密码。在添加图层时,需要使用该密码才能成功添加。如果使用默认值,便可不指定密码便能打开。

注意:当 StorageType.Original 时,该方法是无效的;当 StorageType.Compact 时,该方法才有效。

参数:
value - 对生成的各个图层的缓存数据进行加密的密码。

dispose

public void dispose()
释放该对象所占用的资源。当调用该方法之后,此对象不再可用。


getOutputLayerNames

public java.lang.String[] getOutputLayerNames()
返回哪些普通图层对应的数据会生成缓存。不在该列表中的图层,会使用原场景中使用的数据,不会生成对应的缓存。当为 null 时,表示所有图层对应的数据均会生成新的缓存,或者引用原来的缓存数据。

返回:
哪些图层对应的数据会生成缓存。
默认值:
默认值为 null。

setOutputLayerNames

public void setOutputLayerNames(java.lang.String[] value)
设置哪些普通图层对应的数据会生成缓存。不在该列表中的图层,会使用原场景中使用的数据,不会生成对应的缓存。当为 null 时,表示所有图层对应的数据均会生成新的缓存,或者引用原来的缓存数据。

参数:
value - 对应的数据会生成缓存的图层名称的集合。

getOutputTerrainLayerNames

public java.lang.String[] getOutputTerrainLayerNames()
返回哪些地形图层对应的数据会生成缓存。不在该列表中的地形图层,会使用原场景中使用的数据,不会生成对应的缓存。当为null时,表示所有地形图层对应的数据均会生成新的缓存,或者引用原来的缓存数据。

返回:
哪些地形图层对应的数据会生成缓存。
默认值:
默认值为 null。

setOutputTerrainLayerNames

public void setOutputTerrainLayerNames(java.lang.String[] value)
设置哪些地形图层对应的数据会生成缓存。不在该列表中的地形图层,会使用原场景中使用的数据,不会生成对应的缓存。当为null时,表示所有地形图层对应的数据均会生成新的缓存,或者引用原来的缓存数据。

参数:
value - 对应的数据会生成缓存的地形图层名称的集合。

isBoundsCeiled

public boolean isBoundsCeiled()
返回在生成缓存时是否对场景图层中指定的需要生成缓存数据的范围(对应 setBounds() 方法设置的范围)进行规整处理。

在手动生成局部缓存,然后结合 iServer 动态发布时,需要通过该方法设置为 true,来对手动生成的缓存范围进行规整,以避免根据 setBounds() 方法设置的范围生成的缓存图片在边界上出现部分白图现象。

对生成缓存数据的地理范围进行规整处理指的是,计算该范围所对应行列缓存图片的外边框,该边框与三维缓存图片分块划分的边线一致,并以此边框范围来生成缓存。

返回:
在生成缓存时是否对场景图层中指定的需要生成缓存数据的范围进行规整处理。

setBoundsCeiled

public void setBoundsCeiled(boolean value)
设置在生成缓存时是否对场景图层中指定的需要生成缓存数据的范围(对应 setBounds() 方法设置的范围)进行规整处理。

在手动生成局部缓存,然后结合 iServer 动态发布时,需要通过该方法设置为 true,来对手动生成的缓存范围进行规整,以避免根据 setBounds() 方法设置的范围生成的缓存图片在边界上出现部分白图现象。

对生成缓存数据的地理范围进行规整处理指的是,计算该范围所对应行列缓存图片的外边框,该边框与三维缓存图片分块划分的边线一致,并以此边框范围来生成缓存。

参数:
value - 一个布尔值,表示在生成缓存时是否对场景图层中指定的生成缓存数据的范围进行规整处理。

buildOfflinePackage

@Deprecated
public static boolean buildOfflinePackage(java.lang.String workspacePath,
                                                     java.lang.String sceneName)
已过时。 

根据给定的参数生成离线包。离线包是*.7z格式,它包括场景中所有数据集生成的缓存文件,和一个场景的配置文件(*.xml)。

参数:
workspacePath - 指定的场景缓存工作空间文件所在的路径。
sceneName - 场景缓存中场景的名称。
返回:
若离线包生成成功返回 true,否则返回 false。

getCompressedTextureType

public CompressedTextureType getCompressedTextureType()
返回生成场景缓存时的压缩纹理的格式。对压缩纹理的格式的详细介绍请参见 CompressedTextureType 枚举类的说明。

默认值:
默认值为 CompressedTextureType.DDS

setCompressedTextureType

public void setCompressedTextureType(CompressedTextureType value)
设置生成场景缓存时的压缩纹理的格式。对压缩纹理的格式的详细介绍请参见 CompressedTextureType 枚举类的说明。


getPreCacheLayerNames

public java.lang.String[] getPreCacheLayerNames()
获取对场景中待生成预缓存的图层名称。

返回:
待生成预缓存的多个图层名称。

setPreCacheLayerNames

public void setPreCacheLayerNames(java.lang.String[] value)
获取对场景中待生成预缓存的图层名称。

参数:
value - 待生成预缓存的多个图层名称。

setIsCalNormal

public void setIsCalNormal(boolean value)
设置是否重新计算法线

参数:
value - 是否重新计算法线

getIsCalNormal

public boolean getIsCalNormal()
获取是否重新计算法线


setIsInstance

public void setIsInstance(boolean value)
设置是否实例化


getProcessThreadsCount

public int getProcessThreadsCount()
获取生成缓存的线程数。


setProcessThreadsCount

public void setProcessThreadsCount(int value)
设置生成缓存的线程数。

参数:
value - 待设置线程数。

getUserIDField

public java.lang.String getUserIDField()
获取对象ID字段


setUserIDField

public void setUserIDField(java.lang.String userIDName)
设置对象ID字段


setS3MVersion

public void setS3MVersion(S3MVersion version)
设置S3M版本。


getAttributeExtentType

public AttributeExtentType getAttributeExtentType()
获取属性文件类型


setAttributeExtentType

public void setAttributeExtentType(AttributeExtentType type)
设置属性文件类型


extractAttributeIDs

public static byte[] extractAttributeIDs(java.lang.String attributeFile,
                                         java.lang.String password)
提取属性文件中的所有ID值,以流的方式输出结果。

参数:
attributeFile - 属性文件
password - 密码
返回:

appendAttributes

public static boolean appendAttributes(java.lang.String attributeFile,
                                       byte[] attributeData,
                                       java.lang.String password)
将属性数据追加到指定的属性文件。

参数:
attributeFile - 属性文件
attributeData - 属性数据
password - 密码
返回:

isCombineRepeatTextures

public boolean isCombineRepeatTextures()
对场景中的模型数据生成三维切片缓存时,用于获取是否重复贴图打组。

返回:
是否重复贴图打组

setCombineRepeatTextures

public void setCombineRepeatTextures(boolean isCombineRepeatTextures)
对场景中的模型数据生成三维切片缓存时,用于设置是否重复贴图打组。

参数:
isCombineRepeatTextures - 是否重复贴图打组

isBuildNormalMap

public boolean isBuildNormalMap()
对场景中的地形数据,获取是否生成法线图。

返回:
获取是否生成法线图

setBuildNormalMap

public void setBuildNormalMap(boolean isBuildNormalMap)
对场景中的地形数据,设置是否生成法线图。

参数:
isBuildNormalMap - 设置是否生成法线图