[][src]Struct geo::MultiLineString

pub struct MultiLineString<T>(pub Vec<LineString<T>, Global>)
where
    T: CoordNum
;

A collection of LineStrings. Can be created from a Vec of LineStrings or from an Iterator which yields LineStrings. Iterating over this object yields the component LineStrings.

Semantics

The boundary of a MultiLineString is obtained by applying the “mod 2” union rule: A Point is in the boundary of a MultiLineString if it is in the boundaries of an odd number of elements of the MultiLineString.

The interior of a MultiLineString is the union of the interior, and boundary of the constituent LineStrings, except for the boundary as defined above. In other words, it is the set difference of the boundary from the union of the interior and boundary of the constituents.

A MultiLineString is simple if and only if all of its elements are simple and the only intersections between any two elements occur at Points that are on the boundaries of both elements. A MultiLineString is closed if all of its elements are closed. The boundary of a closed MultiLineString is always empty.

Implementations

impl<T> MultiLineString<T> where
    T: CoordNum
[src]

pub fn is_closed(&self) -> bool[src]

True if the MultiLineString is empty or if all of its LineStrings are closed - see LineString::is_closed.

Examples

use geo_types::{MultiLineString, LineString, line_string};

let open_line_string: LineString<f32> = line_string![(x: 0., y: 0.), (x: 5., y: 0.)];
assert!(!MultiLineString(vec![open_line_string.clone()]).is_closed());

let closed_line_string: LineString<f32> = line_string![(x: 0., y: 0.), (x: 5., y: 0.), (x: 0., y: 0.)];
assert!(MultiLineString(vec![closed_line_string.clone()]).is_closed());

// MultiLineString is not closed if *any* of it's LineStrings are not closed
assert!(!MultiLineString(vec![open_line_string, closed_line_string]).is_closed());

// An empty MultiLineString is closed
assert!(MultiLineString::<f32>(vec![]).is_closed());

impl<T> MultiLineString<T> where
    T: CoordNum
[src]

pub fn iter(&self) -> impl Iterator<Item = &LineString<T>>[src]

pub fn iter_mut(&mut self) -> impl Iterator<Item = &mut LineString<T>>[src]

Trait Implementations

impl<T> Area<T> for MultiLineString<T> where
    T: CoordNum
[src]

impl<T> BoundingRect<T> for MultiLineString<T> where
    T: CoordNum
[src]

type Output = Option<Rect<T>>

pub fn bounding_rect(&self) -> Self::Output[src]

Return the BoundingRect for a MultiLineString

impl<T> Centroid for MultiLineString<T> where
    T: CoordFloat + FromPrimitive + Sum
[src]

type Output = Option<Point<T>>

pub fn centroid(&self) -> Self::Output[src]

The Centroid of a MultiLineString is the mean of the centroids of all the constituent linestrings, weighted by the length of each linestring

impl<T> Clone for MultiLineString<T> where
    T: Clone + CoordNum
[src]

impl<F: GeoFloat> ClosestPoint<F, Point<F>> for MultiLineString<F>[src]

impl<T> ConcaveHull for MultiLineString<T> where
    T: GeoFloat + RTreeNum
[src]

type Scalar = T

impl<G, T> Contains<G> for MultiLineString<T> where
    T: CoordNum,
    LineString<T>: Contains<G>, 
[src]

impl<T> ConvexHull for MultiLineString<T> where
    T: GeoNum
[src]

type Scalar = T

impl<T> CoordinatePosition for MultiLineString<T> where
    T: GeoNum
[src]

type Scalar = T

impl<'a, T: CoordNum + 'a> CoordsIter<'a> for MultiLineString<T>[src]

type Iter = Flatten<MapCoordsIter<'a, T, Iter<'a, LineString<T>>, LineString<T>>>

type ExteriorIter = Self::Iter

type Scalar = T

pub fn coords_count(&'a self) -> usize[src]

Return the number of coordinates in the MultiLineString.

impl<T> Debug for MultiLineString<T> where
    T: Debug + CoordNum
[src]

impl<T> Eq for MultiLineString<T> where
    T: Eq + CoordNum
[src]

impl<T> EuclideanDistance<T, MultiLineString<T>> for Point<T> where
    T: GeoFloat
[src]

pub fn euclidean_distance(&self, mls: &MultiLineString<T>) -> T[src]

Minimum distance from a Point to a MultiLineString

impl<T> EuclideanDistance<T, Point<T>> for MultiLineString<T> where
    T: GeoFloat
[src]

pub fn euclidean_distance(&self, point: &Point<T>) -> T[src]

Minimum distance from a MultiLineString to a Point

impl<T> EuclideanLength<T, MultiLineString<T>> for MultiLineString<T> where
    T: CoordFloat + Sum
[src]

impl<T, ILS> From<ILS> for MultiLineString<T> where
    T: CoordNum,
    ILS: Into<LineString<T>>, 
[src]

impl<T> From<MultiLineString<T>> for Geometry<T> where
    T: CoordNum
[src]

impl<T, ILS> FromIterator<ILS> for MultiLineString<T> where
    T: CoordNum,
    ILS: Into<LineString<T>>, 
[src]

impl GeodesicLength<f64, MultiLineString<f64>> for MultiLineString<f64>[src]

impl<C: CoordNum> HasDimensions for MultiLineString<C>[src]

impl<T> Hash for MultiLineString<T> where
    T: Hash + CoordNum
[src]

impl<T> HaversineLength<T, MultiLineString<T>> for MultiLineString<T> where
    T: CoordFloat + FromPrimitive
[src]

impl<T, G> Intersects<G> for MultiLineString<T> where
    T: CoordNum,
    LineString<T>: Intersects<G>, 
[src]

impl<T> Intersects<MultiLineString<T>> for Polygon<T> where
    MultiLineString<T>: Intersects<Polygon<T>>,
    T: CoordNum
[src]

impl<'a, T> IntoIterator for &'a mut MultiLineString<T> where
    T: CoordNum
[src]

type Item = &'a mut LineString<T>

The type of the elements being iterated over.

type IntoIter = IterMut<'a, LineString<T>>

Which kind of iterator are we turning this into?

impl<T> IntoIterator for MultiLineString<T> where
    T: CoordNum
[src]

type Item = LineString<T>

The type of the elements being iterated over.

type IntoIter = IntoIter<LineString<T>, Global>

Which kind of iterator are we turning this into?

impl<'a, T> IntoIterator for &'a MultiLineString<T> where
    T: CoordNum
[src]

type Item = &'a LineString<T>

The type of the elements being iterated over.

type IntoIter = Iter<'a, LineString<T>>

Which kind of iterator are we turning this into?

impl<T: CoordNum, NT: CoordNum> MapCoords<T, NT> for MultiLineString<T>[src]

type Output = MultiLineString<NT>

impl<T: CoordNum> MapCoordsInplace<T> for MultiLineString<T>[src]

impl<T> PartialEq<MultiLineString<T>> for MultiLineString<T> where
    T: PartialEq<T> + CoordNum
[src]

impl<T> Rotate<T> for MultiLineString<T> where
    T: CoordFloat + FromPrimitive
[src]

pub fn rotate(&self, angle: T) -> Self[src]

Rotate the contained LineStrings about their centroids by the given number of degrees

impl<T> Simplify<T, T> for MultiLineString<T> where
    T: GeoFloat
[src]

impl<T> SimplifyVW<T, T> for MultiLineString<T> where
    T: CoordFloat
[src]

impl<T> SimplifyVWPreserve<T, T> for MultiLineString<T> where
    T: CoordFloat + RTreeNum
[src]

impl<T> StructuralEq for MultiLineString<T> where
    T: CoordNum
[src]

impl<T> StructuralPartialEq for MultiLineString<T> where
    T: CoordNum
[src]

impl<T> TryFrom<Geometry<T>> for MultiLineString<T> where
    T: CoordNum
[src]

type Error = FailedToConvertError

The type returned in the event of a conversion error.

impl<T: CoordNum, NT: CoordNum> TryMapCoords<T, NT> for MultiLineString<T>[src]

type Output = MultiLineString<NT>

impl<T> VincentyLength<T, MultiLineString<T>> for MultiLineString<T> where
    T: CoordFloat + FromPrimitive
[src]

Auto Trait Implementations

impl<T> RefUnwindSafe for MultiLineString<T> where
    T: RefUnwindSafe
[src]

impl<T> Send for MultiLineString<T> where
    T: Send
[src]

impl<T> Sync for MultiLineString<T> where
    T: Sync
[src]

impl<T> Unpin for MultiLineString<T> where
    T: Unpin
[src]

impl<T> UnwindSafe for MultiLineString<T> where
    T: UnwindSafe
[src]

Blanket Implementations

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

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

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

impl<'a, T, G> Extremes<'a, T> for G where
    T: CoordNum,
    G: CoordsIter<'a, Scalar = T>, 
[src]

impl<T> From<T> for T[src]

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

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

impl<T> Same<T> for T

type Output = T

Should always be Self

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

type Owned = T

The resulting type after obtaining ownership.

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

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

type Error = Infallible

The type returned in the event of a conversion error.

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

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

The type returned in the event of a conversion error.