2010-09-30 70 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

相關問題