大规模LiDAR数据处理

点云存在许多描述环境或建筑物等物体的 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎样让猫给啥吃啥?生骨肉冻干拌粮哪有猫咪不吃的!

随着科学养猫的普及,生骨肉冻干喂养越来越受欢迎,生骨肉冻干喂养对猫的好处很多,它符合猫咪的天性,可以提供全面的营养,保持牙齿和牙龈的健康,还有助于维持健康的消化系统。然而,许多猫主人在选…

测试之路 - 精准而优雅

引子 这几年业内一直在做精准测试,大都使用工具 diff 代码改动、分析代码覆盖率这些平台集成的能力。 业务测试中,我们在技术设计和代码实现的基础上也做了一些精减和精准的测试实践,通过深入测试有针对的设计 case,发现隐藏问题…

Gini Impurity(基尼不纯度)

基尼不纯度:衡量集合的无序程度; 基尼不纯度 基尼不纯度:将来自集合的某种结果随机应用于某一数据项的预期误差率。 1、显然基尼不纯度越小,纯度越高,集合的有序程度越高,分类的效果越好; 2、…

Blog搭建:pycharm+虚拟环境+django

pycharm创建项目 在pycharm新建项目,选择Django 项目名称:自定义项目位置:自定义创建git:方便上传到github选择虚拟环境方式venvpython解释器位置,和版本,如果你没有下载他会跳转到不同版本的供你下载temp…

力扣82题删除排序链表中的重复元素

82题删除排序链表中的重复元素 题目描述 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 题目分析 这个题需要返回已排序链表,我们需要考虑一种情况就是头结点为重复元素&…

大数据Spark教程从入门到精通第四篇:Spark快速上手

一:Spark快速上手 1:创建Maven项目 idea安装scala_idea scala插件-CSDN博客 代表了我们安装scala的maven环境已经准备好了,代码可以正常跑了

这个notebook集合,赞

这几天在Github上看到一个数据科学仓库,汇总了很多Python notebook代码,主要是数据方向。 项目地址: https://github.com/donnemartin/data-science-ipython-notebooks 其中包括了pandas、numpy、matplotlib、scikit-learn、tensorflow、sp…

学习Nginx(一):基础

介绍 Nginx是一个高性能的HTTP和反向代理的web服务器,它的设计重点是高并发、高性能和低内存消耗。它常被用于提供静态内容、负载均衡和作为Web服务器。 Nginx具有以下功能和特点: 静态文件服务:作为一个Web服务器,Nginx可以处…

5.2 操作系统安装必备知识

目前操作系统安装方式接近于全自动化,用户无需做过多操作就能完成操作系统安装。但是操作系统安装也有其复杂的一面,例如固件及分区表的不同就会导致操作系统安装失败。本节主要介绍系统安装的一些必备知识。 5.2.1 BIOS 概述 BIOS(Basic Input/Output …

【谷粒商城】04.快速开发

1.克隆代码 https://gitee.com/renrenio DELLLJL MINGW64 ~/Desktop $ git clone https://gitee.com/renrenio/renren-fast.git Cloning into renren-fast... remote: Enumerating objects: 1965, done. remote: Counting objects: 100% (1965/1965), done. remote: Compress…

基于卷积神经网络CNN,使用二维卷积Conv2D实现MNIST数字识别的四种方法

前言 系列专栏:机器学习:高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目,每个项目都处理一组不同的问题,包括监督和无监督学习、分类、回归和聚类,而且涉及创建深度学…

如何找到MySQL中存储引擎所对应的表空间并且打开?

在上节课我们学习了数据库(MySQL)进阶:存储引擎,有不少同学产生疑惑,到底要怎么找到表空间并且打开啊?这节课我们就来探讨。 首先,根据这个路径:C:\ProgramData\MySQL\MySQL Server…

又双叒叕新增2本SCI期刊“On Hold“,慎投,有剔除风险!

本周投稿推荐 SSCI • 2区社科经管类,3.0-4.0(录用友好) EI • 计算机工程生物医学等(领域广,录用极快) CNKI • 3天内初审录用,随即出版(急录友好) SCI&EI …

C++容器:list(双向链表)

一丶list介绍 C中的list容器底层确实是以双向链表的形式实现的。 list容器是C标准模板库(STL)中的一部分,它提供了对列表数据结构的实现。 双向链表结构:list容器的每个元素都是通过指针链接在一起的,每个元素都包含…

英语学习笔记14——What color‘s your ... ?

What color’s your … ? 你的 …… 是什么颜色的? 词汇 Vocabulary case n. 箱子【封闭的】 相关:box n. 箱子【开口的】    bookcase n. 书架 补充:case n. 案件,案例 口语:It’s a small case.    小意思&…

电脑常用的PDF阅读器-嗨动PDF编辑器!带你详细了解它

电脑常用的PDF阅读器-嗨动PDF编辑器!在数字化信息爆炸的时代,PDF格式的文件因其易于打印和保留原始格式等优点,成为了人们日常工作和学习的常用格式。而对于PDF文件的处理,一款功能强大、操作简便的PDF阅读器是必不可少的。今天&a…

APP封装后防止破解的全方位策略

移动应用开发完成后,封装(编译打包)是发布前的重要步骤。然而,一旦APP发布,就可能面临被逆向工程破解的风险,从而导致源代码泄露、数据被盗取等严重后果。 本文将介绍一系列实用的策略和技术,帮…

GM812条码模块的技术参数

扫码性能参数 *测试条件:环境温度23℃;环境照度300 LUX; **测试条件:测试距离(最小景深最大景深)/2; 环境温度23℃;环境照度300 LUX; *规格如有更改,恕不另…

处理Mini-ImageNet数据集,用于分类任务

一、Mini-ImageNet数据集介绍 ImageNet 1000类的数据太大了,全部下载大概有100GB左右。 2016年google DeepMind团队从ImagNet数据集中抽取的一小部分(大小约3GB)制作了Mini-ImageNet数据集,共有100个类别,每个类别有…

vscode对一些软件的调试插件。

vscode对一些软件的调试插件。 1、ae ,f1然后选择运行 after effect 脚本 2、maya,右键send code to maya 3、max,ctrle运行脚本到max 4、unity 从在Visual Studio代码使用.NET的核心: 1、安装.NET Core SDK,链接: https://dotn…