OpenGL与OCI技术在地形建模可视化中的应用
2016-12-19杨少强张永彬王默然
杨少强,张永彬,王默然
(华北理工大学 矿业工程学院,河北 唐山 063009)
OpenGL与OCI技术在地形建模可视化中的应用
杨少强,张永彬,王默然
(华北理工大学 矿业工程学院,河北 唐山 063009)
OpenGL;地形建模;OCI
为了实现煤矿采沉区空间可视化三维演示,解决采沉区复杂的地物分异显示问题,从开源图形软件包OpenGL着手,研究了DEM、影像数据的组织形式,通过对2种数据进行分块处理,导入Oracle数据库进行存储,利用OCI类库以及OpenGL可视化函数实现数据调度以及三维场景的可视化。
0 引言
可视化技术是利用计算机图形学和图像处理技术实现数据的转化,进而在计算机屏幕上显示数据处理结果,将隐含的数据处理信息以一种可识别的图像信息进行显示。目前,国内外可视化技术发展都比较快,其中在地形可视化方面主要还是GIS技术以及底层开发技术(例如利用Open GL图形库)为主。国外方面,ESRI公司开发的ArcGIS技术已经比较成熟,可以实现二维、三维地形可视化分析;谷歌公司开发的Google Earth实现全球地形可视化。国内比较成熟的技术包括超图公司的SuperMap技术,中的数码的MapGIS技术,灵图公司的VRMAP技术是国际上领先的三维地理信息系统平台,Discreet公司开发(后被Autodesk公司收购)的3Dmax软件致力于三维动画渲染和制作。
可视化技术在三维矿区的研究一直是一个热点问题,许多专家学者在对三维建模可视化技术进行了多方面的研究和探讨,部分学者研究在3Dmax中建模,基于OpenGL对建好的3DS模型进行读取和控制,实现贴图与模型贴合,避免在程序中添加大量的建模程序,减少建模工作量,大大缩短了三维建模周期[1-4];部分学者利用不规则三角网(TIN)模型,并借助三维开发类库(OpenGL、VTK等)实现地形建模可视化[5-6]。部分学者选择利用OpenGL图形类库进行建模[7],并采用Oracle数据库进行对大数据量数据缓存处理[8],利用投影变换矩阵以及纹理映射[7-8]的方法实现三维地形可视化;另外,吴晓彦[9]等在研究基于DEM绘制地形过程中,为了提高绘图效率,提出了基于K-means聚类和动态LOD的三维建模方法,对数据简化聚类,可以提高建模效率。
1 系统技术路线与架构研究
利用VC++的MFC类库进行地形三维可视化设计,系统设计针对大数据量的地形DEM数据以及影像数据,利用Oracle数据库与OpenGL开源图形库相结合,采用OCI类库在系统与数据库之间实现数据调度其中技术路线如图1所示。
图1 技术路线图
2 数据分块处理
数字高程模型(DEM)描述的是地表高低起伏的状态,是通过密集的空间点坐标(x,y,z)呈现,通过DEM模型可以提取地表的很多信息,如坡度、坡向等。它通常以网格模型、等高线模型以及三角网模型表示,大范围DEM数据量比较大,数据存储传输方面出现弊端,很多学者[10]在研究DEM数据模型的无损压缩技术,减少数据操作过程中的内存使用,提高系统运行效率。
为了处理数据量大的问题,选择将DEM数据进行分块的解决策略,逐块调入系统;NSDTF-DEM作为国家标准数据交换格式,用记事本打开是明码表示截图如图2。
图2 标准DEM数据文件截图
如图2,第1行作为头文件记录了具体的参数值,第2行以后是具体的栅格数值,头文件说明如表1所示。
表1 标准DEM数据头文件格式说明
说明:对DEM数据分块处理,其实就是把DEM数据的头文件单独记录到一个表(DEM_Info)中,将栅格值进行分块存储,以临时文件方式存储。
考虑Intel的CPU内存大小是4 kb,分块大小选择33×33较好[11],在对影像文件进行分块过程中同样选择33×33分块,同DEM数据一一对应,存储在数据库中,在后面绘制图形纹理过程中简化纹理映射操作。数据分块如图3所示,数据边缘用无效数据(-9 999)填充见图虚线所示。
图3 DEM数据文件分块示意图
BLOB(binary large object)是一种二进制大对象数据存储格式,以二进制形式存储文件,例如位图、影像等,CLOB是存储大量文本形式文件的大数据对象格式,例如XML文件。该项研究将分块数据以BLOB格式存储在Oracle数据库中。
3 Oracle技术
Oracle数据库是甲骨文公司开发的数据仓库技术,可移植性良好(目前Oracle 10g/11g/12c版本支持多操作系统和硬件)、使用方便、功能强大,是一种高效、可靠、吞吐量大的数据库系统。目前,国内外大型项目的建设都离不开Oracle数据库,例如“数字城市”项目就是利用这项技术对大数据量的地理空间数据进行存储和调用。Oracle技术在大数据量调用和存储上优势更为明显,许多地学三维模拟系统的后台都是利用Oracle数据库管理大数据。
韦波[12]等利用三维空间数据库(Oracle Spatial)技术,探讨了三维模型表面存储技术,并利用Java 3D技术实现了三维模型的可视化;利用Oracle数据库并行处理数据能力强、存储数据量大、数据处理响应迅速等特点,徐云杰[13]对煤矿时时安全预警系统,通过传感器,Oracle数据库能及时的处理煤矿内部各类数据信息(瓦斯、粉尘、水位等);张男[14]等研究了影像分割存储方法,同时利用构造影像金字塔技术,降低影像的时间复杂性,采用了三次映射的方式寻找最优、最少的图块来显示图像。
4 OCI类库及OpenGL技术
4.1 OCI类库
OCI是指ORACLE数据库的一个调用接口(Oracle Call Interface),它封装了一组库函数,可通过在第3代程序设计语言(如C语言)进行调用,达到存取ORACLE数据库的目的。OCI开发实际上就是借助第3代程序设计语言实现结构化查询,以OCI库函数作为宿主函数的一个调用方法。这两者结合的程序兼具了C语言过程性优势与结构化SQL查询的同时,具有SQL语言的扩展性,开发的程序高度灵活。
在地形三维可视化实现过程中,Oracle数据库将数据量庞大的DEM数据以及影像数据以BLOB格式存储,在实现数据调度过程中具有快速、低耗的优势,其中数据调度过程如图4所示。
图4 Oracle数据调度流程
说明:
(1)由于DEM数据量大,Oracle在读取DEM数据过程中是分布进行的,首先读取常规数据(头文件:坐标、分辨率等),其次读取栅格数据,将栅格数值存放在临时文件内,最后从临时文件内部按照BLOB格式文件逐块写入对应的分块编号内。在绘制DEM模型过程中同样先读取其头文件信息,以数组的形式存储,通过循环分块,逐块绘制DEM模型。
(2)影像栅格文件的数据调度同DEM数据调度类似。
(3)在写入数据的过程中调用了OCI公共类AddNormalDataToDB()函数(常规数据指的是头文件信息)以及AddBLOBDataToDB()函数(BLOB数据值得是栅格数值)。
OCI类库常用公共函数如表2所示
表2 OCI常用公共函数
4.2 OpenGL技术
OpenGL作为开源图形库,源于SGI公司为本公司开发的IRIS GL,在跨平台移植过程中发展成为OpenGL。它包括100多个图形操作函数,被广泛应用与搭建场景以及交互软件的开发。OPenGL具有图形建模的大部分优点,如图5所示。
图5 OpenGL主要优点
OpenGL作为图形软件包,除了基本的点、线、多边形绘制函数外还提供复杂的三维物体以及复杂的曲线曲面函数,通过基本变换(平移、旋转等)以及投影变换、RGB(颜色)设置、Texture Mapping(纹理映射)、光照和材质设置、Double Buffering(双缓存动画)等,可以逼真地展示各类物体。其中OpenGL绘图流程如图6所示。
图6 OpenGL工作流程
OpenGL封装的画图函数标准以GL字母开头,主要引用函数如表3所示。
表3 OpenGL常用公共函数
5 案例分析
数据源选取从地理空间数据云平台下载的2007年影像数据以及标准格式的DEM数据,利用ENVI数据处理软件对2种数据进行空间校准以及影像纠正,利用Oracle11g数据库对数据进行了分块存储以及调度,三维显示如图7所示。
图7 地形可视化显示
6 结论
针对复杂地形,使用影像数据以及标准DEM数据,使用Oracle数据库以及OpenGL图形显示技术,研究了Oracle数据库对影像以及DEM等大数据的分块存储以及OpenGL的纹理映射实现可视化技术,初步实现了地形的三维可视化,为空间三维查询以及漫游研究工作奠定了基础。
[1]肖坤,闫浩文,张志华. 基于OpenGL的3ds数据可视化[J].地理空间信息,2014,12(05):82-84+10.
[2]王爱民,许志峰. 基于3DS MAX和OpenGL的遥操作机器人图形建模[J].工业仪表与自动化装置,2007(04):77-80.
[3]陈玉军,张琦,苏凡囤,等. 基于MFC的OpenGL仿真与3D模型的获取[J].中国制造业信息化,2005,34(04):103-104+107.
[4]曾照华,张永梅. 基于OpenGL的三维人脸标准模型[J].机械工程与自动化,2007(04):34-36.
[5]马林,程耀东,朱宗喜,等. 基于OpenGL的TIN构建方法研究[J].微型机与应用,2014,33(14):42-44.
[6]熊祖强,贺怀建,夏艳华. 基于TIN的三维地层建模及可视化技术研究[J].岩土力学,2007,28(09):1954-1958.
[7]张先为. 基于OpenGL的三维地形可视化研究[J].交通科技与经济,2008,46(02):75-76.
[8]吕希奎,易思蓉,何丽. OpenGL环境下的模型数据库管理与复杂三维建模[J].工程图学学报,2007(02):12-16.
[9]吴晓彦,顾韵华,张俊勇,等. 基于聚类和动态LOD的三维地形建模方法[J].计算机工程与设计,2015,36(02):469-475.
[10]郑晶晶,方金云,韩承德. 一种快速的DEM数据无损压缩算法[J].系统仿真学报,2010,22(10):2397-2403.
[11]吕希奎,易思蓉,韩春华. 大规模地形真三维可视化系统设计与实现[J].计算机应用研究,2008,25(02):603-606+609.
[12]韦波,王熙宇,杨东兴. Oracle Spatial三维模型存储与可视化[J].测绘通报,2014(11):88-91.
[13]凃云杰. Oracle数据库技术在煤矿安全监控中的应用[J].煤炭技术,2013,32(05):71-73.
[14]张男,唐波. 基于Oracle9i的遥感影像数据库技术研究与实现[J].山东科技大学学报(自然科学版),2006,25(04):76-79.
Application of Technologies of OpenGL and OCI in Terrain Modeling Visualization
YANG Shao-qiang, ZHANG Yong-bin, WANG Mo-ran
(College of Mining Engineering, North China University of Science and Technology, Tangshan Hebei 063009,China)
OpenGL; terrain modeling; OCI
In order to realize the 3D visualization of the spatial visualization in subsidence area of coal mine, and to solve displaying problem of the complex surface features differentiation in subsidence area, the organization form of DEM and image data was studied by software package of Open Graphics Library (OpenGL).The data were imported to Oracle database and stored in the database by data processing. The data schedule and visualization of 3D scene were realized by OCI class libraries and OpenGL visualization function.
2095-2716(2016)01-0072-06
2015-09-08
2015-11-30
河北省教育厅科学研究项目(编号ZD20131040)。
TP391.99
A