发展现状
关于三维数字地球的研究主要在于可视化展示方面,在地理空间分析层面还涉及较少。对于三维地球,主要有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,并且免费,快速,方便,简直太帅了。分分钟上手:
一秒来展示