pub struct AsciiReader<R: BufRead + Read> { /* private fields */ }
Expand description
PointReader
implementation for ascii files
Implementations§
Source§impl AsciiReader<BufReader<File>>
impl AsciiReader<BufReader<File>>
Sourcepub fn from_path<P: AsRef<Path>>(
path: P,
format: &str,
delimiter: &str,
) -> Result<Self>
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>
impl<R: BufRead + Read> AsciiReader<R>
Sourcepub fn from_read(read: R, format: &str, delimiter: &str) -> Result<Self>
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.
pub fn print_format_literals()
Trait Implementations§
Source§impl<R: BufRead + Read> PointReader for AsciiReader<R>
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,
fn read_into<'a, 'b, B: BorrowedMutBuffer<'a>>(
&mut self,
point_buffer: &'b mut B,
count: usize,
) -> Result<usize>where
'a: 'b,
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
fn get_metadata(&self) -> &dyn Metadata
Metadata
of the associated PointReader
Source§fn get_default_point_layout(&self) -> &PointLayout
fn get_default_point_layout(&self) -> &PointLayout
PointLayout
of the associated PointReader
Source§fn read<'a, B: OwningBuffer<'a> + MakeBufferFromLayout<'a> + 'a>(
&mut self,
count: usize,
) -> Result<B>
fn read<'a, B: OwningBuffer<'a> + MakeBufferFromLayout<'a> + 'a>( &mut self, count: usize, ) -> Result<B>
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.