Struct geos::CoordSeq[][src]

pub struct CoordSeq<'a> { /* fields omitted */ }
Expand description

CoordSeq represents a list of coordinates inside a Geometry.

Example

use geos::{CoordDimensions, CoordSeq};

let mut coords = CoordSeq::new(1, CoordDimensions::OneD)
                          .expect("failed to create CoordSeq");
coords.set_x(0, 10.);
assert_eq!(coords.get_x(0), Ok(10.));

Implementations

Creates a new CoordSeq.

Example

use geos::{CoordDimensions, CoordSeq};

let mut coord_seq = CoordSeq::new(2, CoordDimensions::ThreeD)
                             .expect("failed to create CoordSeq");

// Then you fill the positions of your `coord_seq`:
let positions: &[(f64, f64, f64)] = &[(0., 0., 0.), (1., 2., 1.)];
for (pos, (x, y, z)) in positions.into_iter().enumerate() {
    coord_seq.set_x(pos, *x).expect("failed to set x...");
    coord_seq.set_y(pos, *y).expect("failed to set y...");
    coord_seq.set_z(pos, *z).expect("failed to set z...");
}
assert_eq!(coord_seq.get_z(1), Ok(1.));

// An example with 2 dimensions (and 3 lines) as well:
let mut coord_seq2 = CoordSeq::new(3, CoordDimensions::TwoD)
                              .expect("failed to create CoordSeq");
let positions2: &[(f64, f64)] = &[(0., 0.), (1., 2.), (14., 5.)];
for (pos, (x, y)) in positions2.into_iter().enumerate() {
    coord_seq2.set_x(pos, *x).expect("failed to set x...");
    coord_seq2.set_y(pos, *y).expect("failed to set y...");
}
assert_eq!(coord_seq2.get_x(1), Ok(1.));

Creates a new CoordSeq.

Example

use geos::CoordSeq;

let coords = CoordSeq::new_from_vec(&[&[0., 1.], &[2., 3.]])
                      .expect("failed to create CoordSeq");
assert_eq!(coords.get_y(1), Ok(3.));

// Doing it from a Vec<Vec<f64>>.
let positions = vec![vec![0., 1.], vec![2., 3.]];
let s_positions = positions.iter().map(|x| x.as_slice()).collect::<Vec<_>>();
let coords = CoordSeq::new_from_vec(&s_positions)
                      .expect("failed to create CoordSeq");
assert_eq!(coords.get_y(1), Ok(3.));

// All vectors don't have the same length, this is an error!
assert!(CoordSeq::new_from_vec(&[vec![0., 1.], vec![3.]]).is_err());

// An empty vector is an error as well since we can't figure out its dimensions!
let x: &[f64] = &[];
assert!(CoordSeq::new_from_vec(&[x]).is_err());

Sets the X position value at the given line.

Example

use geos::{CoordDimensions, CoordSeq};

let mut coords = CoordSeq::new(1, CoordDimensions::OneD)
                          .expect("failed to create CoordSeq");
coords.set_x(0, 10.);
assert_eq!(coords.get_x(0), Ok(10.));

Sets the Y position value at the given line.

Note: your CoordSeq object must have at least two dimensions!

Example

use geos::{CoordDimensions, CoordSeq};

let mut coords = CoordSeq::new(1, CoordDimensions::TwoD)
                          .expect("failed to create CoordSeq");
coords.set_y(0, 10.);
assert_eq!(coords.get_y(0), Ok(10.));

Sets the Z position value at the given line.

Note: your CoordSeq object must have three dimensions!

Example

use geos::{CoordDimensions, CoordSeq};

let mut coords = CoordSeq::new(1, CoordDimensions::ThreeD)
                          .expect("failed to create CoordSeq");
coords.set_z(0, 10.);
assert_eq!(coords.get_z(0), Ok(10.));

Sets the value at the given ordinate (aka position).

Note: your CoordSeq object must have enough dimensions to set at the given ordinate!

Example

use geos::{CoordDimensions, CoordSeq, Ordinate};

let mut coords = CoordSeq::new(1, CoordDimensions::ThreeD)
                          .expect("failed to create CoordSeq");
coords.set_ordinate(0, Ordinate::Z, 10.);
assert_eq!(coords.get_z(0), Ok(10.));
assert_eq!(coords.get_ordinate(0, Ordinate::Z), Ok(10.));

Gets the X position value at the given line.

Example

use geos::{CoordDimensions, CoordSeq};

let mut coords = CoordSeq::new(1, CoordDimensions::OneD)
                          .expect("failed to create CoordSeq");
coords.set_x(0, 10.);
assert_eq!(coords.get_x(0), Ok(10.));

Gets the Y position value at the given line.

Note: your CoordSeq object must have at least two dimensions!

Example

use geos::{CoordDimensions, CoordSeq};

let mut coords = CoordSeq::new(1, CoordDimensions::TwoD)
                          .expect("failed to create CoordSeq");
coords.set_y(0, 10.);
assert_eq!(coords.get_y(0), Ok(10.));

Gets the Z position value at the given line.

Note: your CoordSeq object must have three dimensions!

Example

use geos::{CoordDimensions, CoordSeq};

let mut coords = CoordSeq::new(1, CoordDimensions::ThreeD)
                          .expect("failed to create CoordSeq");
coords.set_z(0, 10.);
assert_eq!(coords.get_z(0), Ok(10.));

Gets the value at the given ordinate (aka position).

Note: your CoordSeq object must have enough dimensions to access the given ordinate!

Example

use geos::{CoordDimensions, CoordSeq, Ordinate};

let mut coords = CoordSeq::new(1, CoordDimensions::ThreeD)
                          .expect("failed to create CoordSeq");
coords.set_ordinate(0, Ordinate::Z, 10.);
assert_eq!(coords.get_z(0), Ok(10.));
assert_eq!(coords.get_ordinate(0, Ordinate::Z), Ok(10.));

Returns the number of lines of the CoordSeq object.

Example

use geos::{CoordDimensions, CoordSeq};

let coords = CoordSeq::new(2, CoordDimensions::ThreeD)
                      .expect("failed to create CoordSeq");
assert_eq!(coords.size(), Ok(2));

let coords = CoordSeq::new_from_vec(&[&[1f64], &[2.], &[3.], &[4.]])
                      .expect("failed to create CoordSeq");
assert_eq!(coords.size(), Ok(4));

Returns the number of lines of the CoordSeq object.

Note: This is an alias to the size method.

Example

use geos::{CoordDimensions, CoordSeq};

let coords = CoordSeq::new(2, CoordDimensions::ThreeD)
                      .expect("failed to create CoordSeq");
assert_eq!(coords.number_of_lines(), Ok(2));

let coords = CoordSeq::new_from_vec(&[&[1f64], &[2.], &[3.], &[4.]])
                      .expect("failed to create CoordSeq");
assert_eq!(coords.number_of_lines(), Ok(4));

Returns the number of dimensions of the CoordSeq object.

Example

use geos::{CoordDimensions, CoordSeq};

let coords = CoordSeq::new(2, CoordDimensions::OneD)
                      .expect("failed to create CoordSeq");
assert_eq!(coords.dimensions(), Ok(CoordDimensions::OneD));

let coords = CoordSeq::new_from_vec(&[&[1., 2.], &[3. ,4.]])
                      .expect("failed to create CoordSeq");
assert_eq!(coords.dimensions(), Ok(CoordDimensions::TwoD));

Returns true if the geometry has a counter-clockwise orientation.

Available using the v3_7_0 feature.

Creates a point geometry.

Example

use geos::{CoordDimensions, CoordSeq, Geom, Geometry};

let coords = CoordSeq::new_from_vec(&[&[1., 2.]])
                      .expect("failed to create CoordSeq");

let geom = Geometry::create_point(coords).expect("Failed to create point");

assert_eq!(geom.to_wkt().unwrap(), "POINT (1.0000000000000000 2.0000000000000000)");

Creates a line string geometry.

Example

use geos::{CoordDimensions, CoordSeq, Geom, Geometry};

let coords = CoordSeq::new_from_vec(&[&[1., 2.], &[3., 4.]])
                      .expect("failed to create CoordSeq");

let geom = Geometry::create_line_string(coords).expect("Failed to create line string");

assert_eq!(geom.to_wkt().unwrap(),
           "LINESTRING (1.0000000000000000 2.0000000000000000, \
                        3.0000000000000000 4.0000000000000000)");

Creates a linear ring geometry.

Trait Implementations

Also pass the context to the newly created CoordSeq.

Performs copy-assignment from source. Read more

Set the context handle to the CoordSeq.

use geos::{ContextInteractions, CoordDimensions, CoordSeq, ContextHandle};

let context_handle = ContextHandle::init().expect("invalid init");
context_handle.set_notice_message_handler(Some(Box::new(|s| println!("new message: {}", s))));
let mut coord_seq = CoordSeq::new(2, CoordDimensions::TwoD).expect("failed to create CoordSeq");
coord_seq.set_context_handle(context_handle);

Get the context handle of the CoordSeq.

use geos::{ContextInteractions, CoordDimensions, CoordSeq};

let coord_seq = CoordSeq::new(2, CoordDimensions::TwoD).expect("failed to create CoordSeq");
let context = coord_seq.get_context_handle();
context.set_notice_message_handler(Some(Box::new(|s| println!("new message: {}", s))));

Gets the last error (if any) from the ContextHandle held by this object. Read more

Gets the last notification (if any) from the ContextHandle held by this object. Read more

Executes the destructor for this type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.