osg(osg中文社区)-osgEarth-osgViewer-基于OpenGL-开源三维渲染引擎-图形引擎-虚拟仿真工具-osg教程-osg仿真

地理信息数据的处理技术

当前位置:首页 > 学习支持 > 其他帮助 > 写作资料

在三维GIS渲染引擎中,数据的格式通常会有两种:平顶数据格式和尖顶数据格式,数据的管理使用四叉树机制。

地理信息数据包括影像、高程、光照等数据都是使用四叉树的机制进行管理的,在保证所有的数据的大小都是相同的同时,将低级别的数据在下一个高级别处将其一分为四,这四个数据的分辨率与低级别的数据的分辨率相同,这样便能保证在不断加载高级别数据的时候使得数据的精度更高。

平顶数据格式和尖顶数据格式的区别只是第一层中数据的数量,在平顶数据格式中,数据的第一层包含了两个数据片源包括一个经度从-180~0、纬度从-90~90的一个片源和一个经度从0~180、纬度从-90~90的一个片源,如上图的数据格式;而尖顶数据格式中,数据的第一层则只包含了一个数据片源是经度从-180~180、纬度从-90~90的片源。

在三维GIS渲染引擎初始化时便会为该引擎默认分配一种数据格式的属性,这个属性中必包含了数据的格式表明引擎的数据格式为尖顶或者平顶数据。假如当前的引擎的数据格式为尖顶数据,但是加载的图层数据可以为两种中的任意一种,如果加载的图层数据为平顶格式的数据,则分析如下:

当三维GIS引擎请求第一层数据时,其需要的是(-180,180)(-90,90)的数据。去请求每一个图层的数据,当这个图层的数据为平顶结构时,是不存在单张(-180,180)(-90,90)这个范围内的数据。此时三维GIS引擎会根据图层和引擎的数据格式的不同而进行一些计算,从而计算出在图层中存在两个数据(-180,0)(-90,90)和(0,180)(-90,90),把这两个数据拼在一起正好构成(-180,180)(-90,90)。读取(-180,0)(-90,90)和(0,180)(-90,90)两个片源数据,然后将读取结果平凑到一起,从而形成引擎需要的数据。

但是如果加载的数据格式与引擎的数据格式同为尖顶格式的数据时,则分析如下:

当三维GIS引擎请求第一层数据时,其需要的是(-180,180)(-90,90)的数据。去请求每一个图层的数据,当这个图层的数据为尖顶结构时,存在(-180,180)(-90,90)这个范围内的数据。

读取(-180,180)(-90,90)这个数据。对比两个步骤发现第二种情况节省了不同数据格式之间的计算时间以及读取一个文件的IO操作时间。通过这种将图层的数据格式与三维GIS引擎数据格式相一致的方法,节约了计算时间和一部分文件读取的时间,从而使加载的效率更加的高效。