import struct import os class OneZeroHeader(object): """ 1.0版本 """ def __init__(self): self.file_signature = None # 文件签名 self.reserved = None # 预留字段 self.guid_1 = None # 项目ID1 self.guid_2 = None # 项目ID2 self.guid_3 = None # 项目ID3 self.guid_4 = None # 项目ID4 self.version_major = None # 大版本 self.version_minor = None # 小版本 self.system_identifier = None # 硬件信息 self.generating_software = None # 软件信息 self.flight_date_julian = None # 文件创建天数 self.year = None # 文件创建年份 self.header_size = None # 头文件大小 self.offset_to_data = None # 点数据记录起始位置 self.number_of_variable_length_records = None # 可变数据记录长度 self.point_data_record_format = None # 点数据记录格式 self.point_data_record_length = None # 点数据记录长度 self.number_of_point_records = None # 总共的点数量 self.number_of_points_by_return = None # 回波点数量 self.x_scale_factor = None # x比例因子 self.y_scale_factor = None # y比例因子 self.z_scale_factor = None # z比例因子 self.x_offset = None # x偏移量 self.y_offset = None # y偏移量 self.z_offset = None # z偏移量 self.max_x = None # x最大值 self.min_x = None # x最小值 self.max_y = None # y最大值 self.min_y = None # y最小值 self.max_z = None # z最大值 self.min_z = None # z最小值 def read_header(self, f): """ 读取头 :param f: :return: """ f.seek(0) self.file_signature = f.read(4).decode("utf-8") self.reserved = struct.unpack('L', f.read(4))[0] self.guid_1 = struct.unpack('L', f.read(4))[0] self.guid_2 = struct.unpack('H', f.read(2))[0] self.guid_3 = struct.unpack('H', f.read(2))[0] self.guid_4 = struct.unpack('8s', f.read(8))[0].decode("utf-8") self.version_major = struct.unpack('B', f.read(1))[0] self.version_minor = struct.unpack('B', f.read(1))[0] self.system_identifier = struct.unpack('32s', f.read(32))[0].decode("utf-8") self.generating_software = struct.unpack('32s', f.read(32))[0].decode("utf-8") self.flight_date_julian = struct.unpack('H', f.read(2))[0] self.year = struct.unpack('H', f.read(2))[0] self.header_size = struct.unpack('H', f.read(2))[0] self.offset_to_data = struct.unpack('L', f.read(4))[0] self.number_of_variable_length_records = struct.unpack('L', f.read(4))[0] self.point_data_record_format = struct.unpack('B', f.read(1))[0] self.point_data_record_length = struct.unpack('H', f.read(2))[0] self.number_of_point_records = struct.unpack('L', f.read(4))[0] self.number_of_points_by_return = struct.unpack('5L', f.read(20))[0] self.x_scale_factor = struct.unpack('d', f.read(8))[0] self.y_scale_factor = struct.unpack('d', f.read(8))[0] self.z_scale_factor = struct.unpack('d', f.read(8))[0] self.x_offset = struct.unpack('d', f.read(8))[0] self.y_offset = struct.unpack('d', f.read(8))[0] self.z_offset = struct.unpack('d', f.read(8))[0] self.max_x = struct.unpack('d', f.read(8))[0] self.min_x = struct.unpack('d', f.read(8))[0] self.max_y = struct.unpack('d', f.read(8))[0] self.min_y = struct.unpack('d', f.read(8))[0] self.max_z = struct.unpack('d', f.read(8))[0] self.min_z = struct.unpack('d', f.read(8))[0] class OneOneHeader(object): """ 1.1版本 """ def __init__(self): self.file_signature = None # 文件签名 self.file_source_id = None # 文件ID self.reserved = None # 预留字段 self.project_id_1 = None # 项目ID1 self.project_id_2 = None # 项目ID2 self.project_id_3 = None # 项目ID3 self.project_id_4 = None # 项目ID4 self.version_major = None # 大版本 self.version_minor = None # 小版本 self.system_identifier = None # 硬件信息 self.generating_software = None # 软件信息 self.file_creation_day_of_year = None # 文件创建天数 self.file_creation_year = None # 文件创建年份 self.header_size = None # 头文件大小 self.offset_to_point_data = None # 点数据记录起始位置 self.number_of_variable_length_records = None # 可变数据记录长度 self.point_data_record_format = None # 点数据记录格式 self.point_data_record_length = None # 点数据记录长度 self.number_of_point_records = None # 总共的点数量 self.number_of_points_by_return = None # 回波点数量 self.x_scale_factor &
提取.las文件中各点的位置及反射强度信息
最新推荐文章于 2024-06-07 13:01:43 发布