Expand description
The wkt
crate provides conversions to and from the WKT (Well Known Text)
geometry format.
Conversions are available via the TryFromWkt
and ToWkt
traits, with implementations for
geo_types
primitives enabled by default.
For advanced usage, see the types
module for a list of internally used types.
Enable the serde
feature if you need to deserialise data into custom structs containing WKT
geometry fields.
Examples
Read geo_types
from a WKT string
// This example requires the geo-types feature (on by default).
use wkt::TryFromWkt;
use geo_types::Point;
let point: Point<f64> = Point::try_from_wkt_str("POINT(10 20)").unwrap();
assert_eq!(point.y(), 20.0);
Write geo_types
to a WKT string
// This example requires the geo-types feature (on by default).
use wkt::ToWkt;
use geo_types::Point;
let point: Point<f64> = Point::new(1.0, 2.0);
assert_eq!(point.wkt_string(), "POINT(1 2)");
Read or write your own geometry types
Not using geo-types
for your geometries? No problem!
You can use Wkt::from_str
to parse a WKT string into this crate’s intermediate geometry
structure. You can use that directly, or if have your own geometry types that you’d prefer to
use, utilize that Wkt
struct to implement the ToWkt
or TryFromWkt
traits for your
own types.
In doing so, you’ll likely want to match on one of the WKT types
(Point, Linestring, etc.)
stored in its item
field
use std::str::FromStr;
use wkt::Wkt;
use wkt::Geometry;
let wktls: Wkt<f64> = Wkt::from_str("LINESTRING(10 20, 20 30)").unwrap();
let ls = match wktls.item {
Geometry::LineString(line_string) => {
// you now have access to the `wkt::types::LineString`.
assert_eq!(line_string.0[0].x, 10.0);
}
_ => unreachable!(),
};
Modules
This module provides conversions between WKT primitives and geo_types
primitives.
WKT
primitive types and collections
Structs
Container for WKT primitives and collections