LAS格式的解析与转换
孙爱怡;王健
learn的用法
【摘 要】本文主要探讨LAS数据结构的发展历程,在分析已有四种版本的基础上,探讨LAS标准发展趋势,并采用C++语言对该格式的LiDAR数据进行读取和转换试验,检验了LAS格式的效率,并为以后的LAS格式数据处理提供参考.
山顶洞人英文【期刊名称】《全球定位系统》
【年(卷),期】2016(041)002
【总页数】4页(P115-117,124)
【关键词】点云数据;数据格式;LAS;格式分析;数据提取
【作 者】孙爱怡;王健christmas in my heart歌词
【作者单位】山东科技大学测绘科学与工程学院,青岛266590;山东科技大学测绘科学与工程学院,青岛266590
【正文语种】中 文
【中图分类】P237
随着空间数据应用领域的不断扩大,对获取准确可靠空间数据应用领域的不断扩大,对获取准确可靠空间数据的要求也越来也高。传统的摄影测量因为生产周期长、费用高、效率低、高程点获取的密度低,已不适应当前信息社会的需要。而能够精确、快速地获取地面三维数据的机载激光雷达(LiDAR)作为一种经济可靠的技术随之孕育而生。始于20世纪70年代后期,是一种集激光、全球定位系统(GPS)和惯性导航系统(INS)三种技术于一身的系统,是一种主动遥感技术,用于获得数据并生成精确的DEM、DTM、地表附着物等信息[1]。它可以实现空间三维坐标的同步、快速、精确地获取,并根据实时摄影的数码相片,通过计算机重构来实现实体或场景目标的3D数据模型,再现客观事物的实时的、真实的形态特性,为快速获取空间信息提供了简单有效手段。
因为LiDAR是由多种设备组成的复杂系统,其获取的数据也有很多种,数据产品丰富,包含三维激光点云数据、高清晰数码影像等多种数据形式,能真实直观地反映实际地形地貌[2],而且信息获取时的数据流程也比较复杂。目前原始数据的获取和激光脚点坐标解算,精度控制
等都由硬件生产厂家在提供原始数据时进行的,但因为用户不同,他们对数据的要求也不同,有时硬件厂家提供的数据不满足要求。以往LiDAR点云数据格式通常是由采集和处理LiDAR数据的硬(软)件厂商提供,常见的有:Leica 公司的 Pts,Ptx存储格式,由TerraScan软件处理后的 Bin,Ts存储格式[3]。目前国际上常用的LiDAR数据存储格式包括ASCⅡ文本、栅格以及自定义二进制格式等[4]。ASCⅡ文本直接将LiDAR点的X、Y、Z坐标转换成ASCⅡ码存储,占用空间较大,数据长度不固定难以建立索引;栅格文件格式是一种成熟的地理数据存储方法,但由于LiDAR 数据为离散点,如果采用栅格方式存储,需要对原始数据进行内插,可能造成有用信息的丢失,影响了原始数据的精度[5];而一些硬件厂商采用的自定义二进制记录格式往往只是针对特定的硬件设备和数据处理软件,难以实现数据共享,且通用性较差,而且大量的点云数据对空间的占用也很巨大[6]。有的提供原始的三维离散点云数据,有的提供进行内插后的格网数据,有的提供包含多次回波信息和回波强度信息,而有的不提供回波次数和强度信息。制定一个机载激光雷达数据标准,规范机载数据格式,使机载LiDAR数据能够被数据后处理的软件所通用,对机载LiDAR在各个领域的广泛应用具有很大意义。为了方便不同的硬件厂商、软件厂商和用户之间进行数据交换和共享,美国摄影测量与遥感学会(ASPRS)机构下的 LiDAR 专业委员会于 2003 年发布了标准 LiDAR 数据格式 LAS.
在经过修改后的2.0版本发布前,一个完整的LAS文件格式由三部分组成,分别是公共头,变长记录和LiDAR点集记录[7]。这样组织的好处是在文件头部分可以用来记录数据的一些基本信息,如点数、数据范围等等。而在变长记录中存储数据的投影信息,元数据信息及用户自定义信息等。最后的点集坐标数据就是LiDAR 真实的地物三维数据。2.0版本的LAS数据则增加了点记录元数据块,变为由四部分构成。在先前的基础上拓展了数据规范,这种拓展向用户提供一种更加开放的格式,它增加了点记录元数据块,将地物点的属性统一在这部分描述,同时加入了用户自定义的许可,用户可以按照规范增加自己需求的文件格式,是LAS 中比较灵活的部分。表1示出了1.1版本与2.0版本版本格式的异同。
1.1 公共头
公共头用来记录数据集的基本信息。如LiDAR点总数,数据范围,LiDAR 点格式,变长记录总数等。由于一个LAS文件可能是由硬件采集的数据直接生成的或是对已有数据进行提取、融合、修改后得到的,因此公共头中还记录了LAS文件的生成方式。
针对LiDAR数据多返回的特点,公共头还记录了最多可达5次返回的每次返回的LiDAR点总数。公共头中还记录了X、Y、Z方向的比例尺因子(scale)和偏移值(offt),这样能够减少每
条点记录的长度(LiDAR 点集记录中采用long 型记录三维坐标),而且LiDAR点云数据的真实坐标可以通过下列公式得到:
1.2 变长记录
碧昂丝演唱会变长记录区位于公共文件头去之后,用来记录数据的投影信息、元数据信息以及用户自定义信息等,是LAS格式中最灵活的部分。每条变长记录包括固定的变长记录头和灵活的扩展域两部分。一条变长记录的长度=变长记录头长度+扩展域长度。在其中包含一些元数据,如点云数据的坐标系信息,用于判断每条变长记录起始位置的记录标签,运用字符串来记录变长记录的用户ID和通过LAS格式来确定的记录ID等。
watchmen
点集记录部分保存了大量的LiDAR脚点信息,是LAS文件的核心,记录了每个离散点云的三维坐标和相关属性。如图1所示。LAS支持的LiDAR 点记录格式有100种,从Format 0~Format 99.在同一个LAS文件中,只有一种LiDAR点格式。而且要与公共头中的点格式一致。Format 0是基本的LiDAR 点记录格式,其他的点格式都是以Format 0为基础进行扩展的。如目前常用的Format 1格式就是在Format 0的基础上增加了一条属性来记录每个脚点的GPS时间。这样可保证LiDAR点格式中属性记录的灵活性和可扩展性。Format 0格式的
点记录,包含多条基本属性,如空间X、Y、Z坐标,激光反射强度值,当前点的分类号,当前激光脉冲的回波总数,当前脚点属于第几次返回等。考虑到LiDAR按条带进行扫描的特点,在Format 0的点记录中,还包括有当前激光器扫描角度和当前点是否为条带边缘点等信息(这些信息的记录有助于在后继处理中进行条带间数据的匹配和拼接)。
目前应用较广的版本分别是 LAS1.0,LAS1.1,LAS1.2,LAS1.3,LAS1.4,LAS2.0.LAS 逐渐成为 LiDAR 数据处理的一种行业标准。
基于上述对LAS格式的解析,选取某实验区域进行数据处理,该实验区域包含建筑物、道路、植被等典型地物,利用C++编程语言调用Liblas类库,实现二进制的LAS2.0版本的数据到txt格式数据的转换,并从中获取可用信息。部分程序如下:
#include "stdafx.h"
abab式词语积累#include "liblas/lasreader.h"martina hingis
///#include<stdio.h>
#include <string.h>
//#include <stdlib.h>
美国预科#include <iomanip>
#include<iostream>
#include<fstream>
using namespace std;
#include<crtdbg.h>//检测内存泄漏
#define m_StrOpenPath_T("F:\\test.las")
int_tmain(intargc,_TCHAR* argv[])
FILE* flas;
amg什么意思_tfopen_s(&flas,m_StrOpenPath, _T("rb"));
LASreaderreadin;
背诵为王readin.open(flas);
//read data
intnPts=readin.header.number_of_point_records;
doublemaxx=readin.header.max_x;
double minx=readin.header.min_x;
doublemaxy=readin.header.max_y;
doubleminy=readin.header.min_y;
doublemaxz=readin.header.max_z;
doubleminz=readin.header.min_z;
可以获得该区域的点数为23 265,平均点密度为1.364,强度值的范围从 0~ 223,图2示出了程序运行过程,图3示出了运行结果,可以直观地获取点位信息。
随着机载激光雷达系统的不断发展,其标准数据格式(LAS)也在不断改进更新。因此在分析LAS2.0数据结构的基础上,将常见的软件所不能进行读取的LAS2.0版本的文件转换成txt文件,更加清楚直观的获取点云点云数据的坐标、分类、数据来源等信息。以便进行更加直观的进行分析,为日后的LiDAR数据处理提供参考,以及进行其他方面的利用。
[4] 张靖,高伟.LAS格式解析及其扩展域的应用[J].测绘科学,2008,33(6):154-155.
孙爱怡 (1989-),女,山东潍坊人,硕士生,主要研究方向为现代测量数据处理理论及其应用。
王健 (1974-),女,山东沂水人,博士,副教授,主要从事现代测量数据处理和LiDAR技术等方面的教学及研究工作。