Expand description
The geo-types library defines geometric types for the GeoRust ecosystem.
In most cases, you will only need to use this crate if you’re a crate author and want
compatibility with other GeoRust crates. Otherwise, the geo
crate re-exports these types and additionally provides geospatial algorithms.
Geometries
Point: A single point represented by oneCoordMultiPoint: A collection ofPointsLine: A line segment represented by twoCoordsLineString: A series of contiguous line segments represented by two or moreCoordsMultiLineString: A collection ofLineStringsPolygon: A bounded area represented by oneLineStringexterior ring, and zero or moreLineStringinterior ringsMultiPolygon: A collection ofPolygonsRect: An axis-aligned bounded rectangle represented by minimum and maximumCoordsTriangle: A bounded area represented by threeCoordverticesGeometryCollection: A collection ofGeometrysGeometry: An enumeration of all geometry types, excludingCoord
Coordinates and Numeric Types
Coord: A two-dimensional coordinate. All geometry types are composed ofCoords, thoughCoorditself is not aGeometrytype. SeePointfor a single coordinate geometry.
By default, coordinates are 64-bit floating point numbers, but this is generic, and you may specify any numeric type that implements CoordNum or CoordFloat. As well as f64, this includes common numeric types like f32, i32, i64, etc.
use geo_types::Point;
// Geometries are f64 by default
let point: Point = Point::new(1.0, 2.0);
assert_eq!(std::mem::size_of::<Point>(), 64 * 2 / 8);
// You can be explicit about the numeric type.
let f64_point: Point<f64> = Point::new(1.0, 2.0);
assert_eq!(std::mem::size_of::<Point<f64>>(), 64 * 2 / 8);
// Or specify some non-default numeric type
let f32_point: Point<f32> = Point::new(1.0, 2.0);
assert_eq!(std::mem::size_of::<Point<f32>>(), 32 * 2 / 8);
// Integer geometries are supported too, though not all
// algorithms will be implemented for all numeric types.
let i32_point: Point<i32> = Point::new(1, 2);
assert_eq!(std::mem::size_of::<Point<i32>>(), 32 * 2 / 8);Semantics
The geospatial types provided here aim to adhere to the OpenGIS Simple feature access standards. Thus, the types here are inter-operable with other implementations of the standards: JTS, GEOS, etc.
Features
The following optional Cargo features are available:
approx: Allows geometry types to be checked for approximate equality with approxarbitrary: Allows geometry types to be created from unstructured input with arbitraryserde: Allows geometry types to be serialized and deserialized with Serdeuse-rstar_0_8: Allows geometry types to be inserted into rstar R*-trees (rstar v0.8)use-rstar_0_9: Allows geometry types to be inserted into rstar R*-trees (rstar v0.9)
Re-exports
pub use geometry::*;Modules
Macros
Coord] from the given scalars.LineString containing the given coordinates.Structs
Point iterator returned by the points methodEnums
Traits
Points/Coords, like area or length calculationsPoints/Coords