[−][src]Crate laz
Port of the Martin Isenburg's laszip compression to Rust
LasZipCompressor
and LasZipDecompressor
are the two types
that user wishing to compress and / or decompress LAZ data should use.
LasZipCompressor Examples
use laz::{LasZipError, LasZipCompressor, LazItemType, LazItemRecordBuilder}; // Here we use a Cursor but a std::fs::File will work just fine let mut compressed_output = std::io::Cursor::new(vec![]); // LazItem may have multiple versions of the compression algorithm // the builder selects a default one let items = LazItemRecordBuilder::new() .add_item(LazItemType::Point10) .add_item(LazItemType::RGB12) .build(); let mut compressor = LasZipCompressor::from_laz_items(&mut compressed_output, items)?; let point = vec![0u8; 26]; compressor.compress_one(&point)?; compressor.done()?; // don't forget to call done when you are...done compressing
LasZipCompressors can also be contructed from a LazVlr if you need to change the Chunk size or if you have the LazVlr from the orignal LAZ file that you want to write back
use laz::{LasZipError, LasZipCompressor, LazItemType, LazItemRecordBuilder, LazVlrBuilder}; let mut compressed_output = std::io::Cursor::new(vec![]); let items = LazItemRecordBuilder::new() .add_item(LazItemType::Point10) .add_item(LazItemType::RGB12) .build(); let vlr = LazVlrBuilder::new() .with_laz_items(items) .with_chunk_size(5_000) .build(); let mut compressor = LasZipCompressor::new(&mut compressed_output, vlr)?; let point = vec![0u8; 26]; compressor.compress_one(&point)?; compressor.done()?;
To create a LasZipDecompressor
you need to have the record_data found in the LAZ file.
LasZipDecompressor Examples
use laz::{LasZipError, LazVlr, LasZipDecompressor}; use std::fs::File; let mut laz_file = File::open("tests/data/point10.laz")?; seek_to_start_of_laszip_record_data(&mut laz_file)?; let vlr = LazVlr::read_from(&mut laz_file)?; let mut decompression_output = vec![0u8; vlr.items_size() as usize]; let mut decompressor = LasZipDecompressor::new(&mut laz_file, vlr)?; let mut ground_truth = vec![0u8; decompression_output.len()]; read_first_point("tests/data/point10.las", &mut ground_truth)?; decompressor.decompress_one(&mut decompression_output)?; assert_eq!(&decompression_output, &ground_truth);
Parallelism
This crates has an optional feature 'parallel'.
When using this feature, additional Par
structs and par_
methods are exposed.
Re-exports
pub use errors::LasZipError; |
pub use las::laszip::compress_buffer; |
pub use las::laszip::decompress_buffer; |
pub use las::laszip::par_compress_buffer; |
pub use las::laszip::par_decompress_buffer; |
pub use las::laszip::ParLasZipCompressor; |
pub use las::laszip::ParLasZipDecompressor; |
pub use las::laszip::read_chunk_table; |
pub use las::laszip::write_chunk_table; |
pub use las::laszip::LasZipCompressor; |
pub use las::laszip::LasZipDecompressor; |
pub use las::laszip::LazItem; |
pub use las::laszip::LazItemRecordBuilder; |
pub use las::laszip::LazItemType; |
pub use las::laszip::LazVlr; |
pub use las::laszip::LazVlrBuilder; |
Modules
checking | |
errors | |
las | This module contains re-exports of the different version of LAS data compressors & decompressors as well as the definition of the point types. |
packers | Packing types from / to bytes |
record | Everything about compressing & decompressing point records |
Type Definitions
Result |