pub struct Polygon<T = f64>where
T: CoordNum,{ /* private fields */ }geo-types only.Expand description
A bounded two-dimensional area.
A Polygon’s outer boundary (exterior ring) is represented by a
LineString. It may contain zero or more holes (interior rings), also
represented by LineStrings.
A Polygon can be created with the Polygon::new constructor or the polygon! macro.
§Semantics
The boundary of the polygon is the union of the boundaries of the exterior and interiors. The interior is all the points inside the polygon (not on the boundary).
The Polygon structure guarantees that all exterior and interior rings will
be closed, such that the first and last Coord of each ring has
the same value.
§Validity
-
The exterior and interior rings must be valid
LinearRings (seeLineString). -
No two rings in the boundary may cross, and may intersect at a
Pointonly as a tangent. In other words, the rings must be distinct, and for every pair of common points in two of the rings, there must be a neighborhood (a topological open set) around one that does not contain the other point. -
The closure of the interior of the
Polygonmust equal thePolygonitself. For instance, the exterior may not contain a spike. -
The interior of the polygon must be a connected point-set. That is, any two distinct points in the interior must admit a curve between these two that lies in the interior.
Refer to section 6.1.11.1 of the OGC-SFA for a formal
definition of validity. Besides the closed LineString
guarantee, the Polygon structure does not enforce
validity at this time. For example, it is possible to
construct a Polygon that has:
- fewer than 3 coordinates per
LineStringring - interior rings that intersect other interior rings
- interior rings that extend beyond the exterior ring
§LineString closing operation
Some APIs on Polygon result in a closing operation on a LineString. The
operation is as follows:
If a LineString’s first and last Coord have different values, a
new Coord will be appended to the LineString with a value equal to
the first Coord.
Implementations§
Source§impl<T> Polygon<T>where
T: CoordNum,
impl<T> Polygon<T>where
T: CoordNum,
Sourcepub fn new(exterior: LineString<T>, interiors: Vec<LineString<T>>) -> Polygon<T>
pub fn new(exterior: LineString<T>, interiors: Vec<LineString<T>>) -> Polygon<T>
Create a new Polygon with the provided exterior LineString ring and
interior LineString rings.
Upon calling new, the exterior and interior LineString rings will
be closed.
§Examples
Creating a Polygon with no interior rings:
use geo_types::{LineString, Polygon};
let polygon = Polygon::new(
LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
vec![],
);Creating a Polygon with an interior ring:
use geo_types::{LineString, Polygon};
let polygon = Polygon::new(
LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
vec![LineString::from(vec![
(0.1, 0.1),
(0.9, 0.9),
(0.9, 0.1),
(0.1, 0.1),
])],
);If the first and last Coords of the exterior or interior
LineStrings no longer match, those LineStrings will be closed:
use geo_types::{coord, LineString, Polygon};
let mut polygon = Polygon::new(LineString::from(vec![(0., 0.), (1., 1.), (1., 0.)]), vec![]);
assert_eq!(
polygon.exterior(),
&LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.),])
);Sourcepub fn empty() -> Polygon<T>
pub fn empty() -> Polygon<T>
Returns an empty Polygon.
geo represents an empty Polygon as one whose exterior is an empty LineString
Sourcepub fn into_inner(self) -> (LineString<T>, Vec<LineString<T>>)
pub fn into_inner(self) -> (LineString<T>, Vec<LineString<T>>)
Consume the Polygon, returning the exterior LineString ring and
a vector of the interior LineString rings.
§Examples
use geo_types::{LineString, Polygon};
let mut polygon = Polygon::new(
LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
vec![LineString::from(vec![
(0.1, 0.1),
(0.9, 0.9),
(0.9, 0.1),
(0.1, 0.1),
])],
);
let (exterior, interiors) = polygon.into_inner();
assert_eq!(
exterior,
LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.),])
);
assert_eq!(
interiors,
vec![LineString::from(vec![
(0.1, 0.1),
(0.9, 0.9),
(0.9, 0.1),
(0.1, 0.1),
])]
);Sourcepub fn exterior(&self) -> &LineString<T>
pub fn exterior(&self) -> &LineString<T>
Return a reference to the exterior LineString ring.
§Examples
use geo_types::{LineString, Polygon};
let exterior = LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]);
let polygon = Polygon::new(exterior.clone(), vec![]);
assert_eq!(polygon.exterior(), &exterior);Sourcepub fn exterior_mut<F>(&mut self, f: F)where
F: FnOnce(&mut LineString<T>),
pub fn exterior_mut<F>(&mut self, f: F)where
F: FnOnce(&mut LineString<T>),
Execute the provided closure f, which is provided with a mutable
reference to the exterior LineString ring.
After the closure executes, the exterior LineString will be closed.
§Examples
use geo_types::{coord, LineString, Polygon};
let mut polygon = Polygon::new(
LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
vec![],
);
polygon.exterior_mut(|exterior| {
exterior.0[1] = coord! { x: 1., y: 2. };
});
assert_eq!(
polygon.exterior(),
&LineString::from(vec![(0., 0.), (1., 2.), (1., 0.), (0., 0.),])
);If the first and last Coords of the exterior LineString no
longer match, the LineString will be closed:
use geo_types::{coord, LineString, Polygon};
let mut polygon = Polygon::new(
LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
vec![],
);
polygon.exterior_mut(|exterior| {
exterior.0[0] = coord! { x: 0., y: 1. };
});
assert_eq!(
polygon.exterior(),
&LineString::from(vec![(0., 1.), (1., 1.), (1., 0.), (0., 0.), (0., 1.),])
);Sourcepub fn try_exterior_mut<F, E>(&mut self, f: F) -> Result<(), E>
pub fn try_exterior_mut<F, E>(&mut self, f: F) -> Result<(), E>
Fallible alternative to exterior_mut.
Sourcepub fn interiors(&self) -> &[LineString<T>]
pub fn interiors(&self) -> &[LineString<T>]
Return a slice of the interior LineString rings.
§Examples
use geo_types::{coord, LineString, Polygon};
let interiors = vec![LineString::from(vec![
(0.1, 0.1),
(0.9, 0.9),
(0.9, 0.1),
(0.1, 0.1),
])];
let polygon = Polygon::new(
LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
interiors.clone(),
);
assert_eq!(interiors, polygon.interiors());Sourcepub fn interiors_mut<F>(&mut self, f: F)where
F: FnOnce(&mut [LineString<T>]),
pub fn interiors_mut<F>(&mut self, f: F)where
F: FnOnce(&mut [LineString<T>]),
Execute the provided closure f, which is provided with a mutable
reference to the interior LineString rings.
After the closure executes, each of the interior LineStrings will be
closed.
§Examples
use geo_types::{coord, LineString, Polygon};
let mut polygon = Polygon::new(
LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
vec![LineString::from(vec![
(0.1, 0.1),
(0.9, 0.9),
(0.9, 0.1),
(0.1, 0.1),
])],
);
polygon.interiors_mut(|interiors| {
interiors[0].0[1] = coord! { x: 0.8, y: 0.8 };
});
assert_eq!(
polygon.interiors(),
&[LineString::from(vec![
(0.1, 0.1),
(0.8, 0.8),
(0.9, 0.1),
(0.1, 0.1),
])]
);If the first and last Coords of any interior LineString no
longer match, those LineStrings will be closed:
use geo_types::{coord, LineString, Polygon};
let mut polygon = Polygon::new(
LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
vec![LineString::from(vec![
(0.1, 0.1),
(0.9, 0.9),
(0.9, 0.1),
(0.1, 0.1),
])],
);
polygon.interiors_mut(|interiors| {
interiors[0].0[0] = coord! { x: 0.1, y: 0.2 };
});
assert_eq!(
polygon.interiors(),
&[LineString::from(vec![
(0.1, 0.2),
(0.9, 0.9),
(0.9, 0.1),
(0.1, 0.1),
(0.1, 0.2),
])]
);Sourcepub fn try_interiors_mut<F, E>(&mut self, f: F) -> Result<(), E>
pub fn try_interiors_mut<F, E>(&mut self, f: F) -> Result<(), E>
Fallible alternative to interiors_mut.
Sourcepub fn interiors_push(&mut self, new_interior: impl Into<LineString<T>>)
pub fn interiors_push(&mut self, new_interior: impl Into<LineString<T>>)
Add an interior ring to the Polygon.
The new LineString interior ring will be closed:
§Examples
use geo_types::{coord, LineString, Polygon};
let mut polygon = Polygon::new(
LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
vec![],
);
assert_eq!(polygon.interiors().len(), 0);
polygon.interiors_push(vec![(0.1, 0.1), (0.9, 0.9), (0.9, 0.1)]);
assert_eq!(
polygon.interiors(),
&[LineString::from(vec![
(0.1, 0.1),
(0.9, 0.9),
(0.9, 0.1),
(0.1, 0.1),
])]
);Sourcepub fn num_rings(&self) -> usize
pub fn num_rings(&self) -> usize
Count the total number of rings (interior and exterior) in the polygon
§Examples
use geo_types::{coord, LineString, Polygon};
let polygon = Polygon::new(
LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
vec![],
);
assert_eq!(polygon.num_rings(), 1);
let polygon = Polygon::new(
LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
vec![LineString::from(vec![(0.1, 0.1), (0.9, 0.9), (0.9, 0.1)])],
);
assert_eq!(polygon.num_rings(), 2);Sourcepub fn num_interior_rings(&self) -> usize
pub fn num_interior_rings(&self) -> usize
Count the number of interior rings in the polygon
§Examples
use geo_types::{coord, LineString, Polygon};
let polygon = Polygon::new(
LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
vec![],
);
assert_eq!(polygon.num_interior_rings(), 0);
let polygon = Polygon::new(
LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
vec![LineString::from(vec![(0.1, 0.1), (0.9, 0.9), (0.9, 0.1)])],
);
assert_eq!(polygon.num_interior_rings(), 1);Trait Implementations§
Source§impl<'a, T> GeometryTrait for &'a Polygon<T>where
T: CoordNum + 'a,
impl<'a, T> GeometryTrait for &'a Polygon<T>where
T: CoordNum + 'a,
Source§type PointType<'b> = Point<<&'a Polygon<T> as GeometryTrait>::T>
where
&'a Polygon<T>: 'b
type PointType<'b> = Point<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b
Source§type LineStringType<'b> = LineString<<&'a Polygon<T> as GeometryTrait>::T>
where
&'a Polygon<T>: 'b
type LineStringType<'b> = LineString<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b
Source§type PolygonType<'b> = Polygon<<&'a Polygon<T> as GeometryTrait>::T>
where
&'a Polygon<T>: 'b
type PolygonType<'b> = Polygon<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b
Source§type MultiPointType<'b> = MultiPoint<<&'a Polygon<T> as GeometryTrait>::T>
where
&'a Polygon<T>: 'b
type MultiPointType<'b> = MultiPoint<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b
Source§type MultiLineStringType<'b> = MultiLineString<<&'a Polygon<T> as GeometryTrait>::T>
where
&'a Polygon<T>: 'b
type MultiLineStringType<'b> = MultiLineString<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b
Source§type MultiPolygonType<'b> = MultiPolygon<<&'a Polygon<T> as GeometryTrait>::T>
where
&'a Polygon<T>: 'b
type MultiPolygonType<'b> = MultiPolygon<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b
Source§type GeometryCollectionType<'b> = GeometryCollection<<&'a Polygon<T> as GeometryTrait>::T>
where
&'a Polygon<T>: 'b
type GeometryCollectionType<'b> = GeometryCollection<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b
Source§type RectType<'b> = Rect<<&'a Polygon<T> as GeometryTrait>::T>
where
&'a Polygon<T>: 'b
type RectType<'b> = Rect<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b
Source§type TriangleType<'b> = Triangle<<&'a Polygon<T> as GeometryTrait>::T>
where
&'a Polygon<T>: 'b
type TriangleType<'b> = Triangle<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b
Source§type LineType<'b> = Line<<&'a Polygon<T> as GeometryTrait>::T>
where
&'a Polygon<T>: 'b
type LineType<'b> = Line<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b
Source§fn dim(&self) -> Dimensions
fn dim(&self) -> Dimensions
Source§fn as_type(
&self,
) -> GeometryType<'_, Point<T>, LineString<T>, Polygon<T>, MultiPoint<T>, MultiLineString<T>, MultiPolygon<T>, GeometryCollection<T>, Rect<T>, Triangle<T>, Line<T>>
fn as_type( &self, ) -> GeometryType<'_, Point<T>, LineString<T>, Polygon<T>, MultiPoint<T>, MultiLineString<T>, MultiPolygon<T>, GeometryCollection<T>, Rect<T>, Triangle<T>, Line<T>>
GeometryType enum, which allows for downcasting to a specific
typeSource§impl<T> GeometryTrait for Polygon<T>where
T: CoordNum,
impl<T> GeometryTrait for Polygon<T>where
T: CoordNum,
Source§type PointType<'b> = Point<<Polygon<T> as GeometryTrait>::T>
where
Polygon<T>: 'b
type PointType<'b> = Point<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b
Source§type LineStringType<'b> = LineString<<Polygon<T> as GeometryTrait>::T>
where
Polygon<T>: 'b
type LineStringType<'b> = LineString<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b
Source§type PolygonType<'b> = Polygon<<Polygon<T> as GeometryTrait>::T>
where
Polygon<T>: 'b
type PolygonType<'b> = Polygon<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b
Source§type MultiPointType<'b> = MultiPoint<<Polygon<T> as GeometryTrait>::T>
where
Polygon<T>: 'b
type MultiPointType<'b> = MultiPoint<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b
Source§type MultiLineStringType<'b> = MultiLineString<<Polygon<T> as GeometryTrait>::T>
where
Polygon<T>: 'b
type MultiLineStringType<'b> = MultiLineString<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b
Source§type MultiPolygonType<'b> = MultiPolygon<<Polygon<T> as GeometryTrait>::T>
where
Polygon<T>: 'b
type MultiPolygonType<'b> = MultiPolygon<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b
Source§type GeometryCollectionType<'b> = GeometryCollection<<Polygon<T> as GeometryTrait>::T>
where
Polygon<T>: 'b
type GeometryCollectionType<'b> = GeometryCollection<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b
Source§type RectType<'b> = Rect<<Polygon<T> as GeometryTrait>::T>
where
Polygon<T>: 'b
type RectType<'b> = Rect<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b
Source§type TriangleType<'b> = Triangle<<Polygon<T> as GeometryTrait>::T>
where
Polygon<T>: 'b
type TriangleType<'b> = Triangle<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b
Source§type LineType<'b> = Line<<Polygon<T> as GeometryTrait>::T>
where
Polygon<T>: 'b
type LineType<'b> = Line<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b
Source§fn dim(&self) -> Dimensions
fn dim(&self) -> Dimensions
Source§fn as_type(
&self,
) -> GeometryType<'_, Point<T>, LineString<T>, Polygon<T>, MultiPoint<T>, MultiLineString<T>, MultiPolygon<T>, GeometryCollection<T>, Rect<T>, Triangle<T>, Line<T>>
fn as_type( &self, ) -> GeometryType<'_, Point<T>, LineString<T>, Polygon<T>, MultiPoint<T>, MultiLineString<T>, MultiPolygon<T>, GeometryCollection<T>, Rect<T>, Triangle<T>, Line<T>>
GeometryType enum, which allows for downcasting to a specific
typeSource§impl<'a, T> PolygonTrait for &'a Polygon<T>where
T: CoordNum,
impl<'a, T> PolygonTrait for &'a Polygon<T>where
T: CoordNum,
Source§type RingType<'b> = &'a LineString<<&'a Polygon<T> as GeometryTrait>::T>
where
&'a Polygon<T>: 'b
type RingType<'b> = &'a LineString<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b
Source§fn exterior(&self) -> Option<<&'a Polygon<T> as PolygonTrait>::RingType<'_>>
fn exterior(&self) -> Option<<&'a Polygon<T> as PolygonTrait>::RingType<'_>>
Source§fn num_interiors(&self) -> usize
fn num_interiors(&self) -> usize
Source§unsafe fn interior_unchecked(
&self,
i: usize,
) -> <&'a Polygon<T> as PolygonTrait>::RingType<'_>
unsafe fn interior_unchecked( &self, i: usize, ) -> <&'a Polygon<T> as PolygonTrait>::RingType<'_>
Source§fn interiors(&self) -> impl DoubleEndedIterator + ExactSizeIterator
fn interiors(&self) -> impl DoubleEndedIterator + ExactSizeIterator
Source§impl<T> PolygonTrait for Polygon<T>where
T: CoordNum,
impl<T> PolygonTrait for Polygon<T>where
T: CoordNum,
Source§type RingType<'a> = &'a LineString<<Polygon<T> as GeometryTrait>::T>
where
Polygon<T>: 'a
type RingType<'a> = &'a LineString<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'a
Source§fn exterior(&self) -> Option<<Polygon<T> as PolygonTrait>::RingType<'_>>
fn exterior(&self) -> Option<<Polygon<T> as PolygonTrait>::RingType<'_>>
Source§fn num_interiors(&self) -> usize
fn num_interiors(&self) -> usize
Source§unsafe fn interior_unchecked(
&self,
i: usize,
) -> <Polygon<T> as PolygonTrait>::RingType<'_>
unsafe fn interior_unchecked( &self, i: usize, ) -> <Polygon<T> as PolygonTrait>::RingType<'_>
Source§fn interiors(&self) -> impl DoubleEndedIterator + ExactSizeIterator
fn interiors(&self) -> impl DoubleEndedIterator + ExactSizeIterator
Source§impl<T> ToWkt<T> for Polygon<T>
§Examples
use geo_types::{polygon, Polygon};
use wkt::ToWkt;
let polygon: Polygon<f64> = polygon![(x: 0., y: 0.), (x: 4., y: 0.), (x: 2., y: 4.), (x: 0., y: 0.)];
assert_eq!(polygon.wkt_string(), "POLYGON((0 0,4 0,2 4,0 0))");
impl<T> ToWkt<T> for Polygon<T>
§Examples
use geo_types::{polygon, Polygon};
use wkt::ToWkt;
let polygon: Polygon<f64> = polygon![(x: 0., y: 0.), (x: 4., y: 0.), (x: 2., y: 4.), (x: 0., y: 0.)];
assert_eq!(polygon.wkt_string(), "POLYGON((0 0,4 0,2 4,0 0))");Source§impl<T> TryFrom<Geometry<T>> for Polygon<T>where
T: CoordNum,
Convert a Geometry enum into its inner type.
impl<T> TryFrom<Geometry<T>> for Polygon<T>where
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.
Source§impl<T> TryFrom<Wkt<T>> for Polygon<T>where
T: CoordNum,
Fallibly convert this WKT primitive into this geo_types primitive
impl<T> TryFrom<Wkt<T>> for Polygon<T>where
T: CoordNum,
Fallibly convert this WKT primitive into this geo_types primitive
Source§impl<T> TryFromWkt<T> for Polygon<T>
impl<T> TryFromWkt<T> for Polygon<T>
impl<T> Eq for Polygon<T>
impl<T> StructuralPartialEq for Polygon<T>where
T: CoordNum,
Auto Trait Implementations§
impl<T> Freeze for Polygon<T>
impl<T> RefUnwindSafe for Polygon<T>where
T: RefUnwindSafe,
impl<T> Send for Polygon<T>where
T: Send,
impl<T> Sync for Polygon<T>where
T: Sync,
impl<T> Unpin for Polygon<T>where
T: Unpin,
impl<T> UnwindSafe for Polygon<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T, G> ToGeoGeometry<T> for Gwhere
T: CoordNum,
G: GeometryTrait<T = T>,
impl<T, G> ToGeoGeometry<T> for Gwhere
T: CoordNum,
G: GeometryTrait<T = T>,
Source§impl<T, G> ToGeoPolygon<T> for Gwhere
T: CoordNum,
G: PolygonTrait<T = T>,
impl<T, G> ToGeoPolygon<T> for Gwhere
T: CoordNum,
G: PolygonTrait<T = T>,
Source§fn to_polygon(&self) -> Polygon<T>
fn to_polygon(&self) -> Polygon<T>
Polygon.