[−][src]Struct geo::MultiLineString
A collection of
LineString
s. Can
be created from a Vec
of LineString
s or from an
Iterator which yields LineString
s. Iterating over this
object yields the component LineString
s.
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
LineString
s, 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 Point
s 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]
T: CoordNum,
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]
T: CoordNum,
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]
T: CoordNum,
pub fn signed_area(&self) -> T
[src]
pub fn unsigned_area(&self) -> T
[src]
impl<T> BoundingRect<T> for MultiLineString<T> where
T: CoordNum,
[src]
T: CoordNum,
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]
T: CoordFloat + FromPrimitive + Sum,
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]
T: Clone + CoordNum,
pub fn clone(&self) -> MultiLineString<T>
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<F: GeoFloat> ClosestPoint<F, Point<F>> for MultiLineString<F>
[src]
pub fn closest_point(&self, p: &Point<F>) -> Closest<F>
[src]
impl<T> ConcaveHull for MultiLineString<T> where
T: GeoFloat + RTreeNum,
[src]
T: GeoFloat + RTreeNum,
type Scalar = T
pub fn concave_hull(&self, concavity: T) -> Polygon<T>
[src]
impl<G, T> Contains<G> for MultiLineString<T> where
T: CoordNum,
LineString<T>: Contains<G>,
[src]
T: CoordNum,
LineString<T>: Contains<G>,
impl<T> ConvexHull for MultiLineString<T> where
T: GeoNum,
[src]
T: GeoNum,
type Scalar = T
pub fn convex_hull(&self) -> Polygon<T>
[src]
impl<T> CoordinatePosition for MultiLineString<T> where
T: GeoNum,
[src]
T: GeoNum,
type Scalar = T
pub fn calculate_coordinate_position(
&self,
coord: &Coordinate<T>,
is_inside: &mut bool,
boundary_count: &mut usize
)
[src]
&self,
coord: &Coordinate<T>,
is_inside: &mut bool,
boundary_count: &mut usize
)
pub fn coordinate_position(&self, coord: &Coordinate<Self::Scalar>) -> CoordPos
[src]
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_iter(&'a self) -> Self::Iter
[src]
pub fn coords_count(&'a self) -> usize
[src]
Return the number of coordinates in the MultiLineString
.
pub fn exterior_coords_iter(&'a self) -> Self::ExteriorIter
[src]
impl<T> Debug for MultiLineString<T> where
T: Debug + CoordNum,
[src]
T: Debug + CoordNum,
impl<T> Eq for MultiLineString<T> where
T: Eq + CoordNum,
[src]
T: Eq + CoordNum,
impl<T> EuclideanDistance<T, MultiLineString<T>> for Point<T> where
T: GeoFloat,
[src]
T: GeoFloat,
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]
T: GeoFloat,
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]
T: CoordFloat + Sum,
pub fn euclidean_length(&self) -> T
[src]
impl<T, ILS> From<ILS> for MultiLineString<T> where
T: CoordNum,
ILS: Into<LineString<T>>,
[src]
T: CoordNum,
ILS: Into<LineString<T>>,
pub fn from(ls: ILS) -> MultiLineString<T>
[src]
impl<T> From<MultiLineString<T>> for Geometry<T> where
T: CoordNum,
[src]
T: CoordNum,
pub fn from(x: MultiLineString<T>) -> Geometry<T>
[src]
impl<T, ILS> FromIterator<ILS> for MultiLineString<T> where
T: CoordNum,
ILS: Into<LineString<T>>,
[src]
T: CoordNum,
ILS: Into<LineString<T>>,
pub fn from_iter<I>(iter: I) -> MultiLineString<T> where
I: IntoIterator<Item = ILS>,
[src]
I: IntoIterator<Item = ILS>,
impl GeodesicLength<f64, MultiLineString<f64>> for MultiLineString<f64>
[src]
pub fn geodesic_length(&self) -> f64
[src]
impl<C: CoordNum> HasDimensions for MultiLineString<C>
[src]
pub fn is_empty(&self) -> bool
[src]
pub fn dimensions(&self) -> Dimensions
[src]
pub fn boundary_dimensions(&self) -> Dimensions
[src]
impl<T> Hash for MultiLineString<T> where
T: Hash + CoordNum,
[src]
T: Hash + CoordNum,
pub fn hash<__H>(&self, state: &mut __H) where
__H: Hasher,
[src]
__H: Hasher,
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl<T> HaversineLength<T, MultiLineString<T>> for MultiLineString<T> where
T: CoordFloat + FromPrimitive,
[src]
T: CoordFloat + FromPrimitive,
pub fn haversine_length(&self) -> T
[src]
impl<T, G> Intersects<G> for MultiLineString<T> where
T: CoordNum,
LineString<T>: Intersects<G>,
[src]
T: CoordNum,
LineString<T>: Intersects<G>,
pub fn intersects(&self, rhs: &G) -> bool
[src]
impl<T> Intersects<MultiLineString<T>> for Polygon<T> where
MultiLineString<T>: Intersects<Polygon<T>>,
T: CoordNum,
[src]
MultiLineString<T>: Intersects<Polygon<T>>,
T: CoordNum,
pub fn intersects(&self, rhs: &MultiLineString<T>) -> bool
[src]
impl<'a, T> IntoIterator for &'a mut MultiLineString<T> where
T: CoordNum,
[src]
T: CoordNum,
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?
pub fn into_iter(self) -> <&'a mut MultiLineString<T> as IntoIterator>::IntoIter
[src]
impl<T> IntoIterator for MultiLineString<T> where
T: CoordNum,
[src]
T: CoordNum,
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?
pub fn into_iter(self) -> <MultiLineString<T> as IntoIterator>::IntoIter
[src]
impl<'a, T> IntoIterator for &'a MultiLineString<T> where
T: CoordNum,
[src]
T: CoordNum,
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?
pub fn into_iter(self) -> <&'a MultiLineString<T> as IntoIterator>::IntoIter
[src]
impl<T: CoordNum, NT: CoordNum> MapCoords<T, NT> for MultiLineString<T>
[src]
type Output = MultiLineString<NT>
pub fn map_coords(
&self,
func: impl Fn(&(T, T)) -> (NT, NT) + Copy
) -> Self::Output
[src]
&self,
func: impl Fn(&(T, T)) -> (NT, NT) + Copy
) -> Self::Output
impl<T: CoordNum> MapCoordsInplace<T> for MultiLineString<T>
[src]
impl<T> PartialEq<MultiLineString<T>> for MultiLineString<T> where
T: PartialEq<T> + CoordNum,
[src]
T: PartialEq<T> + CoordNum,
pub fn eq(&self, other: &MultiLineString<T>) -> bool
[src]
pub fn ne(&self, other: &MultiLineString<T>) -> bool
[src]
impl<T> Rotate<T> for MultiLineString<T> where
T: CoordFloat + FromPrimitive,
[src]
T: CoordFloat + FromPrimitive,
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]
T: GeoFloat,
impl<T> SimplifyVW<T, T> for MultiLineString<T> where
T: CoordFloat,
[src]
T: CoordFloat,
pub fn simplifyvw(&self, epsilon: &T) -> MultiLineString<T>
[src]
impl<T> SimplifyVWPreserve<T, T> for MultiLineString<T> where
T: CoordFloat + RTreeNum,
[src]
T: CoordFloat + RTreeNum,
pub fn simplifyvw_preserve(&self, epsilon: &T) -> MultiLineString<T>
[src]
impl<T> StructuralEq for MultiLineString<T> where
T: CoordNum,
[src]
T: CoordNum,
impl<T> StructuralPartialEq for MultiLineString<T> where
T: CoordNum,
[src]
T: CoordNum,
impl<T> TryFrom<Geometry<T>> for MultiLineString<T> where
T: CoordNum,
[src]
T: CoordNum,
type Error = FailedToConvertError
The type returned in the event of a conversion error.
pub fn try_from(
geom: Geometry<T>
) -> Result<MultiLineString<T>, <MultiLineString<T> as TryFrom<Geometry<T>>>::Error>
[src]
geom: Geometry<T>
) -> Result<MultiLineString<T>, <MultiLineString<T> as TryFrom<Geometry<T>>>::Error>
impl<T: CoordNum, NT: CoordNum> TryMapCoords<T, NT> for MultiLineString<T>
[src]
type Output = MultiLineString<NT>
pub fn try_map_coords(
&self,
func: impl Fn(&(T, T)) -> Result<(NT, NT), Box<dyn Error + Send + Sync>> + Copy
) -> Result<Self::Output, Box<dyn Error + Send + Sync>>
[src]
&self,
func: impl Fn(&(T, T)) -> Result<(NT, NT), Box<dyn Error + Send + Sync>> + Copy
) -> Result<Self::Output, Box<dyn Error + Send + Sync>>
impl<T> VincentyLength<T, MultiLineString<T>> for MultiLineString<T> where
T: CoordFloat + FromPrimitive,
[src]
T: CoordFloat + FromPrimitive,
pub fn vincenty_length(&self) -> Result<T, FailedToConvergeError>
[src]
Auto Trait Implementations
impl<T> RefUnwindSafe for MultiLineString<T> where
T: RefUnwindSafe,
[src]
T: RefUnwindSafe,
impl<T> Send for MultiLineString<T> where
T: Send,
[src]
T: Send,
impl<T> Sync for MultiLineString<T> where
T: Sync,
[src]
T: Sync,
impl<T> Unpin for MultiLineString<T> where
T: Unpin,
[src]
T: Unpin,
impl<T> UnwindSafe for MultiLineString<T> where
T: UnwindSafe,
[src]
T: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<'a, T, G> Extremes<'a, T> for G where
T: CoordNum,
G: CoordsIter<'a, Scalar = T>,
[src]
T: CoordNum,
G: CoordsIter<'a, Scalar = T>,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, G> RotatePoint<T> for G where
T: CoordFloat,
G: MapCoords<T, T, Output = G>,
[src]
T: CoordFloat,
G: MapCoords<T, T, Output = G>,
pub fn rotate_around_point(&Self, T, Point<T>) -> G
[src]
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, G> Translate<T> for G where
T: CoordNum,
G: MapCoords<T, T, Output = G> + MapCoordsInplace<T>,
[src]
T: CoordNum,
G: MapCoords<T, T, Output = G> + MapCoordsInplace<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,