2010-09-30 323 views
1

由于互联网通信,我可以有两个(或更多)ASCII文件在RINEX格式(GPS ASCII格式)的相同的数据期间,我想要合并到一个文件。如何根据时间存储原始数据并对其进行分类?

每个数据集(epoch)包含多于一行(在本例中为19行)。我想合并这些文件,这可能是因为它们在某些部分彼此重叠。

这里是RINEX历元数据集的示例:

09 2 21 12 59 59.9000000 0 9G31G23G11G13G32G17G14G20G19 
23152606.238 121667768.06047 94806069.43545 23152606.540 23152606.521 
    1262.605   43.750   31.500 
22765313.352 119632547.53447 93220179.18745 22765312.252 22765311.072 
    3252.769   46.250   32.250 
20798168.896 109295128.07748 85165036.96747 20798168.642 20798168.578 
    -2252.493   52.750   43.250 
25363206.177 133284559.23845 
    3776.403   32.750 
20350616.203 106943239.96448 83332404.31147 20350615.386 20350616.499 
    -929.443   51.000   44.500 
21994260.713 115580595.93348 90062809.84446 21994260.826 21994260.114 
     416.327   49.500   38.250 
23964108.994 125932271.15846 98129049.02843 23964107.689 23964107.603 
    -3561.500   39.250   20.250 
20225257.452 106284459.64448 82819085.85247 20225256.341 20225256.964 
     956.944   52.750   45.250 
25623383.323 134651746.21445 104923415.17742 25623386.202 25623384.504 
    -3991.096   34.250   12.250 

第一行包含的时间信息和下面对于每个GPS卫星的原始数据。

我的想法是分开打开每个文件,并将某些数组中的原始数据相对于时间进行存储。每次我读新纪元时,我问我的数组是否已经有时间,如果没有,我将原始数据放在那里。

我的问题是如何存储原始数据的时间,因为它不是一条线,而是动态的东西,总是可以改变。

如果你有更好的主意,请与我分享。

问候

回答

3

为了相对于时间存储原始数据,我将:

  • 编码时作为数(因为Unix的“信号出现时间”秒#或自任意开始时间 - 使用微秒而不是秒数,取决于RINEX的时间精度)。

  • 将原始数据存储为一个数组(每行的数据为1个数组元素 - 以字符串形式存储,由单词的arrayref或值的哈希值存储)。

  • 将对该数组的引用存储为哈希值,该密钥是时间编码的数字。

+0

我第二种方法。这样你就可以将一堆行组织成一个数据表(数组)和一个查找索引(哈希)。对于你的数组,你只需在最后添加一些便宜的新行,而散列只包含数字键和引用,这些数据键在数组中的位置也很便宜。这将提供比将数据存储在散列本身中更高的性能,这将非常昂贵,特别是对于更大的数据集。 – Olfan 2010-09-30 15:01:51

相关问题