邱俊玲
(河南工业贸易职业学院信息工程系,河南郑州450000)
基于IDL编程语言实现大地坐标转换
邱俊玲
(河南工业贸易职业学院信息工程系,河南郑州450000)
由于实际测量时,所使用的仪器不具备自动统一在大地绝对坐标系的功能,采集的数据点是以测量点为中心的相对坐标,给研究带来了不小的麻烦.为了解决这一问题,借用某矿山的三维激光扫描数据,利用IDL编程语言实现相对坐标与大地绝对坐标的自动转换,自动转换程序大大节省了建模时间,并满足实际研究需要,以供后续研究人员参考.
IDL;数据处理;坐标转换
大地坐标系是地质测量中以参考椭球面为基准面的坐标系,主要由大地经度、纬度和高度构成.目前主流的大地坐标系有北京54坐标系、西安80坐标系、WGS-80坐标系等.在进行三维激光扫描测量时,扫描仪所测量的数据是以其扫描仪作为基准点的相对三维坐标值,移动位置进行多次测量后,就会造成数据坐标的混乱.目前很多地质软件可以实现模型拼接的功能,比如Polyworks、Geomagic等[1],测得的散乱目标数据通过软件进行模型重建、统一在同一坐标系下,即可呈现出原始模型,如同照片所投射的影像一样,甚至更清晰.但这样的模型并不具备任何研究价值,为了使目标物具有地质意义,研究人员需要将模型所在相对坐标系转换为大地绝对坐标系.现有的软件要想实现这一功能,有的价格比较昂贵,有的功能不能满足实际需求[2],迫切需要测量人员自己动手来实现.
IDL(Interactive Data Language)作为第四代可视化语言,由于其面向矩阵、语法简单等特点被广泛用于三维数据可视化、数值计算、三维图形建模、科学数据读取等方面[3].IDL是美国ITT公司开发的高级计算机编程语言,主要用于进行二维及多维数据可视化表现、分析及应用开发.具体来说,在地球科学、图像处理、GIS系统、软件开发、大学教学等领域,都能看到IDL的身影.
1.1 与多种编程语言对接
在功能上,IDL与VC一样拥有强大的菜单定制、消息传递、类定义等功能;对新手来说,IDL与VB一样拥有良好的可视化界面、通俗易懂的语言等特点;从可移植性上说,IDL有与JAVA一样的跨平台移植性;从熟悉度来说,IDL与FORTRAN的函数、子程序的调用,语言风格等很相似;从灵活性上说,IDL与MATLAB一样封装了大量的数学函数;从时代性上说,IDL提供了与OPENGL相媲美的二维、三维图形图像类.IDL,可应用于小程序的开发,又可用于大型三维图像的处理.
1.2 易用性和易扩展性
智能工具箱的开发是IDL发展的重要一步,工具箱主要包括iPlot、iSurface、iContour、iImage、iVolume等,方便使用者通过鼠标完成数据的可视化和分析工作.
1.3 极高的运算效率
由于采用矩阵技术,IDL不单具有高效的编程特点,同时可以自动支持多CPUs机制.
1.4 大数据处理
目前对大数据的处理要求越来越高,海量的数据带给编程语言更大的挑战.由于IDL完全面向矩阵,因此它可以轻松解决超大数据的处理.虽然目前硬件厂商一遍遍刷新自己的容量,宣称自己的计算机有多大的内存,但这实际上是对内存的管理而非一次开辟多大的矩阵,所以并不用担心IDL在现有硬件上的应用.
笔者借用某矿山的测量数据进行实验,数据采集是通过加拿大Optech公司的ILRIS非接触式三维激光扫描仪来完成的实景采集.其基本原理是:根据精密时钟控制编码器保证其同时获取发射出去的激光光束的水平方向角度α和垂直方向角度β,由脉冲激光发射到返回所用的时间计算得到距离观测值S,从获取扫描反射接收的激光强度,与经过校正的彩色相片相结合,得到对扫描点颜色灰度的匹配.对激光扫描仪而言,采样时是一般使用仪器自定义的坐标系统:即X轴在横向扫描面内,Y轴在横向扫描面内与X轴垂直,Z轴与横向扫描面垂直(如图1所示)[4-5].由此可得到目标点P的坐标公式为:
图1 扫描仪工作示意图
由扫描仪所在的位置作为目标原点,按照机器预先设置好的精度进行数据采集,采集它所目测的区域内物体的三维坐标值,并将坐标数据通过内置存储器进行存储.每一个测量地所测区域需要有重叠部分,以方便后续进行实物重现时的拼接.由于该次测量是在露天矿山内完成,实地景观接近,在实物拼接时很难找到标志物,故采用自己制作的纸质标靶作为人为标志(如图2).
整个数据采集只是繁杂工作的第一步,下面就面临大数据及数据误差的问题,为了保证模型重建的质量,测量者需要首先对数据进行预处理.其过程主要包括:噪声去除、多视拼接、数据精简等操作,在此不再赘述.
三维坐标实景数据采集后,通过标志物进行模型拼接,重现后的模型是统一在同一个相对坐标系下的矿山实景图.然而如果只是在相对坐标下,那么与数码相机拍照来的图片并没有太大区别,只有将所有坐标数据转换到大地坐标下,才有专业研究的价值.大地坐标是大地测量中参考椭球面为基准建立的坐标系.它的位置就不再是简单的X,Y,Z,而是有实际意义的经度、维度和高度.在相对坐标转大地坐标时,可以手动将所有点的坐标值进行一一修改,然而面对如此海量的数据,手动修改几乎是不可能的.那么如何将如此海量的数据自动进行坐标系的转换,就成了研究工作的重中之重.
图2 纸质标靶示意图
3.1 绝对坐标转换的原理
绝对坐标与相对坐标间的转换关系如下:(X,Y,Z)T=R(X',Y',Z')T+(ΔX,ΔY,ΔZ)T(1)其中,(X,Y,Z)T相当于大地坐标值,(X',Y',Z')T为相对坐标,R为待求的旋转矩阵,(ΔX,ΔY,ΔZ)T为待求的平移矩阵.
然后将坐标标准化,计算出两个坐标系的重心坐标:(Xg,Yg,Zg)和(X'g,Y'g,Z'g),以及公共点以重心为原点的重心化坐标:(珚X,珚Y,珚X)和(X',Y',Z').
将(2)代入(1)式可得:
根据罗德里格矩阵算法的思想,可设:R=
其中,I为单位矩阵,S为反对称矩阵.
可设为:
将(4)式、(5)式代入(3)式,即可求得旋转坐标R.
最后代入公式(1)即可求得平移矩阵(ΔX,ΔY,ΔZ)T[6-7].
3.2 坐标转换实例
根据这一原理,笔者通过对比,将坐标转换的非线性问题转化为矩阵转换的线性问题,这也正是IDL编程语言的优势所在.在计算时简化了三角函数和迭代运算,操作简单,实用性强,且易于编程实现.
该次转换是建立在相对坐标系的拼接已完成的基础上,而所有拼接后的原始坐标数据可通过拼接软件导出为TXT文本格式.利用罗德里格矩阵算法的原理,通过IDL语言进行编程,将导出的文件统一转换在大地坐标系下,完成坐标转换,最后生成新的文本文件,再导入地质软件中即可查看每一个测量点的大地坐标,并可将转换后的文件导入处理软件中查看及对比坐标误差.
利用IDL编程语言实现坐标转换的算法(如图3所示):以三个以上已知点大地坐标作为参考,输入已知大地坐标对应的相对坐标值,通过矩阵计算得到上面公式中的R和T,然后打开软件导出TXT文本文件进行转换,生成新的目标文本文件.
图3 IDL编程算法图示
表1 标记点坐标系转换对比表
通过几个已知的大地坐标点进行对比,可以看出已知点的实际坐标值与编程转换后的理论坐标值误差很小,基本控制在1.5m之内,完全可以满足研究的精度需要.同时由于IDL编程入门简单,一个小程序即可完成整个坐标系的转换,只要稍微有一些编程基础的人员即可轻松上手,可以被广大研究人员即使是非计算机专业人员所使用.
在当今大数据时代,研究人员完成测量工作进行后期数据处理时,往往会遇到各种问题,比如该文所提到的坐标系不一致的问题等.有些问题是可以通过手动逐个解决的,有些问题手动解决费时费力,而通过其他途径可以事半功倍.该文通过IDL编程语言实现的坐标转换程序,可操作性强、高效、便捷且误差较小,可以很好地实现不同大地坐标系之间的相互转换,而并不局限于相对坐标系与大地坐标系的转换.但是由于时间仓促、基础不足,该程序处于研发初期,还需要后续更好完善才能被广泛使用.
[1]罗大兵.逆向工程中数字化测量与点云数据处理[J].机械设计与制造,2005(9):56-58.
[2]邱俊玲.基于三维激光扫描技术的矿山地质建模与应用研究[D].中国地质大学,2012.
[3]张岚,杨斌,高德政.基于IDL的三维地质勘查方法[J].地理空间信息,2016,14(3):64-66.
[4]刘春.三维激光扫描对构筑物的采集和空间建模[J].工程勘察,2006(4):49-53.
[5]刘春,陈华云.激光三维遥感的数据处理与特征提取[M].北京:科学出版社,2010:21,29,33-35.
[6]徐荣礼,张钧.逆向工程中散乱点云数据处理关键技术研究[D].江南大学,2006.
[7]张钧.利用罗德里格矩阵确定三维表面重建中的绝对定向模型[J].红外与激光工程,1998,27(4):30-32.
TP312
A
1671-9476(2017)02-0131-03
10.13450/j.cnkij.zknu.2017.02.033
2017-02-18;
2017-03-02
邱俊玲(1987-),女,河南郑州人,助教,硕士,研究方向:计算机应用.