当前位置: 首页 > news >正文

点云LAS格式分析

目录

  • 1 引言
    • <font color="#dd00dd">1.1 目的、范围和适用性
      • <font color="#dd00dd">1.1.1 LAS 1.4修订历史
      • <font color="#dd00dd">1.1.2 LAS 1.4 特性
    • <font color="#dd00dd">1.2 规范性
    • <font color="#dd00dd">1.3 权威性
      • <font color="#dd00dd">1.3.1 ASPRS
      • <font color="#dd00dd">1.3.2 OGC
  • 2 LAS格式定义
    • <font color="#dd00dd">2.1 遗留的兼容性(LAS 1.1 - LAS 1.3)
    • <font color="#dd00dd">2.2 坐标参考系统表示
    • <font color="#dd00dd">2.3 数据类型
    • <font color="#dd00dd">2.4 Public Header Block(公共头块)
    • <font color="#dd00dd">2.5 Variable Length Records(可变长记录)

1 引言

1.1 目的、范围和适用性

  LAS文件旨在包含激光雷达(或其他)点云数据记录。这些数据通常会从软件(例如,由硬件供应商提供的)中输入这种格式,该软件结合了GPS、IMU和激光脉冲距离数据来生成 X X X Y Y Y Z Z Z点数据。数据格式的目的是提供一种开放的格式,允许不同的硬件和软件工具以一种通用的格式输出数据。
  本文介绍LAS格式规范自最初1.0版本发布以来的第四次修订。

1.1.1 LAS 1.4修订历史

  LAS 1.4版本摘要

  • R11-批准版本(2011年11月)
  • R12-勘误表(2012年6月)-排印更正:
    –更正了公共头大小(描述性段落为375字节)。
    –修正了两个扫描角度等级的实例,由原来的“Unsigned Char” 改成了“Char”
  • R13-增加了域配置文件(Domain Profile)部分(2013年7月)。
  • R14-多个更新(2019年3月):
    –从migration 迁移到 GitHub
    –多个大写和拼写纠正。
    –更新了ASPRS联系信息。
    –增加了额外分类信息(19-22)
    –增加了OCG支持
    –部分功能重组等。

1.1.2 LAS 1.4 特性

  • 扩展偏移量(offsets)和字段大小,以支持全64位
  • 每个输出脉冲最多支持15次返回
  • 扩展了点云分类的范围,支持256个分类
  • 几个新的ASPRS标准类的定义
  • 扩展扫描角度字段到2字节,以支持更精细化的角度分辨率
  • 增加了一个传感器通道位域,以支持移动地图系统
  • 为坐标参考系统增加了已知文本(WKT)定义
  • 增加一个重叠位,在保持类定义的同时,允许在重叠区域指示脉冲
  • 增加了一个(可选的)额外字节可变长度记录来描述每个点存储的“额外字节”
  • 增加了“LAS域配置文件”和“LAS域配置文件描述”(“LAS Domain Profile” and“LAS Domain Profile Description”)的定义
  • 增加官方LAS维基的链接:https://github.com/ASPRSorg/LAS/wiki

1.2 规范性

  LAS格式定义中使用的数据类型符合1999年的ANSI C语言规范(ANSI/ISO/IEC 9899:1999(“C99”))。

1.3 权威性

1.3.1 ASPRS

  美国摄影测量与遥感学会(ASPRS)是LAS规范的所有者。该标准由ASPRS董事会领导的组织内部委员会维护。与本标准相关的问题可以直接发送到ASPRS:

  • Online at https://github.com/ASPRSorg/LAS
  • By phone at 301-493-0290
  • By email at las@asprs.org or asprs@asprs.org
  • By mail at 425 Barlow Place, Suite 210, Bethesda, Maryland 20814-2160.

1.3.2 OGC

  LAS已于2018年被开放地理空间联盟(OGC24)认可为OGC社区标准。OGC版本的文件,连同有关LAS引用标准的前向资料,以及该文件在标准机构中的地位,可在以下网址找到:https://portal.opengeospatial.org/files/17-030r1。未来对阿拉伯国家联盟政府谘询委员会的认可及活动,请参阅:https://www.ogc.org/standards/community。

2 LAS格式定义

  LAS该格式包含二进制数据,包括公共报头块、任意数量(可选)可变长度记录(VLRs)、点数据记录(Point data Records)和任意数量(可选)扩展可变长度记录(EVLRs)。所有数据都是小端格式。公共报头块包含泛型数据,如点编号和点数据边界。我们将文件的数据内容称为“有效负载”。
  可变长度记录包含可变类型的数据,包括投影信息、元数据、波形包信息和用户应用程序数据。它们的数据有效负载被限制为65,535字节。
  扩展可变长度记录(EVLRs)允许比可变长度记录(VLRs)更高的负载,并且它们具有可被追加到LASfile末尾的优点。例如,这允许向LASfile中添加投影信息,而不需要重写整个文件。

表1:LAS 1.4格式定义

在这里插入图片描述
  一个包含点记录类型4、5、9或10的LAS文件可能包含一个波形数据包块,该波形数据包块存储为任何扩展可变长度记录(EVLR)的有效负载。与其他的EVLR不同,波形数据包( the Waveform Data Packets )(如果存储在文件内部)有一个偏移量(offset )存储在公共头块(Public Header Block)里。

2.1 遗留的兼容性(LAS 1.1 - LAS 1.3)

  LAS 1.4将文件规格从32位文件结构(最大值为: 2 32 − 1 ≡ 4 , 294 , 967 , 295 2^{32}− 1≡ 4, 294, 967, 295 23214,294,967,295UINT32_MAX) 扩展到64位文件结构(最大值为: 2 64 − 1 2^{64}-1 2641)。
  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。

2.2 坐标参考系统表示

  对于LAS 1.4引入的新点类型(6-10),使用Well Known Text (WKT)作为所需的坐标参考系统表示法。对于0-5类型的点,仍然使用GeoTIFF。
  如果将一个“WKT”位设置为true添加到公共报头区块的全局编码标志,那么该文件的坐标系就位于WKT 的可变长度记录(EVLR, VLR)中。如果希望对0-5类型的遗留LAS保持向后兼容性,则必须添加一个GeoTIFF VLR来表示文件的坐标系,并确保WKT位为false。

表2:坐标参考系统表示

在这里插入图片描述
  文件中有多个GeoTIFF或多个WKT 则是文件错误。写入器可以通过“取代”现有的坐标系 (E)VLR来添加一个新的坐标系 EVLR。

2.3 数据类型

  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或描述、以及一个额外字节描述符的名称。

2.4 Public Header Block(公共头块)

表3:Public Header Block

在这里插入图片描述
接上表
在这里插入图片描述

注意:公共报头块中任何不需要或不使用的字段都必须用0进行填充。

  • File Signature

  文件签名必须包含四个字符“LASF”,这是LAS规范所要求的。这四个字符可以通过用户软件作为快速查看初始确定文件类型进行检查。

  • File Source ID

  该字段应该设置为0~65535之间的值。当值为0时,表示没有分配ID,这是一个由多个独立源聚合而成的LAS 文件的标准(例如,由多个块合并而成的块)。
  这个方案允许一个项目包含多达65535个不同的数据来源。数据来源可以包括数据存储库ID或时间一致数据的原始集合,如机载系统的航线或出击号,移动系统的航路号,或静态系统的设置标识符。

  • Global Encoding
      这是一个位域,用于指示文件的某些全局属性。在LAS 1.2(引入了这个字段的版本)中,只有低位被定义(这是位,如果设置了,无符号整数的值为1)。这个位域被定义为:
表3:Global Encoding– Bit Field Encoding

在这里插入图片描述

  • Project ID (GUID Data)

  包含完整的全局唯一标识符(GUID)的四个字段现在保留作为项目标识符(Project ID)使用。这个领域仍然是可选的。项目ID的分配时间由处理软件决定。项目ID对于与唯一项目相关联的所有文件应该是相同的。通过分配一个项目ID和使用一个文件源ID(上面定义的),项目中的每个文件和文件中的每个点都可以唯一地、全局地标识。

  • Version Number

  版本号由主字段和次字段组成。主字段和次字段组合成表示当前规范本身格式号的数字。例如,规范编号1.4将在主字段中包含1,在次字段中包含4。应该指出的是,阿拉伯国家联盟工作组对主要版本号或次要版本号没有任何特殊意义。

  • System Identifier
      版本1.0规范假设LAS文件是由硬件传感器收集的唯一结果。后续版本认识到,文件通常是提取、合并或修改现有数据文件的结果。因此系统ID变成:
表5:System Identifier

在这里插入图片描述

  • Generating Software

  这些信息是描述生成软件本身的ASCII数据。该字段提供了一种机制,用于指定LAS文件创建过程中使用的生成软件包和版本 (例如,“TerraScan V-10.8”,“REALM V-4.2”, 等)。如果字符数小于32个字符,则剩余数据必须为空。

  • File Creation Day of Year

  Day:是一个unsigned short类型的值,表示文件创立的时间,以格林尼治标准时间(GMT)计算,1月1日是第一天。

  • File Creation Year

  文件创建的年份,用四位数字表示。

  • Header Size

  公共报头块本身的大小(以字节为单位)。对于LAS 1.4,这个大小是375字节。如果报头通过在报头末尾添加数据来扩展LAS规范的新订,则报头大小文件将被更新为新的报头大小。公用报头块不能被用户扩展。

  • Offset to Point Data

  从文件开始到第一个点记录的第一个字段的实际字节数 。 如果任何软件向可变长度记录中添加/删除数据,则必须更新此数据的偏移量。

  • Number of Variable Length Records

  该字段包含当前存储在点数据记录之前的文件中的VLRs的数量。当VLRs数量发生变化时,需要更新此编号。

  • Point Data Record Format

  点数据记录表示文件中包含的点数据记录的类型。LAS 1.4定义了类型0到10。这些类型在点数据记录一节中已有介绍。

  • Point Data Record Length

  点数据记录的大小,以字节为单位。所有的点数据记录在一个LAS文件中必须是相同的类型,因此具有相同的长度。如果指定的大小大于point format类型隐含的大小(例如,32字节而不是类型1的28字节),则剩余的字节是用户特定的“额外字节”。这种“额外字节”的格式和含义可以用VLR来描述。

  • Legacy Number of Point Records
      这个字段包含文件中总点数记录,如果文件是保持传统兼容性,点数不大于UINT32_MAX,并且点数数据记录格式小于6。否则,它必须被设为零。
  • Legacy Number of Points by Return

  如果文件保持原有的兼容性,这些字段包含一个数组,每个返回的总点数记录,点数不大于UINT32_MAX,点数数据记录格式小于6。否则,数组中的每个成员都必须设为0。第一个值将是第一次返回的记录总数,第二个包含返回2的记录总数,以此类推,直到5次返回。

  • X, Y, and Z Scale Factors

   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。

  • X, Y, and Z Offsets

  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 and Min X, Y, and Z

  max和min是未进行缩放的实际坐标的最值。

  • Start of Waveform Data Packet Record
      这个值提供了从LAS文件开始到波形数据包记录的第一个字节的偏移量(以字节为单位)。注意,这将是波形数据包头的第一个字节。如果没有波形记录包含在文件中或者它们被存储在外部,这个值必须为零。需要注意的是,LAS 1.4允许多个扩展可变长度记录(EVLR),波形数据包记录不一定是文件中的第一个EVLR。

  • Start of First Extended Variable Length Record

  这个值提供了从LAS文件开始到第一个EVLR的第一个字节的偏移量(以字节为单位)。

  • Number of Extended Variable Length Records

  该字段包含当前数量的EVLRs包括波形数据包记录,存储在文件后的点数据记录。如果EVLRs的数量发生变化,则必须更新此编号。如果没有EVLRs,则该值为零。

  • Number of Point Records

  这个字段包含文件中点数记录的总数。

  • Number of Points by Return

  这些字段包含每次返回的总点数记录的数组。第一个值将是第一次返回的记录总数,第二个包含返回2的记录总数,以此类推,直到15次返回。请注意,无论旧模式的意图如何,这些字段必须始终被正确填充。

2.5 Variable Length Records(可变长记录)

未完待续!!!

相关文章:

  • 关于我的家乡html网页设计完整版,10个以家乡为主题的网页设计与实现
  • 有营养的算法笔记(二)
  • 10.5 - 每日一题 - 408
  • 递归、分治算法刷题笔记
  • 微服务架构秘籍:SpringCloud+SpringCloud Alibaba,全网疯传
  • HDLbits exercises 10(LATCHES AND FLIP-FLOPS后半部分题)
  • MySQL经典练习题+解题思路(四)
  • 大三开学,百度面试感受
  • 【图神经网络实战】深入浅出地学习图神经网络GNN(上)
  • 国庆旅游3天,Python 把我的疲倦治愈了
  • 数据结构与算法——算法和算法分析
  • Qt+ECharts开发笔记(五):ECharts的动态排序柱状图介绍、基础使用和Qt封装Demo
  • 论文笔记系列:主干网络(三)-- VGG
  • 自己制作并发布720°VR全景图
  • JWT——跨域认证解决方案
  • 【React系列】如何构建React应用程序
  • 【刷算法】从上往下打印二叉树
  • 08.Android之View事件问题
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • CSS3 变换
  • HTTP请求重发
  • JavaScript设计模式系列一:工厂模式
  • js中的正则表达式入门
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 不上全站https的网站你们就等着被恶心死吧
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 当SetTimeout遇到了字符串
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 回流、重绘及其优化
  • 聊聊directory traversal attack
  • 区块链分支循环
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • Mac 上flink的安装与启动
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #laravel 通过手动安装依赖PHPExcel#
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (175)FPGA门控时钟技术
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (TOJ2804)Even? Odd?
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)jQuery 基础
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)Oracle存储过程编写经验和优化措施
  • (状压dp)uva 10817 Headmaster's Headache
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .mysql secret在哪_MySQL如何使用索引
  • .NET 8.0 发布到 IIS