1. python las读取与写入

用laspy库: https://pypi.org/project/laspy/

获取las、laz的规格、点数据格式,点数据的具体字段名称,具体的点数据

解析las、laz头文件区、点数据区的所有字段

参考:https://readthedocs.org/projects/laspy/

参考:https://pylas.readthedocs.io/en/latest/installation.html

pip install laspy

from laspy.file import File

def main():

f = File("E:/dataTes/1001140020191217.las", mode='r')

# 查看点云的点格式及字段名称

print('\nPoint Of Data Format: ', f.header.data_format_id)

print("\tExamining Point Format: ", end=" ")

for spec in f.point_format:

print(spec.name, end=", ")

print('\noffset: ', f.header.offset) # 偏移量

print('scale: ', f.header.scale) # 比例因子

print('min: ', f.header.min) # x、y、z 的最小值

print('max: ', f.header.max) # x、y、z 的最大值

print('file_signature: ', f.header.file_signature) # 文件标识

print('Point Of Data Format: ', f.header.data_format_id) # 点格式

print('data_record_length: ', f.header.data_record_length) # 点个数

print('FileCreateDay+Year: ', f.header.date)

print()

print('f.x: ', f.x)

print('f.y: ', f.y)

print('f.z: ', f.z)

print('f.intensity: ', f.intensity)

print('f.gps_time: ', f.gps_time)

print('f.raw_classification: ', f.raw_classification)

print()

# print('f.user_data: ', f.user_data)

# print('f.flag_byte: ', f.flag_byte)

# print('f.Color: ', f.red, f.green, f.blue)

# print('file_source_id: ', f.header.file_source_id)

# print('Major_Minor version: ', f.header.version, str(f.header.version_major) + '.' + str(f.header.version_minor))

# print('Generation Software: ', f.header.software_id)

# print('system_id: ', f.header.system_id)

# print('Header Size: ', f.header.header_size)

# print('file_global_encoding: ', f.header.global_encoding)

# print('gps_time_type: ', f.header.gps_time_type)

# print('guid: ', f.header.guid)

print()

# print('f.edge_flight_line: ', f.edge_flight_line)

# print('f.return_num: ', f.return_num)

# print('f.classification: ', f.classification)

# print('f.scan_angle_rank: ', f.scan_angle_rank)

# print('f.scan_dir_flag: ', f.scan_dir_flag)

# print('f.num_returns: ', f.num_returns)

# print('pt_src_id: ', f.pt_src_id)

f.close()

if __name__ == "__main__":

main()

2. las的压缩,.las转.laz,.laz转.las

las点云的无损压缩:将.las转为.laz,压缩率可达15%,空间占用减少85%;

需要俩个模块

pip install pylas

pip install lazrs

参考:https://gis.stackexchange.com/questions/332366/reading-laz-file-in-python-directly

pylas官方文档: https://pylas.readthedocs.io/en/latest/installation.html

import pylas

import time

# laz 转 las

end0 = time.time()

las = pylas.read('E:/dataTes/1001117.laz')

las = pylas.convert(las)

las.write('E:/dataTes/1001117_laz2las.las')

end1 = time.time()

print("laz2las 耗时:%.2f秒" % (end1 - end0))

print('------------end1------------')

# las 转 laz

las1 = pylas.read('E:/dataTes/1001147.las')

las1 = pylas.convert(las1)

las1.write('E:/dataTes/1001147_las2laz.laz')

end2 = time.time()

print("las2laz 耗时:%.2f秒" % (end2 - end1))

print('---------end----------')

3. laspy读取.laz

参考:https://stackoverflow.com/questions/49500149/laspy-cannot-find-laszip-when-is-installed-from-source-laszip-is-in-path

有用到(lasTools的laszip.exe以及dll)

windows下需要往Path环境变量里添加自己下载的lasTools的bin目录;

lasTools下载: https://github.com/m-schuetz/LAStools

from laspy.file import File

import os

def main():

# 最重要的后边要有 E:\Las\LAStools\bin; lasTools中laszip.exe的路径

print(os.environ["PATH"])

# E:\python\lib\site-packages\pywin32_system32;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;D:\jdk181\bin;D:\hadoop-common-2.2.0\bin;C:\Windows\vrv\common\vSSLFltSvc;D:\apache-maven-3.5.3\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;D:\dnProject\scala-2.11.8\scala-2.11.8\bin;D:\svnSsrver\bin;D:\apache-maven-3.5.3\bin;E:\PCL 1.8.1\bin;E:\PCL 1.8.1\3rdParty\OpenNI2\Tools;E:\PCL 1.8.1\3rdParty\VTK\bin;E:\python\Scripts\;E:\python\;C:\Users\sunmeina\AppData\Local\Microsoft\WindowsApps;E:\PCL 1.8.1\bin;C:\Users\sunmeina\AppData\Local\BypassRuntm;E:\cmake\bin;E:\python\lib\site-packages\numpy\.libs;E:\Las\LAStools\bin;

f = File("E:/dataTes/1001140020191217_las2laz.laz", mode='r')

# 查看点云的点格式及字段名称

print('\nPoint Of Data Format: ', f.header.data_format_id)

print("\tExamining Point Format: ", end=" ")

for spec in f.point_format:

print(spec.name, end=", ")

print('\noffset: ', f.header.offset) # 偏移量

print('scale: ', f.header.scale) # 比例因子

print('min: ', f.header.min) # x、y、z 的最小值

print('max: ', f.header.max) # x、y、z 的最大值

print('file_signature: ', f.header.file_signature) # 文件标识

print('Point Of Data Format: ', f.header.data_format_id) # 点格式

print('data_record_length: ', f.header.data_record_length) # 点个数

print('FileCreateDay+Year: ', f.header.date)

print()

print('f.x: ', f.x)

print('f.y: ', f.y)

print('f.z: ', f.z)

print('f.intensity: ', f.intensity)

print('f.gps_time: ', f.gps_time)

print('f.raw_classification: ', f.raw_classification)

print()

f.close()

if __name__ == "__main__":

main()

4. pylas读取.laz

import pylas

def lazread(path):

print('\n\n------------\n\n')

laz = pylas.read(path)

print(laz)

print(laz.header)

print(laz.point_format)

print(laz.header.version)

print(laz.point_format.id)

print(laz.header.file_signature)

print('offset: ', laz.header.offset_to_point_data)

print('version_major: ', laz.header.version_major)

print('version_minor: ', laz.header.version_minor)

print('point_count: ', laz.header.point_count)

print('legacy_point_count: ', laz.header.legacy_point_count)

print('file_source_id: ', laz.header.file_source_id)

print('global_encoding: ', laz.header.global_encoding)

print('date: ', laz.header.date)

print('data_record_length: ', laz.points_data.point_size)

print('point_size: ', laz.header.point_size)

print('point_data_record_length: ', laz.header.point_data_record_length)

print('uuid: ', laz.header.uuid)

print('are_points_compressed: ', laz.header.are_points_compressed)

print('offset: ', laz.header.offsets)

print('scale: ', laz.header.scales)

print('min: ', laz.header.mins)

print('max: ', laz.header.maxs)

print('-------\n')

print(laz.point_format.dimension_names)

print('laz.x: ', laz.x)

print('laz.y: ', laz.y)

print('laz.z: ', laz.z)

print('laz.intensity: ', laz.intensity)

print('laz.gps_time: ', laz.gps_time)

print('laz.points: ', laz.points)

print('laz.points_data: ', laz.points_data)

print(laz.points_data.point_format.id)

print(laz.points_data.array)

print(laz.points_data.point_size)

def main():

lazread('E:/Las/1001217_las2laz.laz')

print('-------------endl-----------')

if __name__ == "__main__":

main()

以上测试均在windows10中进行,都ok

centos服务器上 方式2中读取laz方式的可以支持;方式3中的不支持,报错如下:

raise ValueError(“Unable to read compressed file!”) ValueError: Unable to read compressed file!

python读文件en_python 点云las、laz文件的读取、写入、压缩相关推荐

  1. lasTools laszip.exe 点云las/laz的无损压缩/解压缩工具

    laszip 以完全无损的压缩.解压缩存储在二进制文件las/laz中的lidar点云数据,支持las(1.0-1.4)规格. 查看点云规格可参考 该工具带有LGPL许可证.LasTools使用的 L ...

  2. 电脑与云服务器传输文件,电脑与云服务器传输文件

    电脑与云服务器传输文件 内容精选 换一换 当创建文件系统后,您需要使用云服务器来挂载该文件系统,以实现多个云服务器共享使用文件系统的目的.本章节以Windows 2012版本操作系统为例进行CIFS类 ...

  3. python 读excel pandas_Python使用Pandas读写EXCEL文件教程

    欢迎,来自IP地址为:140.250.89.180 的朋友 教程开始之前,我们需要首先了解一下什么是Excel,这有助于理解之后教程中的内容. 什么是Excel Excel  是微软出品的和款办公软件 ...

  4. 云服务器怎么拷贝和删除文件,怎样给云服务器拷贝文件

    怎样给云服务器拷贝文件 内容精选 换一换 本章节主要介绍云硬盘.弹性文件服务.对象存储服务等存储服务,让您更好的了解这些存储服务. 云服务器备份:云服务器备份可以对普通服务器进行整机备份或部分磁盘备份 ...

  5. ecs服务器网站文件放在哪里,云服务器ecs文件放哪里

    云服务器ecs文件放哪里 内容精选 换一换 要访问您的文件系统,如果是Linux云服务器,您需要在Linux云服务器上安装NFS客户端后使用挂载命令挂载文件系统:如果是Windows云服务器,您需要在 ...

  6. 云服务器怎么管理文件,怎么管理云服务器的文件

    怎么管理云服务器的文件 内容精选 换一换 区块链服务状态为"异常".•排查项一:区块链依赖的集群.服务器.存储等资源是否正常.•排查项二:云服务器节点资源规格不足.排查项一:区块链 ...

  7. 文件分类服务器,云服务器 搭建 文件分类存储

    云服务器 搭建 文件分类存储 内容精选 换一换 本章节指导用户挂载已有数据的共享磁盘,只可以用作数据盘.您可以在磁盘列表中查看磁盘信息,磁盘信息符合以下条件,该磁盘支持挂载至云服务器用作数据盘.共享盘 ...

  8. 云服务器文件同步,和云服务器同步文件

    和云服务器同步文件 内容精选 换一换 有,该NTP服务器仅限于在华为云控制台上购买的弹性云服务器安装使用.如需在购买的弹性云服务器上安装NTP服务器,您可以选择使用华为云控制台自己提供的NTP服务器, ...

  9. 云服务器php文件怎么运行,云服务器php文件怎么运行环境

    云服务器php文件怎么运行环境 内容精选 换一换 镜像是云耀云服务器运行环境的模板,模板中包含了特定的操作系统和运行环境,有时也额外包括了一些预装的应用软件.通过镜像可以部署特定的软件环境,也可以将云 ...

最新文章

  1. 台湾大学林轩田机器学习技法课程学习笔记2 -- Dual Support Vector Machine
  2. JavaScript——jQuery AJAX链式编程(流式编程)DEMO
  3. 知乎大神深入解析:单片机晶振脚原理是什么?
  4. 前端学习(3121):react-hello-react的state的简写方式
  5. 统计学习方法---牛顿法
  6. Vulkan学习(一):Vulkan环境搭建(Windows)官方教程--(Base code Instance Validation layers)
  7. 安卓改机,改串的研究
  8. wegame服务器选择不显示,wegame辅助功能不显示怎么解决
  9. Ubuntu使用Gstreamer gi包不存在解决
  10. jxl操作合并单元格复杂表头
  11. OCR-光学符号识别
  12. 6waves VP张伟:洞悉SLG等品类赛道,直击日本市场的趋势与机遇
  13. [FPGA]1 MRCC与SRCC学习
  14. python编写仪表盘4
  15. 思维导图-第二章 会计政策和会计估计及其变更
  16. @小陈同学 ,来啦~
  17. 对当下金融危机发生可能性的判断
  18. 点云数据集开源大汇总
  19. 给西电吧小朋友们的单片机学习指南(一):学习之前的准备
  20. 我的世界中国版java版不更新_我的世界中国版PCJava版开测 正版玩家回归奖励公布...

热门文章

  1. php语言设计图书管理系统,图书馆管理系统PHP版_7tmu7b
  2. You must supply a resourceID for a TextView
  3. iOS应用内购买(In App Purchase)总结
  4. mac电脑访问另一台mac共享文件
  5. php是做前端还是后端,在后端准备数据还是在前端操作? - php
  6. 健康饮食五谷杂粮系列PPT模板
  7. 使用分发列表过滤BGP路由
  8. 我理解Docker的过程2
  9. Exchange 2013学习(六),脱机通讯簿
  10. 一起谈.NET技术,NHibernate3.0剖析:Query篇之NHibernate.Linq标准查询