三维数据的效率一直是个瓶颈,特别是在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. luogu2152 [SDOI2009]SuperGCD

    要你求两个非常大的数字的GCD. 不要想复杂,用高精度整更相减损术即可. #include <cstdio> #include <cstring> #include <a ...

  2. bzoj2132: 圈地计划(无比强大的最小割)

    2132: 圈地计划 题目:传送门 简要题意: 给出一个矩阵,一共n*m个点,并给出三个收益矩阵.A矩阵表示这个点建A的可取收益,B矩阵表示这个点建B的可取收益,C矩阵表示如果相邻(有且仅有一条公共边 ...

  3. 修改input:file样式

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  4. SQL 优化记录

    1. 对Where 语句的法则 1.1 避免在WHERE子句中使用in,not  in,or 或者having. 可以使用 exist 和not exist代替 in和not in. 可以使用表链接代 ...

  5. bzoj2595 [Wc2008]游览计划——斯坦纳树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2595 今天刚学了斯坦纳树,还不太会,写一道题练习一下: 参考了博客:http://www.c ...

  6. web.xml中load-on-startup

    <servlet> <servlet-name>SystemInit</servlet-name> <servlet-class>sjgl.system ...

  7. MySQL中DELETE语句嵌套子查询规则

    delete from table .....其中表名不能起别名 比如说:delete from table t where t.id = '1';(这条SQL语句将报错)

  8. nginx编译安装新模块

    nginx的模块是需要重新编译nginx,而不是像apache一样配置文件引用.so 这里以安装第三方ngx_http_google_filter_module模块为例 下载第三方扩展模块ngx_ht ...

  9. Java内存机制,内存地址

    问题一:String str1 = "abc"; String str2 = "abc"; System.out.println(str1==str2); // ...

  10. php正则表达式应用

    正则表达式 1.替换“/\d/”,“#”,$str:正则表达式\d 数字,替换为#,字符串 $str = "2hello 5li 6lei"; echo preg_replace( ...