Files
secondo/Algebras/Pointcloud/lasreader/lasheader.h
2026-01-23 17:03:45 +08:00

89 lines
2.2 KiB
C++

/*
----
This file is part of SECONDO.
Copyright (C) 2018, University in Hagen, Department of Computer Science,
Database Systems for New Applications.
SECONDO is free software{} you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation{} either version 2 of the License, or
(at your option) any later version.
SECONDO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY{} without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with SECONDO{} if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
----
*/
#pragma once
#include <iostream>
#include <string>
#include <fstream>
#include <stdint.h>
#include <cstring>
#include <vector>
struct lasHeader{
char signature[4];
uint16_t source_id;
uint16_t global_Encoding;
uint32_t project_id1;
uint16_t project_id2;
uint16_t project_id3;
unsigned char project_id4[8];
unsigned char major_version;
unsigned char minor_version;
char systemIdentifier[32];
char generatingSoftware[32];
uint16_t dayOfYear;
uint16_t year;
uint16_t header_size;
uint32_t offset_to_point_data;
uint32_t number_of_variable_records;
unsigned char point_data_format;
unsigned char point_data_length;
uint32_t legacy_number_of_points;
uint32_t legacy_number_of_points_by_return[5];
double x_scale;
double y_scale;
double z_scale;
double x_offset;
double y_offset;
double z_offset;
double max_x;
double min_x;
double max_y;
double min_y;
double max_z;
double min_z;
uint64_t start_of_waveform_data_packet_record;
uint64_t start_of_first_extended_vlr;
uint32_t number_of_evlr;
uint64_t number_of_point_records;
uint64_t number_of_points_by_return[15];
uint64_t numOfPoints() const{
return minor_version>=4?number_of_point_records:legacy_number_of_points;
}
bool read(std::ifstream& file);
std::ostream& print(std::ostream& out) const;
};
std::ostream& operator<<(std::ostream& out,
const lasHeader& header);