#polyline #encoding #pair #coordinate #triple #representation

bin+lib flexpolyline

灵活的多线编码:坐标对或坐标三元组的损失压缩表示

1 个不稳定版本

0.1.0 2020年4月28日

#277 in 压缩

Download history 2872/week @ 2024-03-14 3265/week @ 2024-03-21 2590/week @ 2024-03-28 3894/week @ 2024-04-04 4181/week @ 2024-04-11 4380/week @ 2024-04-18 3653/week @ 2024-04-25 3178/week @ 2024-05-02 2978/week @ 2024-05-09 3531/week @ 2024-05-16 4733/week @ 2024-05-23 4302/week @ 2024-05-30 4948/week @ 2024-06-06 4309/week @ 2024-06-13 3934/week @ 2024-06-20 3481/week @ 2024-06-27

17,702 每月下载量
用于 polyline

MIT 许可证

34KB
754

灵活的多线编码

灵活的多线编码是一种坐标对或坐标三元组的损失压缩表示。它是通过以下方式实现的:

  1. 减少每个值的十进制位数。
  2. 仅编码与前一点的偏移量。
  3. 为每个坐标增量使用可变长度。
  4. 使用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
    }
);

无运行时依赖项