Rust Geo Crate实操:如何将geo::Polygon转为wkt::Geometry并输出WKT文本
Rust geo类型转WKT字符串实现方案
1. 配置依赖
首先在Cargo.toml中添加对应依赖,需要主动开启wkt包的geo互转特征:
[dependencies] geo = "0.27" wkt = { version = "0.10", features = ["geo"] }
2. 完整转换代码
wkt包开启geo特征后,会自动实现geo几何类型到wkt::Geometry的TryInto转换逻辑,直接调用即可:
use geo::{LineString, Polygon}; use std::convert::TryInto; use wkt::Geometry; fn main() { let polygon = Polygon::new( LineString::from(vec![ (0., 0.), (0., 1.), (1., 1.), (1., 0.), ]), vec![], ); // 转换为wkt::Geometry类型 let wkt_geom: Geometry<f64> = polygon.try_into().expect("几何类型转换失败"); // 直接转为WKT格式字符串 let wkt_str = wkt_geom.to_string(); println!("{}", wkt_str); }
3. 输出结果
运行代码后会打印符合标准的WKT字符串:
POLYGON((0 0,0 1,1 1,1 0,0 0))
转换时会自动补全多边形首尾重合的点,符合WKT格式规范。
注意事项
- 如果不开启
wkt的geo特征,编译时会找不到对应的转换实现 - 合法的
geo几何类型转换为wkt::Geometry不会失败,简单场景可直接用unwrap()替代expect() - 如需反向将WKT字符串转为
geo类型,可先将字符串解析为wkt::Geometry,再用try_into转为对应geo类型即可
内容的提问来源于stack exchange,提问作者Raphael Prinz
相关产品推荐
相关产品推荐

