【转】world wind java若干认识(整理的)
World wind java不是一个应用程序,他是一个可以扩展的组件,使用java结合OpenGl开发的。它的架构(图一,引用Classicning博客:http://classicning.javaeye.com/blog/99667):
NASA拥有的海量数据可以以T来计算,这些数据来自卫星和太空望远镜。NASA 的可视化技术可以用最便捷和低冗余的方式传送地理空间数据。下图为ww架构图:
图一

图二
WWj中Layer结构图为:

图三
wwj中数据处理的组织图:

图四
World Wind java组件通过接口来实现,最高等级的接口为WorldWindow。另外,还有以下几个重要的接口:
Globe:数字星球(地球)的形状和地形;
Layer:applies imagery or information to a .;
Model:模型,主要聚合了Globe和Layer,通过它可以创建地球或火星等星球。
SceneController:控制Model的渲染。
View:控制Model的视图表现。
在典型的应用中,程序在一个Model对象中关联一个Globe对象和多个Layer对象。然后将model传给SceneController对象,用于在一个WorldWindow中显示globe和layers。SceneController对象控制globe和layers的显示,并与View接口互动来决定用户视图。
ww已经提供了地球、火星和月球的模型的Globe实现,其他一些基本的Model,SceneController,View接口也都有了基本的实现。
FrameController接口将ww的渲染和整个程序的渲染集成,以便于控制。
用户可以通过或是Applet来部署WorldWind程序。ww包含包(不全):
world wind处理的信息和数据都是十分庞大的,他们主要来自于网络的数据服务器。因此远程调用(Retrieval)和本地缓存就成为world wind中的一个重要的功能了。实现远程调用数据的类有Retriever和RetrievalService。
Retriever 类封装了一个单一的远程调用数据的请求. 这是一个接口. 通常我们用的是HTTPRetriever, 它通过HTTP协议调用数据.Retriever 通常通过Layer去远程调数据通过并通过Layer显示(影像)并用ElevationModel通远程调用所需要的高程数据。
管理一个线程池(线程池中可能有许多远程调用数据的请求)。对象通过传递给.
When a retriever's data arrives, the retrieval service calls the retriever's , which was specified to the retriever's constructor. The is passed the data immediately upon download and determines how to persist it. Persistence and any processing prior to it is object specific. , for instance, can convert non-DDS formats to DDS, or simply store the data as-is in the file cache. just persists the raw data. The post processor runs in the same thread as the retriever, which is neither the event-dispatching (UI) thread nor the rendering thread, but the one created by the retrieval service for that retriever.
Data that has been previously retrieved or is otherwise local (on disk) is brought into memory in a thread separate from the event-dispatching thread or the rendering thread. One of the World Wind conventions is that no code may access the computer's disk in any way during rendering. Therefore loading the data from disk is dispatched to another thread pool, the . This service has a similar interface to RetrievalService. Tasks it runs typically read the data from disk and add it to the global memory cache (described below).
One consequence of the disk-access restriction is that determining whether needed data is on disk and can be loaded directly, or is not local and therefore must be retrieved, must not be done in the rendering thread. (A disk access is necessary to determine whether the data exists locally.) Objects that load data therefore follow the convention of first checking the memory cache for the desired data, and if it's not there create a to determine in a separate thread where the data must be drawn from, disk or network. If it's on the disk then the task can simply read it and cache it right away. If it's remote then the task creates a and requests retrieval. Later, after retrieval has placed the data on disk, the situation will be the local case and data can be loaded into memory within the .
浙公网安备 33010602011771号