大规模LiDAR数据处理

news2024/11/26 5:58:39

点云存在许多描述环境或建筑物等物体的 x、y、z 坐标。通过激光技术 (LiDAR) 获取的点云通常带有每个坐标的额外测量值和特征。例如,反射强度、回波次数、回波、扫描角度和 RGB 值。换句话说,点云本质上是大量的数据集。

在本文中,我们使用开源点数据抽象库 (PDAL) 演示了这些大型数据集的大规模处理,并使用 Azure Batch 运行。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割

1、使用 PDAL 进行处理

LiDAR 数据的处理是通过开源库 PDAL 完成的。使用此库,点云数据可以在许多不同的格式之间进行转换,例如,las、laz、geotif、geojson、ascii、pgpointcloud、hdf5、numpy、tiledDB、ept 等,以及专有数据格式。

此外,该库还可以对数据进行过滤操作,例如重投影、分类、过滤、DEM 和网格创建等。PDAL 可以作为应用程序单独执行,并且还有一个 Python PDAL 扩展,以便 PDAL 可以成为你的Python应用程序。这使得你可以灵活地将自己的处理逻辑或滤波器合并到你的 LiDAR 处理中。

PDAL 扩展可与以 json 格式定义并通过 pdal 实现执行的管道配合使用。下面的管道示例说明了所有依赖于 PDAL 内置功能的以下步骤:

  • 使用设置的参考投影读取输入 las 或 laz 文件(此处为 EPSG:28992,荷兰的投影坐标系),
  • 应用对地面和非地面点进行分类的filters.csf(布料模拟过滤器,Zhang et al. 2016),
  • 应用仅选择地面回波的过滤器,
  • 将过滤后的数据写入las文件

该管道使用 AHN3 的示例数据集执行,AHN3 是荷兰南林堡地区全国 LiDAR 开放数据集的第三版。下面,使用 plas.io 创建了两个视觉效果,a)原始数据集,b)使用管道创建的数据集,显示地面回报,基于Zhang等人,2016年的PDAL实现。

来自开放数据集 AHN3 的点云样本,使用 plas.io 进行可视化

2、使用 Azure Batch 进行扩展

由于数据量和应用的算法类型,处理 LiDAR 数据是计算密集型的。扩展处理规模可能是一个挑战。 Azure Batch 是一项在 Azure 中高效运行大规模并行和高性能计算 (HPC) 批处理作业的服务。 Azure Batch 创建和管理计算节点(虚拟机)池,安装要运行的应用程序,并安排作业在节点上运行。在这里,应用程序将是处理 LiDAR 数据的 (Python) 脚本。 Azure Batch 可以通过 Azure 门户、Azure Batch API 和 Azure Batch SDK 进行管理。由于地理空间和地球科学领域的许多开发人员和研究人员都熟悉 Python,因此这里使用 Azure Batch Python SDK。

一般概念如下图所示。通过本地 Python 客户端,Azure Batch 计算池在现有的 Azure 资源组中使用存储帐户和 Azure Batch 帐户进行预配。使用客户端将应用程序/脚本和数据上传到 blob 存储(下图中的 1)。然后,使用提供的 Azure Batch 帐户凭据,将创建一个计算池,并提交任务和作业 (2)。通过这样做,计算池将应用程序和数据拉至计算节点,执行处理,并将结果推回到 blob 存储 (3)。为了更好地理解此概念的实现,本博文附有 Azure Batch 上 PDAL 工作示例的 GitHub 存储库。

Azure Batch 的常规设置:

  • 本地客户端将数据和应用程序文件上传到Azure Blob存储
  • 使用Azure Batch的Python SDK,本地客户端开始创建Azure Batch池,然后可以添加Azure批处理作业以在LiDAR文件上运行
  • Azure Batch 自动安排作业和任务、执行处理并将输出文件上传到 Azure Blob 存储。

为了与 Azure 存储和 Azure Batch 正确通信,客户端环境需要两个 Python 库,即 azure-batch 和 azure-storage-blob(此处分别使用版本 10.0.0 和 12.8.1)。

针对 LiDAR 数据运行的应用程序/Python 脚本需要 PDAL 库,建议从 conda-forge 安装。在启动 Azure Batch Pool 期间,首先将下载(mini)conda 环境,以静默模式安装并启动,这是通过 StartTask.sh 完成的 - 在上图的步骤 2 中(请参阅存储库以获取技术说明和示例) )。

创建Azure池后,可以提交作业。对于每个输入 LiDAR 文件,将执行 Python 脚本(包括 PDAL 管道),并将输出 las 文件上传到 Azure blob 存储以实现持久性。

根据 LiDAR 文件的大小和数量以及要运行的管道的复杂性,您可以创建小型(1 个节点)到非常大(> 1000 个节点)的 Azure Batch 池,无论是否启用自动缩放选项。这只需要重新缩放池,Azure Batch 确实处理作业调度和管理,因此提供的代码可以用于大型和小型批处理作业,而无需对代码本身进行任何更改。


原文链接:大规模LiDAR数据处理 - BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1652282.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

acwing算法提高之数据结构--平衡树Treap

目录 1 介绍2 训练 1 介绍 本博客用来记录使用平衡树求解的题目。 插入、删除、查询操作的时间复杂度都是O(logN)。 动态维护一个有序序列。 2 训练 题目1&#xff1a;253普通平衡树 C代码如下&#xff0c; #include <cstdio> #include <cstring> #include …

小语言模型的潜力

想象一下这样一个世界&#xff1a;智能助手不在云端&#xff0c;而是在你的手机上&#xff0c;无缝了解你的需求并以闪电般的速度做出响应。这不是科幻小说&#xff0c;而是科幻小说。这是小语​​言模型 (SLM) 的希望&#xff0c;这是一个快速发展的领域&#xff0c;有可能改变…

Beego 使用教程 5:页面视图

beego 是一个用于Go编程语言的开源、高性能的 web 框架 beego 被用于在Go语言中企业应用程序的快速开发&#xff0c;包括RESTful API、web应用程序和后端服务。它的灵感来源于Tornado&#xff0c; Sinatra 和 Flask beego 官网&#xff1a;http://beego.gocn.vip/ 上面的 bee…

【笔试训练】day21

1.爱丽丝的人偶 题目意思就是构造一个序列&#xff0c;序列的每个元素要么比左右两个高&#xff0c;要么比左右两个低。 可以看成是一条上下波动的曲线。 我们可以模拟波动的这个过程。 假设有一个数组&#xff0c;里面元素是1-n.遍历每一个位置。用一个指针pos来表示当前检…

短视频矩阵系统源码/saas--总后台端、商户端、代理端、源头开发

短视频矩阵系统源码/saas--总后台端、商户端、代理端、源头开发 搭建短视频矩阵系统源码的交付步骤可以概括为以下几个关键环节&#xff1a; 1. **系统需求分析**&#xff1a;明确系统需要支持的功能&#xff0c;如短视频的上传、存储、播放、分享、评论、点赞等。 2. **技术选…

C++算法题 - 二叉树(2)

TOC 114. 二叉树展开为链表 LeetCode_link 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与…

比亚迪CAN数据实时监控分析应用数字化差异化的决策价值洞察

在当今这个信息化飞速发展的时代&#xff0c;汽车数字化转型已成为企业持续竞争力的关键。中国新能源汽车行业的领军企业——比亚迪&#xff0c;其数字化之旅充分展现了企业的创新精神和对未来的深远洞察。 比亚迪的数字化战略不是简单的技术应用&#xff0c;而是一场深刻的商…

Calendar 366 II for Mac v2.15.5激活版:智能日历管理软件

在繁忙的工作和生活中&#xff0c;如何高效管理日程成为了许多人的难题。Calendar 366 II for Mac&#xff0c;作为一款全方位的日历管理软件&#xff0c;以其独特的功能和优秀的用户体验&#xff0c;成为您的日程好帮手。 Calendar 366 II for Mac支持多种视图模式&#xff0c…

成功解决:Could not install packages due to an OSError

成功解决&#xff1a;Could not install packages due to an OSError: 错误&#xff1a; ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: C:\Users\XIAODA~1\AppData\Local\Temp\pip-install-yeyhod79\opencv-contribpython_fb…

在线音视频下载

https://cobalt.tools/ 支持 bilibili 等网站

STM32F103学习笔记 | 7.使用寄存器点亮LED灯

int main(void) { // 分析指南者硬件原理图得知要实现点亮灯泡需要将PB0设置为低电位&#xff0c; // 查阅STM32F10x中文手册的端口配置低寄存器&#xff0c;得知一个PB有8个配置位&#xff0c;查阅手册找到了PB0的位置是3:2位置&#xff0c; // 插入未知知识&#xff1a;将端…

电脑文件批量重命名不求人:快速操作,高效技巧让你轻松搞定

在数字化时代&#xff0c;电脑文件的管理与整理显得尤为重要。当面对大量需要重命名的文件时&#xff0c;一个个手动修改不仅耗时&#xff0c;还容易出错。那么&#xff0c;有没有一种方法可以快速、高效地完成这一任务呢&#xff1f;答案是肯定的&#xff0c;下面就来介绍几种…

delphi6直连redis服务(用lua脚本redis模块)

一、创建一个exe程序 创建一个exe程序,引用LuaRedis.pas单元(此单元自己封装的代码,目前主要封装了获取key和设置key/value功能),代码如下: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;type…

gitee分支代码推送失败>> error: failed to push some refs to ‘https://gitee.com/xxx/xxx.git‘

错误 将代码推送到gitee时候出现下面的报错&#xff0c;终端输出 remote: Powered by GITEE.COM [GNK-6.4] remote: error: GE007: Your push would publish a private email address. remote: You can make your email public or disable this protection by visiting: remo…

自动驾驶主流芯片及平台架构(三)低算力平台

前面有提到&#xff0c;自动驾驶等级每增加一级&#xff0c;所需要的芯片算力就会呈现十数倍的上升&#xff0c;L2级自动驾驶的算力需求仅要求2-2.5TOPS&#xff0c;但是L3级自动驾驶算力需求就需要20-30TOPS,到L4级需要200TOPS以上&#xff0c;L5级别算力需求则超过2000TOPS。…

Rabbit延迟队列实现---插件实现

自行百度如何安装rabbitmq 点击链接下载rabbitmq插件找到rabbitmq_delayed_message_exchange&#xff0c;点击Releases 找到自己mq版本对应下载 移动到rabbitmq目录下plugins 执行命令rabbitmq-plugins.bat enable rabbitmq_delayed_message_exchange安装插件 此时就会出现x-d…

【mysql】mysql单表查询、多表查询、分组查询、子查询等案例详细解析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

红帽发布Red Hat Enterprise Linux AI(RHEL AI)

红帽 2024 峰会正在科罗拉多州丹佛市举行…鉴于当前的时代背景&#xff0c;人工智能&#xff08;AI&#xff09;在此次峰会上占据了重要位置&#xff0c;因此红帽公司&#xff08;Red Hat&#xff09;也不甘人后宣布推出 RHEL AI。 红帽公司今天发布了 Red Hat Enterprise Lin…

Pytorch入门—Tensors张量的学习

Tensors张量的学习 张量是一种特殊的数据结构&#xff0c;与数组和矩阵非常相似。在PyTorch中&#xff0c;我们使用张量来编码模型的输入和输出&#xff0c;以及模型的参数。 张量类似于NumPy的ndarrays&#xff0c;只是张量可以在GPU或其他硬件加速器上运行。事实上&#xf…

QT7_视频知识点笔记_2_对话框,布局,按钮,控件(查看帮助文档找功能函数)

第二天&#xff1a; 对话框&#xff0c;布局&#xff0c;按钮 QMainWindow&#xff1a;菜单下拉框添加之后可通过ui->actionXXX&#xff08;自定义的选项名&#xff09;访问&#xff0c;用信号triggered发出信号&#xff0c;槽函数可以使用lambda表达式进行 //菜单栏&am…