Struct geo::LineString
[−]
[src]
pub struct LineString<T>(pub Vec<Point<T>>)
where
T: Float;
An ordered collection of two or more Point
s, representing a path between locations
Create a LineString
by calling it directly:
use geo::{LineString, Point}; let line = LineString(vec![Point::new(0., 0.), Point::new(10., 0.)]);
Converting a Vec
of Point
-like things:
let line: LineString<f32> = vec![(0., 0.), (10., 0.)].into();
Or collect
ing from a Point iterator
let mut points = vec![Point::new(0., 0.), Point::new(10., 0.)]; let line: LineString<f32> = points.into_iter().collect();
You can iterate over the points in the LineString
use geo::{LineString, Point}; let line = LineString(vec![Point::new(0., 0.), Point::new(10., 0.)]); for point in line { println!("Point x = {}, y = {}", point.x(), point.y()); }
Methods
impl<T: Float> LineString<T>
[src]
fn lines<'a>(&'a self) -> Box<Iterator<Item = Line<T>> + 'a>
[src]
Return an Line
iterator that yields one Line
for each line segment
in the LineString
.
Examples
use geo::{Line, LineString, Point}; let mut points = vec![(0., 0.), (5., 0.), (7., 9.)]; let linestring: LineString<f32> = points.into_iter().collect(); let mut lines = linestring.lines(); assert_eq!( Some(Line::new(Point::new(0., 0.), Point::new(5., 0.))), lines.next() ); assert_eq!( Some(Line::new(Point::new(5., 0.), Point::new(7., 9.))), lines.next() ); assert!(lines.next().is_none());
Trait Implementations
impl<T: PartialEq> PartialEq for LineString<T> where
T: Float,
[src]
T: Float,
fn eq(&self, __arg_0: &LineString<T>) -> bool
[src]
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, __arg_0: &LineString<T>) -> bool
[src]
This method tests for !=
.
impl<T: Clone> Clone for LineString<T> where
T: Float,
[src]
T: Float,
fn clone(&self) -> LineString<T>
[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl<T: Debug> Debug for LineString<T> where
T: Float,
[src]
T: Float,
impl<T: Float, IP: Into<Point<T>>> From<Vec<IP>> for LineString<T>
[src]
Turn a Vec
of Point
-ish objects into a LineString
.
impl<T: Float, IP: Into<Point<T>>> FromIterator<IP> for LineString<T>
[src]
Turn a Point
-ish iterator into a LineString
.
fn from_iter<I: IntoIterator<Item = IP>>(iter: I) -> Self
[src]
Creates a value from an iterator. Read more
impl<T: Float> IntoIterator for LineString<T>
[src]
Iterate over all the Points in this linestring
type Item = Point<T>
The type of the elements being iterated over.
type IntoIter = IntoIter<Point<T>>
Which kind of iterator are we turning this into?
fn into_iter(self) -> Self::IntoIter
[src]
Creates an iterator from a value. Read more
impl<T> Centroid<T> for LineString<T> where
T: Float,
[src]
T: Float,
impl<T> Contains<Point<T>> for LineString<T> where
T: Float,
[src]
T: Float,
fn contains(&self, p: &Point<T>) -> bool
[src]
Checks if the geometry A is completely inside the B geometry. Read more
impl<T> Contains<Line<T>> for LineString<T> where
T: Float,
[src]
T: Float,
fn contains(&self, line: &Line<T>) -> bool
[src]
Checks if the geometry A is completely inside the B geometry. Read more
impl<T> Intersects<Line<T>> for LineString<T> where
T: Float,
[src]
T: Float,
fn intersects(&self, line: &Line<T>) -> bool
[src]
Checks if the geometry A intersects the geometry B. Read more
impl<T> Intersects<LineString<T>> for LineString<T> where
T: Float,
[src]
T: Float,
fn intersects(&self, linestring: &LineString<T>) -> bool
[src]
Checks if the geometry A intersects the geometry B. Read more
impl<T> Length<T> for LineString<T> where
T: Float,
[src]
T: Float,
impl<T> Distance<T, Point<T>> for LineString<T> where
T: Float,
[src]
T: Float,
impl<T> BoundingBox<T> for LineString<T> where
T: Float,
[src]
T: Float,
type Output = Option<Bbox<T>>
fn bbox(&self) -> Self::Output
[src]
Return the BoundingBox for a LineString
impl<T> Simplify<T> for LineString<T> where
T: Float,
[src]
T: Float,
fn simplify(&self, epsilon: &T) -> LineString<T>
[src]
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]
T: Float + SpadeFloat,
fn simplifyvw_preserve(&self, epsilon: &T) -> LineString<T>
[src]
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]
T: Float,
fn simplifyvw(&self, epsilon: &T) -> LineString<T>
[src]
Returns the simplified representation of a geometry, using the Visvalingam-Whyatt algorithm Read more
impl<T> ConvexHull<T> for LineString<T> where
T: Float,
[src]
T: Float,
fn convex_hull(&self) -> Polygon<T>
[src]
Returns the convex hull of a Polygon. The hull is always oriented counter-clockwise. Read more
impl<T> Rotate<T> for LineString<T> where
T: Float,
[src]
T: Float,
fn rotate(&self, angle: T) -> Self
[src]
Rotate the LineString about its centroid by the given number of degrees
impl<T: Float, NT: Float> MapCoords<T, NT> for LineString<T>
[src]
type Output = LineString<NT>
fn map_coords(&self, func: &Fn(&(T, T)) -> (NT, NT)) -> Self::Output
[src]
Apply a function to all the coordinates in a geometric object, returning a new object. Read more
impl<T: Float> MapCoordsInplace<T> for LineString<T>
[src]
fn map_coords_inplace(&mut self, func: &Fn(&(T, T)) -> (T, T))
[src]
Apply a function to all the coordinates in a geometric object, in place Read more
impl<F: Float> ClosestPoint<F> for LineString<F>
[src]
fn closest_point(&self, p: &Point<F>) -> Closest<F>
[src]
Find the closest point between self
and p
.
impl<'a, T> FromPostgis<&'a T> for LineString<f64> where
T: LineString<'a>,
[src]
T: LineString<'a>,
fn from_postgis(ls: &'a T) -> Self
[src]
impl ToPostgis<LineString> for LineString<f64>
[src]
fn to_postgis_with_srid(&self, srid: Option<i32>) -> LineString
[src]
Converts this geometry to a PostGIS type, using the supplied SRID.
fn to_postgis_wgs84(&self) -> T
[src]
Converts this WGS84 geometry to a PostGIS type.
impl<T> HaversineLength<T> for LineString<T> where
T: Float + FromPrimitive,
[src]
T: Float + FromPrimitive,
fn haversine_length(&self) -> T
[src]
Calculation of the length of a Line Read more
impl<T> Winding<T> for LineString<T> where
T: Float,
[src]
T: Float,
fn winding_order(&self) -> Option<WindingOrder>
[src]
Returns the winding order of this line None if the winding order is undefined.
fn points_cw<'a>(&'a self) -> Box<Iterator<Item = &'a Point<T>> + 'a>
[src]
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
fn points_ccw<'a>(&'a self) -> Box<Iterator<Item = &'a Point<T>> + 'a>
[src]
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]
Change this line's points so they are in clockwise winding order
fn make_ccw_winding(&mut self)
[src]
Change this line's points so they are in counterclockwise winding order
fn is_cw(&self) -> bool
[src]
True iff this clockwise
fn is_ccw(&self) -> bool
[src]
True iff this is wound counterclockwise
fn clone_to_winding_order(&self, winding_order: WindingOrder) -> Self where
Self: Sized + Clone,
[src]
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]
Change the winding order so that it is in this winding order