这个编码是什么/为什么这些.txt文件不是纯文本?

时间:2016-12-12 09:32:10

标签: javascript browser

我正在浏览the deck.gl repo。它附带了一些带有文本文件的示例,例如this one。这些文件的扩展名为.txt,但不是纯文本:

!OohmwFjqwbMg@[?ADKJYXF@^?N?FAD

=wnmwFvvwbM_@WNg@@@@C?C_@UA?AD@?Of@_@UTu@??BK?A??FUVP?@JF?AVP?@JF?AVPGTA?EL@?
=urmwF|swbM_@UFS@@BK?C@C@A@E?CIGA?GE?CIGA@CF?@ABA@CJ@@GR]Ud@wA\T?@DB?AXP?@DB?A\T

<aymwFnvwbMaAOKCA@OKPk@CCDKAADKAADKAADKAADKAAL_@fBjAIVCCEL

示例还包含JavaScript文件,看起来好像用于解码这些文件,例如this one for the file above

这到底发生了什么?我认为这是一种减少数据大小的方法,但为什么不依靠浏览器gzipping?

当文件显然是纯文本时,为什么要使用纯文本扩展名?为什么要有自定义解码器?

1 个答案:

答案 0 :(得分:2)

它看起来像一个自定义编码,它使用字节值来编码坐标/ GeoJSON功能。

例如,来自/dist-demo/data/building-data.txt的这一行:

!GqgmwFrhwbM}C}@@K@IBO@IlBh@BOBMn@PHBGd@KC

使用decodePolyline()实用程序函数解码到此数组中:

[
    [0.00004,0.00001],
    [40.70541,0.00002],
    [40.7062,-74.01624],
    [40.70619,-74.01593],
    [40.70618,-74.01587],
    [40.70616,-74.01582],
    [40.70615,-74.01574],
    [40.7056,-74.01569],
    [40.70558,-74.0159],
    [40.70556,-74.01582],
    [40.70532,-74.01575],
    [40.70527,-74.01584],
    [40.70531,-74.01586],
    [40.70537,-74.01605],
    [40.70537,-74.01603]
]

以JSON格式显着增大。

所以我的猜测是,主要原因是能够使用仍然可移植/可缓存的较小数据文件。它仍然是基于行的明文,所以它也是不同的。

此外,这些文件仍然是可压缩的。我假设一个完整的JSON文件不仅开始时更大,而且还表现出比该文件更不利的压缩特性。对building-data.txt的快速测试显示gzip / deflate的压缩率大约为2:1(压缩为139,089字节到72,660字节)。原始JSON中相同文件的压缩结果不会接近该位置。