Struct AsciiReader

Source
pub struct AsciiReader<R: BufRead + Read> { /* private fields */ }
Expand description

PointReader implementation for ascii files

Implementations§

Source§

impl AsciiReader<BufReader<File>>

Source

pub fn from_path<P: AsRef<Path>>( path: P, format: &str, delimiter: &str, ) -> Result<Self>

Creates a new AsciiReader by opening the file at the given path. The delimiter string slice is the column seperation pattern. The format string slice coordinates the interpretation of each column. This functions just wraps a BufReader around a File and uses AsciiReader::from_read. For more information see AsciiReader::from_read.

§Examples
use std::path::Path;
use anyhow::Result;
use pasture_io::ascii::AsciiReader;
fn main() -> Result<()> {
    let path = Path::new("foo.txt");
    let reader = AsciiReader::from_path(path, "xyzie", ", ")?;
    Ok(())
}
§Errors

If path does not exist, cannot be opened or does not point to a valid file, an error is returned.

If format contains unrecoginzed literals, an error is returned.

Source§

impl<R: BufRead + Read> AsciiReader<R>

Source

pub fn from_read(read: R, format: &str, delimiter: &str) -> Result<Self>

Creates a new AsciiReader from the given read. The delimiter string slice is the column seperation pattern. The format string slice coordinates the interpretation of each column. The following literals can be interpreted from AsciiReader:

  • s → skip this column
  • x → x coordinate
  • y → y coordinate
  • z → z coordinate
  • i → intensity
  • r → ReturnNumber
  • n → number of returns of given pulse
  • c → classification
  • t → gps time
  • u → user data
  • p → point source ID
  • R → red channel of RGB color
  • G → green channel of RGB color
  • B → blue channel of RGB color
  • e → edge of flight line flag
  • d → direction of scan flag
  • a → scan angle rank
  • I → NIR channel
§Examples

For the following data an AsciiReader should be created. The first three columns correspondens to the position attribute. The 4th column is the intensity attribute. and the 5th is the edge_of_line_flag.

use std::io::{BufReader};
use anyhow::Result;
use pasture_io::ascii::AsciiReader;
fn main() -> Result<()> {
    let data = "0.0, 1.0, 2.0, 11, 0\n1.0, -2.0, 2.0, 22, 0".as_bytes();
    let read = BufReader::new(data);
    let reader = AsciiReader::from_read(read, "xyzie", ", ")?;
    Ok(())
}
§Errors

If the given Read does not represent a valid file, an error is returned.

If format contains unrecoginzed literals, an error is returned.

Source

pub fn print_format_literals()

Trait Implementations§

Source§

impl<R: BufRead + Read> PointReader for AsciiReader<R>

Source§

fn read_into<'a, 'b, B: BorrowedMutBuffer<'a>>( &mut self, point_buffer: &'b mut B, count: usize, ) -> Result<usize>
where 'a: 'b,

Read count points from this PointReader into the given point_buffer. Uses the PointLayout of the given PointBuffer for reading. If no conversion from the default PointLayout to this new layout are possible, an error is returned. On success, returns the number of points that were read. Overwrites existing data in point_buffer starting at the first point, so the length of point_buffer must be greater than or equal to count
Source§

fn get_metadata(&self) -> &dyn Metadata

Returns the Metadata of the associated PointReader
Source§

fn get_default_point_layout(&self) -> &PointLayout

Returns the default PointLayout of the associated PointReader
Source§

fn read<'a, B: OwningBuffer<'a> + MakeBufferFromLayout<'a> + 'a>( &mut self, count: usize, ) -> Result<B>

Reads at most count points from this PointReader into a new buffer of type B. The PointLayout this new buffer will be equal to self.get_default_point_layout

Auto Trait Implementations§

§

impl<R> Freeze for AsciiReader<R>
where R: Freeze,

§

impl<R> RefUnwindSafe for AsciiReader<R>
where R: RefUnwindSafe,

§

impl<R> Send for AsciiReader<R>
where R: Send,

§

impl<R> Sync for AsciiReader<R>
where R: Sync,

§

impl<R> Unpin for AsciiReader<R>
where R: Unpin,

§

impl<R> UnwindSafe for AsciiReader<R>
where R: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.