1 个不稳定版本
0.1.0 | 2020年4月28日 |
---|
#277 in 压缩
17,702 每月下载量
用于 polyline
34KB
754 行
灵活的多线编码
灵活的多线编码是一种坐标对或坐标三元组的损失压缩表示。它是通过以下方式实现的:
- 减少每个值的十进制位数。
- 仅编码与前一点的偏移量。
- 为每个坐标增量使用可变长度。
- 使用64个URL安全字符来显示结果。
该编码是编码的多线算法格式的变体。与原始编码相比,这种编码的优点如下:
- 输出字符串仅由URL安全字符组成,即可以作为查询参数使用,无需URL编码。
- 浮点数精度可配置:这允许以微米(5位小数位允许米精度)的精度表示坐标。
- 允许以给定的精度编码第三维度,这可能是一个级别、海拔、高程或其他自定义值。
规范
见 规范。
示例
use flexpolyline::{Polyline, Precision};
// encode
let coordinates = vec![
(50.1022829, 8.6982122),
(50.1020076, 8.6956695),
(50.1006313, 8.6914960),
(50.0987800, 8.6875156),
];
let polyline = Polyline::Data2d {
coordinates,
precision2d: Precision::Digits5,
};
let encoded = polyline.encode().unwrap();
assert_eq!(encoded, "BFoz5xJ67i1B1B7PzIhaxL7Y");
// decode
let decoded = Polyline::decode("BFoz5xJ67i1B1B7PzIhaxL7Y").unwrap();
assert_eq!(
decoded,
Polyline::Data2d {
coordinates: vec![
(50.10228, 8.69821),
(50.10201, 8.69567),
(50.10063, 8.69150),
(50.09878, 8.68752)
],
precision2d: Precision::Digits5
}
);