【发布时间】:2020-11-25 01:25:29
【问题描述】:
我正在寻找任何用于有损压缩 GPS 轨道航点的算法,其坐标为 EPSG:4326 CRS(通常的度数,如 (75.223423,-10.123123))
简而言之,在消除元信息并使用 Ramer-Douglas-Peucker 算法进行简化后,我有一个有序的航点坐标序列,每个航点占用 16 个字节(2 x 8 字节 @987654322 @)。
利用航点是有序的,航点之间的距离在大多数情况下小于 0.01°(~1 公里在赤道),我做了一个假设,可能有某种此类序列的有损压缩算法。
你能帮我找出来吗?
UPD:根据真实轨迹(约 800 条分析),点之间的距离(度数)如下所示。 P95 是所有距离的第 95 个百分位。
LON
avg: 0,000334560520818109
p95: 0,001239999999999240 # ~138 meters
max: 0,307273900000000000
LAT
avg: 0,000221987685948093
p95: 0,000839999999996621
max: 0,309625799999999000
【问题讨论】:
-
在您的数据集上尝试第一个常见的通用无损压缩工具,以评估可能的潜在压缩系数。
-
@chux-ReinstateMonica 我认为通常的压缩方法针对重复序列和词汇使用进行了优化。在我的例子中,不存在二进制形式的词汇或重复序列,因此它提供的压缩率太小而资源使用率太高(cpu 和 ram)。
-
“在我的情况下,不存在二进制形式的词汇或重复序列”与“在大多数情况下航路点之间的距离小于 0.01°”相矛盾——>您的数据存在模式。 “资源使用率过高”不是帖子的一部分。如果您有限制,最好在帖子中说明。 "给出的压缩率太小" --> 那个压缩率是多少?
-
仅在
OptimalGZip 和 Deflate 时只有 35%。比OptimalBrotli 更好(平均 21.5%)。测量 5000 个真实 GPX 文件。我认为它仍然很大并且没有损失。我将尝试尝试将浮点放大到整数(有损)并使用默认算法对其进行压缩。 ***Optimal是.net 的条款。 -
我认为 10m 的精度非常适合我的需求。
标签: floating-point gps compression coordinates gpx