类 SceneCacheBuilder
- java.lang.Object
-
- com.supermap.data.InternalHandle
-
- com.supermap.data.InternalHandleDisposable
-
- com.supermap.data.processing.SceneCacheBuilder
-
- 所有已实现的接口:
- IDisposable
public class SceneCacheBuilder extends com.supermap.data.InternalHandleDisposable
场景缓存生成类,负责将整个场景中的各个图层生成对应的缓存数据,并形成新的场景。场景缓存是基于整个场景生成缓存,通过一次操作,即可将已经加载到场景中的不同类型的数据图层生成对应类型的缓存。
在生成场景缓存时,影像图层对应影像缓存图层,地形图层对应地形缓存图层,矢量图层对应矢量缓存图层,地图图层对应地图缓存图层,如果是缓存图层(比如模型缓存图层)或者KML图层,则保持不变。
场景缓存生成后,形成一个新的工作空间和若干缓存文件夹。新的工作空间中不仅保存着各种新生成的缓存图层,还保存了各个缓存图层的风格信息。默认情况下,新生成的工作空间和用于生成缓存的场景名称相同,用户可以通过设置相应接口指定生成的工作空间及场景的名称。
提供该类的目的主要是满足用户采用默认或统一设置来完成相关缓存的生成,如果需要对某个图层进行单独的缓存参数设置,请单独使用该图层对应的缓存生成类来完成。
-
-
构造器概要
构造器 构造器和说明 SceneCacheBuilder()
构造一个场景相关缓存生成类的新实例。SceneCacheBuilder(Scene scene, String outputFolder)
根据指定的参数构造一个场景相关缓存生成类的新实例。
-
方法概要
所有方法 静态方法 实例方法 具体方法 已过时的方法 限定符和类型 方法和说明 void
addSteppedListener(SteppedListener l)
添加一个用于接收进度条事件(SteppedEvent
)的监听器。static boolean
appendAttributes(String attributeFile, byte[] attributeData, String password)
将属性数据追加到指定的属性文件。boolean
build()
创建场景缓存。static boolean
buildOfflinePackage(String workspacePath, String sceneName)
已过时。void
dispose()
释放该对象所占用的资源。static byte[]
extractAttributeIDs(String attributeFile, String password)
提取属性文件中的所有ID值,以流的方式输出结果。AttributeExtentType
getAttributeExtentType()
获取属性文件类型Rectangle2D
getBounds()
返回场景图层中需要生成缓存数据的范围。CompressedTextureType
getCompressedTextureType()
返回生成场景缓存时的压缩纹理的格式。CacheImageSize
getImageSize()
返回缓存图片的大小。boolean
getIsCalNormal()
获取是否重新计算法线boolean
getIsInstance()
double
getObjectFiltrateThreshold()
String
getOutputFolder()
返回生成缓存的路径。String[]
getOutputLayerNames()
返回哪些普通图层对应的数据会生成缓存。String
getOutputSceneName()
返回结果场景的名称,该场景名称会保存在 OutputWorkspaceConnectionInfo 对应的工作空间中。String[]
getOutputTerrainLayerNames()
返回哪些地形图层对应的数据会生成缓存。WorkspaceConnectionInfo
getOutputWorkspaceConnectionInfo()
返回结果工作空间的链接信息。String
getPassword()
返回对生成的各个图层的缓存数据进行加密的密码。String[]
getPreCacheLayerNames()
获取对场景中待生成预缓存的图层名称。int
getProcessThreadsCount()
获取生成缓存的线程数。Scene
getScene()
返回用于生成缓存的场景对象。StorageType
getStorageType()
返回缓存的存储方式。TerrainCacheType
getTerrainCacheType()
int
getUpdateSize()
返回在 Scene 场景渲染该缓存图层时,每次更新缓存的块数,具体值为该方法返回值的平方,即 UpdateSize * UpdateSize 的个数。String
getUserIDField()
获取对象ID字段boolean
isBoundsCeiled()
返回在生成缓存时是否对场景图层中指定的需要生成缓存数据的范围(对应setBounds()
方法设置的范围)进行规整处理。boolean
isBuildNormalMap()
对场景中的地形数据,获取是否生成法线图。boolean
isCalculateTangents()
获取是否生成切线boolean
isCombineRepeatTextures()
对场景中的模型数据生成三维切片缓存时,用于获取是否重复贴图打组。void
removeSteppedListener(SteppedListener l)
移除一个用于接收进度条事件(SteppedEvent
)的监听器。void
setAttributeExtentType(AttributeExtentType type)
设置属性文件类型void
setBounds(Rectangle2D value)
设置返场景图层中需要生成缓存数据的范围。void
setBoundsCeiled(boolean value)
设置在生成缓存时是否对场景图层中指定的需要生成缓存数据的范围(对应setBounds()
方法设置的范围)进行规整处理。void
setBuildNormalMap(boolean isBuildNormalMap)
对场景中的地形数据,设置是否生成法线图。void
setCalculateTangents(boolean value)
设置是否生成切线void
setCombineRepeatTextures(boolean isCombineRepeatTextures)
对场景中的模型数据生成三维切片缓存时,用于设置是否重复贴图打组。void
setCompressedTextureType(CompressedTextureType value)
设置生成场景缓存时的压缩纹理的格式。void
setImageSize(CacheImageSize value)
设置缓存图片的大小。void
setIsCalNormal(boolean value)
设置是否重新计算法线static void
setIsDisposable(com.supermap.data.InternalHandleDisposable obj, boolean disposable)
void
setIsInstance(boolean value)
设置是否实例化void
setObjectFiltrateThreshold(double value)
void
setOutputFolder(String value)
设置生成缓存的路径。void
setOutputLayerNames(String[] value)
设置哪些普通图层对应的数据会生成缓存。void
setOutputSceneName(String value)
设置结果场景的名称,该场景名称会保存在 OutputWorkspaceConnectionInfo 对应的工作空间中。void
setOutputTerrainLayerNames(String[] value)
设置哪些地形图层对应的数据会生成缓存。void
setOutputWorkspaceConnectionInfo(WorkspaceConnectionInfo value)
设置结果工作空间的链接信息。void
setPassword(String value)
设置对生成的各个图层的缓存数据进行加密的密码。void
setPreCacheLayerNames(String[] value)
获取对场景中待生成预缓存的图层名称。void
setProcessThreadsCount(int value)
设置生成缓存的线程数。void
setS3MVersion(S3MVersion version)
设置S3M版本。void
setScene(Scene value)
设置用于生成缓存的场景对象。void
setStorageType(StorageType value)
设置缓存的存储方式,默认为原始模式。void
setTerrainCacheType(TerrainCacheType value)
void
setUpdateSize(int value)
设置在 Scene 场景渲染该缓存图层时,每次更新缓存的块数,具体值为该方法返回值的平方,即 UpdateSize * UpdateSize 的个数。void
setUserIDField(String userIDName)
设置对象ID字段
-
-
-
构造器详细资料
-
SceneCacheBuilder
public SceneCacheBuilder()
构造一个场景相关缓存生成类的新实例。
-
SceneCacheBuilder
public SceneCacheBuilder(Scene scene, String outputFolder)
根据指定的参数构造一个场景相关缓存生成类的新实例。通过该构造函数,进行生成缓存基本信息的设置,其他设置参数选择默认值。该构造函数生成的缓存对象的
getOutputSceneName()
方法的返回值与 scene 的名称相同。- 参数:
scene
- 要生成缓存的场景。outputFolder
- 生成缓存的路径。
-
-
方法详细资料
-
build
public boolean build()
创建场景缓存。- 返回:
- 若创建缓存成功返回 true,否则返回 false。
- 抛出:
UnsupportedOperationException
- 如果 Scene 与 OutputFolder 设置不正确时。
-
buildOfflinePackage
@Deprecated public static boolean buildOfflinePackage(String workspacePath, String sceneName)
已过时。
-
getScene
public Scene getScene()
返回用于生成缓存的场景对象。- 返回:
- 用于生成缓存的场景对象。
-
setScene
public void setScene(Scene value)
设置用于生成缓存的场景对象。- 参数:
value
- 用于生成缓存的场景对象。
-
getStorageType
public StorageType getStorageType()
返回缓存的存储方式。- 返回:
- 缓存的存储方式。
- 默认值:
- 默认值为
StorageType.Compact
,即紧凑模式。
-
setStorageType
public void setStorageType(StorageType value)
设置缓存的存储方式,默认为原始模式。- 参数:
value
- 缓存的存储方式。
-
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 value)
设置缓存图片的大小。- 参数:
value
- 缓存图片的大小。
-
getOutputFolder
public String getOutputFolder()
返回生成缓存的路径。- 返回:
- 生成缓存的路径。
-
setOutputFolder
public void setOutputFolder(String value)
设置生成缓存的路径。- 参数:
value
- 生成缓存的路径。
-
getOutputWorkspaceConnectionInfo
public WorkspaceConnectionInfo getOutputWorkspaceConnectionInfo()
返回结果工作空间的链接信息。- 返回:
- 结果工作空间的链接信息。
-
setOutputWorkspaceConnectionInfo
public void setOutputWorkspaceConnectionInfo(WorkspaceConnectionInfo value)
设置结果工作空间的链接信息。当使用默认的方式 null 时,将在 OutputFolder 目录下,生成一个
SMWU
类型的的工作空间文件,文件名称与输入的 Scene 的名称相同。- 参数:
value
- 结果工作空间的链接信息。
-
getOutputSceneName
public String getOutputSceneName()
返回结果场景的名称,该场景名称会保存在 OutputWorkspaceConnectionInfo 对应的工作空间中。- 返回:
- 结果场景的名称,该场景名称会保存在 OutputWorkspaceConnectionInfo 对应的工作空间中。
-
setOutputSceneName
public void setOutputSceneName(String value)
设置结果场景的名称,该场景名称会保存在 OutputWorkspaceConnectionInfo 对应的工作空间中。- 参数:
value
- 结果场景的名称。
-
getBounds
public Rectangle2D getBounds()
返回场景图层中需要生成缓存数据的范围。注意:在6R(2012) SP2 版本中,不推荐用户使用本方法。
- 返回:
- 场景图层中需要生成缓存数据的范围。
-
setBounds
public void setBounds(Rectangle2D value)
设置返场景图层中需要生成缓存数据的范围。注意:在6R(2012) SP2 版本中,不推荐用户使用本方法。
- 参数:
value
- 场景图层中需要生成缓存数据的范围。
-
dispose
public void dispose()
释放该对象所占用的资源。当调用该方法之后,此对象不再可用。
-
getPassword
public String getPassword()
返回对生成的各个图层的缓存数据进行加密的密码。在添加图层时,需要使用该密码才能成功添加。如果使用默认值,便可不指定密码便能打开。- 返回:
- 对生成的各个图层的缓存数据进行加密的密码。
- 默认值:
- 默认值为一个空的字符串。
-
setPassword
public void setPassword(String value)
设置对生成的各个图层的缓存数据进行加密的密码。在添加图层时,需要使用该密码才能成功添加。如果使用默认值,便可不指定密码便能打开。注意:当 StorageType.Original 时,该方法是无效的;当 StorageType.Compact 时,该方法才有效。
- 参数:
value
- 对生成的各个图层的缓存数据进行加密的密码。
-
setOutputLayerNames
public void setOutputLayerNames(String[] value)
设置哪些普通图层对应的数据会生成缓存。不在该列表中的图层,会使用原场景中使用的数据,不会生成对应的缓存。当为 null 时,表示所有图层对应的数据均会生成新的缓存,或者引用原来的缓存数据。- 参数:
value
- 对应的数据会生成缓存的图层名称的集合。
-
setOutputTerrainLayerNames
public void setOutputTerrainLayerNames(String[] value)
设置哪些地形图层对应的数据会生成缓存。不在该列表中的地形图层,会使用原场景中使用的数据,不会生成对应的缓存。当为null时,表示所有地形图层对应的数据均会生成新的缓存,或者引用原来的缓存数据。- 参数:
value
- 对应的数据会生成缓存的地形图层名称的集合。
-
getOutputLayerNames
public String[] getOutputLayerNames()
返回哪些普通图层对应的数据会生成缓存。不在该列表中的图层,会使用原场景中使用的数据,不会生成对应的缓存。当为 null 时,表示所有图层对应的数据均会生成新的缓存,或者引用原来的缓存数据。- 返回:
- 哪些图层对应的数据会生成缓存。
- 默认值:
- 默认值为 null。
-
getOutputTerrainLayerNames
public String[] getOutputTerrainLayerNames()
返回哪些地形图层对应的数据会生成缓存。不在该列表中的地形图层,会使用原场景中使用的数据,不会生成对应的缓存。当为null时,表示所有地形图层对应的数据均会生成新的缓存,或者引用原来的缓存数据。- 返回:
- 哪些地形图层对应的数据会生成缓存。
- 默认值:
- 默认值为 null。
-
addSteppedListener
public void addSteppedListener(SteppedListener l)
添加一个用于接收进度条事件(SteppedEvent
)的监听器。- 参数:
l
- 一个用于接收进度条事件的监听器。
-
removeSteppedListener
public void removeSteppedListener(SteppedListener l)
移除一个用于接收进度条事件(SteppedEvent
)的监听器。- 参数:
l
- 一个用于接收进度条事件的监听器。
-
isBoundsCeiled
public boolean isBoundsCeiled()
返回在生成缓存时是否对场景图层中指定的需要生成缓存数据的范围(对应setBounds()
方法设置的范围)进行规整处理。在手动生成局部缓存,然后结合 iServer 动态发布时,需要通过该方法设置为 true,来对手动生成的缓存范围进行规整,以避免根据
setBounds()
方法设置的范围生成的缓存图片在边界上出现部分白图现象。对生成缓存数据的地理范围进行规整处理指的是,计算该范围所对应行列缓存图片的外边框,该边框与三维缓存图片分块划分的边线一致,并以此边框范围来生成缓存。
- 返回:
- 在生成缓存时是否对场景图层中指定的需要生成缓存数据的范围进行规整处理。
-
setIsCalNormal
public void setIsCalNormal(boolean value)
设置是否重新计算法线- 参数:
value
- 是否重新计算法线
-
getIsCalNormal
public boolean getIsCalNormal()
获取是否重新计算法线
-
setIsInstance
public void setIsInstance(boolean value)
设置是否实例化
-
getIsInstance
public boolean getIsInstance()
-
setBoundsCeiled
public void setBoundsCeiled(boolean value)
设置在生成缓存时是否对场景图层中指定的需要生成缓存数据的范围(对应setBounds()
方法设置的范围)进行规整处理。在手动生成局部缓存,然后结合 iServer 动态发布时,需要通过该方法设置为 true,来对手动生成的缓存范围进行规整,以避免根据
setBounds()
方法设置的范围生成的缓存图片在边界上出现部分白图现象。对生成缓存数据的地理范围进行规整处理指的是,计算该范围所对应行列缓存图片的外边框,该边框与三维缓存图片分块划分的边线一致,并以此边框范围来生成缓存。
- 参数:
value
- 一个布尔值,表示在生成缓存时是否对场景图层中指定的生成缓存数据的范围进行规整处理。
-
getCompressedTextureType
public CompressedTextureType getCompressedTextureType()
返回生成场景缓存时的压缩纹理的格式。对压缩纹理的格式的详细介绍请参见CompressedTextureType
枚举类的说明。- 默认值:
- 默认值为
CompressedTextureType.DDS
。
-
setCompressedTextureType
public void setCompressedTextureType(CompressedTextureType value)
设置生成场景缓存时的压缩纹理的格式。对压缩纹理的格式的详细介绍请参见CompressedTextureType
枚举类的说明。
-
getPreCacheLayerNames
public String[] getPreCacheLayerNames()
获取对场景中待生成预缓存的图层名称。- 返回:
- 待生成预缓存的多个图层名称。
-
setPreCacheLayerNames
public void setPreCacheLayerNames(String[] value)
获取对场景中待生成预缓存的图层名称。- 参数:
value
- 待生成预缓存的多个图层名称。
-
setTerrainCacheType
public void setTerrainCacheType(TerrainCacheType value)
-
getTerrainCacheType
public TerrainCacheType getTerrainCacheType()
-
setProcessThreadsCount
public void setProcessThreadsCount(int value)
设置生成缓存的线程数。- 参数:
value
- 待设置线程数。
-
getProcessThreadsCount
public int getProcessThreadsCount()
获取生成缓存的线程数。
-
setObjectFiltrateThreshold
public void setObjectFiltrateThreshold(double value)
-
getObjectFiltrateThreshold
public double getObjectFiltrateThreshold()
-
getUserIDField
public String getUserIDField()
获取对象ID字段
-
setUserIDField
public void setUserIDField(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(String attributeFile, String password)
提取属性文件中的所有ID值,以流的方式输出结果。- 参数:
attributeFile
- 属性文件password
- 密码- 返回:
-
appendAttributes
public static boolean appendAttributes(String attributeFile, byte[] attributeData, 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
- 设置是否生成法线图
-
setCalculateTangents
public void setCalculateTangents(boolean value)
设置是否生成切线- 参数:
value
-
-
isCalculateTangents
public boolean isCalculateTangents()
获取是否生成切线- 返回:
-
setIsDisposable
public static void setIsDisposable(com.supermap.data.InternalHandleDisposable obj, boolean disposable)
-
-
Copyright © 2021–2024 SuperMap. All rights reserved.