Struct geo::LineString[][src]

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]

Important traits for PointsIter<'a, T>

Important traits for Vec<u8>

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());

Trait Implementations

impl<T> SpatialObject for LineString<T> where
    T: Float + SpadeNum + Debug
[src]

The object's point type.

Returns the object's minimal bounding rectangle. Read more

Returns the squared euclidean distance from the object's contour. Returns a value samller than zero if the point is contained within the object. Read more

Returns true if a given point is contained in this object.

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

Turn a Point-ish iterator into a LineString.

Creates a value from an iterator. Read more

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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

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

Formats the value using the given formatter. Read more

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

Iterate over all the Coordinates in this LineString.

The type of the elements being iterated over.

Which kind of iterator are we turning this into?

Creates an iterator from a value. Read more

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

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

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

Performs the conversion.

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.

Performs the conversion.

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

Return the BoundingRect for a LineString

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

See: https://en.wikipedia.org/wiki/Centroid Read more

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

Find the closest point between self and p.

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

Checks if rhs is completely contained within self. Read more

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

Checks if rhs is completely contained within self. Read more

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

Checks if rhs is completely contained within self. Read more

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

Checks if rhs is completely contained within self. Read more

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

Returns the convex hull of a Polygon. The hull is always oriented counter-clockwise. Read more

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

Minimum distance from a Point to a LineString

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

Minimum distance from a LineString to a Point

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

LineString-LineString distance

Returns the distance between two geometries Read more

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

LineString to Line

Returns the distance between two geometries Read more

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

Line to LineString

Returns the distance between two geometries Read more

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

LineString to Polygon

Returns the distance between two geometries Read more

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

Polygon to LineString distance

Returns the distance between two geometries Read more

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

Calculation of the length of a Line Read more

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

Calculation of the length of a Line Read more

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

Checks if the geometry A intersects the geometry B. Read more

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

Checks if the geometry A intersects the geometry B. Read more

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

Checks if the geometry A intersects the geometry B. Read more

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

Checks if the geometry A intersects the geometry B. Read more

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

Checks if the geometry A intersects the geometry B. Read more

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

Apply a function to all the coordinates in a geometric object, returning a new object. Read more

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

Map a fallible function over all the coordinates in a geometry, returning a Result Read more

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

Apply a function to all the coordinates in a geometric object, in place Read more

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

Rotate the LineString about its centroid by the given number of degrees

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

Returns the simplified representation of a geometry, using the Ramer–Douglas–Peucker algorithm Read more

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

Returns the simplified representation of a geometry, using a topology-preserving variant of the Visvalingam-Whyatt algorithm. Read more

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

Returns the simplified representation of a geometry, using the Visvalingam-Whyatt algorithm Read more

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

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

Returns the winding order of this line None if the winding order is undefined.

Important traits for Points<'a, T>

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>

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

Change this line's points so they are in clockwise winding order

Change this line's points so they are in counterclockwise winding order

True iff this clockwise

True iff this is wound counterclockwise

Return a clone of this object, but in the specified winding order

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