worldwind技术手册详解

worldwind技术手册详解
worldwind技术手册详解

写在前面
虽说是技术手册,但是没有源码的研究就算是一个教程吧。由于本人能力有限,文章中有很多不 当之处,请各位原谅。 Bigheader 联系:gdsqz2@https://www.360docs.net/doc/9f7055323.html,
1

worldwind 技术手册
目录:
1. WorldWind 软件架构 ――――――――――――――――02 WW 功能介绍 WW 与 XML Client 与 Server WW 使用链接 本地缓存路径 本地功能配置 http 请求与 asp WMS、WFS 2. WorldWind 金字塔体系 ―――――――――――――――――-03 瓦片金字塔详解及其对应公式 ――――――――――――――――――03 NASA World Wind Tile Structure ――――――――――――――――― 03 NASA World Wind Map Tile System ―――――――――――――――― 04 瓦片请求调度策略 ――――――――――――――――― 05 2.2.1 当前显示请求及其显示(客户端) ――――――――――――――――――05 2.2.2 目标瓦片快速搜索算法 ――――――――――――――――――08 2.2.3 瓦片数据的请求预测(服务器) ――――――――――――――――――08 2.3 可视化的地球空间数学模型 ――――――――――――――――――10 2.3.1 地球三维 LOD 模型 ――――――――――――――――――10 3. Geospatial image processing ――――――――――――――――――14 3.1 步骤: (准备知识:LOTD:0 层瓦片大小;TileSize: ) ―――――――――――14 3.2 NLT Landsat 处理技术范例 ―――――――――――――15 3.3 dstile howto ―――――――――――――15 4. Creat a new world ―――――――――――――17 4.1World Wind 本地文件说明 4.1.1. Worlds 4.1.2. 在安装目录下 4.2 创建新的世界模型 5. Making layer ―――― ――――――――――18 5.1 添加新图层(更详细可参考) 5.2 Point ―――――――――――――――20 5.3 Lines ―――――――――――――――20 5.4 Polygon ―――――――――――――――23 5.5 Model Feature ―――――――――――――――25 5.6 Effects and Multi-Texturing ―――――――――――――――27 5.7 Shapefile ―――――――――――――――32 5.8 KML/KMZ 6. ddons 与 plugins ―――――――――――――――32 addons 与 plugins 区别 插件总汇及其功能 7. script 脚本 ―――――――――――――――――33 8. 编译调试 ―――――――――――――――――――33 9. 读书籍和论文 ―――――――――――――――――――――34 10. 1.4.1 版本发展 ―――――――――――――――35
2

一、
WW 软件结构
1.1 功能介绍 World Wind(简称 WW,中文有人直翻译为世界风),是 NASA 发布的一个开放源代码(Open Source)的 地理科普软件(由 NASA Research 开发,由 NASA Learning Technologies 來發展),它是一个可视化地球仪, 将 NASA、USGS 以及其它 WMS 服务商提供的图像通过一个三维的地球模型展现,近期还包含了月球、 金星、火星、天文星系等的展现。 用户可在所观察的行星上随意地旋转、放大、缩小, 同时可以看到地名和行政区划.软件还包含了一个 软件包,能够浏览地图及其它由因特网上的 OpenGIS Web Mapping Service 提供的图像。 目前软件所使用的数据: 低分辩率的 Blue marble 数据现在包含的初始安装内,当用户放大到特定区域时,附加的高分辩率数据 将会自动从 NASA 服务器上被下载。 A 静态数据层: en:Blue marble 图像 en:Landsat 图像 en:USGS 图像 en:SRTM 地形数据 B 动画数据层: en:Animated Earth en:MODIS en:GLOBE 1.2 WW 与 XML WorldWind 是一个优秀的客户端框架引擎, XML 实现数据描述和软件设置, 通过 WW 的 WorldModel、 图层、插件、http 和 WMS 请求、三维渲染等实现交互式浏览。也就是说 XML 是数据。WorldWind 则是数 据执行的引擎,WW 可扩展性和开发性非常强大。 1.3 Clinet 与 Server 1.3.1 WW 使用链接(附表 1) 1.3.2 本地缓存路径(附表 1) 1.3.3 本地功能配置(附表 1) 1.3.4 http 请求与 asp Blue marble、:Landsat、SRTM 使用直接的 http 请求。 Why not use WMS? NASA Learning Technologies and the NWW user community has tried in the pastto use WMS to serve World Wind tiles. The immense demand of the NWW user base has crippled any WMS server we’ve tried to date. Instead of using an overly complex format(for serving predefined chunks that is) we opted to go with pre-rendered, pre-defined tiles that are just stored in the file system, and can be served to the client with no further processing server side. This reduces the strain on the server incredibly. If you believe you can setup a WMS server that would be able to withstand the NWW user base, feel free,we’d be happy to see that. In the mean time we are working on creating a WMS server that can read the World Wind tile structure (for compatibility with other programs). 1.3. WMS、WFS WMS——web Map server 网络地图服务 WFS——web Fundation server 网络要素服务 USGS 和所有动画数据层使用符合 OGC 协议的WMS和WFS实现数据网络共享。
3

二、
WorldWind 金子塔体系
2.1 瓦片金字塔详解及其对应公式 2.1.1 NASA World Wind Tile Structure 采取笛卡尔坐标, 原点 (X = 0, Y = 0.) 在投影坐标左下方, 即南极点 (-90 -180 in latitude and longitude) , 如图:
图1 图2 如图2, World Wind使用“Level Zero Tile Size”来决定每一个瓦片宽和高的大小 (所有的瓦片都是正方形。 标准的level zero tile size 还没有制定,但是它必须满足能被180整除。The level zero tile size (以后称作 lzts) 是层与层间转换的最简单的距离。在 NLTLandsat 7 中,lzts被默认设置为2.25度。可用以下公式计算第N 层的tile size:size=lzts/2^N次方。也就是说下一层将上一层一分为四。:
图3
显示坐标轴在X、Y方向值的增量:
4

2.1.2 NASA World Wind Map Tile System
坐标与图片编号对应公式: (1)利用下面公式,求某点坐标 X,Y(纬,经),在某层 N 的文件号,图片号 [(X+90)/值*2 的 N 次方=文件夹号A(取整数如 256.65 即为 256) [(Y+180)/值*2 的 N 次方=图片后缀B(取整数) (2)利用求得的图片编号 A_B 反求这张图片的左下角坐标 A*值/2 的 N 次方-90=纬度 B*值/2 的 N 次方-180=经度 这样求得图片起始分割点坐标,然后以 值/2 的 N 次的间隔分割图片,把整幅图分成 256*256 or 512*512 BMNG(500m)
36 ×36

LandSat/ Geocover(30m/15m) 2.25×2.25

OnEarth (15m)
2.0×2.0

USGS (1m)
0.8×0.8

SRTM (90m/3m0(US))
20×20

5

2.2 瓦片请求调度策略
2.2.1 当前显示请求及其显示(客户端) (1)瓦片金字塔模型构建 金字塔是一种多分辨率层次模型。在地形场景绘制时,在保证显示精度的前提下为提高显示速度,不 同区域通常需要不同分辨率的数字高程模型数据和纹理影像数据。数字高程模型金字塔和影像金字塔则可 以直接提供这些数据而无需进行实时重采样。尽管金字塔模型增加了数据的存储空间,但能够减少完成地 形绘制所需的总机时。分块的瓦片金塔模型还能够进一步减少数据访问 量,提高系统的输入输出执行效率,从而提升系统的整体性能。当地形 显示窗口大小固定时,采用瓦片金字塔模型可以使数据访问量基本保持 不变。 瓦片金字塔模型的这一特性对海量地形实时可视化是非常重要的。 在构建地形金字塔时,首先把原始地形数据作为金字塔的底层,即 第0 层,并对其进行分块,形成第0 层瓦片矩阵。在第0 层的基础上, 按每2??2个像素合成为一个像素的方法生成第1 层,并对其进行分块, 形成第1 层瓦片矩阵。如此下去,构成整个瓦片金字塔。 以影像为例,设第l 层的像素矩阵大小为irl× icl,分辨率为resl,瓦片大小为is× is,则瓦片矩阵的大小 trl × tcl 为: trl = ?irl/is?? tcl = ?icl/is?? 其中“???”为向下取整符,下同。 按每2× 2 个像素合成为1 个像素后生成的第l+1 层的像素矩阵大小irl+1× icl+1 为: irl+1 = ?irl/2?? icl+1 = ?icl/2?? 其分辨率resl+1 为: resl+1 = resl × 2 不失一般性,我们规定像素合成从像素矩阵的左下角开始,从左至右从下到上依次进行。同时规定瓦 片分块也从左下角开始,从左至右从下到上依次进行。在上述规定的约束下,影像与其瓦片金字塔模型是 互逆的。同时,影像的瓦片金字塔模型也便于转换成具有更明确拓扑关系的四叉树结构。 (2)线性四叉树瓦片索引(WW中应用QST,即quadrat size tree) 四叉树是一种每个非叶子节点最多只有四个分支的树型结构,也是一种层次数据结构,其特性是能够 实现空间递归分解。图2 是瓦片金字塔模型的四叉树结构示意图,其中矩形符号代表叶子节点,圆形符号 代表非叶子节点。 本文采用四叉树来构建瓦片索引和管理瓦片数据。 在瓦片金字塔基础上构建线性四叉树瓦片索引分三步: 即逻辑分块、节点编码和物理分块。 ①逻辑分块 与构建瓦片金字塔对应,规定块划分从地形数据左下角 开始,从左至右,从下到上依次进行。同时规定四叉树的层编码与金字塔的层编码保持一致,即四叉树的 底层对应金字塔的底层。 设(ix,iy)为像素坐标,is 为瓦片大小,io 为相邻瓦片重叠度,以像素为单位;(tx,ty)为瓦片坐标,以块 为单位;l为层号。 若瓦片坐标(tx,ty)已知,则瓦片左下角的像素坐标(ixlb,iylb)为: ixlb = tx ×is iylb = ty × is 瓦片右上角的像素坐标(ixrt,iyrt)为: ixrt = (tx + 1) × is + io – 1
6

iyrt = (ty + 1) × is + io – 1 如果像素坐标(ix,iy)已知,则像素所属瓦片的坐标为: tx = ?ix/is?? ty = ?iy/is?? 由像素矩阵行数和列数以及瓦片大小,可以计算出瓦片矩阵的行数和列数,然后按从左至右,从下到上的 顺序依次生成逻辑瓦片,逻辑瓦片由((ixlb,iylb), (ixrt,iyrt), (tx,ty), l)唯一标识。 ②节点编码 假定用一维数组来存储瓦片索引,瓦片排序从底层开始,按从左至右,从下到上的顺序依次进行,瓦片在 数组中的偏移量即为节点编码。为了提取瓦片(tx,ty,l),必须计算出其偏移量。我们采用一个一维数组来存 储每层瓦片的起始偏移量,设为osl。若第l 层瓦片矩阵的列数为tcl,则瓦片(tx,ty,l)的偏移量offset 为: offset = ty × tcl + tx + osl ③ 物理分块 在逻辑分块的基础上对地形数据进行物理分块,生成地形数据子块。对上边界和右边界瓦片中的多余部分 用无效像素值填充。物理分块完毕,按瓦片编号顺序存储。 (3) 瓦片拓扑关系 瓦片拓扑关系包括同一层内邻接关系和上下层之间的双亲与孩子关系两个方面[2]。 邻接关系分别为东 (E)、 西(W)、 南(S)、 北(N)四个邻接瓦片, 如图3(a)所示; 与下层四个孩子的关系分别为西南(SW)、 东南(SE)、 西北(NW)、东北(NE)四个孩子瓦片,如图3(b)所示;与上层双亲的关系是一个双亲瓦片,如图3(c)所示。若 已知瓦片坐标为(tx,ty,l),则该瓦片相关的拓扑关系可表示为: 1) 东、西、南、北四个邻接瓦片的坐标分别为:(tx+1,ty,l)、(tx-1,ty,l)、(tx,ty-1,l)、(tx,ty+1,l); 2) 西南、东南、西北、东北四个孩子瓦片的坐标分别为(2tx,2ty,l-1) 、(2tx+1,2ty,l-1) 、(2tx,2ty+1,l-1) 、 (2tx+1,2ty+1,l-1); 3) 双亲瓦片的坐标为(?tx/2?,?ty/2?,l+1)。
(a) 邻接瓦片 (b) 孩子瓦片 (c) 双亲瓦片 (4)地形场景数据的动态管理 ①可见区域及最佳地形分辨率计算 根据视点的坐标和视线的方向,就可以计算出视 景体与地形平均水平面相交的平面区域范围,即地形 可见区域范围。 图4 为地形可见区域示意图, 图中XOY 为地形平均水 平面,E 为视点,视线EM 与地形平均水平面的交点 为M, 视点在XOY 上的投影为M0。 视景体E_ABCD 与 平面XOY的四个交点分别为A?、B?、C?和D?,则地形可 见区域范围即为四边形A?B?C?D?。有关点A?、B?、C? 和D?的坐标的详细计算方法,可参考文献[3]。 地形可见区域的表示若用于地形显示的屏幕窗口 宽和高分别为Xw 和Yw(以像素为单位),视景体的水平视场角和垂直视场角分别为FovX 和FovY。设当可
7

见区域A?B?C?D?恰好充满显示窗口时,窗口水平方向和垂直方向平均每个像素所对应的地面距离分别为Dx 和Dy,则有: Dx = EM ×tan(FovX / 2) ×2.0 / Xw Dy = EM ×tan(FovY / 2) ×2.0 / Yw 即当地形分辨率X 方向低于Dx 或Y 方向低于Dy时,地形显示的精度将会降低;反之,将会产生不必要的 数据冗余,影响绘制效率。也就是说,此时的Dx和Dy即为理论上地形绘制所需的最佳分辨率。由于通常地 形X 方向和Y 方向的采样间距相同,因此我们在实际应用中取Dx 和Dy 中的小值作为最佳地形分辨率, 用作后续瓦片搜索的重要依据。需要指出的是,通常该最佳分辨率被用作窗口中心瓦片所对应的分辨率, 而窗口其它位置所对应的瓦片分辨率则根据瓦片中心到视点的距离作适当的降低调整,因为这不仅符合人 眼的视觉规律,而且还可以减少用于地形绘制的三角形数量。 ②World Wind当前视角高度值与图层调度间关系探讨 How does altitude relate to a level in a layer being displayed? 在 WW 中,从 N-1st 转换到 Nth level 的高度值是: ( Level0TileSize * 390km / 2^N )× X(因子) 例如对于 NLT LS7 图层,它的 L0TS=2.25deg。它的 0 level 从 390*2.25 = 877km 开始可见,level 1 在小于 439km 可见等; (但这只是从 WW 的行为分析得到而不是从源代码) 对于较小的高程(小于 2000km) ,X 因子近似为 1。然而,高于 2000km 因子就减少(可能是 arctan(x)/x, 或者其他) 但是,为什么刚好390km?为什么非线性\非常量的因子?肯能只有WW开发者才知! A Small Analyse: (假定屏幕默认尺寸为 wWidth=992px 和 wHeight=653px, 南北方向的视角范围为 FOV=45deg) 打开 OnEarth layer(L0TS=2.0deg)并飞行到高度 Alt=195km, 这时 level2 的瓦片开始显示。 那么图片区域的南北范围尺寸((N-S)dimension- nsDim)是多少? nsDim = Alt * 2*tan(FOV/2),所以在这里 nsDim = 195km * 2*tan(22.5deg) = 161.5km. 将它转换为度数(1deg=111km),得到 nsDim = 1.454deg。每个 level2 的瓦片覆盖 0.5× 0.5 degree 的区 域,因此“照相机” (可视屏幕范围)相应有 1.454/0.5 = 2.91 个瓦片(南北方向上),或者 2.91*512 = 1489 个 像素。 数值 1489/653=2.28 可以称之为线性重采样因子(LOF- Linear Oversampling factor) ;平方后,得到区 域重采样因子(AOF-real oversampling factor) 。在我们这例子为 5.20。 这意味着什么?5.2 个瓦片图片的像素在屏幕上显示为 1 个像素。 在没有进入下一图层时,这些参数能减少到什么程度?在例子中,下一层的开端为 Alt=97.5km,即 195km 的一半。当我们达这里时,the level2 tiles 减少到只有 L.O.F.=1.14 或者 A.O.F.=1.30。 Now let's generalize it: When are these LOF and AOF becoming big (giving evidence about vasting)? When the user has - reduced the WW window's height, - increased the FOV (aka zoomed out), - tilted significantly, - gone near the Pole, -.what else have I forgot? 在这些情况下,AOF 可能变得非常巨大,例如值为几十,是否意味着 100-or-so megabyte of tiles are needed for rendering of about-1 Mpix picture. 还有很多问题例如 (e.g. the When do you know when to 'stop'? (ie. how do you know you are at 1:1) question)
8

2.2.2目标瓦片快速搜索算法
目标瓦片搜索实际上伴随着分辨率搜索。如果采用一种分辨率,则 只涉及层搜索和区域搜索。 对于采用视点相关LOD 技术的地形可视化系 统,要求不同的区域对应不同分辨率的地形数据,因此在瓦片搜索过程 中需要进行分辨率测试,图5 为地形瓦片分辨率需求示意图,图中E 为 视点,白色矩形表示与视景体相交且需要参与地形绘制的瓦片数据。矩 形越小表示瓦片分辨率越高。 本文目标瓦片搜索采用由粗到细、层层推进的策略。首先判断可见区域是否在地形数据所表示的范围 内,测试与可见区域交叠的顶层瓦片是否满足分辨率要求,如果不满足,则继续测试瓦片的分支,直到搜 索出所有满足分辨率要求的瓦片。完整的算法描述如下: 第1 步: 判断可见区域是否与地形数据交叠。如果交叠,转第2 步;否则,算法结束。 第2 步: 逐个判断顶层瓦片是否满足分辨率要求。如果满足,将其插入到绘制链表;否则,将其4 个分支 瓦片插入到测试链表1。 第3 步: 判断测试链表1 是否为空。如果为空,算法结束;否则,转第4 步。 第4 步: 逐个判断测试链表1 中的瓦片是否与可见区域交叠。如果交叠,将其插入到测试链表2;否则,将 其舍弃。 第5 步: 清空测试链表1,转第6 步。 第6 步: 逐个判断测试链表2 中的瓦片是否满足分辨率要求。如果满足,将其插入到绘制链表;否则,将 其4 个分支瓦片插入到测试链表1。 第7 步: 清空测试链表2,转第3 步。 交叠测试时,只要瓦片四个角点的任何一点在可见区域内,即 表示该瓦片与可见区域交叠。对于分辨率测试,首先计算瓦片 四个角点的目标分辨率,如果四个角点的目标分辨率数值都大 于或等于瓦片所处金字塔层的分辨率数值,则表示该瓦片满足 分辨率要求,否则需要测试其四个分支。如图6 所示,假设被 测试瓦片的分辨率为2, 由于瓦片左上角点目标分辨率数值小于 2, 则必须对瓦片进行细分, 然后再进行交叠测试和分辨率测试。 上述目标瓦片搜索算法是一个递归过程。在进行分辨率判断时只需对瓦片的四个角点进行判断,因而 效率很高。 另外, 从瓦片索引数组中提取瓦片的分支无需进行空间位置判断, 只需计算出瓦片偏移量即可, 这同样能够显著地提高算法的性能。
2.2.3 瓦片数据的请求预测(服务器)(在《高分辨率遥感卫星应用》中,本文作者有遥感数据库的详细理论)
(1) 预读取:合适的数据缓冲机制可以提高系统的性能,海量地形实时可视化也不例外。当地形场景 连续运动时,如果应用程序能够提前预测系统即将需要的数据,并能提前从磁盘把这些数据读到缓冲区, 那么当应用程序真正需要这些数据的时候,便可以直接从缓冲区读取,从而省去了从磁盘读取这些数据的 时间。由于在海量地形漫游时,数据预测调度和场景绘制需要同时进行,因此,我们利用操作系统的多线 程能力, 将数据预测调度和场景绘制分别采用两个独立的线程来完成。 数据缓冲通过预测瓦片请求来实现。 我们将瓦片请求划分为高、中、低三种优先级。高优先级瓦片请求被立即处理并参与地形绘制;中优先级 瓦片请求在没有高优先级瓦片请求的情况下被读取到缓冲区,但不参与地形绘制,即所谓数据缓冲;低优 先级瓦片请求只是在系统“空闲”时才被读取到缓冲区,并且也不参与地形绘制,同样是数据缓冲。瓦片 请求优先级的确定方法如下: 为表述方便,假设连续的三个场景窗口分别为窗口1、窗口2 和窗口3。为了实现瓦片数据缓冲,系统 在发送窗口1 的瓦片请求时应附带发送窗口2 和窗口3 的瓦片请求,只是瓦片请求的优先级有所不同,这 便是瓦片请求预测。显然,窗口1 中的瓦片请求应该设为高优先级,而窗口2 中的瓦片请求除窗口1 的公 共部分外被设为中优先级,窗口3 中的瓦片请求除与窗口1 及窗口2 的公共部分外被设为低优先级,如图 7 所示。这样,当场景运动到窗口2 时,系统在发送窗口2 的瓦片请求后,数据预测调度线程就可以直接 从缓冲区提取数据参与地形绘制,而无需即时从磁盘读取数据。
9

设场景运动速度为v 瓦片/秒,运动方向与瓦片x 方向的夹角为θ ,刷新频率为f 帧/秒,则中、低优 先级瓦片请求的扩展幅度Δ tx、Δ ty 为: Δ tx = v × cosθ / f Δ ty = v × sinθ / f 例如,当v = 33.94 瓦片/秒,θ = 45° ,f = 24 帧/秒时,中、 低优先级瓦片请求的扩展幅度Δ tx、Δ ty 都为1 个瓦片,即 在当前场景窗口的基础上沿运动方向的x、 y 分解方向各扩展1 个瓦片为中优先级瓦片请求, 再扩展1 个瓦片为低优先级瓦片 请求。 (2)异构磁盘系统的瓦片分布方式(《高分辨率遥感卫星应用》P205) (3)应用实例 本文的研究成果已成功应用于多个地区的海量地形数据实时可视化。以某地区地形三维可视化为例, 该地区所采用的规则格网数字高程模型共有23769× 23536 个高程点,分辨率为60 米,彩色纹理影像大小 为47536× 47070,分辨率为30 米。数字高程模型数据为2.13GB,纹理影像数据为6.40GB。分别对数字高程 模型数据和纹理影像数据构建9层和10 层瓦片金字塔和相关索引文件,瓦片大小均为128× 128,相邻数字 高程模型瓦片间重叠为1,相邻影像瓦片间没有重叠,生成的数字高程模型瓦片金字塔数据为2.94GB,纹 理影像瓦片金字塔数据为8.77GB。实验计算机配置:P4 CPU 1.5GHz,512MB 内存,GeForce4 64MB 显 卡,操作系统为Windows2000 SP4,开发语言为Visual C++ 6.0,三维图形标准为OpenGL。利用本文研究的 算法实现了实验区真实纹理映射地形的三维实时可视化,并可实现地形的实时漫游及缩放旋转等交互操 作。当显示窗口为800× 600 像素,屏幕显示误差为1 个像素时,不采用瓦片请求预测时平均帧频为18.3 帧 /秒,采用瓦片请求预测后的平均帧频为25.6 帧/秒,缓冲区中的瓦片总数维持在70 到120 之间;屏幕显示 误差为2 个像素时, 不采用瓦片请求预测时平均帧频为23.2 帧/秒,采用瓦片请求预测后的平均帧频为30.1 帧/秒,缓冲区中的瓦片总数维持在50 到90 之间。图8 为部分实验结果。
(4)结论 实验表明,本文提出的瓦片金字塔模型和线性四叉树索引相结合的数据管理模式,能够满足海量地形 数据实时可视化的需要,并且在实现海量地形几何数据实时绘制的同时完成了海量纹理数据的实时映射; 通过对视景体可见区域外地形数据的裁剪和基于分辨率测试的目标瓦片快速搜索算法,大大减少了地形绘 制的数据量,提高了系统的执行效率;采用基于高、中、低优先级的地形瓦片请求预测方法,进一步提高 了三维地形交互漫游的速度。本文的研究成果已扩展应用于基于网络的分布式海量地形数据三维可视化。 本文研究所采用的地形数据为规则格网数据,今后将对用不规则三角网表示的海量地形数据可视化进行进 一步研究。此外,在海量目标数据实时三维可视化、基于全球框架的空间数据可视化等方面,作者还将作 进一步的研究。
[1] David Luebke, Martin Reddy, Jonathan D. Cohen, et al. Level of Detail for 3D Graphics [M]. San Francisco: Morgan Kaufmann Publishers, 2002. [2] 邓雪清. 栅格型空间数据服务体系结构与算法研究[D]. 郑州: 解放军信息工程大学, 2003. [3] 王源, 刘建永, 江南, 等. 视点相关实时LoD 地形模型动态构网算法[J]. 测绘学报, 2003, 32(1): 47-52. [4] 王永君, 龚健雅. 用于大范围虚拟地形环境的动态场景管理方法 [J]. 测绘学院学报, 2003, 20(3): 231-234.
10

2.3 可视化的地球空间数学模型
一般来说,遥感数据图片都是使用在WGS84坐标下的UTM投影。对于WorldWind来说,其地球模型为 圆形,半径与WGS84坐标的长半径相等(也可以另设) ,在实时显示时,必须将平面的高程数据、纹理数 据分块并映射到给定的球面上。
2.3.1 地球三维LOD模型
(1)地球模型的经纬网分割 由于地球椭球模型可以在球的基础上沿自转轴方向压缩得到(利用三维图形库中的缩放函数很容易做 到),所以我们先将椭球模型简化为球面模型。球面可以看作由分布均匀的经纬网组成,经纬网越密,地球 模型的精度就越高。要实现视点相关球面LOD最简单有效的方法就是根据视点到球面的距离来动态调整经 纬网的密度,这样就在保证视觉效果的前提下实现球面模型简化,图2-5-3显示了在不同视点距离下,球面 模型的简化程度。
(2)球面经纬网格的可见性判断 在近地空间环境中漫游时,由于一个时刻我们所能看见的都是地球表面的一部分,因此,我们没有必 要绘制看不见的部分。本文利用视景体裁剪的方法来判断经纬网格是否可见。 (3)利用凹凸贴图(Bump Map)表现地球表面起伏情况 基于球面的三维地球绘制方法不能用几何形状来表达地面起伏,但我们可以采用凹凸贴图的方法,在 一定程度上弥补这个缺陷。在凹凸贴图实现过程中,为每一个顶点计算光线向量是一个非常费时的工作, 为了加快凹凸贴图的速度,可以采用基于象素着色的硬件加速方法实现。 (2)海量数据的全球地形LOD模型(SROAM) 我们将ROAM}Z6} ( Real-time Optimal Adaptive Meshes,实时优化适应性网格)算法引入到具有海量地 形与影像数据的全球地形三维建模中。ROAM算法是目前应用最广的一种视点相关地形实时LOD算法。其 基本思想是:在对地形进行三维显示时,依据视点的位置和视线的方向等多种因素, 对于表示地形表面的三 角形片元进行一系列的基于二叉树的分裂与合并,最终形成和原始表面近似且无缝无叠的简化连续网格。 本文在ROAM算法的基础上,提出连续球面地形LOD算法—SROAM ( Spherical ROAM简称SROAM ),突 破了经典的ROAM算法只适合于平面地形数据的限制。 ①SROAM算法基本思想 由于经典的ROAM是从分裂一个正方形网格开始不断细分地形的,在SROAM中,我们采用正方体作 为球面地形的顶层,如图2-5-4(a)。正方体的6个面分别作为ROAM算法分裂的最顶层正方形。这些正方形 的公共边设置好拓扑关系,以保证不同ROAM面在分裂、合并操作时边界上网格的连续性。
11

当SROAM的顶层正方体分裂成12个三角形,并设置好三角形之间正确的拓扑关系后,ROAM的原理 和方法就可以完全适用了。事实上,SROAM算法比经典的ROAD更容易实现,由于球面没有边界,因此不 需要判断地形网格的边界条件,可以获得更修的绘制速度。唯一不同的是,我们需要将平面的高程数据、 纹理数据分块并映射到给定的球面上。
②数据模型的简化[27][28][29]
要建立全球的地LOD模型, 其数据从覆盖全球的分辨率为几分或几秒的DEM数拒和分辨率为几百米的 卫星影像,到局部区域高分辨率的DEM数据和正射航空影像,数据量是巨大的。对于如此大的数据,要想 在中低档微机上达到实时交互的目的,必须对数据分级、分块管理[z7],如图2-5-5。对于地形的分级,本 文采用小波变换对地形进行简化,并分块构建金字塔。 小波理论是本世纪八十年代后期发展起来的一种新的信号处理工 具,在时空域和频率域都具有良好的局部化性质,可以根据不同的尺度 要求,由粗到细地观察信号,被誉为信号分析的数学显微镜,在图形图 像领域得到了广泛的应用, 如:基于小波变换的图象压缩、 图象边缘检测、 图象拼接、立体视觉与匹配、曲面插值等,而基于小波变换的图象压缩 是其目前最成功的应用之一。由于规则格网实际上为一二维数组表示的 高度值,完全可以将高度域看成图像的灰度,将图像处理的算法引入格 网简化中。 本文采用多进制小波简化DEM数据。M进制小波变换公式为:
其中,aj,k,l为小波的低频成分,j为任意整数。k,1 = 0,1,2,...n0、n1、n2为正整数,C为常量。根据四进制小 波将全球数据简化为金字塔数据结构[[29];然后,根据计算机硬件的性能把每一层分为若千块;最后,将组 织好的数据写入文件或数据库。 近年来对于大数据量纹理数据的处理方法研究大纹理数据调度、映射的文献并不少见。如基于原始纹 理图像分割的传统方法[[30]和MP-Grid方法[32],都是采用预先把大纹理分割成小的纹理片,使每个小纹理 片生成的Mipmap图适应硬件存储,然后根据视野的覆盖范围调度相关纹理片的Mipmap图组合生成要显示 的数据。韩慧健等人提出了使用Clipmap(裁剪Mipmap)实现大纹理映射[31 ],他的思路是先为原始大纹理 生成Mipmap图存储在硬盘,再分割Mipmap各层,调入各层与视野有关的分割片数据到有限内存,相当于 把视域覆盖的纹理部分裁剪下来,这样可以把整个纹理指定在单个坐标系中。总之,解决大纹理贴图的问 题目前都采用分级、分块的方法,该方法可以较好的解决硬件的存储和带宽瓶颈问题。本文也采用分级建 立影象金字塔、在每一级上分块随视点动态调度的方法实现。
③高程数据球面映射
对于某一块DEM数据来说,通常表示为一个二维数组fDEM[nRow][nCol],nRow和nCol分别表示地形在 纬度、经度方向的采样点数。由于ROAM算法的三角形网格的分裂、合并操作可以看作是在二维平面上进 行,三角形顶点的高程用顶点的平面位置(x,y)可以很方便的在fDEM数组中查找得到。而球面LOD算法则 不然,因为三角形分裂 合并操作是在三维球面上进行的。 假设要绘制的地球的中心在原点,在某个三角形分裂过程中, 网格中新生成的某一个顶点计算坐标(即被分裂的三角形斜边中点 坐标)为P (Px,Py,Pz ),根据球面经纬度投影的原理,向量P的方 向决定了该点在球面上的经纬度坐标。因此,我们首先建立P (Px, Py,PZ)与经纬度平面坐标(α, ,β)之间的映射关系(如图2-5-6 ) 根据球面几何关系,经纬度(α, ,β)与P的关系为:
12

其中,坐标α,β弧度表示。再分别将α,,β规划到[0-1]区间内后,我们容易得到经纬度与fDEM坐标之间的关系。
综合(2-5-2)(2-5-3 )式,得到位置P (x, y,z)与DEM高程数据fDEM的坐标映射关系:
最终我们得到P点对应的的实际坐标为:
其中R为地球半径。|P|为向量P的长度。
④地图投影模型
当前大地坐标系是统一的, 能准确、唯一地描述地球上任一点的位置, 并能动态适应历史的、现代的 越来越精密的各种参考椭球体, 它可作为地球数字产品和大型G IS 最为适当的坐标系, 即采用(B, L ,H) 描述地理实体几何特征点。这时二维场(B,L ) 是三维地理信息空间沿法线的一个二维投影, 可以用地图投 影把它展平到XO Y 平面上, 也可不展, 它本身为规则的三维椭球面。 由于其数学规则, 采用二维的曲线族
13

(B, L ) 来表示其上坐标显得简便得多, 人们也更易理解, 它是地理信息的水平坐标系, 而H可视为垂直坐 标。 大型G IS 作用空间由小范围局部扩展到地学大范围, 甚至全球范围, 地球数字产品的覆盖区域也遍布 全球, 在这样大的区域内实现信息共享和互操作, 除统一采用上述椭球坐标系外,“地图投影”的标准化也 是十分重要的。(详细描述见文章《大型GIS 与数字地球的空间数学基础研究》) ⑤误差分析(后加) ⑥视见体的计算 在视点漫游时,ROAM等平面LOD算法通常要对视景体范围内所有网格点进行动态误差计算。而球面 LOD算法有其特殊性,因为,当视点在球面上漫游时,地平线以下的网格是看不见的。如图2-5-80 视点E距离地球高度为H(先不考虑地表起伏),地球平均半径为R, EC为视线方向,那么地平线到视点 的距离为:
对于在球面上三角形网格误差计算,我们采用的是屏幕误 差P,综合考虑了网格静态误差、三角形到视点距离、视 线方向等多个方面的因素。计算公式为:
其中,K为比例系数,s(c;)为要判断的三角形的静态误差,D 为三角形到视点距离。 采用上述动态误差计算公式可以代替视景体裁减,因为,在地平面以下的三角形满足D>几条件,动态 误差p =0,绘制时,将被忽略。 关于在每一块地形上SROAM的三角形分裂、合并以及绘制优化方法,与ROAM[26]算法完全相同,本 文不再重复。
⑥实验结果与分析
本节介绍了基于椭球的地球LOD建模,提出了考虑地形的地球LOD模型(SROAM )。为了验证这些方 法的可行性与实际效果,我们在DELL 4550(配置同前)的微机上实现了这些算法,软件平台为 WindowsNT/2000, Visual C十+6. 0和三维图形标准OnenGL,结果如下: 基于椭球的地球LOD建模结果
14

图2-5-9为视点到地球不同距离时的地球网格, 从图中可以看出, 当地球远离视点的时候, 网格较稀疏, 表示精度变低:当视点靠近地球的时候,网格变密,表示精度提局。
为了研究使用凹凸贴图表现地面起伏实际效果,我们分别做了不进行凹凸贴图的地球绘制和进行凹凸 贴图的地球绘制两个试验,结果如图2-5-10所示。很明显,使用凹凸纹理后,地面质感明显增强(如图 2-5-10b )。 地球SROAM建模结果
图2-5-11为SROAM算法绘制带有地形的地球表面的结果,左图为网格显示,右图为填充效果。在该 图中,视点在P位置,视线方向如图箭头方向,扇形区域为可见范围。从图中可以看出,在球面上视点区 域模型绘制时具有最高的细节层次,而离视点较远时细节层次较低。SROAM算法平均每帧绘制20, 000个 三角形,速度平均30fps,基本可以满足实时系统的需要。由于受数据来源的限制,该算法对大数据量的 DEM的实际效果还未进行验证。
三、
Geospatial image processing
3.1 步骤: (准备知识:LOTD:0 层瓦片大小;TileSize: ) 1. 获得带有地理参考的 geotiff 并将他重新投影到 WGS84 坐标 2. 找出 geotiff 的边界 3. 从 geotiff 左下角坐标开始,把整个的经纬度范围切割成最接近 LOTD 的倍数。 4. 在#3 处理的的 geotiff 在左下角切下一块 L0TD 大小的图块 5. 将#4 的图块重采样为瓦片(512×512 大小或其他, ) ,转换图像格式 6. 将瓦片放到相应的文件夹下,并以 WW 的命名规则命名瓦片的名字 7. 重复切下 L0TD 大小的图块直到将 TIFF 右上角边界 8. 将原图片以 N=(L0TD/2)大小继续切割,从#3 开始重复 9. 直到变成 1:1 比例,即切割大小 N=(小于或等于);
15

3.2 NLT Landsat 处理技术范例(https://www.360docs.net/doc/9f7055323.html,/wiki/NLT_Landsat_Processing_Techniques) 这是 NASA 生产第一个版本 Landsat 7 Mosaic(可视波段)的方法。 - By Chris Maxwell (Lead Developer, NASA World Wind) ①首先从 from the Global Land Coverage Facility 下载 Landsat7 的全球卫片 Remarks: The scenes come as a set of grayscale GeoTiff files for each row/path/date scene ②然后使用波段 1 (Blue),2 (Green),3 (Red)合成 RGB 的 GeoTiff image。 Remarks: 由于我不不想编程实现,我使用了 PixelSense,但是 PixelSense 提供了一个 linear clip contrast stretch,因此必须 "replace" the image data after PixelSense outputted the RGB GeoTiff。 ③再对 RGB Landsat GeoTiff 使用颜色增强算法 Remarks: The basic idea for the algorithm I used is to divide the image into a grid with each grid square being n by n pixels, where n is about 25 for a 30meter/pixel Landsat scene. For each square, find the least-squares for both the "high" and "low", and then save this information in order to later apply a linear stretch of the pixels in that square, weighting the R, G, B bands individually to the desired tastes. I found that generally, the source Landsat scenes have too much blue and red, and I weight the stretch to compensate for this for a more pleasing image. Next, use a cubic convolution to smooth out the stretch information in the grid squares. This is only applied to the information in the grid squares, not the actual pixel data. I did this 3 times for increased smoothness, but it seems that some areas still needed more smoothing. Next, stretch the pixels in each square according to the new grid stretch information. I tried to smooth the differences between the squares again by using bi-linear averaging (I think that's what to call it) for the grid squares that surround the current square being processed. ④ 重新将图像从 UTM 投影到大地投影(Geodetic projection) 。 Remarks: I used GDAL for this. It's free, fast, and gives decent results. ⑤镶嵌和重复将 Landsat 影像切割成规则的大地网格方块(Geodetic grid squares) 。 Remarks: I used ERMapper for this, with the ESG Utilities add-on. 因为 Landsat 图像之间互相交迭;因此在 切割瓦片前必须将它们缝合。I used grid squares that were 2.25 x 2.25 degrees, with a resulting image size of 8152 x 8152 pixels, which roughly equates to 30 m/pixel at the equator. ⑥建立图像瓦片式金字塔 Remarks: I wrote a custom program for this, but basically it just splits the gridded tiles into smaller tiles, and names them appropriately for the World Wind naming scheme. After I split up the "source" gridded tiles, I resized all the tiles in the image pyramid to be 512 x 512 pixels. ⑦转换成 JPG 格式 Remarks: I wrote a program that basically is just a batch utility that utilizes GDAL to convert the Tiff files into JPG files with a 90% compression ratio. Nothing fancy.
3.3 dstile howto
1. 需要软件:FWTools、dstile,并将 dstile 解压到 FWTools 安装目录下,如 C:\Program Files\FWTools1.2.0 现在有 GUI 版本的 dstile,可忽略以上步骤。 数据源:geomap10.tif(特拉华州东部) FWTools 和 dstile 功能介绍: 自动分层 切割图片 格式转换 在这环境下使用 dstile,数据格式必须被 FWTools 支持,dstile 不能处理 indexed images,但能通过使用
16

FWTools 的 pct2RGB 转换为 RGB 图像(图像最好放在 FWTools 目录下) 。 dstile 可以将 DEM 数据分层,用参数—dem switch,但是地形数据必须是 16bit。 2. 分层 命令:dstile.exe tile --lztsd tile_size --wwcache --overviews output_directory georeferenced_image_file(s) 各变量说明:
? ? ?
tile_size –0 图层图幅(level zero tile size), 用十进制度数表示 output_directory – 输出路径 (不指定详细盘符和路径, 只有文件名则默认在 FWTOOL 安装目录下) georeferenced_image_file(s) – 需分层图片。 一列多重图像可以自动被组合称单一的瓦片式图像 (list of multiple image files can be supplied and will be automatically combined into a single set of tiles) 。 补充说明,可以首先利用 FWTools 的 gdal_merge.py 来创建需要的复合(mosaic)图像在分层。
命令说明:
? ? ?
--tile :dstile 分层命令 --wwcache :告诉 dstile 将图层按 World Wind 的格式命名 --overviews : 告诉 dstile 去创建所有可以创建的瓦片式图层, 不考虑小图层的选项 (Leaving out this option will result in only the most detailed level of tiles being created) 。
例子:dstile.exe tile --lztsd 1.0 --wwcache --overviews output_tiles geomap10.tif 这将在 FWTools 目录下创建名为"output_tiles"的输出目录;输入图为"geomap10.tif"。 In 在这个例子中, 会自动创建 6 个图层(0-5) ,111MB 的图像只要 1-2 分钟;据说 dstile 在 Free Earth Foundation 网站的应用 中,单机从 21GB 中录制 1.8G 的瓦片树花了 70 分钟。 NASA WorldWind 的同样工作原理:程序会自动判断当前的视窗高度和位置,从数据库读取该区域的有效 图像文档的索引,并把有效图像文档响应回客户端进行显示 Level zero tile size 说明(说白了,就是你想在那个高度开始显示图层) 0 图层图幅控制放大图层或者相应视角高度显示的内容; This parameter controls at what zoom level or camera altitude your imagery layer will appear. A larger level zero tile size means it will appear sooner as you zoom in, a smaller size means it will appear later as you zoom in. For reference, the blue marble uses a level zero tile size of 36 degrees, World Wind's default landsat layer uses a level zero tile size of 2.25 degrees, and the high resolution imagery in the Zoomit! add-on uses level zero tile sizes as small as 0.1 to 0.2 degrees. For my example layer with the geologic map, I used a level zero tile size of 1.0 degrees. This causes the layer to appear at an altitude of around 390 km。You will have to experiment with this parameter to make your layer work the way you want it to. The level zero tile size 应该要合符 lztsd =180/(2^n)的公式,n 为整数。也就是说,一个 lztsd 值: 1.40625 (180/(2^7))应该是这个例子的最理想值。但是也可以不满足这一表达式,同样可以在 WW 中显示图像,当 然在瓦片图层中可能产一些问题。 3. 将添写对应图层的 XML 文档(后面详细介绍) 4. 将图片放到相应的文件夹下(服务器上需按算法发布)
17

四、
Creat a new world
4.1World Wind 本地文件说明 4.1.1. Worlds"不仅仅是地球,包括月亮、火星、金星甚至星球大战中的“死星” 。World Wind 可以在 启动时设置显示的世界,通过使用以下的命令行:"C:\Program Files\NASA\World Wind1.3\WorldWind.exe" worldwind://goto/world=MyWorld;当然也可以在软件中随意切换。 命令"worldwind://goto/world=MyWorld" 实际上是一个 URL(统一资源链接) 。因此可以在网页上建立一个 链接,启动启动 World Wind 到任意位置世界和位置。 其指定位置设置参数为: World Wind URL 可以启动程序并导航到特定的 World/Latitude/Longitude/Altitude/Tilt/Heading。 参数为:
world lat <十进制> (度数) lon (in degrees) alt (in meters) view (in degrees) – used as an alternate to altitude, specifies the camera's range of view in degrees dir (in degrees) – compass heading tilt (in degrees) – camera's tilt from 0-90 degrees where 0 degrees is perpendicular to the surface bank (in degrees) – 照相机的倾斜角度 layer name of layer (case sensitive) to enable
例子: worldwind://goto/world=Mars&lat=18.03326&lon=-132.80247&alt=472428&dir=-24.6&tilt=44.5&layer=Mars+ THEMIS+Color 4.1.2. 在安装目录下 Add-ons:包含各个世界的附件。 Cache:存储从服务器上下载的数据,可离线浏览; Config:放置本地 PC 上所有世界的设置数据 configuration data Data:存储各个世界的本地数据,一般包括图标等 4.2 创建新的世界模型 每个世界模型的建立都必须以在 Congif 目录下相应的 XML 文件为基础。通常,每个世界模型的其他 设置 XML 文件存放在与世界模型同名的子目录下。当 World Wind 在命令行 "worldwind://goto/world=MyWorld"启动是,WW 会自动寻找在 MyWorld 目录下的设置文件。这里,以创建 名为 MyWorld 的世界模型为例: 首先使用文本编辑器建立 MyWorld.xml (必须放置在 Config 目录下); 然后在 MyWorld.xml 添加以下内容:
----文档说明,如 xml 版本和使用文件代码类型 --域名空间 ----使用的 DEM 种类或名称 ---地形服务设置 ---服务器上的数据名
https://www.360docs.net/doc/9f7055323.html,/wwelevation/wwelevation.aspx srtm30pluszip <数字 Levels>12 150 18 20.0 -----多少个瓦片层 ----每个瓦片的高程数

Int16 bil zip 90.0 -90.0 -180.0 180.0
----数据格式 -----扩展名 ----传输压缩格式 ----显示范围
五、
Making layer
5.1 添加新图层(更详细可参考)
1.在目录 D:\Program Files\NASA\World Wind 1.4\Config\MyWorld 下,用文本编辑器写入如下代码,并 保存为 Geology maps.xml。
N. Delaware 0 40.0 39.0 -76.0 -75.0 19

true 1.0 <数字 Levels>6 512 jpg Data\Earth\N. Delaware geology map 000
将在 layer manager 创建一个"Geology maps"的图层,包含它的子图层"N. Delaware"。 "PermanentDirectory":瓦片放置的目录。 Dstile 软件将会把图片空白的地区填上黑色, 因此"TransparentColor"参数使这些地区变得透明。 (注意: 这也会使到图片中固有的黑色区域变得透明) 。需要采取一些措施来修补这些: 例如假设图片中默认的 0 值和实际影像中没有像素的地方是纯白的,一个快速修补方法是: a.对所有空白点增加一个偏移量(例如是 32) ; b.转换所有白色点编程黑色; c.使用 dstile 切割瓦片,并且设置如上面的透明颜色; d.由于压缩成 jpg 的颜色沿着黑色边界不是纯黑的,考虑到这,使用以下约束: 0 20 重复试验,找到最佳的视觉效果时的 TransparentMaxValue,20 只是个建议。 2.小提示: 在实验“level zero tile size”值时,在再次运行 dstile 前最好将以前输出的文件删掉。Dstile 会将已存 在的瓦片覆盖新的瓦片,而不会删除任何旧的瓦片。 Dstile 命令如下: dstile.exe tile –lztsd 1.0--wwcache—overviews "C:\ProgramFiles\NASA\WorldWind1.4\Add-ons\Earth\geomap10" geomap10.tif 为了能够切割瓦片,必须保证数据不超过 WGS84 的最大范围(-180, -90, 180, 90)。测试数据是否超过 这个值,可以简单第利用如下命令:gdalinfo geomap10.tif 如果结果显示:ul ll ur lr go beyond these limits,再次利用命令"gdal_translate --projwin"可以处理这个 问题。-projwin 需要 ulx uly lrx lry: minx = upper left x(左上角 X) miny = lower right y(右下角 Y) maxx = lower right x(右下角 X) maxy = upper left y(左上角 Y) 使用如下命令: gdal_translate -projwin minx maxy maxx miny input.tif output.tif 我留意到,如果对全球范围使用有时仍然会提示超过,这种情况下,我使用十进制和稍微减少范围值 来解决这个问题。例如,对于全球文件 (NOTE: 不是对刚才提及的 geomap10.tif)。DSTile 使用以下命令: gdal_translate.exe -projwin -179.987 89.985 179.988 -89.98 input.tif output.tif
20

WorldWind系列四:功能分析 Show Planet Axis、Show Position、Show Cross Hairs功能

WorldWind系列四:功能分析——Show Planet Axis、Show Position、Show Cross Hairs功能 来源:博客园作者:无痕客 今天主要看了Show Planet Axis、Show Position 、Show Cross Hairs 功能,主要是它们在菜单调用方式上都是很类似。代码如下: 显示位置信息 private void menuItemShowPosition_Click(object sender, System.EventAr gs e) { World.Settings.ShowPosition = !World.Settings.ShowPositio n; this.toolBarButtonPosition.Pushed = World.Settings.ShowPo sition; this.menuItemShowPosition.Checked = World.Settings.ShowPo sition; this.worldWindow.Invalidate(); } //显示中心十字标 private void menuItemShowCrosshairs_Click(object sender, System.Even tArgs e) { //控制中心十字标显示与否 World.Settings.ShowCrosshairs = !World.Settings.ShowCross hairs; this.menuItemShowCrosshairs.Checked = World.Settings.Show Crosshairs; this.worldWindow.Invalidate(); } 从上面的代码看,我们只能惊叹代码封装的很好,同样都调用 this.worldWindow.Invalidate();难道Invalidate()函数万能?!请参考我的Invalidate()方法学习(资料收集),原来该方法是界面区域失效,发送了重绘事件,将会调用WorldWindow.cs中重载了的OnPaint()。OnPaint方法里主要是调用了 Render()方法。所以我们的关键是看Render()中如何实现上面三个功能。(其实Render()中实现的功能很多,主要是控制界面绘制方面的,以后还会提到它的) Render()实现上面三个功能也大量使用了DirectX和Direct 3D方面的知识,请网上搜索学习相关知识或参看我的Direct3D学习(资料收集)。 显示中心十字线功能

WorldWind开发

WorldWind WorldWind软件终极教程 2009年05月05日 1.新手上路篇 1.介绍: World Wind(以下简称“ WW ”)是一款可以让用户通过从太空视角全面观察地球表面的软件。WW以他优秀的卫星图库与地形资料,通过3D技术的应用,让用户拥有身临其境的感觉,这一切就象是真的一样。事实上你可以浏览世界上任何的角落,想象一下从高空观赏纵横交错的ANDES(安第斯山脉)山脉,进入美国大峡谷,从空中如飞机般的跃过ALPS(阿尔卑斯山 ) 以及走入非洲的撒哈拉沙漠 2.安装 2.1 下载 要想使用WW这款软件,首先肯定是要得到这款软件。目前WW通过几次版本的提升,已经由原来的共享变为了免费,如果你想要了解WW的最新信息以及下载WW,你可以方便的从本站或者官方网站中取得资料( 相比国外服务器的速度而言,当然是国内本土的下载速度更快一些了) 。 2.2 安装

相比较Google Earth来说NASA的安装方式并不是特别的友好,甚至是有些麻烦。 在你下载完其总共100多M的软件包后,先不要着急直接安装。因为你现在需要确认以下几件事情: 1. 电脑中是否安装了MS DX 9C( 要安装并顺利运行 NASA WW 电脑中首先需要具 备DX9) 2. 显卡驱动是否安装正确,没有任何错误 ( 这里并不要求你的显卡具备支持 DX9 的渲染特效的功能,但是至少是可以对 DX 渲染方式可以正确处理 ) 3. 操作系统可以是 Win9X、Win ME、 Win2000 、Winxp 其中的任何一个(暂时只 有兼容MS与MAC两种版本的WW) 4. 系统配置不低于 : 700 MHz 或更高主频的CPU 128 MB 以上内存 1 GB 以上的硬盘容量 显卡只要支持DX即可 确认了之后,便可以进行对WW的安装了。 初始过程中WW会首先要求用户( 强制 )安装一个DX的插件,使DX可以达到WW 的要求,其后一路下一步就可以搞定了。 3.配置文件

WorldWind学习记录

1. c#中字体显示????,怎么修改,求教,,, 长沙-GIS-唐胡子(32326910) 10:44:40 还在搞这个啊 长沙-GIS-唐胡子(32326910) 10:44:54 这个问题,肯定很多人解决过啊 成都-计算机-zero(287932929) 10:48:10 我将楼主提供的地名包放在add_on和config下,然后将\PluginSDK\TiledPlacenameSet.cs 的读取PlacenameFile的地方编码方式做了修改,将ASCII方式改为Default方式,编译后。 就能正确显示: using (BinaryReader dataFileReader = new BinaryReader(dataFileStream, System.Text.Encoding.ASCII)) 编码方式改为:Default using (BinaryReader dataFileReader = new BinaryReader(dataFileStream, System.Text.Encoding.Default)) 把省区划的xml的UTF-8修改为gb2312; 在shapefilelayer.cs中 private void loadShapeFile(string shapeFilePath) { FileInfo shapeFile = new FileInfo(shapeFilePath); FileInfo dbaseFile = new FileInfo(shapeFile.FullName.Replace(".shp", ".dbf")); System.Random random = new Random(https://www.360docs.net/doc/9f7055323.html,.GetHashCode()); ArrayList metaValues = new ArrayList(); if(m_ShapeTileArgs.DataKey != null && dbaseFile.Exists) { using (BinaryReader dbfReader = new BinaryReader(new BufferedStream(dbaseFile.OpenRead()), System.Text.Encoding.Default ))//修改为default时,name字段显示汉字,但存在乱码,用ASCII时name字段是“???” 1.从ARCGIS中导出的中国政区图shp文件,显示字段为汉字省名称,但是加载后总是以问号显示,把ShapeFileLayer.cs中的 using (BinaryReader dbfReader = new BinaryReader(new BufferedStream(dbaseFile.Op enRead()), System.Text.Encoding.Default )) 3.得到shp文件编码 public System.Text.Encoding GetFileEncoding(string fileFullName) { FileStream fs = new FileStream(fileFullName, FileMode.Open, FileAccess.Read); System.Text.Encoding r = GetType(fs); fs.Close(); return r; }

OpenLayers二维地图使用教程

OpenLayers 1 OpenLayers简介 OpenLayers是由MetaCarta公司开发的,用于WebGIS客户端的JavaScript包。它实现访问地理空间数据的方法都符合行业标准,比如OpenGIS的WMS和WFS规范,OpenLayers 采用纯面向对象的JavaScript方式开发,同时借用了Prototype框架和Rico库的一些组件。采用OpenLayers作为客户端不存在浏览器依赖性。由于OpenLayers采用JavaScript语言实 现,而应用于Web浏览器中的DOM(文档对 象模型)由JavaScript实现,同时,Web浏览 器(比如IE,FF等)都支持DOM。OpenLayers APIs采用动态类型脚本语言JavaScript编写, 实现了类似与Ajax功能的无刷新更新页面, 能够带给用户丰富的桌面体验(它本身就有一 个Ajax类,用于实现Ajax功能)。 目前,OpenLayers所能够支持的Format有:XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS、WKT(Well-Known Text)。在OPenlayers.Format名称空间下的各个类里,实现了具体读/写这些Format的解析器。OpenLayers所能够利用的地图数据资源“丰富多彩”,在这方面提供给拥护较多的选择,比如WMS、WFS、GoogleMap、KaMap、MSVirtualEarth、WorldWind等等。当然,也可以用简单的图片作为源。 在操作方面,OpenLayers 除了可以在浏览器中帮助开发者实现地图浏览的基本效果,比如放大(Zoom In)、缩小(Zoom Out)、平移(Pan)等常用操作之外,还可以进行选取面、选取线、要素选择、图层叠加等不同的操作,甚至可以对已有的OpenLayers 操作和数据支持类型进行扩充,为其赋予更多的功能。例如,它可以为OpenLayers 添加网络处理服务WPS 的操作接口,从而利用已有的空间分析处理服务来对加载的地理空间数据进行计算。同时,在OpenLayers提供的类库当中,它还使用了类库Prototype.js 和Rico 中的部分组件,为地图浏览操作客户端增加Ajax效果。 2 Openlayers基本使用方法 Openlayers是使用Javascript编写的脚本,与网页设计技术密切相关,因此在使用之前需要掌握一定得相关知识,例如html、css、javascript等。编辑工具推荐使用:EditPlus。 1)下载并拷贝源代码即相关文件 到Openlayers官方网站https://www.360docs.net/doc/9f7055323.html,下载源代码压缩包,解压后可以看到其中的一些目录和文件。需要拷贝的文件和目录有:根目录下的【OpenLayer.js】文件、根目录下的【lib】目录、根目录下的【img】目录、根目录下的【theme】目录。将这4项内容拷贝到你网站的Scripts目录下(当然,这个只是例子,自己的网站程序目录结构自己说了算,只要保证OpenLayers.js,/lib,/img,/theme在同一目录中即可)。

NASA World Wind开源项目配置详解

NASA World Wind开源项目配置详解 NASA World Wind是C#开发的个人电脑上的开源的3D图形虚拟地球系统。它结合了美国国家航空航天局(NASA)从卫星拍摄的图像,这些图像应用于Blue Marble,Landsat7,SRTM, MODIS以及其它更多的地方。 用户可以到这里下载.net源码https://www.360docs.net/doc/9f7055323.html,/ 下载后,打开解决方案,使用的是.net2.0,一共有16个项目组成。 编译整个项目,发现缺少几个程序集的引用。 PluginSDK项目需三个引用: Microsoft.DirectX,Microsoft.DirectX.Direct3D,Microsoft.DirectX.Direct3D X; WorldWind项目需四个引用: Microsoft.DirectX,Microsoft.DirectX.Direct3D,Microsoft.DirectX.Direct3D X,Microsoft.DirectX.DirectInput。 首先了解一下DirectX: 微软的DirectX上一系列技术的集成,用来提供Windows平台多媒体运行的 API,支持应用程序、多媒体软件和3D游戏极其声效。 我下载的是DirectX9.0c简体中文版,下载地址是:https://www.360docs.net/doc/9f7055323.html,/system/patch/download_17624.html 解压后,运行程序DXSETUP.exe。

完成后,打开目录C:\WINDOWS\https://www.360docs.net/doc/9f7055323.html,\DirectX for Managed Code 发现会有十个文件 将1.0.2902.0目录的四个dll文件copy到其他的目录中,引用到项目中,发现还是编译不通过,于是我将1.0.2911.0目录的Microsoft.DirectX.Direct3DX.dll进 行替换,编译成功! 设置WorldWind为启动项目,Ctrl+F5,启动后出现一个图片的界面,过了半分钟的样子,出现一个directX版本的错误,哦,这个还是有办法的,呵呵。运行命令"dxdiag",点击“display”,将所有的设置为"Enabled".

基于World Wind的二次开发概要设计

基于World Wind的二次开发概要设计说明书 [V1.0版本] 二零一一年十月

修订历史记录 日期版本作者审核人审核时间备注2011年10月22日V1.0版本刘美琳 石少华 赵昱昀

目录1.引言.... 1.1 编写目的... 1.2 背景... 1.3 定义... 1.4 参考资料... 2.总体设计.... 2.1 需求规定... 2.1.1系统功能... 2.1.2系统性能... 2.1.3输入输出要求... 2.1.4数据管理能力要求... 2.1.5故障处理要求... 2.1.6其他专门要求... 2.2 运行环境... 2.2.1设备... 2.2.2支持软件... 2.2.3接口... 2.2.4控制... 2.3 基本设计概念和处理流程... 2.4 结构... 2.5 功能需求与系统模块的关系... 2.6 人工处理过程... 2.7 尚未解决的问题... 3.接口设计.... 3.1用户接口... 3.2外部接口... 3.3内部接口... 4.运行设计.... 4.1运行模块组合... 4.2运行控制... 4.3运行时间... 5.系统数据结构设计.... 5.1逻辑结构设计要点... 5.2物理结构设计要点... 5.3数据结构与程序的关系... 6.系统出错处理设计... 6.1出错信息... 6.2补救措施... 6.3系统维护设计... 1引言

1.1编写目的 [说明编写这份概要设计说明书的目的,指出预期的读者。] 1.2背景 A.[待开发软件系统的名称;] B. [列出本项目的任务提出者、开发者、用户。] 1.3定义 [列出本文件中用到的专门术语的定义和外文首字母组词的原词组。] 1.4参考资料 [列出有关的参考资料。] 2总体设计 2.1需求规定 [说明对本系统的主要的输入输出项目、处理的功能性能要求。包括] 2.1.1 系统功能 2.1.2 系统性能 2.1.2.1精度 2.1.2.2时间特性要求 2.1.2.4可靠性 2.1.2.5灵活性 2.1.3 输入输出要求 2.1.4 数据管理能力要求

WorldWind 网络GIS 地图发布 空间信息服务实验报告

空间信息服务技术 实验报告 学院:资源与环境科学学院专业:地图学与地理信息系统组员:李庆君、信睿、陶桐桐教师:王明军 日期: 2015-1-8

目录 空间信息服务技术实验报告 (1) 1、实验目的 (1) 2、实验数据 (1) 3、实验内容 (1) 3.1 服务器配置 (1) 3.1.1 Apache服务器配置 (1) 3.1.2 Tomcat服务器配置 (2) 3.1.3编译和运行World Wind (3) 3.2 矢量数据加载服务 (3) 3.2.1 矢量数据预处理 (3) 3.2.2 本地shp数据加载 (3) 3.2.3 网络shp数据加载 (4) 3.3栅格数据的加载 (5) 3.3.1 WMS服务概述 (5) 3.3.2 World Wind多分辨率图层技术 (6) 3.3.3 利用FWTools对下载好的Landsat影像进行切割 (6) 3.3.4影像数据添加到WMS Server (7) 3.4本地高程数据服务 (8) 3.4.1 高程数据服务介绍 (8) 3.4.2 洪山区高程数据服务加载 (8) 3.5 World Wind 平台定位 (8) 3.5.1 直接定位 (9) 3.5.2 飞行定位 (9) 3.6 空间查询服务 (9) 3.6.1实体查询属性 (9) 3.6.2 属性查询实体 (11) 5、实验心得 (12)

空间信息服务技术实验报告 1、实验目的 随着电脑、手机以及互联网的普适,信息化时代已经到来,城市的数字化信息服务已经成为了其发展进步的必由之路。三维数字信息化城市系统是数字化、虚拟化、信息化、功能化、可视化、科技化特点的是通过对城市建筑空间位置、信息服务等进行数字化并存储在本地活服务器,对这些信息进行查询,分析已得到期望的结果。 本次实验旨在对武汉洪山区某区域的概况进行数字化,借助World Wind三维数字平台,加入该区域的主要建筑、主要道路等的shp 数据,并且加入高分辨率影像数据,实现洪山区的一些多媒体查询。有了数字化城市系统,有助于外来人口迅速的了解洪山区基础设施的分布情况,为其带来极大的便利。 2、实验数据 ①洪山区部分主要街道和主要建筑的矢量数据 ②在地理空间数据云上下载得到的包含洪山区的TM遥感图像 ③洪山区90米分辨率高程数据 3、实验内容 3.1 服务器配置 3.1.1 Apache服务器配置 Apache目前是被绝大部分用户使用的一中网页服务器软件。它可以和各式各样的计算机平台相容,由于其跨平台和安全性被广泛使用,Apache是目前使用最广泛的Web服务器端软件之一。操作简单、性能稳定、访问速度快,并可以作为代理服务器来使用等都是其优点。

WorldWind系列十五:如何切割影像和DEM数据及其在WW中的应用配置

WorldWind系列十五:如何切割影像和DEM数据及其在WW中的 应用配置 来源:博客园作者:无痕客 WorldWind学习系列十四中我从代码上分析如何加载DEM数据,里面涉及了算法,有学习和借鉴意义。但对于只求应用或者说是急于求成的网友来说,实用价值不是太大!我们分析代码是一种学习过程,不是目的,终究要落在如何应用自己的影像和DEM数据、如何基于自己的数据开发满足自己项目需求的新的WW插件。这是一过程,需要循序渐进,今天只跟大家分享一下如何切割自己的影像或DEM,及如何设置相应的XML配置。 我的学习和实践,主要是参考https://www.360docs.net/doc/9f7055323.html,/wiki/Dstile_howto,对于英语较好的网友,建议阅读原文,反正我英语不太好,结合实践,我差不多看了五六遍原文。我下面是翻译部分内容及自己的实践步骤和心得(将采用红色字部分)。 这是一篇教你如何一步步将你自己的具有地理参考系的影像数据添加到WorldWind中的文档。该帮助文档将告诉你如何将影像数据切割成瓦片,及怎样在WW中利用这些瓦片数据创建图层。至此,你可以将该图层作为一个Add-on插件来发布。这个图层可以完全放在你的电脑上。如果你想将瓦片数据作为发布服务提供给他人,该文档可能对你帮助不大。 WW的瓦片系统的组织如下图:

阅读下面的内容前,请确保你已经理解上图中WW瓦片的工作原理和XML的配置原理。(注:上图是WW的精华) 下面我将带你创建一个图层实例,里面的数据可以换做你自己的。(注:第一次实践的话,建议你使用同样的数据同样的步骤,将整个过程走一遍) 必备软件工具: FWTools:这是一个操作具有地理参考系影像的免费的工具包,是开源工具。dstile切图工具需要使用FWTools,最新版本V2.4.6。下载地址:https://www.360docs.net/doc/9f7055323.html,/安装FWTools时,你可以选择不安装开发文件,这样可以节省一些安装空间。dstile工具与2.X版本兼容,与1.X版FWTools不兼容。 Dstile:使用版本是2007年8月13日,下载地址: https://www.360docs.net/doc/9f7055323.html,:8080/tisham/dstile-0.2_win32_whatnickpatches.zip 这个程序按照Making Layers文章的处理过程。请将压缩文件解压后拷贝到FWTools的安装目录下(如:D:\Program Files\FWTools2.4.6) WorldWind(1.4版) 前期准备:

java版WorldWind源代码解析之一

Java版WorldWind源代码学习笔记该文档编写者系数学系毕业且未满一年工作经验的职场新人,java知识有限,对于新事物Worldwind刚接触不久,总结一下。不足之处,希望得到各位大师的指点。 刚开始,我看了一些WorldWind的相关简介,感觉从整体上给了WorldWind非常好的框架感,所以我将它拷贝了过来。之后,我们的研究就从大的框架转到细节去。毕竟,“研究”不只是看大的框架,还要将细节进行分析。我作为一个新手,对此也非常陌生,那么,就让我们一起来学习吧。不足之处请见谅。 首先,我们贴出官网上给出的WorldWind的源代码结构如下 ?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 地球、火星等星球的实现 ?https://www.360docs.net/doc/9f7055323.html,yers图层 ?https://www.360docs.net/doc/9f7055323.html,yers.Earth专用于地球的图层 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 o apply() o goto(lat/lon/elev/altitude) o project(Point 3Dpoint) ?Compute

worldwind技术手册详解

写在前面
虽说是技术手册,但是没有源码的研究就算是一个教程吧。由于本人能力有限,文章中有很多不 当之处,请各位原谅。 Bigheader 联系:gdsqz2@https://www.360docs.net/doc/9f7055323.html,
1

worldwind 技术手册
目录:
1. WorldWind 软件架构 ――――――――――――――――02 WW 功能介绍 WW 与 XML Client 与 Server WW 使用链接 本地缓存路径 本地功能配置 http 请求与 asp WMS、WFS 2. WorldWind 金字塔体系 ―――――――――――――――――-03 瓦片金字塔详解及其对应公式 ――――――――――――――――――03 NASA World Wind Tile Structure ――――――――――――――――― 03 NASA World Wind Map Tile System ―――――――――――――――― 04 瓦片请求调度策略 ――――――――――――――――― 05 2.2.1 当前显示请求及其显示(客户端) ――――――――――――――――――05 2.2.2 目标瓦片快速搜索算法 ――――――――――――――――――08 2.2.3 瓦片数据的请求预测(服务器) ――――――――――――――――――08 2.3 可视化的地球空间数学模型 ――――――――――――――――――10 2.3.1 地球三维 LOD 模型 ――――――――――――――――――10 3. Geospatial image processing ――――――――――――――――――14 3.1 步骤: (准备知识:LOTD:0 层瓦片大小;TileSize: ) ―――――――――――14 3.2 NLT Landsat 处理技术范例 ―――――――――――――15 3.3 dstile howto ―――――――――――――15 4. Creat a new world ―――――――――――――17 4.1World Wind 本地文件说明 4.1.1. Worlds 4.1.2. 在安装目录下 4.2 创建新的世界模型 5. Making layer ―――― ――――――――――18 5.1 添加新图层(更详细可参考) 5.2 Point ―――――――――――――――20 5.3 Lines ―――――――――――――――20 5.4 Polygon ―――――――――――――――23 5.5 Model Feature ―――――――――――――――25 5.6 Effects and Multi-Texturing ―――――――――――――――27 5.7 Shapefile ―――――――――――――――32 5.8 KML/KMZ 6. ddons 与 plugins ―――――――――――――――32 addons 与 plugins 区别 插件总汇及其功能 7. script 脚本 ―――――――――――――――――33 8. 编译调试 ―――――――――――――――――――33 9. 读书籍和论文 ―――――――――――――――――――――34 10. 1.4.1 版本发展 ―――――――――――――――35
2

WorldWind学习系列七:LoadUnload Plugins——投石问路篇

WorldWind学习系列七:Load/Unload Plugins——投石问路篇 来源:博客园作者:无痕客 今天原计划把Load/Unload Plugins完全弄明白,可是分析该功能的过程时发现Load/Unload Plugins没有想象的简单,而且它的实现代码中有很多重点知识点值得深入学习。所以,将该部分分两次总结。这次主要是为明天的深入学习做些铺垫,准备分两部分:World Wind Plugin基础知识、展示插件DEMO帮大家坚定信心。 World Wind Plugin基础知识 WorldWind魅力不仅是因为它是开源的三维软件,而且在于它更是一个开源的三维框架。很多朋友都想基于WorldWind搞开发,我原来也是冲着这目的来学习WorldWind,因为它是三维而且是开源的(即:免费的)。但我现在给出原因是:WorldWind具有着让你耳目一新的良好设计框架,它最大的优点就是它的框架思想,支持无限扩展插件。(关于它的架构我会系列在最后总结的,因为这是WW的一大亮点,很值得我们学习!)扯远了,WorldWind支持动态加载插件,你需要做的只是写个插件,甚至只是一个简单的*.cs插件文件,就轻松地在三维环境下执行你的功能。 WW中主要应用了插件思想,其实现上可以分为两种:Add-on 和Plugin。 Add-on是什么意思?google翻译为“附加”。我们这样可以看待WorldWind:其核心的框架部分好比一副人的骨头架子;其所有各种功能好比“附加”到人骨头架子上的肉;其被各功能访问的数据好比人身体血管里的血液。没有血,人会成啥样?没有肉,人会成啥样??没有骨头,人又会成啥样???呵呵,想象一下,该理解什么是Add-on了吧!回到WW 现实上,Add-on就是Earth、Moon等(如下图1),就是Flags of the World、Landmark 等(如图2)。 图1:图2: “好像所有的功能都是Add-on了?”是的,Plugin可以被认为是一种Add-on,但是Plugins更强大,你可以简单地安装你所信任来源的插件,Plugins可是用C#,VB或J#写的代码,是被WorldWind在启动时加载和编译的,允许插件开发者在不修改源代码的情况

WorldWind系列六: 渲染过程解析篇

WorldWind系列六:渲染过程解析篇 来源:博客园作者:无痕客 今天主要是分析学习了Render问题,搞明白了WorldWind中整个Render绘制处理过程。其中关键类是: RenderableObject.cs ,RenderobjectList.cs. WW中所有需要绘制的对象都RenderableObject,WW的各功能的执行显示都是不断地调用相应的Render方法。 1.RenderableObject整个绘制对象继承图

WW绘制都是通过RenderableObject类,将所有的要绘制对象都看做是RenderableObject,从而统一了整个系统WW的绘制对象的绘制过程。 2.RenderableObjectList也继承自RenderableObject,先看看它的继承图 摘录内容: “实际的点线,平面纹理等渲染对象都是从RenderableObject继承,最终的渲染实现也是在从它继续下来的类中,RenderableObjectList的成员m_children (protected ArrayList m_children = new ArrayList();)包含WW中所有的渲染对象,绘制过程中按如下的优先级进行: public enum RenderPriority { SurfaceImages = 0, TerrainMappedImages = 100, AtmosphericImages = 200, LinePaths = 300, Icons = 400, Placenames = 500, Custom = 600 } 这里对WW调试过程中的m_children的成员做个截图,需要注意的是m_children的成员大部分还是RenderableObjectList对象,向下包含的层次很多,但只有最底层的从RenderableObject继续的对象才是渲染的最终实现。”摘自: https://www.360docs.net/doc/9f7055323.html,/s/blog_467b6cd601008mmd.html~type=v5 _one&label=rela_nextarticle RenderableObjectList可以简单看作RenderableObject对象的集合,但实质上存储RenderableObject对象集合的仅仅是其中的属性m_children,它有很多特有的针对m_children管理的方法,如:Add(RenderableObject ro)、Remove(RenderableObject layer)。RenderableObjectList里通过

WordWind(Java版)开发环境搭建

WordWind(Java版)开发环境搭建 操作平台Windows 7 64位操作系统,如果是32位的则在拷贝有些J ar包的时候注意对应32位的。 首先在官网下载最新的WordWind源码文件(我下载的是2.0版本的),解压缩,然后在Eclipse中新建Java Project。 如果想对WorldWind源码进行研究,开发环境搭建如下: 1.将下载的文件中的src文件夹下的所有目录文件拷贝到工程中的src 目录下。 2.在Java工程中新建lib文件夹,把gadl.jar、gluegen-rt.jar、gluegen -rt-natives-windows-amd64.jar、jogl-all.jar、jogl-all-natives-windows-amd64.jar、plugin.jar拷贝到礼拜目录下。 3.在工程中JRE System Library上右键Build Path→Configure Build Path,在Libraries选项卡下点击Add JARs,然后把lib文件夹下的所有Jar包添加进去,如下图。

大功告成,运行gov.nasa.worl dwindx.examples包下的任意Java文件,结果如下: 如果只想利用WorldWind进行二次开发,则开发环境只需要这样配置:1.在Java工程中新建lib文件夹,把worldwin.jar、worldwindx.jar、gl uegen-rt.jar、gluegen-rt-natives-windows-amd64.jar、jogl-all.jar、jogl -all-natives-windows-amd64.jar拷贝到lib目录下。

Using NASA’s World Wind virtual globe for interactive internet

D o w n l o a d e d B y : [U n i v e r s i t y O f M a r y l a n d ] A t : 16:18 20 M a y 2008 Using NASA’s World Wind virtual globe for interactive internet visualization of the global MODIS burned area product L.BOSCHETTI*{,D.P.ROY {and C.O.JUSTIC E {{Department of Geography,University of Maryland,2181LeFrak Hall,College Park,MD 20740,USA {Geographic Information Science Center of Excellence,South Dakota State University,Brookings,SD 57007,USA (Received 12February 2007;in final form 13July 2007)Three-dimensional virtual globes are radically changing the way geographic information is perceived by the public.This article describes how NASA World Wind,an open source virtual globe,is currently being used for visualization of the MODIS burned area product.The procedures adopted for converting the product into a format compatible with World Wind,as well as the spatial generalization of these data at different scales,are described.Directions to instructions on how to obtain the MODIS burned area product visualization imagery and use it in World Wind are included.This article highlights the potential benefits of integrating the visualization capability of virtual globes into the next generation of remotely sensed product internet analysis and distribution systems. 1.Introduction There has been an information revolution in remote sensing,in the capacity to generate products and to disseminate products to users.Before the 1990s,satellite sensor data were obtained primarily by installation of a satellite receiving station,or by data requests to such stations or the associated data distributors.Data were usually mailed to users on analogue tape media or as printed photographs or diapositives.Today,digital satellite data products can be obtained from dedicated centres that may be separated physically and institutionally from the place of product https://www.360docs.net/doc/9f7055323.html,ers can submit requests via the internet using personal computers,and can request that products be sent on media or over the internet using file transfer protocols.For example,National Aeronautics and Space Administration (NASA)Moderate Resolution Imaging Spectroradiometer (MODIS)land products are generated systematically on a global basis and distributed to the global user community via the internet from dedicated data active archive centres (Justice et al.2002).Visualization of satellite products greatly aids the product browse and ordering process and is also required to ensure the quality of products as part of the production process (Roy et al.2002). Commercial internet search engines and services have raised expectations and awareness for the delivery of geographic information and services over the internet (Jones and Ware,2005,Butler 2006).Virtual globes provide visualization of *Corresponding author.Email:luigi@https://www.360docs.net/doc/9f7055323.html, International Journal of Remote Sensing Vol.29,No.11,10June 2008, 3067–3072 International Journal of Remote Sensing ISSN 0143-1161print/ISSN 1366-5901online #2008Taylor &Francis https://www.360docs.net/doc/9f7055323.html,/journals DOI:10.1080/01431160701733023

三维电子沙盘国内外现状1

三维电子沙盘国内外现状 1、总体概况 近几年,在地形图基础上发展起来一些用于表示三维空间的图形模式。这些图形模式有三维电子沙盘、三维数字地图、三维电子地图、三维景观图等等。三维电子沙盘更加注重重大比例尺的地形表现。 网络三维地形图系统越来越受到研究者的关注,Google Earth免费公共服务系统的推出第一次将这个全球高分辨率影像及三维场景真实地展现在在用户面前,极大地促进了各个行业用户在三维可视化方面的需求。 Skyline, WorldWind, ArcGlobe等三维可视化平台的推出更是让用户的需求逐步转化为现实。 但是三维电子沙盘的效率目前依然是用户感到不满足的一个重要环节之一,也是众多学者研究和思考的热点。 数据的网络快速传输是影像网络三维可视化效率的核心环节之一,在网络三维可视化系统中,对于服务器频繁的数据请求及网络通信代价很大程度影响系统运行的效率;降低访问频率、尽可能减少数据网络传输量是需要重点考虑的问题。 成熟的客户端数据缓冲机制是衡量网络三维可视化系统是否成熟的重要标志。网络三维可视化系统通常有大量经常被访问的影像、模型、地形、矢量数据,为了避免频繁地与数据服务器进行交互,需要将经常被访问的数据保存在内存和外存缓冲中,可以大幅度地提高系统的性能。 2、三维可视化方面国内外的现状 目前,国内外关于Web缓存及优化算法的研究有很多。但是,针对网络三维可视化系统缓存研究公开发表的很少。Web缓存机制虽然能够在一定程度上改善系统性能,但对网络3维可视化系统的缓存管理明显缺少针对性。 当前三维可视化方法主要有计算机透视法、计算机影像编修法、计算机绘图及3D模型法、计算机模型及影像合成等,但它们大都是用栅格或影像表示空间地理信息的,类似于三维数字地形图的概念,但是又有很大不同。前者强调三维视图,重视空间认知的功能,后者侧重三维空间的可编辑、可操作性,方便工程规划和设计。以规则格网(Gird)为基础的三维地形可视化这方面的研究算法也比较多大致可分为以下几个阶段: 1997,Duchaineau在Lindstrom的算法基础上,提出了实时优化自适应网格(ROAM)算法,它使用二叉树而不是连通图来表示地形结构。Duchaineau和Lindstrom都是采用规则的简化模式,分别代表了当前的两大主流法则:基于四叉树的LOD(Level of Detail)地形分割和基于二叉树的LOD地形分割。 1998,Rottger提出基于规则格网的四叉树来表示地形,采用一种特别的误差计算方法消除块间裂缝,把结点变形融入算法框架,取得较好的可视化效果。 2001,陈刚提出一种基于RSG(参见《地形RSG模型的实时动态构网算法的设计与实现》解放军信息工程大学测绘学院,陈刚)通过定义模型中顶点间的约束关系,解决四叉树中裂缝问题,还利用误差继承的方法将顶点间的约束关系反应到顶点的误差值中,在构网的过程中只需要通过简单的误差判断就可以快速得到参与构网的顶点。 3、国内外三维建模现状

相关主题
相关文档
最新文档