[−][src]Struct geo::LineString
An ordered collection of two or more Coordinate
s, representing a
path between locations.
Examples
Create a LineString
by calling it directly:
use geo_types::{LineString, Coordinate}; let line_string = LineString(vec![ Coordinate { x: 0., y: 0. }, Coordinate { x: 10., y: 0. }, ]);
Converting a Vec
of Coordinate
-like things:
use geo_types::LineString; let line_string: LineString<f32> = vec![ (0., 0.), (10., 0.), ].into();
use geo_types::LineString; let line_string: LineString<f64> = vec![ [0., 0.], [10., 0.], ].into();
Or collect
ing from a Coordinate
iterator
use geo_types::{LineString, Coordinate}; let mut coords_iter = vec![ Coordinate { x: 0., y: 0. }, Coordinate { x: 10., y: 0. } ].into_iter(); let line_string: LineString<f32> = coords_iter.collect();
You can iterate over the coordinates in the LineString
:
use geo_types::{LineString, Coordinate}; let line_string = LineString(vec![ Coordinate { x: 0., y: 0. }, Coordinate { x: 10., y: 0. }, ]); for coord in line_string { println!("Coordinate x = {}, y = {}", coord.x, coord.y); }
Methods
impl<T> LineString<T> where
T: CoordinateType,
[src]
T: CoordinateType,
pub fn points_iter(&self) -> PointsIter<T>
[src]
pub fn into_points(self) -> Vec<Point<T>>
[src]
pub fn lines(&'a self) -> impl Iterator<Item = Line<T>> + ExactSizeIterator + 'a
[src]
Return an Line
iterator that yields one Line
for each line segment
in the LineString
.
Examples
use geo_types::{Line, LineString, Coordinate}; let mut coords = vec![(0., 0.), (5., 0.), (7., 9.)]; let line_string: LineString<f32> = coords.into_iter().collect(); let mut lines = line_string.lines(); assert_eq!( Some(Line::new(Coordinate { x: 0., y: 0. }, Coordinate { x: 5., y: 0. })), lines.next() ); assert_eq!( Some(Line::new(Coordinate { x: 5., y: 0. }, Coordinate { x: 7., y: 9. })), lines.next() ); assert!(lines.next().is_none());
pub fn triangles(
&'a self
) -> impl Iterator<Item = Triangle<T>> + ExactSizeIterator + 'a
[src]
&'a self
) -> impl Iterator<Item = Triangle<T>> + ExactSizeIterator + 'a
pub fn num_coords(&self) -> usize
[src]
Return the number of coordinates in the LineString
.
Examples
use geo_types::LineString; let mut coords = vec![(0., 0.), (5., 0.), (7., 9.)]; let line_string: LineString<f32> = coords.into_iter().collect(); assert_eq!(3, line_string.num_coords());
Trait Implementations
impl<T> IndexMut<usize> for LineString<T> where
T: CoordinateType,
[src]
T: CoordinateType,
fn index_mut(&mut self, index: usize) -> &mut Coordinate<T>
[src]
impl<T> Index<usize> for LineString<T> where
T: CoordinateType,
[src]
T: CoordinateType,
type Output = Coordinate<T>
The returned type after indexing.
fn index(&self, index: usize) -> &Coordinate<T>
[src]
impl<T> Clone for LineString<T> where
T: Clone + CoordinateType,
[src]
T: Clone + CoordinateType,
fn clone(&self) -> LineString<T>
[src]
default fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl<T, IC> FromIterator<IC> for LineString<T> where
IC: Into<Coordinate<T>>,
T: CoordinateType,
[src]
IC: Into<Coordinate<T>>,
T: CoordinateType,
Turn a Point
-ish iterator into a LineString
.
fn from_iter<I>(iter: I) -> LineString<T> where
I: IntoIterator<Item = IC>,
[src]
I: IntoIterator<Item = IC>,
impl<T> RTreeObject for LineString<T> where
T: Float + RTreeNum,
[src]
T: Float + RTreeNum,
type Envelope = AABB<Point<T>>
The object's envelope type. Usually, AABB will be the right choice. This type also defines the objects dimensionality. Read more
fn envelope(&self) -> <LineString<T> as RTreeObject>::Envelope
[src]
impl<T, IC> From<Vec<IC>> for LineString<T> where
IC: Into<Coordinate<T>>,
T: CoordinateType,
[src]
IC: Into<Coordinate<T>>,
T: CoordinateType,
Turn a Vec
of Point
-ish objects into a LineString
.
fn from(v: Vec<IC>) -> LineString<T>
[src]
impl<T> From<LineString<T>> for Geometry<T> where
T: CoordinateType,
[src]
T: CoordinateType,
fn from(x: LineString<T>) -> Geometry<T>
[src]
impl<T> Debug for LineString<T> where
T: Debug + CoordinateType,
[src]
T: Debug + CoordinateType,
impl<T> IntoIterator for LineString<T> where
T: CoordinateType,
[src]
T: CoordinateType,
Iterate over all the Coordinates in this LineString
.
type Item = Coordinate<T>
The type of the elements being iterated over.
type IntoIter = IntoIter<Coordinate<T>>
Which kind of iterator are we turning this into?
fn into_iter(self) -> <LineString<T> as IntoIterator>::IntoIter
[src]
impl<T> PartialEq<LineString<T>> for LineString<T> where
T: PartialEq<T> + CoordinateType,
[src]
T: PartialEq<T> + CoordinateType,
fn eq(&self, other: &LineString<T>) -> bool
[src]
fn ne(&self, other: &LineString<T>) -> bool
[src]
impl<T> PointDistance for LineString<T> where
T: Float + RTreeNum,
[src]
T: Float + RTreeNum,
fn distance_2(&self, point: &Point<T>) -> T
[src]
default fn contains_point(
&self,
point: &<Self::Envelope as Envelope>::Point
) -> bool
[src]
&self,
point: &<Self::Envelope as Envelope>::Point
) -> bool
Returns true if a point is contained within this object. Read more
impl<T> BoundingRect<T> for LineString<T> where
T: CoordinateType,
[src]
T: CoordinateType,
type Output = Option<Rect<T>>
fn bounding_rect(&self) -> Self::Output
[src]
Return the BoundingRect for a LineString
impl<T> Centroid<T> for LineString<T> where
T: Float,
[src]
T: Float,
impl<F: Float> ClosestPoint<F, Point<F>> for LineString<F>
[src]
fn closest_point(&self, p: &Point<F>) -> Closest<F>
[src]
impl<T> Contains<Point<T>> for LineString<T> where
T: Float,
[src]
T: Float,
impl<T> Contains<LineString<T>> for Line<T> where
T: Float,
[src]
T: Float,
fn contains(&self, linestring: &LineString<T>) -> bool
[src]
impl<T> Contains<Line<T>> for LineString<T> where
T: Float,
[src]
T: Float,
impl<T> Contains<LineString<T>> for Polygon<T> where
T: Float,
[src]
T: Float,
fn contains(&self, linestring: &LineString<T>) -> bool
[src]
impl<T> ConvexHull<T> for LineString<T> where
T: Float,
[src]
T: Float,
fn convex_hull(&self) -> Polygon<T>
[src]
impl<T> EuclideanDistance<T, LineString<T>> for Point<T> where
T: Float,
[src]
T: Float,
fn euclidean_distance(&self, linestring: &LineString<T>) -> T
[src]
Minimum distance from a Point to a LineString
impl<T> EuclideanDistance<T, Point<T>> for LineString<T> where
T: Float,
[src]
T: Float,
fn euclidean_distance(&self, point: &Point<T>) -> T
[src]
Minimum distance from a LineString to a Point
impl<T> EuclideanDistance<T, LineString<T>> for LineString<T> where
T: Float + Signed + RTreeNum,
[src]
T: Float + Signed + RTreeNum,
LineString-LineString distance
fn euclidean_distance(&self, other: &LineString<T>) -> T
[src]
impl<T> EuclideanDistance<T, Line<T>> for LineString<T> where
T: Float + FloatConst + Signed + RTreeNum,
[src]
T: Float + FloatConst + Signed + RTreeNum,
LineString to Line
fn euclidean_distance(&self, other: &Line<T>) -> T
[src]
impl<T> EuclideanDistance<T, LineString<T>> for Line<T> where
T: Float + FloatConst + Signed + RTreeNum,
[src]
T: Float + FloatConst + Signed + RTreeNum,
Line to LineString
fn euclidean_distance(&self, other: &LineString<T>) -> T
[src]
impl<T> EuclideanDistance<T, Polygon<T>> for LineString<T> where
T: Float + FloatConst + Signed + RTreeNum,
[src]
T: Float + FloatConst + Signed + RTreeNum,
LineString to Polygon
fn euclidean_distance(&self, other: &Polygon<T>) -> T
[src]
impl<T> EuclideanDistance<T, LineString<T>> for Polygon<T> where
T: Float + FloatConst + Signed + RTreeNum,
[src]
T: Float + FloatConst + Signed + RTreeNum,
Polygon to LineString distance
fn euclidean_distance(&self, other: &LineString<T>) -> T
[src]
impl<T> EuclideanLength<T, LineString<T>> for LineString<T> where
T: Float + Sum,
[src]
T: Float + Sum,
fn euclidean_length(&self) -> T
[src]
impl<T> FrechetDistance<T, LineString<T>> for LineString<T> where
T: Float + FromPrimitive,
[src]
T: Float + FromPrimitive,
fn frechet_distance(&self, ls: &LineString<T>) -> T
[src]
impl<T> HaversineLength<T, LineString<T>> for LineString<T> where
T: Float + FromPrimitive,
[src]
T: Float + FromPrimitive,
fn haversine_length(&self) -> T
[src]
impl<T> Intersects<LineString<T>> for Line<T> where
T: Float,
[src]
T: Float,
fn intersects(&self, linestring: &LineString<T>) -> bool
[src]
impl<T> Intersects<Line<T>> for LineString<T> where
T: Float,
[src]
T: Float,
fn intersects(&self, line: &Line<T>) -> bool
[src]
impl<T> Intersects<LineString<T>> for LineString<T> where
T: Float,
[src]
T: Float,
fn intersects(&self, linestring: &LineString<T>) -> bool
[src]
impl<T> Intersects<LineString<T>> for Polygon<T> where
T: Float,
[src]
T: Float,
fn intersects(&self, linestring: &LineString<T>) -> bool
[src]
impl<T> Intersects<Polygon<T>> for LineString<T> where
T: Float,
[src]
T: Float,
fn intersects(&self, polygon: &Polygon<T>) -> bool
[src]
impl<T: CoordinateType, NT: CoordinateType> MapCoords<T, NT> for LineString<T>
[src]
type Output = LineString<NT>
fn map_coords(&self, func: &dyn Fn(&(T, T)) -> (NT, NT)) -> Self::Output
[src]
impl<T: CoordinateType, NT: CoordinateType> TryMapCoords<T, NT> for LineString<T>
[src]
type Output = LineString<NT>
fn try_map_coords(
&self,
func: &dyn Fn(&(T, T)) -> Result<(NT, NT), Error>
) -> Result<Self::Output, Error>
[src]
&self,
func: &dyn Fn(&(T, T)) -> Result<(NT, NT), Error>
) -> Result<Self::Output, Error>
impl<T: CoordinateType> MapCoordsInplace<T> for LineString<T>
[src]
impl<T> Rotate<T> for LineString<T> where
T: Float,
[src]
T: Float,
fn rotate(&self, angle: T) -> Self
[src]
Rotate the LineString about its centroid by the given number of degrees
impl<T> Simplify<T, T> for LineString<T> where
T: Float,
[src]
T: Float,
fn simplify(&self, epsilon: &T) -> LineString<T>
[src]
impl<T> SimplifyVW<T, T> for LineString<T> where
T: Float,
[src]
T: Float,
fn simplifyvw(&self, epsilon: &T) -> LineString<T>
[src]
impl<T> SimplifyVWPreserve<T, T> for LineString<T> where
T: Float + RTreeNum,
[src]
T: Float + RTreeNum,
fn simplifyvw_preserve(&self, epsilon: &T) -> LineString<T>
[src]
impl<T> VincentyLength<T, LineString<T>> for LineString<T> where
T: Float + FromPrimitive,
[src]
T: Float + FromPrimitive,
fn vincenty_length(&self) -> Result<T, FailedToConvergeError>
[src]
impl<T> Winding<T> for LineString<T> where
T: CoordinateType,
[src]
T: CoordinateType,
fn winding_order(&self) -> Option<WindingOrder>
[src]
Returns the winding order of this line None if the winding order is undefined.
ⓘImportant traits for Points<'a, T>fn points_cw(&self) -> Points<T>
[src]
Iterate over the points in a clockwise order
The Linestring isn't changed, and the points are returned either in order, or in reverse order, so that the resultant order makes it appear clockwise
ⓘImportant traits for Points<'a, T>fn points_ccw(&self) -> Points<T>
[src]
Iterate over the points in a counter-clockwise order
The Linestring isn't changed, and the points are returned either in order, or in reverse order, so that the resultant order makes it appear counter-clockwise
fn make_cw_winding(&mut self)
[src]
Change this line's points so they are in clockwise winding order
fn make_ccw_winding(&mut self)
[src]
Change this line's points so they are in counterclockwise winding order
fn is_cw(&self) -> bool
[src]
True iff this clockwise
fn is_ccw(&self) -> bool
[src]
True iff this is wound counterclockwise
fn clone_to_winding_order(&self, winding_order: WindingOrder) -> Self where
Self: Sized + Clone,
[src]
Self: Sized + Clone,
Return a clone of this object, but in the specified winding order
fn make_winding_order(&mut self, winding_order: WindingOrder)
[src]
Change the winding order so that it is in this winding order
Auto Trait Implementations
impl<T> Send for LineString<T> where
T: Send,
T: Send,
impl<T> Sync for LineString<T> where
T: Sync,
T: Sync,
Blanket Implementations
impl<T, G> RotatePoint for G where
G: MapCoords<T, T, Output = G>,
T: Float,
[src]
G: MapCoords<T, T, Output = G>,
T: Float,
fn rotate_around_point(&Self, T, Point<T>) -> G
[src]
impl<T, G> Translate for G where
G: MapCoords<T, T, Output = G> + MapCoordsInplace<T>,
T: CoordinateType,
[src]
G: MapCoords<T, T, Output = G> + MapCoordsInplace<T>,
T: CoordinateType,
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
impl<T> From for T
[src]
impl<I> IntoIterator for I where
I: Iterator,
[src]
I: Iterator,
type Item = <I as Iterator>::Item
The type of the elements being iterated over.
type IntoIter = I
Which kind of iterator are we turning this into?
fn into_iter(self) -> I
[src]
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<P> RTreeObject for P where
P: Point,
[src]
P: Point,
type Envelope = AABB<P>
The object's envelope type. Usually, AABB will be the right choice. This type also defines the objects dimensionality. Read more
fn envelope(&self) -> AABB<P>
[src]
impl<P> PointDistance for P where
P: Point,
[src]
P: Point,
fn distance_2(&self, point: &P) -> <P as Point>::Scalar
[src]
fn contains_point(
&self,
point: &<<P as RTreeObject>::Envelope as Envelope>::Point
) -> bool
[src]
&self,
point: &<<P as RTreeObject>::Envelope as Envelope>::Point
) -> bool