com.supermap.data.processing

类 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

        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 - 一个布尔值,表示在生成缓存时是否对场景图层中指定的生成缓存数据的范围进行规整处理。
      • setCompressedTextureType

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

        public String[] getPreCacheLayerNames()
        获取对场景中待生成预缓存的图层名称。
        返回:
        待生成预缓存的多个图层名称。
      • setPreCacheLayerNames

        public void setPreCacheLayerNames(String[] value)
        获取对场景中待生成预缓存的图层名称。
        参数:
        value - 待生成预缓存的多个图层名称。
      • setTerrainCacheType

        public void setTerrainCacheType(TerrainCacheType value)
      • 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.