數(shù)據(jù)存儲(chǔ)方法和裝置、數(shù)據(jù)讀取方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)存儲(chǔ)方法和裝置、數(shù)據(jù)讀取方 法和裝置。
【背景技術(shù)】
[0002] 隨著地震勘探技術(shù)的發(fā)展和需要,工區(qū)越來(lái)越大,采集密度也越來(lái)越大,地震數(shù)據(jù) 量越來(lái)越大;另一方面,在地震數(shù)據(jù)處理與解釋過(guò)程中,多工區(qū)、多用戶、多個(gè)處理解釋結(jié)果 的并存,使得計(jì)算機(jī)的存儲(chǔ)空間總是供不應(yīng)求。
[0003] 在地震數(shù)據(jù)處理解釋的實(shí)際生產(chǎn)應(yīng)用過(guò)程中,數(shù)據(jù)體存儲(chǔ)格式通常是32位浮點(diǎn) 型,因?yàn)樵摳袷教峁┝俗銐虻臄?shù)據(jù)精度。有時(shí)也會(huì)用到8位整型格式的數(shù)據(jù)體,雖然8位整 型格式的數(shù)據(jù)體精度有所損失,但是存儲(chǔ)空間只有32位浮點(diǎn)型數(shù)據(jù)體的1/4,且大多數(shù)時(shí) 候,尤其是作為最終成果輸出時(shí),對(duì)于數(shù)據(jù)體的精度要求并不是很高的時(shí)候,8位體已經(jīng)能 夠滿足要求。
[0004] 由此可見,8位整型格式的數(shù)據(jù)體和32位浮點(diǎn)型格式的數(shù)據(jù)體各自都存在一定的 缺陷,如何提供一種既能保證數(shù)據(jù)精度又能減少數(shù)據(jù)存儲(chǔ)空間的數(shù)據(jù)存儲(chǔ)和讀取方法,目 前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實(shí)施例提供了一種數(shù)據(jù)存儲(chǔ)方法,以達(dá)到在保證數(shù)據(jù)精度的情況下減少存 儲(chǔ)空間的目的,該方法包括:
[0006] 獲取一道32位數(shù)據(jù)體的數(shù)據(jù);
[0007] 統(tǒng)計(jì)該道的所有數(shù)據(jù),得到最大值和最小值;
[0008] 當(dāng)所述最大值與所述最小值不相等時(shí),采用極差變換公式對(duì)該道的所有數(shù)據(jù)進(jìn)行 從32位數(shù)據(jù)體到8位數(shù)據(jù)體的壓縮變換;
[0009] 當(dāng)所述最大值與所述最小值相等時(shí),將該道的所有數(shù)據(jù)賦值為0 ;
[0010] 將數(shù)據(jù)轉(zhuǎn)換后的結(jié)果以道為單位進(jìn)行存儲(chǔ),且將所述最大值和所述最小值記錄在 該道的道頭數(shù)據(jù)的預(yù)定字段中。
[0011] 在一個(gè)實(shí)施方式中,所述極差變換公式為:
[0013] 其中,Anin表示所述最小值,A _表示所述最大值,A表示變換前的32位數(shù)據(jù)體的 數(shù)據(jù)值,round表示四舍五入法取整函數(shù),A'表示變換后的8位數(shù)據(jù)體的數(shù)據(jù)值。
[0014] 在一個(gè)實(shí)施方式中,在內(nèi)存中進(jìn)行所述壓縮變換。
[0015] 本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)讀取方法,以達(dá)到在保證數(shù)據(jù)精度的情況下減少 存儲(chǔ)空間的目的,該方法包括:
[0016] 確定待讀取的8位數(shù)據(jù)體的數(shù)據(jù)道的道位置;
[0017] 從該數(shù)據(jù)道的道頭數(shù)據(jù)的預(yù)定字段中讀取該道原始32位數(shù)據(jù)體的數(shù)據(jù)的最大值 和最小值;
[0018] 當(dāng)所述最大值與所述最小值不相等時(shí),采用極差變換還原公式對(duì)該道的所有數(shù)據(jù) 進(jìn)行從8位數(shù)據(jù)體到32位數(shù)據(jù)體的數(shù)據(jù)還原,將還原后的結(jié)果作為該道的數(shù)據(jù)值;
[0019] 當(dāng)所述最大值與所述最小值相等時(shí),將所述最大值作為該道的所有數(shù)據(jù)的取值。
[0020] 在一個(gè)實(shí)施方式中,所述極差變換還原公式為:
[0022] 其中,Anil^示所述最小值,Aniax表示所述最大值,A'表示還原前的8位數(shù)據(jù)體的 數(shù)據(jù)值,A"表示還原后的32位數(shù)據(jù)體的數(shù)據(jù)值。
[0023] 在一個(gè)實(shí)施方式中,在內(nèi)存中進(jìn)行所述數(shù)據(jù)還原。
[0024] 本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)存儲(chǔ)裝置,以達(dá)到在保證數(shù)據(jù)精度的情況下減少 存儲(chǔ)空間的目的,該裝置包括:
[0025] 數(shù)據(jù)獲取模塊,用于獲取一道32位數(shù)據(jù)體的數(shù)據(jù);
[0026] 統(tǒng)計(jì)模塊,用于統(tǒng)計(jì)該道的所有數(shù)據(jù),得到最大值和最小值;
[0027] 壓縮變換模塊,用于在所述最大值與所述最小值不相等的情況下,采用極差變換 公式對(duì)該道的所有數(shù)據(jù)進(jìn)行從32位數(shù)據(jù)體到8位數(shù)據(jù)體的壓縮變換;
[0028] 數(shù)據(jù)賦值模塊,用于在所述最大值與所述最小值相等的情況下,將該道的所有數(shù) 據(jù)賦值為〇 ;
[0029] 存儲(chǔ)模塊,用于將數(shù)據(jù)轉(zhuǎn)換后的結(jié)果以道為單位進(jìn)行存儲(chǔ),且將所述最大值和所 述最小值記錄在該道的道頭數(shù)據(jù)的預(yù)定字段中。
[0030] 在一個(gè)實(shí)施方式中,所述極差變換公式為:
[0032] 其中,Anin表示所述最小值,A _表示所述最大值,A表示變換前的32位數(shù)據(jù)體的 數(shù)據(jù)值,round表示四舍五入法取整函數(shù),A'表示變換后的8位數(shù)據(jù)體的數(shù)據(jù)值。
[0033] 本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)讀取裝置,以達(dá)到在保證數(shù)據(jù)精度的情況下減少 存儲(chǔ)空間的目的,該裝置包括:
[0034] 確定模塊,用于確定待讀取的8位數(shù)據(jù)體的數(shù)據(jù)道的道位置;
[0035] 讀取模塊,用于從該數(shù)據(jù)道的道頭數(shù)據(jù)的預(yù)定字段中讀取該道原始32位數(shù)據(jù)體 的數(shù)據(jù)的最大值和最小值;
[0036] 數(shù)據(jù)還原模塊,用于在所述最大值與所述最小值不相等的情況下,采用極差變換 還原公式對(duì)該道的所有數(shù)據(jù)進(jìn)行從8位數(shù)據(jù)體到32位數(shù)據(jù)體的數(shù)據(jù)還原,將還原后的結(jié)果 作為該道的數(shù)據(jù)值;
[0037] 取值模塊,用于在所述最大值與所述最小值相等的情況下,將所述最大值作為該 道的所有數(shù)據(jù)的取值。
[0038] 在一個(gè)實(shí)施方式中,所述極差變換還原公式為:
[0040] 其中,Anil^示所述最小值,A_表示所述最大值,A'表示還原前的8位數(shù)據(jù)體的 數(shù)據(jù)值,A"表示還原后的32位數(shù)據(jù)體的數(shù)據(jù)值。
[0041] 在本發(fā)明實(shí)施例中,提出了一種數(shù)據(jù)存取方法,通過(guò)極差變換公式進(jìn)行32位數(shù)據(jù) 體到8位數(shù)據(jù)體的壓縮變換,并將數(shù)據(jù)道的最大值和最小值信息存儲(chǔ)在道頭數(shù)據(jù)的預(yù)定字 段中,然后在進(jìn)行數(shù)據(jù)讀取時(shí),將8位數(shù)據(jù)體轉(zhuǎn)換至32位數(shù)據(jù)體進(jìn)行數(shù)據(jù)讀取,從而解決了 現(xiàn)有技術(shù)中無(wú)法同時(shí)保證數(shù)據(jù)精度和減少存儲(chǔ)空間的技術(shù)問(wèn)題,達(dá)到了在保證數(shù)據(jù)精度的 同時(shí)有效減少存儲(chǔ)空間,進(jìn)一步的,相對(duì)于現(xiàn)有的32位到8位的數(shù)據(jù)轉(zhuǎn)換方法,有更好的數(shù) 據(jù)適應(yīng)性,能夠恢復(fù)樣點(diǎn)原本32位數(shù)值的量級(jí),如果有量綱還可以恢復(fù)樣點(diǎn)原本32位數(shù)值 的量綱,且最終得到的數(shù)據(jù)精度有很大的提高。
【附圖說(shuō)明】
[0042] 此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,并不 構(gòu)成對(duì)本發(fā)明的限定。在附圖中:
[0043] 圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)和讀取方法的方法流程圖;
[0044] 圖2是根據(jù)本發(fā)明是實(shí)施例的數(shù)據(jù)存取方法與現(xiàn)有的數(shù)據(jù)存取方法的數(shù)據(jù)精度 比較示意圖;
[0045] 圖3是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存取系統(tǒng)的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0046] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合實(shí)施方式和附圖,對(duì) 本發(fā)明做進(jìn)一步詳細(xì)說(shuō)明。在此,本發(fā)明的示意性實(shí)施方式及其說(shuō)明用于解釋本發(fā)明,但并 不作為對(duì)本發(fā)明的限定。
[0047] 發(fā)明人考慮到,目前地震處理、解釋算法輸入輸出的通常都是32位單精度浮點(diǎn)數(shù) 據(jù),因此,可以將輸出的32位浮點(diǎn)型數(shù)據(jù)體先轉(zhuǎn)換為8位整型數(shù)據(jù)體,然后再進(jìn)行存儲(chǔ),在 需要讀取的時(shí)候,先將8位整型數(shù)據(jù)體轉(zhuǎn)換為32位浮點(diǎn)型數(shù)據(jù)體再讀取。
[0048] 目前有一種數(shù)據(jù)轉(zhuǎn)換方式,主要是采用如下的線性比例變換公式進(jìn)行轉(zhuǎn)換:
[0050] 其中,A表示變換前的32位浮點(diǎn)型數(shù)據(jù)體的數(shù)據(jù)值,A'表示變換后的8位整型數(shù) 據(jù)體的數(shù)據(jù)值,round表示四舍五入法取整函數(shù),|A|_表示數(shù)據(jù)體中所有數(shù)據(jù)統(tǒng)計(jì)得到的 最大絕對(duì)值。
[0051] 通過(guò)這種方式的優(yōu)點(diǎn)是保持了原始數(shù)據(jù)的線性比例關(guān)系,即對(duì)原始數(shù)據(jù)進(jìn)行了等 比例的壓縮或拉伸,對(duì)于無(wú)量綱數(shù)據(jù)可在讀出后可直接使用,但缺點(diǎn)是,在某些情況下得到 的8位數(shù)據(jù)分辨率較低,只有在數(shù)據(jù)體的最大、最小值正負(fù)對(duì)稱時(shí),轉(zhuǎn)換后的8位數(shù)據(jù)才能 充滿[-127,127]的空間,否則8位數(shù)據(jù)只能占據(jù)[-127,127]區(qū)間的一部分,不能充分利用 8位數(shù)據(jù)所能表示的最多255個(gè)值。例如:當(dāng)某個(gè)數(shù)據(jù)體數(shù)值分布在[0. 997,1. 003]區(qū)間 時(shí),采用上述公式變換后所有數(shù)值都變換成了 127,這顯然是有問(wèn)題的。
[0052] 而且,在對(duì)地震數(shù)據(jù)進(jìn)行處理過(guò)程中,一般都是邊計(jì)算邊輸出的,按照上述方式需 要統(tǒng)計(jì)全體結(jié)果數(shù)據(jù)的最大絕對(duì)值,在整個(gè)數(shù)據(jù)體計(jì)算完之前,這個(gè)