`
Classicning
  • 浏览: 253691 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

在Java技术中使用NASA World Wind组件

    博客分类:
  • GIS
阅读更多
转自java.sun.com 原文作者:Dana Nourie

World Wind是NASA开发的开源软件,它允许人们从卫星的高度看地球的样子。通过叠合LandSat卫星影像和SRTM数据,World Wind可以使用丰富3D形式表现地球地形。下面是圣海伦斯火山的影像叠合模型。


仅仅提供如此的功能并不是ww的本意。相反,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组件的代码:

<applet code="com.sun.opengl.util.JOGLAppletLauncher"
     width=400
     height=260
     codebase="http://www.tomgaskins.net/applet"
     archive="jogl.jar,gluegen-rt.jar,jogl-demos.jar">
  <param name="subapplet.classname"
     VALUE="worldwinddemo.Applet1Up">
  <param name="subapplet.displayname"
      VALUE="WorldWind Applet Demo">

  <param name="progressbar" value="true">

  <param name="cache_archive"
      VALUE="jogl.jar,gluegen-rt.jar,Applet1Up.jar">
  <param name="cache_archive_ex"
  VALUE="jogl.jar;preload,gluegen-rt.jar;
  preload,Applet1Up;preload">
</applet>

其中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的支持。
分享到:
评论

相关推荐

    WorldWind_1.4.0_Source VS2015编译通过

    4. 开放API:WorldWind提供了丰富的Java和C++ API,方便开发者集成到自己的应用程序中。 二、VS2015编译环境搭建 1. 安装VS2015:首先确保电脑上已经安装了Visual Studio 2015,包括C++编译器及相关组件。 2. 获取...

    WorldWind1.4_Source编译通过直接运行

    3. **接口与API**:WorldWind提供了一个强大的Java API,允许开发者创建自定义图层、标记、飞行路径和用户界面组件。开发者可以通过调用API来加载数据、控制视图、处理用户交互等。 4. **性能优化**:WorldWind采用...

    World wind 学习系列1-17

    World Wind 是一个强大的开源软件应用,由美国国家航空航天局(NASA)开发,它提供了一个交互式的3D地球和天体浏览器。这个“World Wind 学习系列1-17”显然是一个教学资源集合,旨在帮助用户掌握这款软件的各个方面...

    worldwind本机版本2015更新

    在提供的"Bin"文件夹中,可能包含的是WorldWind的可执行文件和库文件,这些是程序运行所必需的组件。用户在安装或更新WorldWind时,需要将这些文件解压到正确的位置,以便程序能正确运行并加载各种地理数据。 总的...

    worldwindjava源码-World-Wind:世界风

    3. 图层管理:通过`gov.nasa.worldwind.layers`包中的类,用户可以创建自定义图层,如地形图层、卫星图层、标注图层等。 三、交互与控制 1. 视角控制:`gov.nasa.worldwind.view`包下的`View`类提供了视角控制功能...

    worldwind-0.6.398.13167.zip_Java编程_Java_

    文件名中的"nosa"可能指的是NASA的非官方应用,`worldwind-nosa-1.3.html`可能是关于早期NOSA版本的详细说明,这对于理解World Wind的历史发展以及新版本的改进之处非常有帮助。 通过上述分析,我们可以看出World ...

    wmsserver服务器打包

    2. **worldwind-wms-0.6.dev.zip**:这可能是NASA的WorldWind项目的一个版本,WorldWind是一个开源的虚拟地球软件,它支持WMS服务。这个开发版本可能包含了用于创建自定义WMS服务器或者与WorldWind集成的API和资源。...

    。net开源项目。net开源项目

    - **官网**:[WorldWind](http://worldwind.arc.nasa.gov)。 - **特点**:提供地图浏览、数据可视化等功能。 #### 9. log4net - **简介**:log4net 是一个基于 Java 的日志框架 log4j 的 .NET 版本。 - **技术**:...

    mapton:某种地图应用

    WorldWindJava是WorldWind的Java版本,适合在Java环境中使用。Mapton利用这两个库,实现了高精度的地球视图,用户可以进行缩放、旋转和平移,同时浏览不同层次的地理信息。 4. **Java编程语言** Java是一种广泛...

Global site tag (gtag.js) - Google Analytics