[][src]Struct geo::LineString

pub struct LineString<T>(pub Vec<Coordinate<T>>)
where
    T: CoordinateType
;

An ordered collection of two or more Coordinates, 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 collecting 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]

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]

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]

impl<T> Index<usize> for LineString<T> where
    T: CoordinateType
[src]

type Output = Coordinate<T>

The returned type after indexing.

impl<T> Clone for LineString<T> where
    T: Clone + CoordinateType
[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]

Turn a Point-ish iterator into a LineString.

impl<T> RTreeObject for LineString<T> where
    T: Float + RTreeNum
[src]

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

impl<T, IC> From<Vec<IC>> for LineString<T> where
    IC: Into<Coordinate<T>>,
    T: CoordinateType
[src]

Turn a Vec of Point-ish objects into a LineString.

impl<T> From<LineString<T>> for Geometry<T> where
    T: CoordinateType
[src]

impl<T> Debug for LineString<T> where
    T: Debug + CoordinateType
[src]

impl<T> IntoIterator for LineString<T> where
    T: CoordinateType
[src]

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?

impl<T> PartialEq<LineString<T>> for LineString<T> where
    T: PartialEq<T> + CoordinateType
[src]

impl<T> PointDistance for LineString<T> where
    T: Float + RTreeNum
[src]

default fn contains_point(
    &self,
    point: &<Self::Envelope as Envelope>::Point
) -> bool
[src]

Returns true if a point is contained within this object. Read more

impl<T> BoundingRect<T> for LineString<T> where
    T: CoordinateType
[src]

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]

type Output = Option<Point<T>>

impl<F: Float> ClosestPoint<F, Point<F>> for LineString<F>[src]

impl<T> Contains<Point<T>> for LineString<T> where
    T: Float
[src]

impl<T> Contains<LineString<T>> for Line<T> where
    T: Float
[src]

impl<T> Contains<Line<T>> for LineString<T> where
    T: Float
[src]

impl<T> Contains<LineString<T>> for Polygon<T> where
    T: Float
[src]

impl<T> ConvexHull<T> for LineString<T> where
    T: Float
[src]

impl<T> EuclideanDistance<T, LineString<T>> for Point<T> where
    T: Float
[src]

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]

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]

LineString-LineString distance

impl<T> EuclideanDistance<T, Line<T>> for LineString<T> where
    T: Float + FloatConst + Signed + RTreeNum
[src]

LineString to Line

impl<T> EuclideanDistance<T, LineString<T>> for Line<T> where
    T: Float + FloatConst + Signed + RTreeNum
[src]

Line to LineString

impl<T> EuclideanDistance<T, Polygon<T>> for LineString<T> where
    T: Float + FloatConst + Signed + RTreeNum
[src]

LineString to Polygon

impl<T> EuclideanDistance<T, LineString<T>> for Polygon<T> where
    T: Float + FloatConst + Signed + RTreeNum
[src]

Polygon to LineString distance

impl<T> EuclideanLength<T, LineString<T>> for LineString<T> where
    T: Float + Sum
[src]

impl<T> FrechetDistance<T, LineString<T>> for LineString<T> where
    T: Float + FromPrimitive
[src]

impl<T> HaversineLength<T, LineString<T>> for LineString<T> where
    T: Float + FromPrimitive
[src]

impl<T> Intersects<LineString<T>> for Line<T> where
    T: Float
[src]

impl<T> Intersects<Line<T>> for LineString<T> where
    T: Float
[src]

impl<T> Intersects<LineString<T>> for LineString<T> where
    T: Float
[src]

impl<T> Intersects<LineString<T>> for Polygon<T> where
    T: Float
[src]

impl<T> Intersects<Polygon<T>> for LineString<T> where
    T: Float
[src]

impl<T: CoordinateType, NT: CoordinateType> MapCoords<T, NT> for LineString<T>[src]

type Output = LineString<NT>

impl<T: CoordinateType, NT: CoordinateType> TryMapCoords<T, NT> for LineString<T>[src]

type Output = LineString<NT>

impl<T: CoordinateType> MapCoordsInplace<T> for LineString<T>[src]

impl<T> Rotate<T> for LineString<T> where
    T: Float
[src]

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]

impl<T> SimplifyVW<T, T> for LineString<T> where
    T: Float
[src]

impl<T> SimplifyVWPreserve<T, T> for LineString<T> where
    T: Float + RTreeNum
[src]

impl<T> VincentyLength<T, LineString<T>> for LineString<T> where
    T: Float + FromPrimitive
[src]

impl<T> Winding<T> for LineString<T> where
    T: CoordinateType
[src]

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]

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

impl<T> Sync for LineString<T> where
    T: Sync

Blanket Implementations

impl<T, G> RotatePoint for G where
    G: MapCoords<T, T, Output = G>,
    T: Float
[src]

impl<T, G> Translate for G where
    G: MapCoords<T, T, Output = G> + MapCoordsInplace<T>,
    T: CoordinateType
[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T> From for T[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

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?

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<P> RTreeObject for P where
    P: Point
[src]

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

impl<P> PointDistance for P where
    P: Point
[src]