Struct geo::LineString [−][src]
pub struct LineString<T>(pub Vec<Coordinate<T>>)
where
T: CoordinateType;
An ordered collection of two or more Coordinate
s, representing a
path between locations.
Examples
Create a LineString
by calling it directly:
use geo_types::{LineString, Coordinate}; let line_string = LineString(vec![ Coordinate { x: 0., y: 0. }, Coordinate { x: 10., y: 0. }, ]);
Converting a Vec
of Coordinate
-like things:
use geo_types::LineString; let line_string: LineString<f32> = vec![ (0., 0.), (10., 0.), ].into();
use geo_types::LineString; let line_string: LineString<f64> = vec![ [0., 0.], [10., 0.], ].into();
Or collect
ing from a Coordinate
iterator
use geo_types::{LineString, Coordinate}; let mut coords_iter = vec![ Coordinate { x: 0., y: 0. }, Coordinate { x: 10., y: 0. } ].into_iter(); let line_string: LineString<f32> = coords_iter.collect();
You can iterate over the coordinates in the LineString
:
use geo_types::{LineString, Coordinate}; let line_string = LineString(vec![ Coordinate { x: 0., y: 0. }, Coordinate { x: 10., y: 0. }, ]); for coord in line_string { println!("Coordinate x = {}, y = {}", coord.x, coord.y); }
Methods
impl<T> LineString<T> where
T: CoordinateType,
[src]
impl<T> LineString<T> where
T: CoordinateType,
ⓘImportant traits for PointsIter<'a, T>pub fn points_iter(&self) -> PointsIter<T>
[src]
pub fn points_iter(&self) -> PointsIter<T>
pub fn into_points(self) -> Vec<Point<T>>
[src]
pub fn into_points(self) -> Vec<Point<T>>
pub fn lines(
&'a self
) -> impl Iterator<Item = Line<T>> + ExactSizeIterator + 'a
[src]
pub fn lines(
&'a self
) -> impl Iterator<Item = Line<T>> + ExactSizeIterator + 'a
Return an Line
iterator that yields one Line
for each line segment
in the LineString
.
Examples
use geo_types::{Line, LineString, Coordinate}; let mut coords = vec![(0., 0.), (5., 0.), (7., 9.)]; let line_string: LineString<f32> = coords.into_iter().collect(); let mut lines = line_string.lines(); assert_eq!( Some(Line::new(Coordinate { x: 0., y: 0. }, Coordinate { x: 5., y: 0. })), lines.next() ); assert_eq!( Some(Line::new(Coordinate { x: 5., y: 0. }, Coordinate { x: 7., y: 9. })), lines.next() ); assert!(lines.next().is_none());
pub fn triangles(
&'a self
) -> impl Iterator<Item = Triangle<T>> + ExactSizeIterator + 'a
[src]
pub fn triangles(
&'a self
) -> impl Iterator<Item = Triangle<T>> + ExactSizeIterator + 'a
Trait Implementations
impl<T> SpatialObject for LineString<T> where
T: Float + SpadeNum + Debug,
[src]
impl<T> SpatialObject for LineString<T> where
T: Float + SpadeNum + Debug,
type Point = Point<T>
The object's point type.
fn mbr(&self) -> BoundingRect<<LineString<T> as SpatialObject>::Point>
[src]
fn mbr(&self) -> BoundingRect<<LineString<T> as SpatialObject>::Point>
Returns the object's minimal bounding rectangle. Read more
fn distance2(
&self,
point: &<LineString<T> as SpatialObject>::Point
) -> <<LineString<T> as SpatialObject>::Point as PointN>::Scalar
[src]
fn distance2(
&self,
point: &<LineString<T> as SpatialObject>::Point
) -> <<LineString<T> as SpatialObject>::Point as PointN>::Scalar
Returns the squared euclidean distance from the object's contour. Returns a value samller than zero if the point is contained within the object. Read more
fn contains(&self, point: &Self::Point) -> bool
[src]
fn contains(&self, point: &Self::Point) -> bool
Returns true if a given point is contained in this object.
impl<T, IC> FromIterator<IC> for LineString<T> where
IC: Into<Coordinate<T>>,
T: CoordinateType,
[src]
impl<T, IC> FromIterator<IC> for LineString<T> where
IC: Into<Coordinate<T>>,
T: CoordinateType,
Turn a Point
-ish iterator into a LineString
.
fn from_iter<I>(iter: I) -> LineString<T> where
I: IntoIterator<Item = IC>,
[src]
fn from_iter<I>(iter: I) -> LineString<T> where
I: IntoIterator<Item = IC>,
Creates a value from an iterator. Read more
impl<T> Clone for LineString<T> where
T: Clone + CoordinateType,
[src]
impl<T> Clone for LineString<T> where
T: Clone + CoordinateType,
fn clone(&self) -> LineString<T>
[src]
fn clone(&self) -> LineString<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 LineString<T> where
T: Debug + CoordinateType,
[src]
impl<T> Debug for LineString<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> IntoIterator for LineString<T> where
T: CoordinateType,
[src]
impl<T> IntoIterator for LineString<T> where
T: CoordinateType,
Iterate over all the Coordinates in this LineString
.
type Item = Coordinate<T>
The type of the elements being iterated over.
type IntoIter = IntoIter<Coordinate<T>>
Which kind of iterator are we turning this into?
fn into_iter(self) -> <LineString<T> as IntoIterator>::IntoIter
[src]
fn into_iter(self) -> <LineString<T> as IntoIterator>::IntoIter
Creates an iterator from a value. Read more
impl<T> PartialEq<LineString<T>> for LineString<T> where
T: PartialEq<T> + CoordinateType,
[src]
impl<T> PartialEq<LineString<T>> for LineString<T> where
T: PartialEq<T> + CoordinateType,
fn eq(&self, other: &LineString<T>) -> bool
[src]
fn eq(&self, other: &LineString<T>) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, other: &LineString<T>) -> bool
[src]
fn ne(&self, other: &LineString<T>) -> bool
This method tests for !=
.
impl<T> From<LineString<T>> for Geometry<T> where
T: CoordinateType,
[src]
impl<T> From<LineString<T>> for Geometry<T> where
T: CoordinateType,
fn from(x: LineString<T>) -> Geometry<T>
[src]
fn from(x: LineString<T>) -> Geometry<T>
Performs the conversion.
impl<T, IC> From<Vec<IC>> for LineString<T> where
IC: Into<Coordinate<T>>,
T: CoordinateType,
[src]
impl<T, IC> From<Vec<IC>> for LineString<T> where
IC: Into<Coordinate<T>>,
T: CoordinateType,
Turn a Vec
of Point
-ish objects into a LineString
.
fn from(v: Vec<IC>) -> LineString<T>
[src]
fn from(v: Vec<IC>) -> LineString<T>
Performs the conversion.
impl<T> BoundingRect<T> for LineString<T> where
T: CoordinateType,
[src]
impl<T> BoundingRect<T> for LineString<T> where
T: CoordinateType,
type Output = Option<Rect<T>>
fn bounding_rect(&self) -> Self::Output
[src]
fn bounding_rect(&self) -> Self::Output
Return the BoundingRect for a LineString
impl<T> Centroid<T> for LineString<T> where
T: Float,
[src]
impl<T> Centroid<T> for LineString<T> where
T: Float,
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<F: Float> ClosestPoint<F> for LineString<F>
[src]
impl<F: Float> ClosestPoint<F> for LineString<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
.
impl<T> Contains<Point<T>> for LineString<T> where
T: Float,
[src]
impl<T> Contains<Point<T>> for LineString<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<LineString<T>> for Line<T> where
T: Float,
[src]
impl<T> Contains<LineString<T>> for Line<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> Contains<Line<T>> for LineString<T> where
T: Float,
[src]
impl<T> Contains<Line<T>> for LineString<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<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> ConvexHull<T> for LineString<T> where
T: Float,
[src]
impl<T> ConvexHull<T> for LineString<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> EuclideanDistance<T, LineString<T>> for Point<T> where
T: Float,
[src]
impl<T> EuclideanDistance<T, LineString<T>> for Point<T> where
T: Float,
fn euclidean_distance(&self, linestring: &LineString<T>) -> T
[src]
fn euclidean_distance(&self, linestring: &LineString<T>) -> T
Minimum distance from a Point to a LineString
impl<T> EuclideanDistance<T, Point<T>> for LineString<T> where
T: Float,
[src]
impl<T> EuclideanDistance<T, Point<T>> for LineString<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 LineString to a Point
impl<T> EuclideanDistance<T, LineString<T>> for LineString<T> where
T: Float + FloatConst + Signed + SpadeFloat,
[src]
impl<T> EuclideanDistance<T, LineString<T>> for LineString<T> where
T: Float + FloatConst + Signed + SpadeFloat,
LineString-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, Line<T>> for LineString<T> where
T: Float + FloatConst + Signed + SpadeFloat,
[src]
impl<T> EuclideanDistance<T, Line<T>> for LineString<T> where
T: Float + FloatConst + Signed + SpadeFloat,
LineString to Line
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, LineString<T>> for Line<T> where
T: Float + FloatConst + Signed + SpadeFloat,
[src]
impl<T> EuclideanDistance<T, LineString<T>> for Line<T> where
T: Float + FloatConst + Signed + SpadeFloat,
Line to LineString
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 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> EuclideanLength<T> for LineString<T> where
T: Float + Sum,
[src]
impl<T> EuclideanLength<T> for LineString<T> where
T: Float + Sum,
fn euclidean_length(&self) -> T
[src]
fn euclidean_length(&self) -> T
Calculation of the length of a Line Read more
impl<T> HaversineLength<T> for LineString<T> where
T: Float + FromPrimitive,
[src]
impl<T> HaversineLength<T> for LineString<T> where
T: Float + FromPrimitive,
fn haversine_length(&self) -> T
[src]
fn haversine_length(&self) -> T
Calculation of the length of a Line Read more
impl<T> Intersects<LineString<T>> for Line<T> where
T: Float,
[src]
impl<T> Intersects<LineString<T>> for Line<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<Line<T>> for LineString<T> where
T: Float,
[src]
impl<T> Intersects<Line<T>> for LineString<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 LineString<T> where
T: Float,
[src]
impl<T> Intersects<LineString<T>> for LineString<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<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: CoordinateType, NT: CoordinateType> MapCoords<T, NT> for LineString<T>
[src]
impl<T: CoordinateType, NT: CoordinateType> MapCoords<T, NT> for LineString<T>
type Output = LineString<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 LineString<T>
[src]
impl<T: CoordinateType, NT: CoordinateType> TryMapCoords<T, NT> for LineString<T>
type Output = LineString<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 LineString<T>
[src]
impl<T: CoordinateType> MapCoordsInplace<T> for LineString<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<T> Rotate<T> for LineString<T> where
T: Float,
[src]
impl<T> Rotate<T> for LineString<T> where
T: Float,
fn rotate(&self, angle: T) -> Self
[src]
fn rotate(&self, angle: T) -> Self
Rotate the LineString about its centroid by the given number of degrees
impl<T> Simplify<T> for LineString<T> where
T: Float,
[src]
impl<T> Simplify<T> for LineString<T> where
T: Float,
fn simplify(&self, epsilon: &T) -> LineString<T>
[src]
fn simplify(&self, epsilon: &T) -> LineString<T>
Returns the simplified representation of a geometry, using the Ramer–Douglas–Peucker algorithm Read more
impl<T> SimplifyVWPreserve<T> for LineString<T> where
T: Float + SpadeFloat,
[src]
impl<T> SimplifyVWPreserve<T> for LineString<T> where
T: Float + SpadeFloat,
fn simplifyvw_preserve(&self, epsilon: &T) -> LineString<T>
[src]
fn simplifyvw_preserve(&self, epsilon: &T) -> LineString<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 LineString<T> where
T: Float,
[src]
impl<T> SimplifyVW<T> for LineString<T> where
T: Float,
fn simplifyvw(&self, epsilon: &T) -> LineString<T>
[src]
fn simplifyvw(&self, epsilon: &T) -> LineString<T>
Returns the simplified representation of a geometry, using the Visvalingam-Whyatt algorithm Read more
impl<T> VincentyLength<T> for LineString<T> where
T: Float + FromPrimitive,
[src]
impl<T> VincentyLength<T> for LineString<T> where
T: Float + FromPrimitive,
fn vincenty_length(&self) -> Result<T, FailedToConvergeError>
[src]
fn vincenty_length(&self) -> Result<T, FailedToConvergeError>
impl<T> Winding<T> for LineString<T> where
T: CoordinateType,
[src]
impl<T> Winding<T> for LineString<T> where
T: CoordinateType,
fn winding_order(&self) -> Option<WindingOrder>
[src]
fn winding_order(&self) -> Option<WindingOrder>
Returns the winding order of this line None if the winding order is undefined.
ⓘImportant traits for Points<'a, T>fn points_cw(&self) -> Points<T>
[src]
fn points_cw(&self) -> Points<T>
Iterate over the points in a clockwise order
The Linestring isn't changed, and the points are returned either in order, or in reverse order, so that the resultant order makes it appear clockwise
ⓘImportant traits for Points<'a, T>fn points_ccw(&self) -> Points<T>
[src]
fn points_ccw(&self) -> Points<T>
Iterate over the points in a counter-clockwise order
The Linestring isn't changed, and the points are returned either in order, or in reverse order, so that the resultant order makes it appear counter-clockwise
fn make_cw_winding(&mut self)
[src]
fn make_cw_winding(&mut self)
Change this line's points so they are in clockwise winding order
fn make_ccw_winding(&mut self)
[src]
fn make_ccw_winding(&mut self)
Change this line's points so they are in counterclockwise winding order
fn is_cw(&self) -> bool
[src]
fn is_cw(&self) -> bool
True iff this clockwise
fn is_ccw(&self) -> bool
[src]
fn is_ccw(&self) -> bool
True iff this is wound counterclockwise
fn clone_to_winding_order(&self, winding_order: WindingOrder) -> Self where
Self: Sized + Clone,
[src]
fn clone_to_winding_order(&self, winding_order: WindingOrder) -> Self where
Self: Sized + Clone,
Return a clone of this object, but in the specified winding order
fn make_winding_order(&mut self, winding_order: WindingOrder)
[src]
fn make_winding_order(&mut self, winding_order: WindingOrder)
Change the winding order so that it is in this winding order
Auto Trait Implementations
impl<T> Send for LineString<T> where
T: Send,
impl<T> Send for LineString<T> where
T: Send,
impl<T> Sync for LineString<T> where
T: Sync,
impl<T> Sync for LineString<T> where
T: Sync,