




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、写在前面虽说是技术手册,但是没有源码的研究就算是一个教程吧。由于本人能力有限,文章中有很多不当之处,请各位原谅。 Bigheader 联系:gdsqz2worldwind技术手册目录:1. WorldWind软件架构 WW功能介绍WW与XMLClient与ServerWW使用链接本地缓存路径本地功能配置http请求与aspWMS、WFS2. WorldWind金字塔体系瓦片金字塔详解及其对应公式NASA World Wind Tile Structure NASA World Wind Map Tile System 瓦片请求调度策略 2.2.1 当前显示请求及其显示(客户端)2.2.2目标瓦
2、片快速搜索算法2.2.3瓦片数据的请求预测(服务器)2.3 可视化的地球空间数学模型2.3.1 地球三维LOD模型3. Geospatial image processing 3.1步骤:(准备知识:LOTD:0层瓦片大小;TileSize: ) 3.2 NLT Landsat处理技术范例 3.3 dstile howto4. Creat a new world 4.1World Wind本地文件说明4.1.1. Worlds4.1.2. 在安装目录下4.2 创建新的世界模型5. Making layer 5.1 添加新图层(更详细可参考)5.2 Point5.3 Lines5.4 Polyg
3、on5.5 Model Feature5.6 Effects and Multi-Texturing5.7 Shapefile5.8 KML/KMZ6. ddons与pluginsaddons与plugins区别插件总汇及其功能7. script脚本8. 编译调试9. 读书籍和论文10. 1.4.1版本发展一、 WW软件结构1.1 功能介绍World Wind(简称WW,中文有人直翻译为世界风),是NASA发布的一个开放源代码(Open Source)的地理科普软件(由NASA Research开发,由NASA Learning Technologies來發展),它是一个可视化地球仪,将NAS
4、A、USGS以及其它WMS服务商提供的图像通过一个三维的地球模型展现,近期还包含了月球、金星、火星、天文星系等的展现。用户可在所观察的行星上随意地旋转、放大、缩小, 同时可以看到地名和行政区划.软件还包含了一个软件包,能够浏览地图及其它由因特网上的OpenGIS Web Mapping Service提供的图像。目前软件所使用的数据:低分辩率的Blue marble数据现在包含的初始安装内,当用户放大到特定区域时,附加的高分辩率数据将会自动从NASA服务器上被下载。 A 静态数据层:en:Blue marble 图像 en:Landsat 图像 en:USGS 图像 en:SRTM 地形数据
5、B 动画数据层:en:Animated Earth en:MODIS en:GLOBE1.2 WW与XMLWorldWind是一个优秀的客户端框架引擎,XML实现数据描述和软件设置,通过WW的WorldModel、图层、插件、http和WMS请求、三维渲染等实现交互式浏览。也就是说XML是数据。WorldWind则是数据执行的引擎,WW可扩展性和开发性非常强大。1.3 Clinet与Server1.3.1 WW使用链接(附表1)1.3.2本地缓存路径(附表1)1.3.3本地功能配置(附表1)1.3.4 http请求与aspBlue marble、:Landsat、SRTM使用直接的http请求
6、。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 weve tried to date. Instead of using an overly complex format(for serving predefined chunks that is)
7、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 use
8、r base, feel free,wed 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、WFSWMSweb Map server 网络地图服务 WFSweb Fundation server 网络要素服务USGS和所有动画数据层使用符合OGC协议的和实现数据网络共享。二、 WorldWind金子塔体
9、系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)是层与层间转换的最简单的距离。在
10、 NLTLandsat 7 中,lzts被默认设置为2.25度。可用以下公式计算第N层的tile size:size=lzts2N次方。也就是说下一层将上一层一分为四。:图3 显示坐标轴在X、Y方向值的增量: 2.1.2 NASA World Wind Map Tile System坐标与图片编号对应公式:(1)利用下面公式,求某点坐标X,Y(纬,经),在某层N的文件号,图片号(X+90)/值*2的N次方=文件夹号(取整数如256.65即为256)(Y+180)/值*2的N次方=图片后缀(取整数)(2)利用求得的图片编号A_B反求这张图片的左下角坐标A*值/2的N次方-90=纬度 B*值/2的
11、N次方-180=经度 这样求得图片起始分割点坐标,然后以值/2的N次的间隔分割图片,把整幅图分成256*256 or 512*512BMNG(500m)LandSatGeocover(30m/15m)OnEarth(15m)USGS(1m)SRTM(90m/3m0(US)36 36。2.252.25。2.02.0。0.80.8。2020。2.2 瓦片请求调度策略2.2.1 当前显示请求及其显示(客户端)(1)瓦片金字塔模型构建金字塔是一种多分辨率层次模型。在地形场景绘制时,在保证显示精度的前提下为提高显示速度,不同区域通常需要不同分辨率的数字高程模型数据和纹理影像数据。数字高程模型金字塔和影像
12、金字塔则可以直接提供这些数据而无需进行实时重采样。尽管金字塔模型增加了数据的存储空间,但能够减少完成地形绘制所需的总机时。分块的瓦片金塔模型还能够进一步减少数据访问量,提高系统的输入输出执行效率,从而提升系统的整体性能。当地形显示窗口大小固定时,采用瓦片金字塔模型可以使数据访问量基本保持不变。瓦片金字塔模型的这一特性对海量地形实时可视化是非常重要的。在构建地形金字塔时,首先把原始地形数据作为金字塔的底层,即第0 层,并对其进行分块,形成第0 层瓦片矩阵。在第0 层的基础上,按每2 2个像素合成为一个像素的方法生成第1 层,并对其进行分块,形成第1 层瓦片矩阵。如此下去,构成整个瓦片金字塔。以影
13、像为例,设第l 层的像素矩阵大小为irlicl,分辨率为resl,瓦片大小为isis,则瓦片矩阵的大小trl tcl 为:trl = irl/istcl = icl/is其中“ ”为向下取整符,下同。按每22 个像素合成为1 个像素后生成的第l+1 层的像素矩阵大小irl+1icl+1 为:irl+1 = irl/2icl+1 = icl/2其分辨率resl+1 为:resl+1 = resl 2不失一般性,我们规定像素合成从像素矩阵的左下角开始,从左至右从下到上依次进行。同时规定瓦片分块也从左下角开始,从左至右从下到上依次进行。在上述规定的约束下,影像与其瓦片金字塔模型是互逆的。同时,影像的
14、瓦片金字塔模型也便于转换成具有更明确拓扑关系的四叉树结构。(2)线性四叉树瓦片索引(WW中应用QST,即quadrat size tree)四叉树是一种每个非叶子节点最多只有四个分支的树型结构,也是一种层次数据结构,其特性是能够实现空间递归分解。图2 是瓦片金字塔模型的四叉树结构示意图,其中矩形符号代表叶子节点,圆形符号代表非叶子节点。本文采用四叉树来构建瓦片索引和管理瓦片数据。在瓦片金字塔基础上构建线性四叉树瓦片索引分三步:即逻辑分块、节点编码和物理分块。逻辑分块与构建瓦片金字塔对应,规定块划分从地形数据左下角开始,从左至右,从下到上依次进行。同时规定四叉树的层编码与金字塔的层编码保持一致,
15、即四叉树的底层对应金字塔的底层。设(ix,iy)为像素坐标,is 为瓦片大小,io 为相邻瓦片重叠度,以像素为单位;(tx,ty)为瓦片坐标,以块为单位;l为层号。若瓦片坐标(tx,ty)已知,则瓦片左下角的像素坐标(ixlb,iylb)为:ixlb = tx isiylb = ty is瓦片右上角的像素坐标(ixrt,iyrt)为:ixrt = (tx + 1) is + io 1iyrt = (ty + 1) is + io 1如果像素坐标(ix,iy)已知,则像素所属瓦片的坐标为:tx = ix/isty = iy/is由像素矩阵行数和列数以及瓦片大小,可以计算出瓦片矩阵的行数和列数,然
16、后按从左至右,从下到上的顺序依次生成逻辑瓦片,逻辑瓦片由(ixlb,iylb), (ixrt,iyrt), (tx,ty), l)唯一标识。节点编码假定用一维数组来存储瓦片索引,瓦片排序从底层开始,按从左至右,从下到上的顺序依次进行,瓦片在数组中的偏移量即为节点编码。为了提取瓦片(tx,ty,l),必须计算出其偏移量。我们采用一个一维数组来存储每层瓦片的起始偏移量,设为osl。若第l 层瓦片矩阵的列数为tcl,则瓦片(tx,ty,l)的偏移量offset 为:offset = ty tcl + tx + osl 物理分块在逻辑分块的基础上对地形数据进行物理分块,生成地形数据子块。对上边界和右边
17、界瓦片中的多余部分用无效像素值填充。物理分块完毕,按瓦片编号顺序存储。(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
18、,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 上的投影
19、为M0。视景体E_ABCD 与平面XOY的四个交点分别为A、B、C和D,则地形可见区域范围即为四边形ABCD。有关点A、B、C和D的坐标的详细计算方法,可参考文献3。地形可见区域的表示若用于地形显示的屏幕窗口宽和高分别为Xw 和Yw(以像素为单位),视景体的水平视场角和垂直视场角分别为FovX 和FovY。设当可见区域ABCD恰好充满显示窗口时,窗口水平方向和垂直方向平均每个像素所对应的地面距离分别为Dx 和Dy,则有:Dx = EM tan(FovX / 2) 2.0 / XwDy = EM tan(FovY / 2) 2.0 / Yw即当地形分辨率X 方向低于Dx 或Y 方向低于Dy时,地
20、形显示的精度将会降低;反之,将会产生不必要的数据冗余,影响绘制效率。也就是说,此时的Dx和Dy即为理论上地形绘制所需的最佳分辨率。由于通常地形X 方向和Y 方向的采样间距相同,因此我们在实际应用中取Dx 和Dy 中的小值作为最佳地形分辨率,用作后续瓦片搜索的重要依据。需要指出的是,通常该最佳分辨率被用作窗口中心瓦片所对应的分辨率,而窗口其它位置所对应的瓦片分辨率则根据瓦片中心到视点的距离作适当的降低调整,因为这不仅符合人眼的视觉规律,而且还可以减少用于地形绘制的三角形数量。 World Wind当前视角高度值与图层调度间关系探讨How does altitude relate to a lev
21、el in a layer being displayed?在WW中,从N-1st 转换到 Nth level的高度值是: ( Level0TileSize * 390km / 2N ) 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开发
22、者才知!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。每个le
23、vel2的瓦片覆盖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的一半。当
24、我们达这里时,the level2 tiles减少到只有L.O.F.=1.14或者A.O.F.=1.30。Now lets generalize it:When are these LOF and AOF becoming big (giving evidence about vasting)? When the user has - reduced the WW windows height, - increased the FOV (aka zoomed out), - tilted significantly, - gone near the Pole, -.what else have
25、 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) 2.2.2目标瓦片快速搜索算法目标瓦片搜索实际上伴随着分辨率搜索。如果采用一种分辨率,则只涉及层搜索和区域搜索。对于采用视点相关LOD 技术的地形可视化系统,要求不同
26、的区域对应不同分辨率的地形数据,因此在瓦片搜索过程中需要进行分辨率测试,图5 为地形瓦片分辨率需求示意图,图中E 为视点,白色矩形表示与视景体相交且需要参与地形绘制的瓦片数据。矩形越小表示瓦片分辨率越高。本文目标瓦片搜索采用由粗到细、层层推进的策略。首先判断可见区域是否在地形数据所表示的范围内,测试与可见区域交叠的顶层瓦片是否满足分辨率要求,如果不满足,则继续测试瓦片的分支,直到搜索出所有满足分辨率要求的瓦片。完整的算法描述如下:第1 步: 判断可见区域是否与地形数据交叠。如果交叠,转第2 步;否则,算法结束。第2 步: 逐个判断顶层瓦片是否满足分辨率要求。如果满足,将其插入到绘制链表;否则,
27、将其4 个分支瓦片插入到测试链表1。第3 步: 判断测试链表1 是否为空。如果为空,算法结束;否则,转第4 步。第4 步: 逐个判断测试链表1 中的瓦片是否与可见区域交叠。如果交叠,将其插入到测试链表2;否则,将其舍弃。第5 步: 清空测试链表1,转第6 步。第6 步: 逐个判断测试链表2 中的瓦片是否满足分辨率要求。如果满足,将其插入到绘制链表;否则,将其4 个分支瓦片插入到测试链表1。第7 步: 清空测试链表2,转第3 步。交叠测试时,只要瓦片四个角点的任何一点在可见区域内,即表示该瓦片与可见区域交叠。对于分辨率测试,首先计算瓦片四个角点的目标分辨率,如果四个角点的目标分辨率数值都大于或等
28、于瓦片所处金字塔层的分辨率数值,则表示该瓦片满足分辨率要求,否则需要测试其四个分支。如图6 所示,假设被测试瓦片的分辨率为2,由于瓦片左上角点目标分辨率数值小于2,则必须对瓦片进行细分,然后再进行交叠测试和分辨率测试。上述目标瓦片搜索算法是一个递归过程。在进行分辨率判断时只需对瓦片的四个角点进行判断,因而效率很高。另外,从瓦片索引数组中提取瓦片的分支无需进行空间位置判断,只需计算出瓦片偏移量即可,这同样能够显著地提高算法的性能。2.2.3瓦片数据的请求预测(服务器)(在高分辨率遥感卫星应用中,本文作者有遥感数据库的详细理论)(1) 预读取:合适的数据缓冲机制可以提高系统的性能,海量地形实时可视
29、化也不例外。当地形场景连续运动时,如果应用程序能够提前预测系统即将需要的数据,并能提前从磁盘把这些数据读到缓冲区,那么当应用程序真正需要这些数据的时候,便可以直接从缓冲区读取,从而省去了从磁盘读取这些数据的时间。由于在海量地形漫游时,数据预测调度和场景绘制需要同时进行,因此,我们利用操作系统的多线程能力,将数据预测调度和场景绘制分别采用两个独立的线程来完成。数据缓冲通过预测瓦片请求来实现。我们将瓦片请求划分为高、中、低三种优先级。高优先级瓦片请求被立即处理并参与地形绘制;中优先级瓦片请求在没有高优先级瓦片请求的情况下被读取到缓冲区,但不参与地形绘制,即所谓数据缓冲;低优先级瓦片请求只是在系统“
30、空闲”时才被读取到缓冲区,并且也不参与地形绘制,同样是数据缓冲。瓦片请求优先级的确定方法如下:为表述方便,假设连续的三个场景窗口分别为窗口1、窗口2 和窗口3。为了实现瓦片数据缓冲,系统在发送窗口1 的瓦片请求时应附带发送窗口2 和窗口3 的瓦片请求,只是瓦片请求的优先级有所不同,这便是瓦片请求预测。显然,窗口1 中的瓦片请求应该设为高优先级,而窗口2 中的瓦片请求除窗口1 的公共部分外被设为中优先级,窗口3 中的瓦片请求除与窗口1 及窗口2 的公共部分外被设为低优先级,如图7 所示。这样,当场景运动到窗口2 时,系统在发送窗口2 的瓦片请求后,数据预测调度线程就可以直接从缓冲区提取数据参与地
31、形绘制,而无需即时从磁盘读取数据。设场景运动速度为v 瓦片/秒,运动方向与瓦片x 方向的夹角为,刷新频率为f 帧/秒,则中、低优先级瓦片请求的扩展幅度tx、ty 为:tx = v cos / fty = v sin / f例如,当v = 33.94 瓦片/秒, = 45,f = 24 帧/秒时,中、低优先级瓦片请求的扩展幅度tx、ty 都为1 个瓦片,即在当前场景窗口的基础上沿运动方向的x、y 分解方向各扩展1 个瓦片为中优先级瓦片请求,再扩展1 个瓦片为低优先级瓦片请求。(2)异构磁盘系统的瓦片分布方式(高分辨率遥感卫星应用P205)(3)应用实例本文的研究成果已成功应用于多个地区的海量地形
32、数据实时可视化。以某地区地形三维可视化为例,该地区所采用的规则格网数字高程模型共有2376923536 个高程点,分辨率为60 米,彩色纹理影像大小为4753647070,分辨率为30 米。数字高程模型数据为2.13GB,纹理影像数据为6.40GB。分别对数字高程模型数据和纹理影像数据构建9层和10 层瓦片金字塔和相关索引文件,瓦片大小均为128128,相邻数字高程模型瓦片间重叠为1,相邻影像瓦片间没有重叠,生成的数字高程模型瓦片金字塔数据为2.94GB,纹理影像瓦片金字塔数据为8.77GB。实验计算机配置:P4 CPU 1.5GHz,512MB 内存,GeForce4 64MB 显卡,操作系
33、统为Windows2000 SP4,开发语言为Visual C+ 6.0,三维图形标准为OpenGL。利用本文研究的算法实现了实验区真实纹理映射地形的三维实时可视化,并可实现地形的实时漫游及缩放旋转等交互操作。当显示窗口为800600 像素,屏幕显示误差为1 个像素时,不采用瓦片请求预测时平均帧频为18.3 帧/秒,采用瓦片请求预测后的平均帧频为25.6 帧/秒,缓冲区中的瓦片总数维持在70 到120 之间;屏幕显示误差为2 个像素时,不采用瓦片请求预测时平均帧频为23.2 帧/秒,采用瓦片请求预测后的平均帧频为30.1 帧/秒,缓冲区中的瓦片总数维持在50 到90 之间。图8 为部分实验结果
34、。 (4)结论实验表明,本文提出的瓦片金字塔模型和线性四叉树索引相结合的数据管理模式,能够满足海量地形数据实时可视化的需要,并且在实现海量地形几何数据实时绘制的同时完成了海量纹理数据的实时映射;通过对视景体可见区域外地形数据的裁剪和基于分辨率测试的目标瓦片快速搜索算法,大大减少了地形绘制的数据量,提高了系统的执行效率;采用基于高、中、低优先级的地形瓦片请求预测方法,进一步提高了三维地形交互漫游的速度。本文的研究成果已扩展应用于基于网络的分布式海量地形数据三维可视化。本文研究所采用的地形数据为规则格网数据,今后将对用不规则三角网表示的海量地形数据可视化进行进一步研究。此外,在海量目标数据实时三维
35、可视化、基于全球框架的空间数据可视化等方面,作者还将作进一步的研究。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 王永君, 龚健雅. 用
36、于大范围虚拟地形环境的动态场景管理方法 J. 测绘学院学报, 2003, 20(3): 231-234.2.3 可视化的地球空间数学模型一般来说,遥感数据图片都是使用在WGS84坐标下的UTM投影。对于WorldWind来说,其地球模型为圆形,半径与WGS84坐标的长半径相等(也可以另设),在实时显示时,必须将平面的高程数据、纹理数据分块并映射到给定的球面上。2.3.1 地球三维LOD模型 (1)地球模型的经纬网分割由于地球椭球模型可以在球的基础上沿自转轴方向压缩得到(利用三维图形库中的缩放函数很容易做到),所以我们先将椭球模型简化为球面模型。球面可以看作由分布均匀的经纬网组成,经纬网越密,地
37、球模型的精度就越高。要实现视点相关球面LOD最简单有效的方法就是根据视点到球面的距离来动态调整经纬网的密度,这样就在保证视觉效果的前提下实现球面模型简化,图2-5-3显示了在不同视点距离下,球面模型的简化程度。 (2)球面经纬网格的可见性判断在近地空间环境中漫游时,由于一个时刻我们所能看见的都是地球表面的一部分,因此,我们没有必要绘制看不见的部分。本文利用视景体裁剪的方法来判断经纬网格是否可见。 (3)利用凹凸贴图(Bump Map)表现地球表面起伏情况基于球面的三维地球绘制方法不能用几何形状来表达地面起伏,但我们可以采用凹凸贴图的方法,在一定程度上弥补这个缺陷。在凹凸贴图实现过程中,为每一个
38、顶点计算光线向量是一个非常费时的工作,为了加快凹凸贴图的速度,可以采用基于象素着色的硬件加速方法实现。(2)海量数据的全球地形LOD模型(SROAM)我们将ROAMZ6 ( Real-time Optimal Adaptive Meshes,实时优化适应性网格)算法引入到具有海量地形与影像数据的全球地形三维建模中。ROAM算法是目前应用最广的一种视点相关地形实时LOD算法。其基本思想是:在对地形进行三维显示时,依据视点的位置和视线的方向等多种因素,对于表示地形表面的三角形片元进行一系列的基于二叉树的分裂与合并,最终形成和原始表面近似且无缝无叠的简化连续网格。本文在ROAM算法的基础上,提出连续
39、球面地形LOD算法SROAM ( Spherical ROAM简称SROAM ),突破了经典的ROAM算法只适合于平面地形数据的限制。SROAM算法基本思想 由于经典的ROAM是从分裂一个正方形网格开始不断细分地形的,在SROAM中,我们采用正方体作为球面地形的顶层,如图2-5-4(a)。正方体的6个面分别作为ROAM算法分裂的最顶层正方形。这些正方形的公共边设置好拓扑关系,以保证不同ROAM面在分裂、合并操作时边界上网格的连续性。 当SROAM的顶层正方体分裂成12个三角形,并设置好三角形之间正确的拓扑关系后,ROAM的原理和方法就可以完全适用了。事实上,SROAM算法比经典的ROAD更容易
40、实现,由于球面没有边界,因此不需要判断地形网格的边界条件,可以获得更修的绘制速度。唯一不同的是,我们需要将平面的高程数据、纹理数据分块并映射到给定的球面上。数据模型的简化272829 要建立全球的地LOD模型,其数据从覆盖全球的分辨率为几分或几秒的DEM数拒和分辨率为几百米的卫星影像,到局部区域高分辨率的DEM数据和正射航空影像,数据量是巨大的。对于如此大的数据,要想在中低档微机上达到实时交互的目的,必须对数据分级、分块管理z7,如图2-5-5。对于地形的分级,本文采用小波变换对地形进行简化,并分块构建金字塔。 小波理论是本世纪八十年代后期发展起来的一种新的信号处理工具,在时空域和频率域都具有
41、良好的局部化性质,可以根据不同的尺度要求,由粗到细地观察信号,被誉为信号分析的数学显微镜,在图形图像领域得到了广泛的应用,如:基于小波变换的图象压缩、图象边缘检测、图象拼接、立体视觉与匹配、曲面插值等,而基于小波变换的图象压缩是其目前最成功的应用之一。由于规则格网实际上为一二维数组表示的高度值,完全可以将高度域看成图像的灰度,将图像处理的算法引入格网简化中。本文采用多进制小波简化DEM数据。M进制小波变换公式为: 其中,aj,k,l为小波的低频成分,j为任意整数。k,1 = 0,1,2,.n0、n1、n2为正整数,C为常量。根据四进制小波将全球数据简化为金字塔数据结构29;然后,根据计算机硬件
42、的性能把每一层分为若千块;最后,将组织好的数据写入文件或数据库。 近年来对于大数据量纹理数据的处理方法研究大纹理数据调度、映射的文献并不少见。如基于原始纹理图像分割的传统方法30和MP-Grid方法32,都是采用预先把大纹理分割成小的纹理片,使每个小纹理片生成的Mipmap图适应硬件存储,然后根据视野的覆盖范围调度相关纹理片的Mipmap图组合生成要显示的数据。韩慧健等人提出了使用Clipmap(裁剪Mipmap)实现大纹理映射31 ,他的思路是先为原始大纹理生成Mipmap图存储在硬盘,再分割Mipmap各层,调入各层与视野有关的分割片数据到有限内存,相当于把视域覆盖的纹理部分裁剪下来,这样
43、可以把整个纹理指定在单个坐标系中。总之,解决大纹理贴图的问题目前都采用分级、分块的方法,该方法可以较好的解决硬件的存储和带宽瓶颈问题。本文也采用分级建立影象金字塔、在每一级上分块随视点动态调度的方法实现。 高程数据球面映射 对于某一块DEM数据来说,通常表示为一个二维数组fDEMnRownCol,nRow和nCol分别表示地形在纬度、经度方向的采样点数。由于ROAM算法的三角形网格的分裂、合并操作可以看作是在二维平面上进行,三角形顶点的高程用顶点的平面位置(x,y)可以很方便的在fDEM数组中查找得到。而球面LOD算法则不然,因为三角形分裂合并操作是在三维球面上进行的。假设要绘制的地球的中心在
44、原点,在某个三角形分裂过程中,网格中新生成的某一个顶点计算坐标(即被分裂的三角形斜边中点坐标)为P (Px,Py,Pz ),根据球面经纬度投影的原理,向量P的方向决定了该点在球面上的经纬度坐标。因此,我们首先建立P (Px,Py,PZ)与经纬度平面坐标(,)之间的映射关系(如图2-5-6 ) 根据球面几何关系,经纬度(,)与P的关系为: 其中,坐标,弧度表示。再分别将,,规划到0-1区间内后,我们容易得到经纬度与fDEM坐标之间的关系。 综合(2-5-2)(2-5-3 )式,得到位置P (x, y,z)与DEM高程数据fDEM的坐标映射关系:最终我们得到P点对应的的实际坐标为:其中R为地球半径
45、。|P|为向量P的长度。地图投影模型 当前大地坐标系是统一的, 能准确、唯一地描述地球上任一点的位置, 并能动态适应历史的、现代的越来越精密的各种参考椭球体, 它可作为地球数字产品和大型G IS 最为适当的坐标系, 即采用(B, L ,H) 描述地理实体几何特征点。这时二维场(B,L ) 是三维地理信息空间沿法线的一个二维投影, 可以用地图投影把它展平到XO Y 平面上, 也可不展, 它本身为规则的三维椭球面。由于其数学规则, 采用二维的曲线族(B, L ) 来表示其上坐标显得简便得多, 人们也更易理解, 它是地理信息的水平坐标系, 而H可视为垂直坐标。大型G IS 作用空间由小范围局部扩展到
46、地学大范围, 甚至全球范围, 地球数字产品的覆盖区域也遍布全球, 在这样大的区域内实现信息共享和互操作, 除统一采用上述椭球坐标系外,“地图投影”的标准化也是十分重要的。(详细描述见文章大型GIS 与数字地球的空间数学基础研究)误差分析(后加)视见体的计算 在视点漫游时,ROAM等平面LOD算法通常要对视景体范围内所有网格点进行动态误差计算。而球面LOD算法有其特殊性,因为,当视点在球面上漫游时,地平线以下的网格是看不见的。如图2-5-80 视点E距离地球高度为H(先不考虑地表起伏),地球平均半径为R, EC为视线方向,那么地平线到视点的距离为:对于在球面上三角形网格误差计算,我们采用的是屏幕
47、误差P,综合考虑了网格静态误差、三角形到视点距离、视线方向等多个方面的因素。计算公式为: 其中,K为比例系数,s(c;)为要判断的三角形的静态误差,D为三角形到视点距离。 采用上述动态误差计算公式可以代替视景体裁减,因为,在地平面以下的三角形满足D几条件,动态误差p =0,绘制时,将被忽略。 关于在每一块地形上SROAM的三角形分裂、合并以及绘制优化方法,与ROAM26算法完全相同,本文不再重复。实验结果与分析 本节介绍了基于椭球的地球LOD建模,提出了考虑地形的地球LOD模型(SROAM )。为了验证这些方法的可行性与实际效果,我们在DELL 4550(配置同前)的微机上实现了这些算法,软件
48、平台为WindowsNT/2000, Visual C十+6. 0和三维图形标准OnenGL,结果如下:基于椭球的地球LOD建模结果 图2-5-9为视点到地球不同距离时的地球网格,从图中可以看出,当地球远离视点的时候,网格较稀疏,表示精度变低:当视点靠近地球的时候,网格变密,表示精度提局。为了研究使用凹凸贴图表现地面起伏实际效果,我们分别做了不进行凹凸贴图的地球绘制和进行凹凸贴图的地球绘制两个试验,结果如图2-5-10所示。很明显,使用凹凸纹理后,地面质感明显增强(如图2-5-10b )。地球SROAM建模结果 图2-5-11为SROAM算法绘制带有地形的地球表面的结果,左图为网格显示,右图为
49、填充效果。在该图中,视点在P位置,视线方向如图箭头方向,扇形区域为可见范围。从图中可以看出,在球面上视点区域模型绘制时具有最高的细节层次,而离视点较远时细节层次较低。SROAM算法平均每帧绘制20, 000个三角形,速度平均30fps,基本可以满足实时系统的需要。由于受数据来源的限制,该算法对大数据量的DEM的实际效果还未进行验证。三、 Geospatial image processing3.1步骤:(准备知识:LOTD:0层瓦片大小;TileSize: )1. 获得带有地理参考的geotiff 并将他重新投影到WGS84坐标2. 找出geotiff的边界3. 从geotiff左下角坐标开始
50、,把整个的经纬度范围切割成最接近LOTD的倍数。4. 在#3处理的的geotiff在左下角切下一块L0TD大小的图块5. 将#4的图块重采样为瓦片(512512大小或其他,),转换图像格式6. 将瓦片放到相应的文件夹下,并以WW的命名规则命名瓦片的名字7. 重复切下L0TD大小的图块直到将TIFF右上角边界8. 将原图片以N=(L0TD2)大小继续切割,从#3开始重复9. 直到变成1:1比例,即切割大小N=(小于或等于);3.2 NLT Landsat处理技术范例(这是NASA生产第一个版本Landsat 7 Mosaic(可视波段)的方法。- By Chris Maxwell (Lead D
51、eveloper, 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
52、 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
53、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 app
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB32/T 3762.14-2021新型冠状病毒检测技术规范第14部分:N亚基因组荧光PCR检测程序
- DB32/T 3575-2019快速货运服务规范
- DB32/T 3529-2019桂花白叶茶加工技术规程
- DB31/T 954-2015犬瘟热病毒和犬细小病毒荧光PCR检测方法
- DB31/T 945.2-2015节能服务业服务规范第2部分:合同能源管理
- DB31/T 586-2012甜菜夜蛾测报技术规范
- DB31/T 397-2021医源性织物清洗消毒卫生要求
- DB31/T 1280-2021实验裸鼹鼠环境及设施
- DB31/ 927-2015黑色金属可控气氛热处理工序单位产品能源消耗限额
- CMMA/T 1-2015镁质胶凝材料制品用硫酸镁
- 湖北省黄冈市(2024年-2025年小学三年级语文)人教版随堂测试(下学期)试卷(含答案)
- 中医护理学 课件 模块七 中医护理操作 项目九中药熏洗技术
- 2021MAM-6070M空压机微电脑控制器
- 2024年全国高考新课标卷物理真题(含答案)
- 四川省泸州市2024年中考物理试题(含答案)
- J∕T∕T 1039-2016 公路桥梁聚氨酯填充式伸缩装置
- 工学云周报范文200字
- 山东省济南市高新区2023-2024学年八年级下学期期末物理试题
- 2022-2023学年广东省广州市荔湾区教科版(广州)四年级下册期末综合练习英语试卷(无答案)
- DLT 5285-2018 输变电工程架空导线(800mm以下)及地线液压压接工艺规程
- 蛛网膜下腔出血及动脉瘤影像表现
评论
0/150
提交评论