当前位置: 首页 > article >正文

07-ArcGIS For JavaScript--隐藏参数qualitySettings(memory和lod控制)

目录

  • 1、综述
  • 2、sceneview.qualitySettings
    • 2.1、sceneview.qualitySettings.memoryLimit
    • 2.2、lodFactor
    • 2.3 additionalCacheMemory
  • 3、结论

1、综述

先上重点,SceneView.qualitySettings为隐藏对象参数,该对象的memoryLimit和lodFactor等值,可以修改当前可见区域加载的内存大小,并且可以修改当前场景中加载的模型的lod的层级(控制相同视角下的模型的粗糙度)。

对于ArcGIS For JavaScript,只能从SceneViewPerformanceInfo对象下图参数中看到与内存相关的内容:
在这里插入图片描述
在这里插入图片描述
对于这些内存的内容,我们能够了解到当前场景中使用的内存大小,以及能够允许的最大内存,但是却不能去直接设置当前场景可加载的内存大小。
通过下面代码,可以打印一下SceneView对象的信息。

const view = new SceneView({
        container: "viewDiv",
        map: map,
      });

      view.when(function () {
        console.log(view)
      })

在我们常用的qualityProfile下面有一个qualitySettings的参数,这个就是我们今天要降到的隐藏参数。
在这里插入图片描述

2、sceneview.qualitySettings

对于qualitySettings的研究后,目前有可见效果的参数有以下几个:

  1. memoryLimit:设置当前可见区域内的最大加载内存
  2. lodFactor:设置当前场景中模型的lod级别
  3. additionalCacheMemory:设置缓存本地的内存大小。
    下面分别介绍这几个参数。

2.1、sceneview.qualitySettings.memoryLimit

我们知道SceneView场景中qualityProfile参数设置为high, medium 和low的时候,其对应的memoryLimit的值是不一样的,如下:
在这里插入图片描述
这个memoryLimit其实就是限制了当前可见区域的数据加载的对大值,例如,当讲sceneview.qualitySettings.memoryLimit值设置为50MB的时候,出现如下情况。

  1. 模型再拖动的时候出现缺块问题。
  2. 后台报内存溢出。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这个缺块就是因为当前可见区域内存太小,导致加载其他数据时会先删除之前加载的缓存,再去加载新的,删除的时候就会导致缺块问题。

因此当遇到后台报内存错误问题,或者页面在加载的时候出现缺块问题,可以通过调整sceneview.qualitySettings.memoryLimit去解决。

2.2、lodFactor

lodFactor主要是修改当前模型限制的lod级别,默认为1,当设置为0.5的时候,模型限制的比较粗糙,当设置为2的时候,模型限制的比较精细。

sceneview.qualitySettings下有个sceneService对象,下面可以看到有integratedMesh(倾斜模型)、object(3d object模型)、point(点模型)、pointCloud(点云模型)等对象。
在这里插入图片描述
用倾斜举例,可以看到integratedMesh下面有个lodFactor的值。
在这里插入图片描述
默认情况:
在这里插入图片描述
lodFactor=0.1时:

view.qualitySettings.sceneService['integratedMesh'].lodFactor = 0.1;

在这里插入图片描述
lodFactor=2时

view.qualitySettings.sceneService['integratedMesh'].lodFactor = 2;

在这里插入图片描述
因此,当需要在特定场景对模型的精细度要求比较严格的时候,可以通过调整lodFacrtor的值进行修改。

2.3 additionalCacheMemory

additionalCacheMemory主要是设置当前页面缓存到本地硬盘的大小的变量,可以将需要预览的数据提前缓存到本地,下次浏览的时候提升加载速度。但是这种情况再页面刷新后会本清除。

3、结论

  1. 当模型数据比较大的时候,模型加载出现缺块问题,可通过修改memoryLimit值进行测试。但是大小不能太大,需要考虑浏览器的压力。
  2. 当场景在不同情况下对模型的精度要求很严格的时候,或者需要降低模型质量去提升加载效率的时候,可通过修改lodFactor。
  3. additionalCacheMemory主要是设置当前页面缓存到本地硬盘的大小的变量,可以将需要预览的数据提前缓存到本地,下次浏览的时候提升加载速度。但是这种情况再页面刷新后会本清除。

http://www.kler.cn/a/461683.html

相关文章:

  • 云架构Web端的工业MES系统设计之区分工业过程
  • 【强化学习】演员评论家Actor-Critic算法(万字长文、附代码)
  • 在CodeBlocks搭建SDL2工程构建TFT彩屏模拟器虚拟TFT彩屏幕显示
  • reactor中的并发
  • 代码段中使用数据、栈
  • 【网络安全 | 漏洞挖掘】绕过电子邮件确认实现预账户接管
  • DataV数据可视化
  • 【2025 Rust学习 --- 09 特型和泛型】
  • C语言:位段
  • 【2024年-6月-7日-开源社区openEuler实践记录】探索 oec - hardware:硬件适配与管理的开源利器
  • Android实现队列出入队测试
  • 从自动化到大模型,王培东用实践搭建AI成长阶梯,登上ACL舞台丨社区星风采
  • pytorch 计算图中的叶子节点介绍
  • 我在成都教人用Flutter写TDD(补充)——关于敏捷教练
  • 用户界面的UML建模08
  • 修改r包源代码 ctrl+鼠标点击函数,进入函数内部getgeo 源码
  • 基于SpringBoot和Leaflet的全球机场空间分布可视化实战
  • 蓝桥杯JAVA刷题--001
  • 卸载wps后word图标没有变成白纸恢复
  • PyTorch快速入门教程【小土堆】之损失函数与反向传播
  • 在 IntelliJ IDEA 中开发 GPT 自动补全插件
  • 【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
  • 【优选算法】Binary-Blade:二分查找的算法刃(上)
  • 动态规划五——回文串问题
  • Java后端常见问题 (一)jar:unknown was not found in alimaven
  • 一、Git与GitHub基础说明