World Wind的基本内容

World Wind的基本内容


发布日期: 2015-06-03 更新日期: 2015-06-03 编辑:xuzhiping 浏览次数: 5009

标签:

摘要: World Wind概念 World Wind(简称WW,中文民间直译为世界风),是NASA发布的一个开放源代码(Open Source)的地理科普软件(由NASA Research开发,由NASA Learning Technologies来发展),它是一个...

World Wind概念

World Wind(简称WW,中文民间直译为世界风),是NASA发布的一个开放源代码(Open Source)的地理科普软件(由NASA Research开发,由NASA Learning Technologies来发展),它是一个可视化地球仪,将NASA、USGS以及其它WMS服务商提供的图像通过一个三维的地球模型展现,近期还包含了火星和月球的展现。

ww是一个可以应用在你程序中的Java组件,它将提供可交互的3D地球模型。ww已经为开发者完成了所有复杂的工作,比如动态的图象选择和获取。

ww是什么而又不是什么?

NASA World Wind的可视化技术并不仅仅是一个软件。它包含了访问NASA的数据和影像的功能。另外,NASA的合作伙伴的数据在ww中也是可用的。ww在科学、教育、商业和政府等行业的应用中都有非常大的潜力。

ww不是Google Earth的拷贝,也不是它的竞争对手。ww和GE都拥有各自优势的技术,使二者成为当前最常用的此类软件。尽管二者看起来非常相似,但在受关注的领域、开发的历史和哲学方面,还是有明显的不同。ww可以在用户程序之中作为组件,可以获取NASA的数据,开发者可以创造性地实用这些数据。

而且,ww还提供了其他星球的影像。而从设计本身来说,ww就具有极强的可扩展性和再创造性。

程序中的WorldWind

用户可以通过Java Web Start或是Applet来部署WorldWind程序。ww的内容:

  • gov.nasa.worldwind 顶级包
  • gov.nasa.worldwind.awt 用于awt的组件
  • gov.nasa.worldwind.formats.gpx GPS轨道格式
  • gov.nasa.worldwind.formats.nmea GPS轨道格式
  • gov.nasa.worldwind.geom 几何与数学类
  • gov.nasa.worldwind.globes 地球、火星等星球的实现
  • gov.nasa.worldwind.layers 图层
  • gov.nasa.worldwind.layers.Earth 专用于地球的图层

创建WorldWind应用

创建一个WorldWind组件,只需要一个frame和window canvas,然后加上一些事件监听

1.将WorldWindGLCanvas键入JFrame

Class MyWorldWindFrame extends JFrame{
WorldWindowGLCanvas wwc = new WorldWindowGLCanvas();
this.getConentPane().add(wwc, BorderLayout.CENTER);
}

2.监听WorldWind事件

wwc.addSelectListener(new SelectListener(){
public void selected(SelectEvent event) {...}
});

3.运行此程序即可

WorldWindow和View接口

以下是WorldWindow接口:

  • set/getModel(Model)
  • set/getView(View)
  • getSceneController(...)
  • pick(java.awt.Point)
  • set/getInputHandler(...)

以下监听器:

  • PositionListener
  • SelectListener
  • RenderingListener
  • repaint()

View 接口:

  • Fields
  • Position, direction, field of view, altitude, heading, pitch, roll,
  • Actions
  • apply()
  • goto(lat/lon/elev/altitude)
  • project(Point 3Dpoint)
  • Compute
  • horizon()
  • positionFromScreenPoint(...)
  • rayFromScreenPoint(...)

在Applet中使用WorldWind

要使用Applet,需要Java API for OpenGL(JOGL) Applet Launcher。新版本的JOGL Applet Launcher具备在applet中创建和部署基于OpenGL的3D图形的功能,而不需要客户端安装任何软件。它可以在任何支持JOGL的操作系统和CPU上运行,只需要浏览器上安装JRE1.4.2以上版本。

以下是典型的在applet中部署WorldWind组件的代码:










其中Applet1Up.jar文件中包含WorldWindApplet类,无需声明,而是作为参数引入;而应当声明的是JOGL Applet Launcher,它的相关类jogl.jar和gluegen-rt.jar也需要列出。

架构和API

NASA拥有的海量数据可以以T来计算,这些数据来自卫星和太空望远镜。NASA World Wind的可视化技术可以用最便捷和低冗余的方式传送地理空间数据。下图为ww架构图:

ww包含了交互式的3D图形组件,可用于Swing,AWT和SWT或其他UI组件。

World Wind API主要以接口设计,因此用户可以选择性地替换已有组件。最高级的接口为WorldWindow,相关的UI组件为Swing/AWT。其他五个主要的接口为:

  • Globe接口 表现地形
  • Layer接口 表现影像信息
  • Model接口 聚合Globe和Layer,用于创建星球模型
  • SceneController接口 控制Model的渲染,可以用于表现事件、时间等
  • View接口 控制用户视图

在典型的应用中,程序在一个Model对象中关联一个Globe对象和多个Layer对象。然后将model传给SceneController对象,用于在一个WorldWindow中显示globe和layers。SceneController对象控制globe和layers的显示,并与View接口互动来决定用户视图。

实现这些接口的对象可能由ww或其他开发者提供,而实现这些接口的对象可用于任何需要此类接口的地方。ww已经提供了地球、火星和月球的模型的Globe实现,其他一些基本的Model,SceneController,View接口也都有了基本的实现。

FrameController接口将ww的渲染和整个程序的渲染集成,以便于控制。

所有的数据以缓存文件形式存取,文件缓存可以管理位于多个磁盘的文件碎片的取用、文件缓存可以同区难过WorldWind以单例模式访问。

发展前景

未来NASA将提供更多数据,包括地球、月球、其他星球、天气、卫星和时区。更多数据格式将被支持。更多可用的组件,包括图层管理器,动画播放器,拖放支持,UI帮助类等将被支持。另外,WorldWind还将对RSS和脚本扩展编程进行支持。最后,未来版本还将包含对Eclipse和NetBeans的支持。

关注公众号
获取免费资源

随机推荐


Copyright © Since 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org