Rust与点云1-1
Rust 与点云
Rust 的热度越来越高。我准备写专栏,分享如何使用 Rust 处理点云。
1. LAS/LAZ 文件
LAS 是一种二进制格式文件,这意味着我们无法通过双击直接打开并读取它。LAZ 是基于 LAS 的压缩格式,所以这里以 LAS 为例进行介绍。
LAS 文件由三个部分组成:
- 公共头块(Public Header Block,即 header)
- 变长记录(Variable Length Records,VLR)
- 点数据记录(Point Data Record)
LAS 1.4 还额外定义了一个特殊的部分:扩展变长记录(EVLR)。
1.1 公共头块(Public Header Block)
这一部分主要存储元数据,例如点数、创建日期、点格式等。
如果你想了解它包含的全部内容,可以直接询问 AI,它会给你满意的答案。
1.2 变长记录(VLR)
在这一部分中,最重要的是地理坐标信息(坐标参考系统)。
1.3 点数据记录(Point Data Record)
存储点记录的部分,顾名思义。
2. Rust
下面介绍如何在 Rust 中使用 las 库读取 LAS 文件。
在开始之前,你需要安装 las 库,参考:https://github.com/gadomski/las-rs/tree/main
2.1 读取头块
直接读取头块,看看里面有什么。

header 是一个结构体,包含许多方法和成员。如下图所示,这里使用 number_of_points() 和 date() 方法。

答案就在这里!


该 LAS 文件共有 2,825,788 个点,创建于 2026-06-30。
另外header 结构体还有其他方法和成员,具体参考如下:
https://github.com/gadomski/las-rs/blob/main/src/header/mod.rs
2.2 获取地理坐标信息
我们可以从 VLR 块中获取地理坐标信息。

特别注意,需要对得到得数字进行“解码”才可以得到文字版本得答案,因为本身las是一个binary格式文件,并不是ascii文本文件。
输出结果为:
"PROJCS["Transverse_Mercator_South_Orientated",GEOGCS["Datum based upon the WGS84 ellipsoid",DATUM["Based on WGS84 spheroid",SPHEROID["WGS84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9182"]]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",119],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9051"]],AXIS["Easting",EAST],AXIS["Northing",NORTH]]\0"
这正是我需要的信息。出于安全考虑,此处展示的结果已做随机修改。
总结
以上就是全部内容。本文简单介绍了如何使用 Rust 读取 LAS 文件,并展示了一些示例代码。如果你仍有疑问,可以把本页面加载给 AI,直接与它交流。
谢谢!

浙公网安备 33010602011771号