Struct geo::Polygon [−][src]
pub struct Polygon<T> where
T: CoordinateType, { pub exterior: LineString<T>, pub interiors: Vec<LineString<T>>, }
A representation of an area. Its outer boundary is represented by a LineString
that is both closed and simple
It has one exterior ring or shell, and zero or more interior rings, representing holes.
Polygons can be created from collections of Point
-like objects, such as arrays or tuples:
use geo_types::{Point, LineString, Polygon}; let poly1 = Polygon::new(vec![[0., 0.], [10., 0.]].into(), vec![]); let poly2 = Polygon::new(vec![(0., 0.), (10., 0.)].into(), vec![]);
Fields
exterior: LineString<T>
interiors: Vec<LineString<T>>
Methods
impl<T> Polygon<T> where
T: CoordinateType,
[src]
impl<T> Polygon<T> where
T: CoordinateType,
pub fn new(exterior: LineString<T>, interiors: Vec<LineString<T>>) -> Polygon<T>
[src]
pub fn new(exterior: LineString<T>, interiors: Vec<LineString<T>>) -> Polygon<T>
Creates a new polygon.
use geo_types::{Point, LineString, Polygon}; let exterior = LineString(vec![Point::new(0., 0.), Point::new(1., 1.), Point::new(1., 0.), Point::new(0., 0.)]); let interiors = vec![LineString(vec![Point::new(0.1, 0.1), Point::new(0.9, 0.9), Point::new(0.9, 0.1), Point::new(0.1, 0.1)])]; let p = Polygon::new(exterior.clone(), interiors.clone()); assert_eq!(p.exterior, exterior); assert_eq!(p.interiors, interiors);
impl<T> Polygon<T> where
T: Float + Signed,
[src]
impl<T> Polygon<T> where
T: Float + Signed,
Trait Implementations
impl<T> Clone for Polygon<T> where
T: Clone + CoordinateType,
[src]
impl<T> Clone for Polygon<T> where
T: Clone + CoordinateType,
fn clone(&self) -> Polygon<T>
[src]
fn clone(&self) -> Polygon<T>
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
impl<T> Debug for Polygon<T> where
T: Debug + CoordinateType,
[src]
impl<T> Debug for Polygon<T> where
T: Debug + CoordinateType,
fn fmt(&self, f: &mut Formatter) -> Result<(), Error>
[src]
fn fmt(&self, f: &mut Formatter) -> Result<(), Error>
Formats the value using the given formatter. Read more
impl<T> PartialEq<Polygon<T>> for Polygon<T> where
T: PartialEq<T> + CoordinateType,
[src]
impl<T> PartialEq<Polygon<T>> for Polygon<T> where
T: PartialEq<T> + CoordinateType,
fn eq(&self, other: &Polygon<T>) -> bool
[src]
fn eq(&self, other: &Polygon<T>) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, other: &Polygon<T>) -> bool
[src]
fn ne(&self, other: &Polygon<T>) -> bool
This method tests for !=
.
impl<T> From<Polygon<T>> for Geometry<T> where
T: CoordinateType,
[src]
impl<T> From<Polygon<T>> for Geometry<T> where
T: CoordinateType,
impl<T> Centroid<T> for Polygon<T> where
T: Float + FromPrimitive,
[src]
impl<T> Centroid<T> for Polygon<T> where
T: Float + FromPrimitive,
type Output = Option<Point<T>>
fn centroid(&self) -> Self::Output
[src]
fn centroid(&self) -> Self::Output
See: https://en.wikipedia.org/wiki/Centroid Read more
impl<T> Contains<Point<T>> for Polygon<T> where
T: Float,
[src]
impl<T> Contains<Point<T>> for Polygon<T> where
T: Float,
fn contains(&self, p: &Point<T>) -> bool
[src]
fn contains(&self, p: &Point<T>) -> bool
Checks if rhs
is completely contained within self
. Read more
impl<T> Contains<Line<T>> for Polygon<T> where
T: Float,
[src]
impl<T> Contains<Line<T>> for Polygon<T> where
T: Float,
fn contains(&self, line: &Line<T>) -> bool
[src]
fn contains(&self, line: &Line<T>) -> bool
Checks if rhs
is completely contained within self
. Read more
impl<T> Contains<Polygon<T>> for Polygon<T> where
T: Float,
[src]
impl<T> Contains<Polygon<T>> for Polygon<T> where
T: Float,
fn contains(&self, poly: &Polygon<T>) -> bool
[src]
fn contains(&self, poly: &Polygon<T>) -> bool
Checks if rhs
is completely contained within self
. Read more
impl<T> Contains<LineString<T>> for Polygon<T> where
T: Float,
[src]
impl<T> Contains<LineString<T>> for Polygon<T> where
T: Float,
fn contains(&self, linestring: &LineString<T>) -> bool
[src]
fn contains(&self, linestring: &LineString<T>) -> bool
Checks if rhs
is completely contained within self
. Read more
impl<T> Intersects<Polygon<T>> for Line<T> where
T: Float,
[src]
impl<T> Intersects<Polygon<T>> for Line<T> where
T: Float,
fn intersects(&self, p: &Polygon<T>) -> bool
[src]
fn intersects(&self, p: &Polygon<T>) -> bool
Checks if the geometry A intersects the geometry B. Read more
impl<T> Intersects<Line<T>> for Polygon<T> where
T: Float,
[src]
impl<T> Intersects<Line<T>> for Polygon<T> where
T: Float,
fn intersects(&self, line: &Line<T>) -> bool
[src]
fn intersects(&self, line: &Line<T>) -> bool
Checks if the geometry A intersects the geometry B. Read more
impl<T> Intersects<LineString<T>> for Polygon<T> where
T: Float,
[src]
impl<T> Intersects<LineString<T>> for Polygon<T> where
T: Float,
fn intersects(&self, linestring: &LineString<T>) -> bool
[src]
fn intersects(&self, linestring: &LineString<T>) -> bool
Checks if the geometry A intersects the geometry B. Read more
impl<T> Intersects<Polygon<T>> for LineString<T> where
T: Float,
[src]
impl<T> Intersects<Polygon<T>> for LineString<T> where
T: Float,
fn intersects(&self, polygon: &Polygon<T>) -> bool
[src]
fn intersects(&self, polygon: &Polygon<T>) -> bool
Checks if the geometry A intersects the geometry B. Read more
impl<T> Intersects<Polygon<T>> for Bbox<T> where
T: Float,
[src]
impl<T> Intersects<Polygon<T>> for Bbox<T> where
T: Float,
fn intersects(&self, polygon: &Polygon<T>) -> bool
[src]
fn intersects(&self, polygon: &Polygon<T>) -> bool
Checks if the geometry A intersects the geometry B. Read more
impl<T> Intersects<Bbox<T>> for Polygon<T> where
T: Float,
[src]
impl<T> Intersects<Bbox<T>> for Polygon<T> where
T: Float,
fn intersects(&self, bbox: &Bbox<T>) -> bool
[src]
fn intersects(&self, bbox: &Bbox<T>) -> bool
Checks if the geometry A intersects the geometry B. Read more
impl<T> Intersects<Polygon<T>> for Polygon<T> where
T: Float,
[src]
impl<T> Intersects<Polygon<T>> for Polygon<T> where
T: Float,
fn intersects(&self, polygon: &Polygon<T>) -> bool
[src]
fn intersects(&self, polygon: &Polygon<T>) -> bool
Checks if the geometry A intersects the geometry B. Read more
impl<T> Area<T> for Polygon<T> where
T: Float,
[src]
impl<T> Area<T> for Polygon<T> where
T: Float,
impl<T> EuclideanDistance<T, Polygon<T>> for Point<T> where
T: Float,
[src]
impl<T> EuclideanDistance<T, Polygon<T>> for Point<T> where
T: Float,
fn euclidean_distance(&self, polygon: &Polygon<T>) -> T
[src]
fn euclidean_distance(&self, polygon: &Polygon<T>) -> T
Minimum distance from a Point to a Polygon
impl<T> EuclideanDistance<T, Point<T>> for Polygon<T> where
T: Float,
[src]
impl<T> EuclideanDistance<T, Point<T>> for Polygon<T> where
T: Float,
fn euclidean_distance(&self, point: &Point<T>) -> T
[src]
fn euclidean_distance(&self, point: &Point<T>) -> T
Minimum distance from a Polygon to a Point
impl<T> EuclideanDistance<T, Polygon<T>> for LineString<T> where
T: Float + FloatConst + Signed + SpadeFloat,
[src]
impl<T> EuclideanDistance<T, Polygon<T>> for LineString<T> where
T: Float + FloatConst + Signed + SpadeFloat,
LineString to Polygon
fn euclidean_distance(&self, other: &Polygon<T>) -> T
[src]
fn euclidean_distance(&self, other: &Polygon<T>) -> T
Returns the distance between two geometries Read more
impl<T> EuclideanDistance<T, LineString<T>> for Polygon<T> where
T: Float + FloatConst + Signed + SpadeFloat,
[src]
impl<T> EuclideanDistance<T, LineString<T>> for Polygon<T> where
T: Float + FloatConst + Signed + SpadeFloat,
Polygon to LineString distance
fn euclidean_distance(&self, other: &LineString<T>) -> T
[src]
fn euclidean_distance(&self, other: &LineString<T>) -> T
Returns the distance between two geometries Read more
impl<T> EuclideanDistance<T, Polygon<T>> for Line<T> where
T: Float + Signed + SpadeFloat + FloatConst,
[src]
impl<T> EuclideanDistance<T, Polygon<T>> for Line<T> where
T: Float + Signed + SpadeFloat + FloatConst,
fn euclidean_distance(&self, other: &Polygon<T>) -> T
[src]
fn euclidean_distance(&self, other: &Polygon<T>) -> T
Returns the distance between two geometries Read more
impl<T> EuclideanDistance<T, Line<T>> for Polygon<T> where
T: Float + FloatConst + Signed + SpadeFloat,
[src]
impl<T> EuclideanDistance<T, Line<T>> for Polygon<T> where
T: Float + FloatConst + Signed + SpadeFloat,
fn euclidean_distance(&self, other: &Line<T>) -> T
[src]
fn euclidean_distance(&self, other: &Line<T>) -> T
Returns the distance between two geometries Read more
impl<T> EuclideanDistance<T, Polygon<T>> for Polygon<T> where
T: Float + FloatConst + SpadeFloat,
[src]
impl<T> EuclideanDistance<T, Polygon<T>> for Polygon<T> where
T: Float + FloatConst + SpadeFloat,
fn euclidean_distance(&self, poly2: &Polygon<T>) -> T
[src]
fn euclidean_distance(&self, poly2: &Polygon<T>) -> T
This implementation has a "fast path" in cases where both input polygons are convex: it switches to an implementation of the "rotating calipers" method described in Pirzadeh (1999), pp24—30, which is approximately an order of magnitude faster than the standard method.
impl<T> BoundingBox<T> for Polygon<T> where
T: CoordinateType,
[src]
impl<T> BoundingBox<T> for Polygon<T> where
T: CoordinateType,
type Output = Option<Bbox<T>>
fn bbox(&self) -> Self::Output
[src]
fn bbox(&self) -> Self::Output
Return the BoundingBox for a Polygon
impl<T> Simplify<T> for Polygon<T> where
T: Float,
[src]
impl<T> Simplify<T> for Polygon<T> where
T: Float,
fn simplify(&self, epsilon: &T) -> Polygon<T>
[src]
fn simplify(&self, epsilon: &T) -> Polygon<T>
Returns the simplified representation of a geometry, using the Ramer–Douglas–Peucker algorithm Read more
impl<T> SimplifyVWPreserve<T> for Polygon<T> where
T: Float + SpadeFloat,
[src]
impl<T> SimplifyVWPreserve<T> for Polygon<T> where
T: Float + SpadeFloat,
fn simplifyvw_preserve(&self, epsilon: &T) -> Polygon<T>
[src]
fn simplifyvw_preserve(&self, epsilon: &T) -> Polygon<T>
Returns the simplified representation of a geometry, using a topology-preserving variant of the Visvalingam-Whyatt algorithm. Read more
impl<T> SimplifyVW<T> for Polygon<T> where
T: Float,
[src]
impl<T> SimplifyVW<T> for Polygon<T> where
T: Float,
fn simplifyvw(&self, epsilon: &T) -> Polygon<T>
[src]
fn simplifyvw(&self, epsilon: &T) -> Polygon<T>
Returns the simplified representation of a geometry, using the Visvalingam-Whyatt algorithm Read more
impl<T> ConvexHull<T> for Polygon<T> where
T: Float,
[src]
impl<T> ConvexHull<T> for Polygon<T> where
T: Float,
fn convex_hull(&self) -> Polygon<T>
[src]
fn convex_hull(&self) -> Polygon<T>
Returns the convex hull of a Polygon. The hull is always oriented counter-clockwise. Read more
impl<T> Orient<T> for Polygon<T> where
T: CoordinateType,
[src]
impl<T> Orient<T> for Polygon<T> where
T: CoordinateType,
fn orient(&self, direction: Direction) -> Polygon<T>
[src]
fn orient(&self, direction: Direction) -> Polygon<T>
Orients a Polygon's exterior and interior rings according to convention Read more
impl<T> ExtremeIndices<T> for Polygon<T> where
T: Float + Signed,
[src]
impl<T> ExtremeIndices<T> for Polygon<T> where
T: Float + Signed,
fn extreme_indices(&self) -> Result<Extremes, ()>
[src]
fn extreme_indices(&self) -> Result<Extremes, ()>
Find the extreme x
and y
indices of a convex Polygon Read more
impl<T> Rotate<T> for Polygon<T> where
T: Float + FromPrimitive,
[src]
impl<T> Rotate<T> for Polygon<T> where
T: Float + FromPrimitive,
fn rotate(&self, angle: T) -> Self
[src]
fn rotate(&self, angle: T) -> Self
Rotate the Polygon about its centroid by the given number of degrees
impl<T: CoordinateType, NT: CoordinateType> MapCoords<T, NT> for Polygon<T>
[src]
impl<T: CoordinateType, NT: CoordinateType> MapCoords<T, NT> for Polygon<T>
type Output = Polygon<NT>
fn map_coords(&self, func: &Fn(&(T, T)) -> (NT, NT)) -> Self::Output
[src]
fn map_coords(&self, func: &Fn(&(T, T)) -> (NT, NT)) -> Self::Output
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 Polygon<T>
[src]
impl<T: CoordinateType, NT: CoordinateType> TryMapCoords<T, NT> for Polygon<T>
type Output = Polygon<NT>
fn try_map_coords(
&self,
func: &Fn(&(T, T)) -> Result<(NT, NT), Error>
) -> Result<Self::Output, Error>
[src]
fn try_map_coords(
&self,
func: &Fn(&(T, T)) -> Result<(NT, NT), Error>
) -> Result<Self::Output, Error>
Map a fallible function over all the coordinates in a geometry, returning a Result Read more
impl<T: CoordinateType> MapCoordsInplace<T> for Polygon<T>
[src]
impl<T: CoordinateType> MapCoordsInplace<T> for Polygon<T>
fn map_coords_inplace(&mut self, func: &Fn(&(T, T)) -> (T, T))
[src]
fn map_coords_inplace(&mut self, func: &Fn(&(T, T)) -> (T, T))
Apply a function to all the coordinates in a geometric object, in place Read more
impl<F: Float> ClosestPoint<F> for Polygon<F>
[src]
impl<F: Float> ClosestPoint<F> for Polygon<F>
fn closest_point(&self, p: &Point<F>) -> Closest<F>
[src]
fn closest_point(&self, p: &Point<F>) -> Closest<F>
Find the closest point between self
and p
.