这个矢量叠加格式是什么?

问题描述 投票:0回答:1

我正在尝试对瑞士天气服务的天气地图进行逆向工程,因为我想提取信息以在某些电子纸显示器上显示。你可以在这里看到这样的地图: https://www.meteosuisse.admin.ch/services-et-publications/applications/precipitations.html

我感兴趣的覆盖层包含在 JSON 文件中,其名称遵循模式

rate_YYYYMMDD_hhmm.json
。它包含一个“区域”数组,每个区域由 RGB 颜色和一个“形状”数组给出。到目前为止,一切都很好。但是我不明白这些形状使用的编码。这是一个例子:

{"i":621,"j":120,"d":"NLNLNLNNMOLNKM","o":"01257867","l":0}

我猜

i
j
是形状的位置,而
d
o
以某种方式描述了它的边界?我注意到
d.length
始终等于
(o.length - 1) * 2
,并且
l
似乎等于该区域形状数组中形状的索引。

d
似乎只使用
N
M
K
L
O
o
似乎使用了
0
9
之间的所有数字。

有人认识这个吗?它是标准的,还是至少是某些图书馆使用的某种格式? JavaScript 被混淆了,所以很难弄清楚它是在哪里解析的。

vector encoding graphics
1个回答
0
投票

好吧,这看起来不像是标准编码。解码函数在页面的混淆 Javascript 中称为

f
,其工作原理大致如下:

  • i
    j
    是多边形的一个顶点的坐标
  • d
    中的每对连续字母表示下一个顶点的方向。从
    K
    O
    的字母映射到从 -2 到 +2 的偏移量。例如,最初的
    NL
    (621; 120)
    移动到
    (621+1; 120-1)
  • o
    中的数字通过指定
    0.05
    0.95
    之间的偏移量提供额外的精度。由于某种原因,编码只允许在水平坐标(如果它是奇数)或垂直坐标(如果水平坐标是奇数)上添加这样的偏移量。
  • 最后,对这些坐标应用线性变换,然后将其传递给同一文件中名为
    CHtoWGS
    的函数,大概是为了转换为 WGS 坐标系之一。
© www.soinside.com 2019 - 2024. All rights reserved.