Struct geo::MultiLineString[][src]

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> AbsDiffEq<MultiLineString<T>> for MultiLineString<T> where
    T: AbsDiffEq<T, Epsilon = T> + CoordNum,
    <T as AbsDiffEq<T>>::Epsilon: Copy
[src]

type Epsilon = T

Used for specifying relative comparisons.

pub fn abs_diff_eq(
    &self,
    other: &MultiLineString<T>,
    epsilon: <MultiLineString<T> as AbsDiffEq<MultiLineString<T>>>::Epsilon
) -> bool
[src]

Equality assertion with an absolute limit.

Examples

use geo_types::{MultiLineString, line_string};

let a = MultiLineString(vec![line_string![(x: 0., y: 0.), (x: 10., y: 10.)]]);
let b = MultiLineString(vec![line_string![(x: 0., y: 0.), (x: 10.01, y: 10.)]]);

approx::abs_diff_eq!(a, b, epsilon=0.1);
approx::abs_diff_ne!(a, b, epsilon=0.001);

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>>

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

Return the BoundingRect for a MultiLineString

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

type Output = Option<Point<T>>

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<F> Contains<MultiLineString<F>> for MultiPolygon<F> where
    F: GeoFloat
[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

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]

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]

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<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 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<'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<F: GeoFloat> Relate<F, GeometryCollection<F>> for MultiLineString<F>[src]

impl<F: GeoFloat> Relate<F, Line<F>> for MultiLineString<F>[src]

impl<F: GeoFloat> Relate<F, LineString<F>> for MultiLineString<F>[src]

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

impl<F: GeoFloat> Relate<F, MultiLineString<F>> for Line<F>[src]

impl<F: GeoFloat> Relate<F, MultiLineString<F>> for LineString<F>[src]

impl<F: GeoFloat> Relate<F, MultiLineString<F>> for Polygon<F>[src]

impl<F: GeoFloat> Relate<F, MultiLineString<F>> for MultiPoint<F>[src]

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

impl<F: GeoFloat> Relate<F, MultiLineString<F>> for MultiPolygon<F>[src]

impl<F: GeoFloat> Relate<F, MultiLineString<F>> for Rect<F>[src]

impl<F: GeoFloat> Relate<F, MultiLineString<F>> for Triangle<F>[src]

impl<F: GeoFloat> Relate<F, MultiLineString<F>> for GeometryCollection<F>[src]

impl<F: GeoFloat> Relate<F, MultiPoint<F>> for MultiLineString<F>[src]

impl<F: GeoFloat> Relate<F, MultiPolygon<F>> for MultiLineString<F>[src]

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

impl<F: GeoFloat> Relate<F, Polygon<F>> for MultiLineString<F>[src]

impl<F: GeoFloat> Relate<F, Rect<F>> for MultiLineString<F>[src]

impl<F: GeoFloat> Relate<F, Triangle<F>> for MultiLineString<F>[src]

impl<T> RelativeEq<MultiLineString<T>> for MultiLineString<T> where
    T: AbsDiffEq<T, Epsilon = T> + CoordNum + RelativeEq<T>, 
[src]

pub fn relative_eq(
    &self,
    other: &MultiLineString<T>,
    epsilon: <MultiLineString<T> as AbsDiffEq<MultiLineString<T>>>::Epsilon,
    max_relative: <MultiLineString<T> as AbsDiffEq<MultiLineString<T>>>::Epsilon
) -> bool
[src]

Equality assertion within a relative limit.

Examples

use geo_types::{MultiLineString, line_string};

let a = MultiLineString(vec![line_string![(x: 0., y: 0.), (x: 10., y: 10.)]]);
let b = MultiLineString(vec![line_string![(x: 0., y: 0.), (x: 10.01, y: 10.)]]);

approx::assert_relative_eq!(a, b, max_relative=0.1);
approx::assert_relative_ne!(a, b, max_relative=0.0001);

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

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]

Convert a Geometry enum into its inner type.

Fails if the enum case does not match the type you are trying to convert it to.

type Error = Error

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

impl<T> Send for MultiLineString<T> where
    T: Send

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

impl<T> Unpin for MultiLineString<T> where
    T: Unpin

impl<T> UnwindSafe for MultiLineString<T> where
    T: UnwindSafe

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.