LAS文件旨在包含激光雷达(或其他)点云数据记录。这些数据通常会从软件(例如,由硬件供应商提供的)中输入这种格式,该软件结合了GPS、IMU和激光脉冲距离数据来生成 X X X、 Y Y Y和 Z Z Z点数据。数据格式的目的是提供一种开放的格式,允许不同的硬件和软件工具以一种通用的格式输出数据。
本文介绍LAS格式规范自最初1.0版本发布以来的第四次修订。
LAS 1.4版本摘要
“Unsigned Char”
改成了“Char”
。migration
迁移到 GitHub
offsets
)和字段大小,以支持全64位“LAS Domain Profile”
and“LAS Domain Profile Description”
)的定义LAS格式定义中使用的数据类型符合1999年的ANSI C语言规范(ANSI/ISO/IEC 9899:1999(“C99”))。
美国摄影测量与遥感学会(ASPRS)是LAS规范的所有者。该标准由ASPRS董事会领导的组织内部委员会维护。与本标准相关的问题可以直接发送到ASPRS:
[email protected] or [email protected]
LAS已于2018年被开放地理空间联盟(OGC24)认可为OGC社区标准。OGC版本的文件,连同有关LAS引用标准的前向资料,以及该文件在标准机构中的地位,可在以下网址找到:https://portal.opengeospatial.org/files/17-030r1。未来对阿拉伯国家联盟政府谘询委员会的认可及活动,请参阅:https://www.ogc.org/standards/community。
LAS该格式包含二进制数据,包括公共报头块、任意数量(可选)可变长度记录(VLRs)、点数据记录(Point data Records)和任意数量(可选)扩展可变长度记录(EVLRs)。所有数据都是小端格式。公共报头块包含泛型数据,如点编号和点数据边界。我们将文件的数据内容称为“有效负载”。
可变长度记录包含可变类型的数据,包括投影信息、元数据、波形包信息和用户应用程序数据。它们的数据有效负载被限制为65,535字节。
扩展可变长度记录(EVLRs)允许比可变长度记录(VLRs)更高的负载,并且它们具有可被追加到LASfile末尾的优点。例如,这允许向LASfile中添加投影信息,而不需要重写整个文件。
一个包含点记录类型4、5、9或10的LAS文件可能包含一个波形数据包块,该波形数据包块存储为任何扩展可变长度记录(EVLR)的有效负载。与其他的EVLR不同,波形数据包( the Waveform Data Packets
)(如果存储在文件内部)有一个偏移量(offset
)存储在公共头块(Public Header Block
)里。
LAS 1.4将文件规格从32位文件结构(最大值为: 2 32 − 1 ≡ 4 , 294 , 967 , 295 2^{32}− 1≡ 4, 294, 967, 295 232−1≡4,294,967,295≡ UINT32_MAX)
扩展到64位文件结构(最大值为: 2 64 − 1 2^{64}-1 264−1)。
LAS 1.1~LAS 1.3 的点记录类型为:0-5,坐标系为:GeoTIFF坐标参考系统。为了保持LAS 1.4具有放置LAS 1.1到LAS 1.3载荷的能力,有必要在LAS 1.4文件结构中复制一些字段。这些重复字段被命名为“Legacy xxx”
,其中“xxx”
表示字段的含义。
希望保持向后兼容性的LAS 1.4文件写入器必须同时维护同步中的遗留字段和等效的非遗留字段。然而,这是不可能的,如果点数超过UINT32_MAX
,在这种情况下,遗留字段必须设置为零。如果文件写入器没有保持向后兼容性,那么遗留字段必须总是设置为零。
如果一个非零的遗留字段和等效的LAS 1.4字段之间存在差异,LAS 1.4读取器应该使用遗留值来维护与从LAS 1.1到LAS 1.3读取器相同的行为。最佳实践是抛出一个信息性错误,以便可以修复文件。
LAS 1.4引入了将可变长度记录(VLRs)定义为扩展可变长度记录(EVLRr)的选项。希望保持向后兼容性的LAS 1.4文件编写器必须只使用VLRs。
对于LAS 1.4引入的新点类型(6-10),使用Well Known Text (WKT)作为所需的坐标参考系统表示法。对于0-5类型的点,仍然使用GeoTIFF。
如果将一个“WKT”位设置为true添加到公共报头区块的全局编码标志,那么该文件的坐标系就位于WKT 的可变长度记录(EVLR, VLR)中。如果希望对0-5类型的遗留LAS保持向后兼容性,则必须添加一个GeoTIFF VLR来表示文件的坐标系,并确保WKT位为false。
文件中有多个GeoTIFF或多个WKT 则是文件错误。写入器可以通过“取代”现有的坐标系 (E)VLR来添加一个新的坐标系 EVLR。
LAS格式定义中使用了以下数据类型。这些数据类型符合1999年的ANSI C语言规范(ANSI/ISO/IEC 9899:1999(“C99”))。
• char (1 byte)
• unsigned char (1 byte)
• short (2 bytes)
• unsigned short (2 bytes)
• long (4 bytes)
• unsigned long (4 bytes)
• long long (8 bytes)
• unsigned long long (8 bytes)
•float (4 byte IEEEfloating point format)
• double (8 byte IEEEfloating point format)
• string (a variable series of 1 byte characters, ASCII encoded, null-terminated)
注意:如果所有字节都被使用,那么固定长度字符数组将不会以空字符结束。例如,LAS报头中的系统标识符和生成软件、可变长度记录中的用户ID或描述、以及一个额外字节描述符的名称。
注意:公共报头块中任何不需要或不使用的字段都必须用0进行填充。
文件签名必须包含四个字符“LASF”,这是LAS规范所要求的。这四个字符可以通过用户软件作为快速查看初始确定文件类型进行检查。
该字段应该设置为0~65535之间的值。当值为0时,表示没有分配ID,这是一个由多个独立源聚合而成的LAS 文件的标准(例如,由多个块合并而成的块)。
这个方案允许一个项目包含多达65535个不同的数据来源。数据来源可以包括数据存储库ID或时间一致数据的原始集合,如机载系统的航线或出击号,移动系统的航路号,或静态系统的设置标识符。
包含完整的全局唯一标识符(GUID)的四个字段现在保留作为项目标识符(Project ID)使用。这个领域仍然是可选的。项目ID的分配时间由处理软件决定。项目ID对于与唯一项目相关联的所有文件应该是相同的。通过分配一个项目ID和使用一个文件源ID(上面定义的),项目中的每个文件和文件中的每个点都可以唯一地、全局地标识。
版本号由主字段和次字段组成。主字段和次字段组合成表示当前规范本身格式号的数字。例如,规范编号1.4将在主字段中包含1,在次字段中包含4。应该指出的是,阿拉伯国家联盟工作组对主要版本号或次要版本号没有任何特殊意义。
这些信息是描述生成软件本身的ASCII数据。该字段提供了一种机制,用于指定LAS文件创建过程中使用的生成软件包和版本 (例如,“TerraScan V-10.8”
,“REALM V-4.2”
, 等)。如果字符数小于32个字符,则剩余数据必须为空。
Day:是一个unsigned short
类型的值,表示文件创立的时间,以格林尼治标准时间(GMT)计算,1月1日是第一天。
文件创建的年份,用四位数字表示。
公共报头块本身的大小(以字节为单位)。对于LAS 1.4,这个大小是375字节。如果报头通过在报头末尾添加数据来扩展LAS规范的新订,则报头大小文件将被更新为新的报头大小。公用报头块不能被用户扩展。
从文件开始到第一个点记录的第一个字段的实际字节数 。 如果任何软件向可变长度记录中添加/删除数据,则必须更新此数据的偏移量。
该字段包含当前存储在点数据记录之前的文件中的VLRs的数量。当VLRs数量发生变化时,需要更新此编号。
点数据记录表示文件中包含的点数据记录的类型。LAS 1.4定义了类型0到10。这些类型在点数据记录一节中已有介绍。
点数据记录的大小,以字节为单位。所有的点数据记录在一个LAS文件中必须是相同的类型,因此具有相同的长度。如果指定的大小大于point format类型隐含的大小(例如,32字节而不是类型1的28字节),则剩余的字节是用户特定的“额外字节”。这种“额外字节”的格式和含义可以用VLR来描述。
UINT32_MAX
,并且点数数据记录格式小于6。否则,它必须被设为零。 如果文件保持原有的兼容性,这些字段包含一个数组,每个返回的总点数记录,点数不大于UINT32_MAX
,点数数据记录格式小于6。否则,数组中的每个成员都必须设为0。第一个值将是第一次返回的记录总数,第二个包含返回2的记录总数,以此类推,直到5次返回。
X , Y , Z X,Y,Z X,Y,Z是以long
类型进行存储的,缩放因子字段包含一个double
类型的浮点值,用于缩放点记录中相应的 X X X、 Y Y Y、 Z Z Z。 X , Y , Z X,Y,Z X,Y,Z的值必须乘上缩放因子才能得到 x y z xyz xyz的实际坐标。例如,如果 X X X、 Y Y Y和 Z Z Z的真实坐标值包含两位小数,那么 X X X、 Y Y Y、 Z Z Z每个维度的缩放系数则都为0.01。
offset
字段表示点记录的总体偏移量。真实坐标与点记录的转换公式为:
{ X c o o r d i n a t e = ( X r e c o r d ) × X s c a l e + X o f f s e t , Y c o o r d i n a t e = ( Y r e c o r d ) × Y s c a l e + Y o f f s e t , Z c o o r d i n a t e = ( Z r e c o r d ) × Z s c a l e + Z o f f s e t , \begin{cases} X_{coordinate}=(X_{record})\times X_{scale}+X_{offset},\\ Y_{coordinate}=(Y_{record})\times Y_{scale}+Y_{offset},\\ Z_{coordinate}=(Z_{record})\times Z_{scale}+Z_{offset},\\ \end{cases} ⎩ ⎨ ⎧Xcoordinate=(Xrecord)×Xscale+Xoffset,Ycoordinate=(Yrecord)×Yscale+Yoffset,Zcoordinate=(Zrecord)×Zscale+Zoffset,
式中, X r e c o r d X_{record} Xrecord、 Y r e c o r d Y_{record} Yrecord、 Z r e c o r d Z_{record} Zrecord为Li-DAR点云数据中的记录值。
max和min是未进行缩放的实际坐标的最值。
Start of Waveform Data Packet Record
这个值提供了从LAS文件开始到波形数据包记录的第一个字节的偏移量(以字节为单位)。注意,这将是波形数据包头的第一个字节。如果没有波形记录包含在文件中或者它们被存储在外部,这个值必须为零。需要注意的是,LAS 1.4允许多个扩展可变长度记录(EVLR),波形数据包记录不一定是文件中的第一个EVLR。
Start of First Extended Variable Length Record
这个值提供了从LAS文件开始到第一个EVLR的第一个字节的偏移量(以字节为单位)。
该字段包含当前数量的EVLRs包括波形数据包记录,存储在文件后的点数据记录。如果EVLRs的数量发生变化,则必须更新此编号。如果没有EVLRs,则该值为零。
这个字段包含文件中点数记录的总数。
这些字段包含每次返回的总点数记录的数组。第一个值将是第一次返回的记录总数,第二个包含返回2的记录总数,以此类推,直到15次返回。请注意,无论旧模式的意图如何,这些字段必须始终被正确填充。
未完待续!!!