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:
std: Enables use of the fullstdlibrary. Enabled by default.multithreading: Enables multi-threaded iteration overMulti*geometries. Disabled by default but enabled bygeo’s default features.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)use-rstar_0_10: Allows geometry types to be inserted into rstar R*-trees (rstar v0.10)use-rstar_0_11: Allows geometry types to be inserted into rstar R*-trees (rstar v0.11)use-rstar_0_12: Allows geometry types to be inserted into rstar R*-trees (rstar v0.12)
This library can be used in #![no_std] environments if the default std feature is disabled. At the moment, the arbitrary and use-rstar_0_8 features require std. This may change in a future release.
Re-exports§
pub use geometry::*;
Modules§
Macros§
- coord
- Creates a
Coordfrom the given scalars. - line_
string - Creates a
LineStringcontaining the given coordinates. - point
- Creates a
Pointfrom the given coordinates. - polygon
- Creates a
Polygoncontaining the given coordinates. - wkt
- Creates a
crate::geometryfrom a WKT literal.
Structs§
- Invalid
Rect Coordinates Error Deprecated - Points
Iter - A
Pointiterator returned by thepointsmethod
Enums§
Traits§
- Coord
Float - For algorithms which can only use floating point
Points/Coords, like area or length calculations - Coord
Num - For algorithms which can use both integer and floating point
Points/Coords - Coordinate
Type Deprecated