三维数据的效率一直是个瓶颈,特别是在Web端浏览一直是个问题,在IE内存限制1G的条件下,对于三维数据动不动几十G的数据量,这1G显得多么微不足道。虽然现在三维平台都是分级加载,或者在程序中采用数据分不同片区加载来降低一次性加载的模型数据,但是在浏览器中浏览三维数据崩溃问题仍然一直存在。最近在维护一个老的Skyline的项目,客户提出了在看二维数据的同时也可以看三维数据,需求很简单,实现也很容易,唯一的问题是浏览效率,能不能浏览?浏览效率怎么样?而且政府单位的电脑配置都是很一般。毕竟也做了这么多年的Skyline开发,明知有挑战,那就干吧。

首先,拿到项目的三维数据,一看数据量40几G,分了21个模型片区,每个片区差不多5平方公里,片区里面分了建筑模型图层和其他模型图层,建筑图层是shp+xpl2,模型图层是3dml。那就先试试数据本在本地,建个Web浏览页面,在自己4G显存,16G内存的机器上跑一下。发现建筑模型初始时可以看见,浏览一会消失后,再回来看建筑模型,死活加载不出来了,一看IE内存800M了,显然其他模型图层(3dml格式)把内存都占满了,流模式加载的建筑模型被“抛弃了”。显然直接使用现有数据这种方式是不行的了。

第二,既然xp2+3dml 这种组合不行,那就我房屋模型也打包成3dml,打包后5平方公里竟然有4G多的数据。数据在本地,在页面上浏览,好了,不会出现建筑消失后再也加载不出来的情况了,但是IE内存也接近1G,CPU可以达到60%以上,我这CPU是i5 3.30G,各种不稳定因素,这种方法也不行。

第三,Skyline 出了7.0版本,是64位的软件,那就来试下在Web端,修改web页面ActiveX 控件,结果发现竟然不支持,说是IE32位不支持64位程序,怎么改都不行,那这方法也不行。不过Pro7.0 在PC端加载数据的效率确实高,应用程序占用内存能达到3G以上,6.6版本 扩展大内存后,也只能达到2.5G左右。以后64位系统是趋势,skyline7.0 ,伟景行8.0版本,ArcGIS Pro 都是64位的,超图的8C还没关注,应该都是了。

第四,那只有考虑降低数据精度了,跟客户商量下,保证效率和文档性的前提下,可以降低模型精度。那怎么降低呢,首先数据肯定是3dml 格式的了,现在一个片区其他模型有1G的大小,建筑4G大小。降低原则,先把数据量降低一倍,其他模型数据在规划行业中相对没那么重要,可以适当降低。利用CityBuilder 把其他模型数据的精度改为0.5p/m,发现数据量将为500M,房屋模型精度改为0.25p/m 和0.125p/m,生成后0.25P/m大小位2.4G,0.125p/m位3.1G。实际发现0.25p/m的数据精度太差了。那就把0.125p/m的房屋和0.5p/m的其他模型在web端浏览,发现IE占用内存也是800多M,但是CPU 使用最大也就40%多。似乎内存问题还是没能解决。这里有个基本的标准1平方公里房屋模型400M,其他模型100M为最佳效果浏览效果,纯经验。

以上过程说明,只要skyline浏览数据量超过1G,IE占用的内存肯定会达到IE的限制,要解决性能问题,一个还是要尽量分区,分区范围小一点,第二点就是要用3dml格式数据,第三还是降低一些数据精度。

.

Skyline Web 端数据浏览性能优化的更多相关文章

  1. DedeCMS数据负载性能优化方案简单几招让你提速N倍

    前文介绍了DedeCMS栏目列表页实现完美分页的方法,避免了大部分重复栏目标题对搜索引擎的影响,对SEO更有利.今天,分享一下DedeCMS数据负载性能优化的方法. 接触织梦也有三年多时间了,对它可谓 ...

  2. 大数据应用之HBase数据插入性能优化实测教程

    引言: 大家在使用HBase的过程中,总是面临性能优化的问题,本文从HBase客户端参数设置的角度,研究HBase客户端数据批量插入性能优化的问题.事实胜于雄辩,数据比理论更有说服力,基于此,作者设计 ...

  3. mongodb可以通过profile来监控数据 (mongodb性能优化)

    mongodb可以通过profile来监控数据 (mongodb性能优化)   开启 Profiling  功能 ,对慢查询进行优化: mongodb可以通过profile来监控数据,进行优化. 查看 ...

  4. HTML5前端(移动端网站)性能优化指南

    HTML5是一种最新发布网页构架的普遍模型,是构建对程序.对用户都更有价值的数据驱动的Web的前端技术框架,它的价值在于融合CSS/javaScript/flash等众多前端开发技术,更多的体现在对交 ...

  5. 从web现状谈及前端性能优化

    从web现状谈及性能优化 原文出处:<Karolina Szczur: The State of the Web> 性能优化指南The Internet is growing expone ...

  6. (O)WEB:前端网站性能优化(原创)

    *从理论.实战编码.实战调试3个方面学习前端性能优化(包括页面加载时间和页面流畅度): -------------------------------理论----------------------- ...

  7. Mysql完全手册(笔记二,使用数据与性能优化)

    一.使用数据 1.使用变量 MySQL也可以让我们以用户自定义的变量来存储select查询的结果,以便在将来select查询中使用.它们只会在客户会话期间存在,但是它们提供一个方便有效的方法来连接查询 ...

  8. 一次EF批量插入多表数据的性能优化经历

    距离上次的博客已经有15个多月了,感慨有些事情还是需要坚持,一旦停下来很有可能就会停很久或者从此再也不会坚持.但我个人一直还坚持认为属于技术狂热份子,且喜欢精益求精的那种.最近遇到两个和数据迁移相关的 ...

  9. 全方位分析web前端如何进行性能优化

    前言: 最近刚刚完成项目,空闲一段时间,想起之前有被问起怎么对前端进行性能优化,自己也是脑中零零散散的总不成体系,现特来总结,欢迎补充指教. 1.整体资源 (1)js.css源码压缩 (2)css文件 ...

随机推荐

  1. HDU 4534

    AC自动机+状态DP. 虽然很明显的AC自动机+状态DP题,但要分析问题上还是欠缺一点了.一直在犹豫枚举每一个字符选或不选的状态会不会超时,以为会达到状态有2^n,但其实根本没有.因为有很多状态是可以 ...

  2. Myeclipse中解决spring配置文件无提示问题

    相信非常多人都遇到过在部署spring框架写spring的配置文件时无提示内容的问题,都是仅仅能提示一些标签 名,而无法提示属性值,bz我本人今天也遇到了这种问题.在网上找了非常久答案,非常多方法都不 ...

  3. media type

    https://www.sitepoint.com/mime-types-complete-list/ application/base64 https://github.com/dotnet/doc ...

  4. C# 手动编写 DataSet,DataTable 及遍历DataSet中的数据

    一.手动编写DataSet:    有时候不想从数据库导出 DataSet,或者有其他的需要,要将数据库里的DataSet包装成另一个样子,这个时候,了解DataSet的内部结构就非常必要.DataS ...

  5. 【.NET】C#中遍历各类数据集合的方法

    [.NET]C#中遍历各类数据集合的方法   C#中遍历各类数据集合的方法,这里自己做下总结: 1.枚举类型             //遍历枚举类型Sample的各个枚举名称             ...

  6. RCF:一个相当不错的C++分布式RPC框架

    RCF(远程调用框架)是一个可以移植的C++进程间通信框架,使用C++语言特性,提供了一个简单高效的编写分布式C++软件的途径.RCF利用编译时多态清晰分开了接口和实现. 和传统的RPC框架如CORB ...

  7. aspectC++常用命令

    常用命令:1.ag++ main.cc //在工程目录下产生编译后的exe2.ag++ main.cc --weave_only //产生.acc 纯c++文件3.ag++ main.cc --gen ...

  8. [Swift]LeetCode1073. 负二进制数相加 | Adding Two Negabinary Numbers

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  9. DotNetCasClient加载失败问题分析

    最近公司在接入整理单点登录方案的时候,选择了CAS方案,实际版本采用了4.0.当我们把服务端附属完毕,基于.NET平台Web版的客户端DotNetCasClient进行定制化修改后,在测试环境通过.然 ...

  10. [Luogu 1850] noip16 换教室

    [Luogu 1850] noip16 换教室 好久没有更博客了,先唠嗑一会,花了两天的空闲时间大致做完了昨年的noip真题 虽然在经过思考大部分题目都可出解(天天爱跑步除外),但是并不知道考试时候造 ...