Google Earth性能优化技术.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Google Earth性能优化技术

GoogleEarth性能优化技术文档现在竞争态势管理系统中,资源信息页面有根据区域来显示资源的划分情况。当选择区域的范围很大时,区域中划分到的设备资源(尤其是光分线盒和分线盒)会比较多,这时页面会等待很长时间才会显示出来。针对这个问题,进行了Google Earth性能技术优化的调研。通过调研,主要通过两个方面来进行性能优化:1、指明空间索引中的对象类型;2、根据不同海拔高度以不同的方式来显示资源情况。指明空间索引中的对象类型用户在存储空间数据时,可能并不会将点、线、面分别存入不同的数据表中,且在建立R树索引时,并不会为空间数据指定类型。所以错过了Oracle根据特定的空间对象类型调用空间查询优化的机会。因此可以通过指明空间索引中的对象类型,建立带对象类型的空间索引来进行优化。在建立空间索引时,可以用‘layer_gtype=空间对象类型’的方式命名空间索引中的对象类型,具体语法为:CREATE INDEX index_name ON table_name(row_name) INDEXTYPE IS MDSYS.SPATAIL_INDEX PARAMETERS(‘layer_gtype==POINT’);其中index_name为空间索引名,table_name为表名,row_name为空间字段名,layer_gtype的值除POINT外,还可以为LINE,POLYGON等。以下是测试用例:在本地机上对数据量为39822个设备资源进行查询,并将查询出的结果打印出来,在相同的环境下分别进行8次测试,得到如下结果(单位为ms):不指明类型1831318782200632017220344230781987519532指明类型1868817782150471923516016144221900014875表1通过上面的方法,查询性能稍微有点提升。根据海拔高度来显示资源如下图所示,图1现在系统中Google Earth加载设备资源的方案是:用户选择某个要查看区域后,视图会处于高海拔下,“用户选择的区域”会全部显示在“当前窗口”,因此需要加载该区域中全部的设备资源,这样数据量会达到上万,导致页面响应很慢。现在互联网中各种在线地图中,我们可以发现:当我们放大或缩小时,地图上显示的地标往往不一样,例如放大时,显示的地区名称和道路情况会更详细,而缩小时只是显示一些大概的信息甚至不显示。这样我们在显示设备资源时,也可以参考这种方案来做。当处于高海拔下,用户选择的区域会全部显示在当前窗口中,这时我们只需要在区域中显示设备资源的大概信息即可;当用户放大后,处于底海拔下,把设备资源的大概信息隐藏,并显示设备的详细信息,但并不是全部显示,而只是显示当前窗口中与用户选择的区域的交集区域。如下图所示,图2图3由于显示设备资源的区域(红色区域)只是一部分区域,所以查询的设备数据量很小。这样页面响应速度就会大大提升。当用户在低海拔下移动地图时,有两种处理方案:一个是每次移动后,都清空地图上已有的设备资源,重新去后台查询当前窗口与选择区域的交集区域中的设备,但这样可能会重复请求与上一个窗口中的部分设备,但并不会有什么影响;另外一个方案就是每次移动后,并不清空以前的设备资源地标,并且记录用户以前请求的区域的并集区域,如果用户移动后的窗口区域全部处于并集区域中,则不作任何处理,反之则去查询不在并集区域中的新区域中的设备,并返回到前台显示。如下图所示,图4图中“当前窗口区域一”是移动前的窗口区域,“当前窗口区域二”是移动后的窗口区域,所以移动后要显示的设备只要处于不在“当前窗口区域一”(红色区域)中就可以了。图5图中“当前窗口区域一”和“当前窗口区域二”是移动前的二次窗口区域,“当前窗口区域三”是移动后的窗口区域。移动后要显示的设备需要既不在“当前窗口区域一”中,也不在“当前窗口区域二”中,而是在红色区域中的。代码实现大概步骤为:先在当前Google Earth窗口中添加监听器:google.earth.addEventListener(ge.getView(), viewchangeend, viewchangedHandler);并绑定回调处理函数viewchangedHandler。在viewchangedHandler中处理窗口变化时海拔高度的变化:通过var range = myEarth.getViewAltitude(GE);来获得当前海拔高度;当海拔高度减小到一定值(这个值可具体定义)时,并且用户已经选择了要显示了的设备资源时,通过var box = GE.getView().getViewportGlobeBounds();box.getSourth()、box.getNorth()、box.getEast()、box.getWest()来获得当

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档