三维数字地球可视化

发展现状

关于三维数字地球的研究主要在于可视化展示方面,在地理空间分析层面还涉及较少。对于三维地球,主要有GoogleEarth、WebGL-Earth、SkyLine、ArcGIS Explorer和国内的LTEarth(灵图)、GeoGlobe(吉奥)、EV-Globe(国遥新天地)等。关于软件间对比,网络有很多资料。

可视化球

可视化球是利用三维可视化技术构建的地球模型,能够方便地旋转、缩放、倾斜,支持多分辨率多角度对三维地球上的各个位置浏览。旋转、缩放、倾斜等用来切换观察的位置和角度,模拟浏览者处于不同位置和校对地球进行观察。在缩放的过程中,根据观察者距离地球的远近自动加载对应分辨率的影像,实现自动切换分辨率。

从原理上讲:三维球的可视化,跟做游戏类似。在摄像机(模拟人眼)所在位置、所指方向和角度,对操作不停的响应和场景内资源的循环刷新(载入-绘制-刷新-卸载)。在球上,特定高度、位置和视角下,能够计算出有多少面元可被展示在球上。并且,利用数据缓存机制,使网络数据缓存到本地,并缓存关注区的几块数据到内存,可有效提高对感兴趣区域的来回查看的速度。

技术

在实验室工程组大神帮助下,对相关技术进行了学习。实验室中的关于球的技术主要依据B/S和C/S构架使用了以下技术:

  • B/S:
    • ①基于OpenGL ES和Html5的WebGL,无需安装插件,当下浏览器均可满足要求。
    • ②基于微软SilverLight(Xaml)+XNA(SilverLight已被微软遗弃)
  • C/S:
    • C#或Java版WorldWind二次开发

相对来说,Worldwind比较好上手。在理解了项目结构后,需要什么功能,主要去参考example中所需组件是怎么用的,进而定制二次开发。并且已有很棒的工具书出版,比如《World Wind Java三维地理信息系统开发技术指南》。对于三维展示,无非是点、线、面、图的问题。在Worldwind中,元素都是在图层中的,比如点线面为图元,加载时,为RenderableLayer();图像,继承于BasicTiledImageLayer();加载时,将图层绑定到Worldwind窗体即可,顺序为this.getwwd().getModel().getLayers().add(this.hiddenLayer)
对于遥感影像的加载贴图,是先将影像按不同的层级切片(WorldWind Tiles,512*512),然后对切片数据XML描述,之后将XML读入document对象,解析xml中的元数据。

WebWorldWind

WorldWind项目已经多年没更新了,去年(2014年)WebWorldwind项目映入眼帘,结合使用了JavaScript,并且免费,快速,方便,简直太帅了。分分钟上手:
一秒来展示

Your browser does not support HTML5 Canvas.