跳转至

使用 ENVI PointCloud API 在 IDL 中访问 3-D 点云数据

原文链接: https://www.nv5geospatialsoftware.com/Learn/Blogs/Blog-Details/accessing-3-d-point-cloud-data-in-idl-using-the-envi-pointcloud-api

13168 给这篇文章评分:

暂无评分

使用 ENVI PointCloud API 在 IDL 中访问 3-D 点云数据

匿名作者 2015年11月5日,星期四

以下是一个使用 ENVI 5.3 中包含的新 PointCloud API 的示例。该 API 可以方便地访问以 LAS 格式存储的 3-D 数据。数据和元数据可以通过 IDL 访问。新的 API 不仅包含读取和写入 LAS 格式 3-D 点云数据的功能(其功能远不止于此)。获取读取访问权限有两种根本不同的方式。第一种方法是简单地按照点在 LAS 文件中的存储顺序读取点。这通常是 LiDAR 传感器收集点的顺序,但点云数据也可能来自其他来源。访问点云数据的第二种方法是创建一个 ENVIPointCloud 项目,这意味着点将根据空间瓦片进行空间排序,以便可以基于空间查询方法快速索引。排序过程在最初需要一点时间,但一旦完成,就可以基于空间查询方法快速检索点。

第一个示例展示如何使用简单的、非排序的 API 调用访问点云数据。

ENVI> nv = envi(/current)

ENVI> pc=nv.QueryPointCloud('C:\Users\borsholm\Downloads\Lincoln.laz')

ENVI> print,pc

ENVIPOINTCLOUDQUERY <717772>

DATA_RANGE                = 692204.97,       4519668.7,       340.79242,       695331.36,       4522642.4,       485.24673

NPOINTS                   = 9278073

SPATIALREF                = !NULL

URI                       = 'C:\Users\borsholm\Downloads\Lincoln.laz'

ENVI> pc.metadata

ENVIPOINTCLOUDMETADATA <718218>

File Creation Day         = 0

File Creation Year        = 0

File Source ID            = 0

Generating Software       = 'Lidar Explorer by ProLogic, Inc.'

Global Encoding           = 0

Max X                     = 695331.36

Max Y                     = 4522642.4

Max Z                     = 485.24673

Min X                     = 692204.97

Min Y                     = 4519668.7

Min Z                     = 340.79242

Number Of Point Records   = 9278073

Number Of Variable Length = 3

Point Data Format         = 0

Point Data Record Length  = 20

Project ID GUID Data 1    = 0

Project ID GUID Data 2    = 0

Project ID GUID Data 3    = 0

Project ID GUID Data 4    = 0,   0,   0,   0,   0,   0, ...

System Identifier         = ''

Version Major             = 1

Version Minor             = 0

X Scale Factor            = 1.4558386e-006

X Offset                  = 692204.97

Y Scale Factor            = 1.3847266e-006

Y Offset                  = 4519668.7

Z Scale Factor            = 6.7266782e-008

Z Offset                  = 340.79242

ENVI> pts=pc.GetPointsInRange(0,pc.npoints,intensity=i)

ENVI> help,pts,i

PTS             DOUBLE    = Array[3, 9278073]

I               UINT      = Array[9278073]

ENVI> pc.Close

以上展示了如何获取与文件关联的元数据,以及如何以 3xN 数组的形式返回点,顺序与它们在文件中存储的原始顺序一致。

第二个示例展示了如何在新建项目中对点进行空间排序,并访问给定矩形区域内的点。

ENVI> pc = nv.OpenPointCloud('C:\Users\borsholm\Downloads\Lincoln.laz')

ENVI> pts = pc.GetPointsInRect(694000, 4520000, 695000, 4521000)

ENVI> help,pts

PTS             DOUBLE    = Array[3, 1000002]

ENVI> pc.Close

自动化的云与云影检测 使用 Airbus WorldDEM™ 和光学影像提取的高程进行变化检测