Struct geo::MultiPolygon [−][src]
A collection of Polygon
s. Can
be created from a Vec
of Polygon
s, or from an
Iterator which yields Polygon
s. Iterating over this
object yields the component Polygon
s.
Semantics
The interior and the boundary are the union of the interior and the boundary of the constituent polygons.
Validity
-
The interiors of no two constituent polygons may intersect.
-
The boundaries of two (distinct) constituent polygons may only intersect at finitely many points.
Refer to section 6.1.14 of the OGC-SFA for a formal definition of validity. Note that the validity is not enforced, but expected by the operations and predicates that operate on it.
Implementations
impl<T> MultiPolygon<T> where
T: CoordNum,
[src]
T: CoordNum,
pub fn iter(&self) -> impl Iterator<Item = &Polygon<T>>
[src]
pub fn iter_mut(&mut self) -> impl Iterator<Item = &mut Polygon<T>>
[src]
Trait Implementations
impl<T> AbsDiffEq<MultiPolygon<T>> for MultiPolygon<T> where
T: AbsDiffEq<T, Epsilon = T> + CoordNum,
<T as AbsDiffEq<T>>::Epsilon: Copy,
[src]
T: AbsDiffEq<T, Epsilon = T> + CoordNum,
<T as AbsDiffEq<T>>::Epsilon: Copy,
type Epsilon = T
Used for specifying relative comparisons.
pub fn default_epsilon(
) -> <MultiPolygon<T> as AbsDiffEq<MultiPolygon<T>>>::Epsilon
[src]
) -> <MultiPolygon<T> as AbsDiffEq<MultiPolygon<T>>>::Epsilon
pub fn abs_diff_eq(
&self,
other: &MultiPolygon<T>,
epsilon: <MultiPolygon<T> as AbsDiffEq<MultiPolygon<T>>>::Epsilon
) -> bool
[src]
&self,
other: &MultiPolygon<T>,
epsilon: <MultiPolygon<T> as AbsDiffEq<MultiPolygon<T>>>::Epsilon
) -> bool
Equality assertion with an absolute limit.
Examples
use geo_types::{polygon, Polygon, MultiPolygon}; let a_el: Polygon<f32> = polygon![(x: 0., y: 0.), (x: 5., y: 0.), (x: 7., y: 9.), (x: 0., y: 0.)]; let a = MultiPolygon(vec![a_el]); let b_el: Polygon<f32> = polygon![(x: 0., y: 0.), (x: 5., y: 0.), (x: 7.01, y: 9.), (x: 0., y: 0.)]; let b = MultiPolygon(vec![b_el]); approx::abs_diff_eq!(a, b, epsilon=0.1); approx::abs_diff_ne!(a, b, epsilon=0.001);
pub fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool
impl<T> Area<T> for MultiPolygon<T> where
T: CoordFloat,
[src]
T: CoordFloat,
Note. The implementation is a straight-forward
summation of the signed areas of the individual
polygons. In particular, unsigned_area
is not
necessarily the sum of the unsigned_area
of the
constituent polygons unless they are all oriented the
same.
fn signed_area(&self) -> T
[src]
fn unsigned_area(&self) -> T
[src]
impl<T> BoundingRect<T> for MultiPolygon<T> where
T: CoordNum,
[src]
T: CoordNum,
type Output = Option<Rect<T>>
fn bounding_rect(&self) -> Self::Output
[src]
Return the BoundingRect for a MultiPolygon
impl<T> Centroid for MultiPolygon<T> where
T: GeoFloat,
[src]
T: GeoFloat,
impl<T> Clone for MultiPolygon<T> where
T: Clone + CoordNum,
[src]
T: Clone + CoordNum,
pub fn clone(&self) -> MultiPolygon<T>
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<F: GeoFloat> ClosestPoint<F, Point<F>> for MultiPolygon<F>
[src]
fn closest_point(&self, p: &Point<F>) -> Closest<F>
[src]
impl<T> ConcaveHull for MultiPolygon<T> where
T: GeoFloat + RTreeNum,
[src]
T: GeoFloat + RTreeNum,
impl<T> Contains<Coordinate<T>> for MultiPolygon<T> where
T: GeoNum,
[src]
T: GeoNum,
fn contains(&self, coord: &Coordinate<T>) -> bool
[src]
impl<F> Contains<GeometryCollection<F>> for MultiPolygon<F> where
F: GeoFloat,
[src]
F: GeoFloat,
fn contains(&self, rhs: &GeometryCollection<F>) -> bool
[src]
impl<F> Contains<Line<F>> for MultiPolygon<F> where
F: GeoFloat,
[src]
F: GeoFloat,
impl<F> Contains<LineString<F>> for MultiPolygon<F> where
F: GeoFloat,
[src]
F: GeoFloat,
fn contains(&self, rhs: &LineString<F>) -> bool
[src]
impl<F> Contains<MultiLineString<F>> for MultiPolygon<F> where
F: GeoFloat,
[src]
F: GeoFloat,
fn contains(&self, rhs: &MultiLineString<F>) -> bool
[src]
impl<T: GeoNum> Contains<MultiPoint<T>> for MultiPolygon<T>
[src]
fn contains(&self, rhs: &MultiPoint<T>) -> bool
[src]
impl<F> Contains<MultiPolygon<F>> for MultiPolygon<F> where
F: GeoFloat,
[src]
F: GeoFloat,
fn contains(&self, rhs: &MultiPolygon<F>) -> bool
[src]
impl<T> Contains<Point<T>> for MultiPolygon<T> where
T: GeoNum,
[src]
T: GeoNum,
impl<F> Contains<Polygon<F>> for MultiPolygon<F> where
F: GeoFloat,
[src]
F: GeoFloat,
impl<F> Contains<Rect<F>> for MultiPolygon<F> where
F: GeoFloat,
[src]
F: GeoFloat,
impl<F> Contains<Triangle<F>> for MultiPolygon<F> where
F: GeoFloat,
[src]
F: GeoFloat,
impl<T> ConvexHull for MultiPolygon<T> where
T: GeoNum,
[src]
T: GeoNum,
type Scalar = T
fn convex_hull(&self) -> Polygon<T>
[src]
impl<T> CoordinatePosition for MultiPolygon<T> where
T: GeoNum,
[src]
T: GeoNum,
type Scalar = T
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
)
fn coordinate_position(&self, coord: &Coordinate<Self::Scalar>) -> CoordPos
[src]
impl<'a, T: CoordNum + 'a> CoordsIter<'a> for MultiPolygon<T>
[src]
type Iter = Flatten<MapCoordsIter<'a, T, Iter<'a, Polygon<T>>, Polygon<T>>>
type ExteriorIter = Flatten<MapExteriorCoordsIter<'a, T, Iter<'a, Polygon<T>>, Polygon<T>>>
type Scalar = T
fn coords_iter(&'a self) -> Self::Iter
[src]
fn coords_count(&'a self) -> usize
[src]
Return the number of coordinates in the MultiPolygon
.
fn exterior_coords_iter(&'a self) -> Self::ExteriorIter
[src]
impl<T> Debug for MultiPolygon<T> where
T: Debug + CoordNum,
[src]
T: Debug + CoordNum,
impl<T> Eq for MultiPolygon<T> where
T: Eq + CoordNum,
[src]
T: Eq + CoordNum,
impl<T> EuclideanDistance<T, Line<T>> for MultiPolygon<T> where
T: GeoFloat + FloatConst + Signed + RTreeNum,
[src]
T: GeoFloat + FloatConst + Signed + RTreeNum,
MultiPolygon to Line distance
fn euclidean_distance(&self, other: &Line<T>) -> T
[src]
impl<T> EuclideanDistance<T, MultiPolygon<T>> for Point<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, mpolygon: &MultiPolygon<T>) -> T
[src]
Minimum distance from a Point to a MultiPolygon
impl<T> EuclideanDistance<T, MultiPolygon<T>> for Line<T> where
T: GeoFloat + FloatConst + Signed + RTreeNum,
[src]
T: GeoFloat + FloatConst + Signed + RTreeNum,
Line to MultiPolygon distance
fn euclidean_distance(&self, mpolygon: &MultiPolygon<T>) -> T
[src]
impl<T> EuclideanDistance<T, Point<T>> for MultiPolygon<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn euclidean_distance(&self, point: &Point<T>) -> T
[src]
Minimum distance from a MultiPolygon to a Point
impl<T, IP> From<IP> for MultiPolygon<T> where
T: CoordNum,
IP: Into<Polygon<T>>,
[src]
T: CoordNum,
IP: Into<Polygon<T>>,
pub fn from(x: IP) -> MultiPolygon<T>
[src]
impl<T> From<MultiPolygon<T>> for Geometry<T> where
T: CoordNum,
[src]
T: CoordNum,
pub fn from(x: MultiPolygon<T>) -> Geometry<T>
[src]
impl<T, IP> From<Vec<IP, Global>> for MultiPolygon<T> where
T: CoordNum,
IP: Into<Polygon<T>>,
[src]
T: CoordNum,
IP: Into<Polygon<T>>,
pub fn from(x: Vec<IP, Global>) -> MultiPolygon<T>
[src]
impl<T, IP> FromIterator<IP> for MultiPolygon<T> where
T: CoordNum,
IP: Into<Polygon<T>>,
[src]
T: CoordNum,
IP: Into<Polygon<T>>,
pub fn from_iter<I>(iter: I) -> MultiPolygon<T> where
I: IntoIterator<Item = IP>,
[src]
I: IntoIterator<Item = IP>,
impl<C: CoordNum> HasDimensions for MultiPolygon<C>
[src]
fn is_empty(&self) -> bool
[src]
fn dimensions(&self) -> Dimensions
[src]
fn boundary_dimensions(&self) -> Dimensions
[src]
impl<T> Hash for MultiPolygon<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<G, T> Intersects<G> for MultiPolygon<T> where
T: GeoNum,
Polygon<T>: Intersects<G>,
[src]
T: GeoNum,
Polygon<T>: Intersects<G>,
fn intersects(&self, rhs: &G) -> bool
[src]
impl<T> Intersects<MultiPolygon<T>> for Point<T> where
MultiPolygon<T>: Intersects<Point<T>>,
T: CoordNum,
[src]
MultiPolygon<T>: Intersects<Point<T>>,
T: CoordNum,
fn intersects(&self, rhs: &MultiPolygon<T>) -> bool
[src]
impl<T> Intersects<MultiPolygon<T>> for Line<T> where
MultiPolygon<T>: Intersects<Line<T>>,
T: CoordNum,
[src]
MultiPolygon<T>: Intersects<Line<T>>,
T: CoordNum,
fn intersects(&self, rhs: &MultiPolygon<T>) -> bool
[src]
impl<T> Intersects<MultiPolygon<T>> for Rect<T> where
MultiPolygon<T>: Intersects<Rect<T>>,
T: CoordNum,
[src]
MultiPolygon<T>: Intersects<Rect<T>>,
T: CoordNum,
fn intersects(&self, rhs: &MultiPolygon<T>) -> bool
[src]
impl<T> Intersects<MultiPolygon<T>> for Polygon<T> where
MultiPolygon<T>: Intersects<Polygon<T>>,
T: CoordNum,
[src]
MultiPolygon<T>: Intersects<Polygon<T>>,
T: CoordNum,
fn intersects(&self, rhs: &MultiPolygon<T>) -> bool
[src]
impl<'a, T> IntoIterator for &'a MultiPolygon<T> where
T: CoordNum,
[src]
T: CoordNum,
type Item = &'a Polygon<T>
The type of the elements being iterated over.
type IntoIter = Iter<'a, Polygon<T>>
Which kind of iterator are we turning this into?
pub fn into_iter(self) -> <&'a MultiPolygon<T> as IntoIterator>::IntoIter
[src]
impl<'a, T> IntoIterator for &'a mut MultiPolygon<T> where
T: CoordNum,
[src]
T: CoordNum,
type Item = &'a mut Polygon<T>
The type of the elements being iterated over.
type IntoIter = IterMut<'a, Polygon<T>>
Which kind of iterator are we turning this into?
pub fn into_iter(self) -> <&'a mut MultiPolygon<T> as IntoIterator>::IntoIter
[src]
impl<T> IntoIterator for MultiPolygon<T> where
T: CoordNum,
[src]
T: CoordNum,
type Item = Polygon<T>
The type of the elements being iterated over.
type IntoIter = IntoIter<Polygon<T>, Global>
Which kind of iterator are we turning this into?
pub fn into_iter(self) -> <MultiPolygon<T> as IntoIterator>::IntoIter
[src]
impl<T: CoordNum, NT: CoordNum> MapCoords<T, NT> for MultiPolygon<T>
[src]
type Output = MultiPolygon<NT>
fn map_coords(&self, func: impl Fn(&(T, T)) -> (NT, NT) + Copy) -> Self::Output
[src]
impl<T: CoordNum> MapCoordsInplace<T> for MultiPolygon<T>
[src]
impl<T> Orient for MultiPolygon<T> where
T: GeoNum,
[src]
T: GeoNum,
fn orient(&self, direction: Direction) -> MultiPolygon<T>
[src]
impl<T> PartialEq<MultiPolygon<T>> for MultiPolygon<T> where
T: PartialEq<T> + CoordNum,
[src]
T: PartialEq<T> + CoordNum,
pub fn eq(&self, other: &MultiPolygon<T>) -> bool
[src]
pub fn ne(&self, other: &MultiPolygon<T>) -> bool
[src]
impl<F: GeoFloat> Relate<F, GeometryCollection<F>> for MultiPolygon<F>
[src]
fn relate(&self, other: &GeometryCollection<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, Line<F>> for MultiPolygon<F>
[src]
fn relate(&self, other: &Line<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, LineString<F>> for MultiPolygon<F>
[src]
fn relate(&self, other: &LineString<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, MultiLineString<F>> for MultiPolygon<F>
[src]
fn relate(&self, other: &MultiLineString<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, MultiPoint<F>> for MultiPolygon<F>
[src]
fn relate(&self, other: &MultiPoint<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, MultiPolygon<F>> for Point<F>
[src]
fn relate(&self, other: &MultiPolygon<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, MultiPolygon<F>> for Line<F>
[src]
fn relate(&self, other: &MultiPolygon<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, MultiPolygon<F>> for LineString<F>
[src]
fn relate(&self, other: &MultiPolygon<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, MultiPolygon<F>> for Polygon<F>
[src]
fn relate(&self, other: &MultiPolygon<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, MultiPolygon<F>> for MultiPoint<F>
[src]
fn relate(&self, other: &MultiPolygon<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, MultiPolygon<F>> for MultiLineString<F>
[src]
fn relate(&self, other: &MultiPolygon<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, MultiPolygon<F>> for MultiPolygon<F>
[src]
fn relate(&self, other: &MultiPolygon<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, MultiPolygon<F>> for Rect<F>
[src]
fn relate(&self, other: &MultiPolygon<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, MultiPolygon<F>> for Triangle<F>
[src]
fn relate(&self, other: &MultiPolygon<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, MultiPolygon<F>> for GeometryCollection<F>
[src]
fn relate(&self, other: &MultiPolygon<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, Point<F>> for MultiPolygon<F>
[src]
fn relate(&self, other: &Point<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, Polygon<F>> for MultiPolygon<F>
[src]
fn relate(&self, other: &Polygon<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, Rect<F>> for MultiPolygon<F>
[src]
fn relate(&self, other: &Rect<F>) -> IntersectionMatrix
[src]
impl<F: GeoFloat> Relate<F, Triangle<F>> for MultiPolygon<F>
[src]
fn relate(&self, other: &Triangle<F>) -> IntersectionMatrix
[src]
impl<T> RelativeEq<MultiPolygon<T>> for MultiPolygon<T> where
T: AbsDiffEq<T, Epsilon = T> + CoordNum + RelativeEq<T>,
[src]
T: AbsDiffEq<T, Epsilon = T> + CoordNum + RelativeEq<T>,
pub fn default_max_relative(
) -> <MultiPolygon<T> as AbsDiffEq<MultiPolygon<T>>>::Epsilon
[src]
) -> <MultiPolygon<T> as AbsDiffEq<MultiPolygon<T>>>::Epsilon
pub fn relative_eq(
&self,
other: &MultiPolygon<T>,
epsilon: <MultiPolygon<T> as AbsDiffEq<MultiPolygon<T>>>::Epsilon,
max_relative: <MultiPolygon<T> as AbsDiffEq<MultiPolygon<T>>>::Epsilon
) -> bool
[src]
&self,
other: &MultiPolygon<T>,
epsilon: <MultiPolygon<T> as AbsDiffEq<MultiPolygon<T>>>::Epsilon,
max_relative: <MultiPolygon<T> as AbsDiffEq<MultiPolygon<T>>>::Epsilon
) -> bool
Equality assertion within a relative limit.
Examples
use geo_types::{polygon, Polygon, MultiPolygon}; let a_el: Polygon<f32> = polygon![(x: 0., y: 0.), (x: 5., y: 0.), (x: 7., y: 9.), (x: 0., y: 0.)]; let a = MultiPolygon(vec![a_el]); let b_el: Polygon<f32> = polygon![(x: 0., y: 0.), (x: 5., y: 0.), (x: 7.01, y: 9.), (x: 0., y: 0.)]; let b = MultiPolygon(vec![b_el]); approx::assert_relative_eq!(a, b, max_relative=0.1); approx::assert_relative_ne!(a, b, max_relative=0.001);
pub fn relative_ne(
&self,
other: &Rhs,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool
&self,
other: &Rhs,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool
impl<T> Rotate<T> for MultiPolygon<T> where
T: GeoFloat,
[src]
T: GeoFloat,
fn rotate(&self, angle: T) -> Self
[src]
Rotate the contained Polygons about their centroids by the given number of degrees
impl<T> Simplify<T, T> for MultiPolygon<T> where
T: GeoFloat,
[src]
T: GeoFloat,
impl<T> SimplifyVW<T, T> for MultiPolygon<T> where
T: CoordFloat,
[src]
T: CoordFloat,
fn simplifyvw(&self, epsilon: &T) -> MultiPolygon<T>
[src]
impl<T> SimplifyVWPreserve<T, T> for MultiPolygon<T> where
T: CoordFloat + RTreeNum,
[src]
T: CoordFloat + RTreeNum,
fn simplifyvw_preserve(&self, epsilon: &T) -> MultiPolygon<T>
[src]
impl<T> StructuralEq for MultiPolygon<T> where
T: CoordNum,
[src]
T: CoordNum,
impl<T> StructuralPartialEq for MultiPolygon<T> where
T: CoordNum,
[src]
T: CoordNum,
impl<T> TryFrom<Geometry<T>> for MultiPolygon<T> where
T: CoordNum,
[src]
T: CoordNum,
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.
pub fn try_from(
geom: Geometry<T>
) -> Result<MultiPolygon<T>, <MultiPolygon<T> as TryFrom<Geometry<T>>>::Error>
[src]
geom: Geometry<T>
) -> Result<MultiPolygon<T>, <MultiPolygon<T> as TryFrom<Geometry<T>>>::Error>
impl<T: CoordNum, NT: CoordNum> TryMapCoords<T, NT> for MultiPolygon<T>
[src]
Auto Trait Implementations
impl<T> RefUnwindSafe for MultiPolygon<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Send for MultiPolygon<T> where
T: Send,
T: Send,
impl<T> Sync for MultiPolygon<T> where
T: Sync,
T: Sync,
impl<T> Unpin for MultiPolygon<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for MultiPolygon<T> where
T: UnwindSafe,
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>,