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>) -> boolThis 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>) -> boolThis 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::OutputSee: 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>) -> boolChecks 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>) -> boolChecks 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>) -> boolChecks 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>) -> boolChecks 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>) -> boolChecks 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>) -> boolChecks 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>) -> boolChecks 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>) -> boolChecks 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>) -> boolChecks 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>) -> boolChecks 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>) -> boolChecks 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>) -> TMinimum 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>) -> TMinimum 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>) -> TReturns 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>) -> TReturns 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>) -> TReturns 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>) -> TReturns 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>) -> TThis 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::OutputReturn 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) -> SelfRotate 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::OutputApply 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.