本申請涉及數據處理技術領域,特別涉及一種疊后地震數據的處理方法及裝置。
背景技術:
在地質勘探技術領域,往往可以通過測井或者地震波的方式獲取與地層相關的多種地震數據。在這些地震數據中,對疊后地震數據進行分析往往能夠縮短生產運營周期,從而能夠節省地質勘探的開支。
目前,通常利用以單機為代表的中小型地球物理軟件來對疊后地震數據進行分析。這些中小型地球物理軟件來分析疊后地震數據時,往往是先讀取一部分地震數據,然后再利用軟件中集成的算法對讀取的這一部分地震數據進行處理。處理完成之后再讀取另一部分的地震數據,這樣反復地進行分析。
在實施本申請的過程中,發明人發現現有技術至少存在如下問題:
現有的這種先讀取地震數據,然后再對讀取的地震數據進行處理的方法,在實際處理過程中效率十分低。尤其是當地震數據量特別大的時候,僅僅分析一塊地區的疊后地震數據就需要花費相當長的時間,導致地質勘探的進度延后。
應該注意,上面對技術背景的介紹只是為了方便對本申請的技術方案進行清楚、完整的說明,并方便本領域技術人員的理解而闡述的。不能僅僅因為這些方案在本申請的背景技術部分進行了闡述而認為上述技術方案為本領域技術人員所公知。
技術實現要素:
本申請實施方式的目的在于提供一種疊后地震數據的處理方法及裝置,能夠減少數據處理所需的時間,從而提高數據處理的效率。
為實現上述目的,本申請一方面提供一種疊后地震數據的處理方法,所述方法包括:獲取待處理的疊后地震數據,所述疊后地震數據中包括預設數量的地震道數據;從所述疊后地震數據中讀取第一地震道的地震數據;在讀取完所述第一地震道的地震數據之后,按照預設算法對所述第一地震道的地震數據進行處理;在處理所述第一地震道的地震數據的同時,從所述疊后地震數據中讀取第二地震道的地震數據;判斷所述第二地震道是否與預設地震道相匹配,若不匹配,在處理完所述第一地震道的地震數據并且讀取完所述第二地震道的地震數據之后,按照所述預設算法對所述第二地震道的地震數據進行處理;在處理所述第二地震道的地震數據的同時,從所述疊后地震數據中讀取第三地震道的地震數據。
進一步地,所述方法還包括:若所述第二地震道與所述預設地震道相匹配,在處理完所述第一地震道的地震數據并且讀取完所述第二地震道的地震數據之后,按照所述預設算法對所述第二地震道的地震數據進行處理;在處理完所述第二地震道的地震數據后,停止處理所述疊后地震數據。
進一步地,從所述疊后地震數據中讀取第一地震道的地震數據包括:將最小的地震道編號所對應的地震道作為第一地震道;讀取所述疊后地震數據中所述第一地震道的地震數據作為所述第一地震道的地震數據。
進一步地,從所述疊后地震數據中讀取第二地震道的地震數據具體包括:從除所述第一地震道的地震數據之外的疊后地震數據中讀取與最小地震道編號相關聯的地震道數據,并將讀取的地震道數據作為所述第二地震道的地震數據。
進一步地,從所述疊后地震數據中讀取第一地震道的地震數據包括:將數據量最小的地震道作為第一地震道;讀取所述疊后地震數據中所述第一地震道的地震數據作為所述第一地震道的地震數據。
進一步地,從所述疊后地震數據中讀取第二地震道的地震數據具體包括:從除所述第一地震道的地震數據之外的疊后地震數據中讀取與最小數據量相關聯的地震道數據,并將讀取的地震道數據作為所述第二地震道的地震數據。
進一步地,在并行的兩個線程中分別對所述第一地震道的地震數據進行處理和從所述疊后地震數據中讀取第二地震道的地震數據;所述并行的兩個線程通過下述步驟確定:獲取預設的至少兩個線程中每個線程對應的負載系數;將負載系數最小的兩個線程確定為所述并行的兩個線程。
為實現上述目的,本申請另一方面提供一種疊后地震數據的處理裝置,所述裝置包括:疊后地震數據獲取單元,用于獲取待處理的疊后地震數據,所述疊后地震數據中包括預設數量的地震道數據;第一地震道數據讀取單元,用于從所述疊后地震數據中讀取第一地震道的地震數據;第一并行處理單元,用于在讀取完所述第一地震道的地震數據之后,按照預設算法對所述第一地震道的地震數據進行處理;在處理所述第一地震道的地震數據的同時,從所述疊后地震數據中讀取第二地震道的地震數據;第二并行處理單元,用于判斷所述第二地震道是否與預設地震道相匹配,若不匹配,在處理完所述第一地震道的地震數據并且讀取完所述第二地震道的地震數據之后,按照所述預設算法對所述第二地震道的地震數據進行處理;在處理所述第二地震道的地震數據的同時,從所述疊后地震數據中讀取第三地震道的地震數據。
進一步地,所述裝置還包括:獨立處理單元,用于若所述第二地震道與所述預設地震道相匹配,在處理完所述第一地震道的地震數據并且讀取完所述第二地震道的地震數據之后,按照所述預設算法對所述第二地震道的地震數據進行處理;停止處理單元,用于在處理完所述第二地震道的地震數據后,停止處理所述疊后地震數據。
進一步地,所述裝置包括并行的兩個線程,所述并行的兩個線程用于分別對所述第一地震道的地震數據進行處理和從所述疊后地震數據中讀取第二地震道的地震數據;所述并行的兩個線程通過下述單元確定:線程負載獲取單元,用于獲取預設的至少兩個線程中每個線程對應的負載系數;線程確定單元,用于將負載系數最小的兩個線程確定為所述并行的兩個線程。
由以上本申請實施方式提供的技術方案可見,本申請在讀取第一地震道的地震數據之后,在處理第一地震道的地震數據的同時開始讀取第二地震道的地震數據,這樣便可以節省第二地震道的地震數據的讀取時間。如果第二地震道的地震數據不是最后一個需要處理的地震數據,那么可以在后續處理第二地震道的地震數據的同時,繼續讀取第三地震道的地震數據。這樣便可以在對上一個地震數據進行讀取的同時來讀取當前需要處理的地震數據。通過這種并行處理的方式,能夠明顯地減少整個疊后地震數據處理的時間,從而能夠提高疊后地震數據分析的效率。
參照后文的說明和附圖,詳細公開了本申請的特定實施方式,指明了本申請的原理可以被采用的方式。應該理解,本申請的實施方式在范圍上并不因而受到限制。在所附權利要求的精神和條款的范圍內,本申請的實施方式包括許多改變、修改和等同。
針對一種實施方式描述和/或示出的特征可以以相同或類似的方式在一個或更多個其它實施方式中使用,與其它實施方式中的特征相組合,或替代其它實施方式中的特征。
應該強調,術語“包括/包含”在本文使用時指特征、整件、步驟或組件的存在,但并不排除一個或更多個其它特征、整件、步驟或組件的存在或附加。
附圖說明
所包括的附圖用來提供對本申請實施方式的進一步的理解,其構成了說明書的一部分,用于例示本申請的實施方式,并與文字描述一起來闡釋本申請的原理。顯而易見地,下面描述中的附圖僅僅是本申請的一些實施方式,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。在附圖中:
圖1為本申請實施方式提供的一種疊后地震數據的處理方法流程圖;
圖2為現有技術中進行數據處理和數據讀取的流程圖;
圖3為本申請技術方案中進行數據處理和數據讀取的流程圖;
圖4為本申請實施方式提供的一種疊后地震數據的處理裝置的功能模塊圖。
具體實施方式
為了使本技術領域的人員更好地理解本申請中的技術方案,下面將結合本申請實施方式中的附圖,對本申請實施方式中的技術方案進行清楚、完整地描述,顯然,所描述的實施方式僅僅是本申請一部分實施方式,而不是全部的實施方式。基于本申請中的實施方式,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其它實施方式,都應當屬于本申請保護的范圍。
圖1為本申請實施方式提供的一種疊后地震數據的處理方法流程圖。雖然下文描述流程包括以特定順序出現的多個操作,但是應該清楚了解,這些過程可以包括更多或更少的操作,這些操作可以順序執行或并行執行(例如使用并行處理器或多線程環境)。如圖1所示,所述方法可以包括以下步驟。
步驟S1:獲取待處理的疊后地震數據,所述疊后地震數據中包括預設數量的地震道的地震數據。
在本實施方式中,可以在待測工區內布置地震觀測系統。所述地震觀測系統中可以包括預設數量的激發點和檢波點。在所述激發點上可以設置震源,所述震源例如可以為炸藥包。通過引爆炸藥包,從而可以產生地震波,該地震波在所述待測工區的地層進行傳輸后可以通過折射或者反射的方式由位于地面上的檢波點處的檢波器接收。這樣,便可以獲取所述待測工區的地震數據。
當地下介質的產狀不是水平時,反射地震波的同相軸會發生偏移,從而接收到的地震數據不能反映該處地下介質的真實產狀。在這種情況下,就要求在地震數據處理時進行偏移歸位。在對地震數據進行疊加之后進行偏移歸位后得到的地震數據就可以是疊后地震數據。
在本實施方式中,所述疊后地震數據中可以包括預設數量的地震道數據,每個地震道數據均可以由對應的地震道產生。這樣,在對所述疊后地震數據進行處理時,可以依次對各個地震道數據進行處理。
在本實施方式中,處理所述疊后地震數據的主體可以是具備數據存儲和計算功能的計算機。所述疊后地震數據可以按照預設路徑存儲于預設存儲空間中,所述計算機可以按照所述預設路徑,從所述預設空間中將所述疊后地震數據加載至本地,從而可以對所述疊后地震數據進行處理。
步驟S2:從所述疊后地震數據中讀取第一地震道的地震數據。
在本實施方式中,在處理所述疊后地震數據時,可以對所述預設數量的地震道數據逐個進行處理。具體地,首先可以從所述疊后地震數據中讀取第一地震道的地震數據。在實際應用場景中,所述第一地震道的地震數據可以是隨機讀取的,也可以是按照一定規律進行讀取的。在本申請一個實施方式中,所述預設數量的地震道數據中的每個地震道數據均可以與地震道編號相關聯。例如,當前共計有100個地震道的數據,這100個地震道的數據可以按照從1至100的順序進行編號。那么在從所述疊后地震數據中讀取各個地震道的數據時,可以按照地震道編號從小到大的順序依次讀取。這樣,可以從所述疊后地震數據中讀取與最小地震道編號相關聯的地震道數據,并將讀取的地震道數據作為所述第一地震道的地震數據。
在本申請另一個實施方式中,所述疊后地震數據中各個地震道的數據還可以與數據量相關聯。在所述疊后地震數據中,各個地震道的數據可以按照數據量從小到大的順序進行排列。這樣,可以從所述疊后地震數據中讀取與最小數據量相關聯的地震道數據,并將讀取的地震道數據作為所述第一地震道的地震數據。
步驟S3:在讀取完所述第一地震道的地震數據之后,按照預設算法對所述第一地震道的地震數據進行處理;在處理所述第一地震道的地震數據的同時,從所述疊后地震數據中讀取第二地震道的地震數據。
在本實施方式中,為了能夠節省對疊后地震數據進行處理的時間,可以將讀取地震道數據的流程和處理地震道數據的流程同時進行。具體地,在讀取完所述第一地震道的地震數據之后,可以按照預設算法對所述第一地震道的地震數據進行處理。所述預設算法可以是本領域常用的對疊后地震數據進行處理的算法,例如疊后地震反演算法、疊后數據抽取算法等。在本實施方式中,可以將多種現有的算法以及數據處理技術進行在處理疊后地震數據的單元中,所述數據處理技術例如可以是MapReduce,OpenMP,CUDA等技術。
在處理所述第一地震道的地震數據的同時,可以從所述疊后地震數據中讀取第二地震道的地震數據。這樣從而使得數據處理和數據讀取能夠同時進行。具體地,讀取所述第二地震道的地震數據的方式與讀取所述第一地震道的地震數據的方式類似。當所述疊后地震數據中各個地震道的數據是與地震道編號相關聯時,可以從除所述第一地震道的地震數據之外的疊后地震數據中讀取與最小地震道編號相關聯的地震道數據,并將讀取的地震道數據作為所述第二地震道的地震數據。這樣,從所述疊后地震道數據中讀取的第一地震道的地震數據和第二地震道的地震數據就是相鄰的兩個地震道數據。
當所述疊后地震數據中各個地震道的數據是與數據量相關聯時,可以從除所述第一地震道的地震數據之外的疊后地震數據中讀取與最小數據量相關聯的地震道數據,并將讀取的地震道數據作為所述第二地震道的地震數據。這樣處理的好處在于,對第一地震道的地震數據進行處理所需的時長往往與第一地震道的地震數據的數據量的大小成正比,而讀取第二地震道的地震數據所需的時長往往也與第二地震道的地震數據的數據量的大小成正比。這樣,通過本實施方式的數據讀取方式,第一地震道的地震數據和第二地震道的地震數據的數據量是比較接近的,從而可以使得處理第一地震道的地震數據的時間與讀取第二地震道的地震數據的時間相當。這樣可以保證處理第一地震道的地震數據和讀取第二地震道的地震數據的這兩個流程能夠同時完成,從而避免其中一個完成之后需要等待另一個完成才能進行下一步操作,這樣能夠提高數據處理的效率。
步驟S4:判斷所述第二地震道是否與預設地震道相匹配,若不匹配,在處理完所述第一地震道的地震數據并且讀取完所述第二地震道的地震數據之后,按照所述預設算法對所述第二地震道的地震數據進行處理;在處理所述第二地震道的地震數據的同時,從所述疊后地震數據中讀取第三地震道的地震數據。
在本實施方式中,在讀取完所述第二地震道的地震數據之后,可以判斷所述第二地震道的地震數據是否是最后需要處理的地震道數據。在本實施方式中,可以將最后需要處理的地震道數據對應的地震道作為預設地震道。這樣,通過判斷所述第二地震道是否與預設地震道相匹配便可以確定所述第二地震道的地震數據是否是最后需要處理的地震道數據。
在本實施方式中,判斷所述第二地震道是否與預設地震道相匹配可以是判斷所述第二地震道的地震道編號是否與所述預設地震道的地震道編號相一致。當所述第二地震道與預設地震道不相匹配時,說明后續還需要繼續處理其它的地震道數據。這樣,在處理完所述第一地震道的地震數據并且讀取完所述第二地震道的地震數據之后,可以同時進行處理第二地震道的地震數據以及讀取第三地震道的地震數據的流程。與步驟S3中的描述類似,讀取的第三地震道的地震數據可以是除第一地震道和第二地震道之外的地震道編號最小的地震道數據,或者是除第一地震道和第二地震道之外的數據量最小的地震道數據。
在本實施方式中,當所述第二地震道與預設地震道相匹配時,則說明所述第二地震道的地震數據就是最終需要處理的地震道數據,因此,在處理完所述第一地震道的地震數據并且讀取完所述第二地震道的地震數據之后,可以按照所述預設算法對所述第二地震道的地震數據進行處理。在處理第二地震道的地震數據的同時不進行其它數據的讀取流程。在處理完所述第二地震道的地震數據后,便可以停止處理所述疊后地震數據。
在本申請一個實施方式中,對所述第一地震道的地震數據進行處理以及從所述疊后地震數據中讀取第二地震道的地震數據的這兩個流程可以在并行的兩個線程中分別進行。在本實施方式中,可以存在多個線程,那么可以根據各個線程的負載情況,從這多個線程中篩選出兩個線程來進行數據處理和數據讀取的步驟。具體地,可以獲取預設的至少兩個線程中每個線程對應的負載系數。所述負載系數可以是線程當前的使用率。在本實施方式中,為了能夠充分利用每個線程,可以將負載系數最小的兩個線程確定為所述并行的兩個線程。這樣,可以避免負載系數較小的線程被一直閑置,造成資源浪費。選擇負載系數最小的兩個線程也能夠提高數據處理和數據讀取的速度,從而提高整個疊后地震數據的處理效率。
請參閱圖2和圖3,圖2為現有技術中進行數據處理和數據讀取的流程圖。圖3為本申請技術方案中進行數據處理和數據讀取的流程圖。圖中的D表示數據讀取的時間,C表示數據處理的時間。那么在現有技術中處理完整個數據所需的時間可以為3×(D+C),而本申請處理完整個數據所需的時間可以為D+C+2Max{D,C}。由于Max{D,C}必然小于(D+C),從而可以證明本申請能夠有效地提升疊后地震數據處理的效率。在實際應用過程中,采用本申請的數據處理方法,與原有的單線程算法相比,數據處理效率能夠提高10倍左右。
請參閱圖4,本申請還提供一種疊后地震數據的處理裝置。如圖4所示,所述裝置可以包括:
疊后地震數據獲取單元100,用于獲取待處理的疊后地震數據,所述疊后地震數據中包括預設數量的地震道數據;
第一地震道數據讀取單元200,用于從所述疊后地震數據中讀取第一地震道的地震數據;
第一并行處理單元300,用于在讀取完所述第一地震道的地震數據之后,按照預設算法對所述第一地震道的地震數據進行處理;在處理所述第一地震道的地震數據的同時,從所述疊后地震數據中讀取第二地震道的地震數據;
第二并行處理單元400,用于判斷所述第二地震道是否與預設地震道相匹配,若不匹配,在處理完所述第一地震道的地震數據并且讀取完所述第二地震道的地震數據之后,按照所述預設算法對所述第二地震道的地震數據進行處理;在處理所述第二地震道的地震數據的同時,從所述疊后地震數據中讀取第三地震道的地震數據。
在本申請一個優選實施方式中,所述裝置還包括:
獨立處理單元500,用于若所述第二地震道與所述預設地震道相匹配,在處理完所述第一地震道的地震數據并且讀取完所述第二地震道的地震數據之后,按照所述預設算法對所述第二地震道的地震數據進行處理;
停止處理單元600,用于在處理完所述第二地震道的地震數據后,停止處理所述疊后地震數據。
在本申請一個優選實施方式中,所述裝置包括并行的兩個線程,所述并行的兩個線程用于分別對所述第一地震道的地震數據進行處理和從所述疊后地震數據中讀取第二地震道的地震數據;所述并行的兩個線程通過下述單元確定:
線程負載獲取單元,用于獲取預設的至少兩個線程中每個線程對應的負載系數;
線程確定單元,用于將負載系數最小的兩個線程確定為所述并行的兩個線程。
需要說明的是,上述各個功能單元的具體實現方式與步驟S1至S4中的描述一致,這里便不再贅述。
由以上本申請實施方式提供的技術方案可見,本申請在讀取第一地震道的地震數據之后,在處理第一地震道的地震數據的同時開始讀取第二地震道的地震數據,這樣便可以節省第二地震道的地震數據的讀取時間。如果第二地震道的地震數據不是最后一個需要處理的地震數據,那么可以在后續處理第二地震道的地震數據的同時,繼續讀取第三地震道的地震數據。這樣便可以在對上一個地震數據進行讀取的同時來讀取當前需要處理的地震數據。通過這種并行處理的方式,能夠明顯地減少整個疊后地震數據處理的時間,從而能夠提高疊后地震數據分析的效率。
在本說明書中,諸如第一和第二這樣的形容詞僅可以用于將一個元素或動作與另一元素或動作進行區分,而不必要求或暗示任何實際的這種關系或順序。在環境允許的情況下,參照元素或部件或步驟(等)不應解釋為局限于僅元素、部件、或步驟中的一個,而可以是元素、部件、或步驟中的一個或多個等。
上面對本申請的各種實施方式的描述以描述的目的提供給本領域技術人員。其不旨在是窮舉的、或者不旨在將本發明限制于單個公開的實施方式。如上所述,本申請的各種替代和變化對于上述技術所屬領域技術人員而言將是顯而易見的。因此,雖然已經具體討論了一些另選的實施方式,但是其它實施方式將是顯而易見的,或者本領域技術人員相對容易得出。本申請旨在包括在此已經討論過的本發明的所有替代、修改、和變化,以及落在上述申請的精神和范圍內的其它實施方式。
在20世紀90年代,對于一個技術的改進可以很明顯地區分是硬件上的改進(例如,對二極管、晶體管、開關等電路結構的改進)還是軟件上的改進(對于方法流程的改進)。然而,隨著技術的發展,當今的很多方法流程的改進已經可以視為硬件電路結構的直接改進。設計人員幾乎都通過將改進的方法流程編程到硬件電路中來得到相應的硬件電路結構。因此,不能說一個方法流程的改進就不能用硬件實體模塊來實現。例如,可編程邏輯器件(Programmable Logic Device,PLD)(例如現場可編程門陣列(Field Programmable Gate Array,FPGA))就是這樣一種集成電路,其邏輯功能由用戶對器件編程來確定。由設計人員自行編程來把一個數字系統“集成”在一片PLD上,而不需要請芯片制造廠商來設計和制作專用的集成電路芯片2。而且,如今,取代手工地制作集成電路芯片,這種編程也多半改用“邏輯編譯器(logic compiler)”軟件來實現,它與程序開發撰寫時所用的軟件編譯器相類似,而要編譯之前的原始代碼也得用特定的編程語言來撰寫,此稱之為硬件描述語言(Hardware Description Language,HDL),而HDL也并非僅有一種,而是有許多種,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)與Verilog2。本領域技術人員也應該清楚,只需要將方法流程用上述幾種硬件描述語言稍作邏輯編程并編程到集成電路中,就可以很容易得到實現該邏輯方法流程的硬件電路。
本領域技術人員也知道,除了以純計算機可讀程序代碼方式實現本申請的裝置以外,完全可以通過將方法步驟進行邏輯編程來使得本申請的裝置以邏輯門、開關、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來實現相同功能。
通過以上的實施方式的描述可知,本領域的技術人員可以清楚地了解到本申請可借助軟件加必需的通用硬件平臺的方式來實現。基于這樣的理解,本申請的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品可以存儲在存儲介質中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本申請各個實施方式或者實施方式的某些部分所述的方法。
本說明書中的各個實施方式均采用遞進的方式描述,各個實施方式之間相同相似的部分互相參見即可,每個實施方式重點說明的都是與其他實施方式的不同之處。尤其,對于裝置實施方式而言,由于其基本相似于方法實施方式,所以描述的比較簡單,相關之處參見方法實施方式的部分說明即可。
本申請可用于眾多通用或專用的計算機系統環境或配置中。例如:個人計算機、服務器計算機、手持設備或便攜式設備、平板型設備、多處理器系統、基于微處理器的系統、置頂盒、可編程的消費電子設備、網絡PC、小型計算機、大型計算機、包括以上任何系統或設備的分布式計算環境等等。
本申請可以在由計算機執行的計算機可執行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、程序、對象、組件、數據結構等等。也可以在分布式計算環境中實踐本申請,在這些分布式計算環境中,由通過通信網絡而被連接的遠程處理設備來執行任務。在分布式計算環境中,程序模塊可以位于包括存儲設備在內的本地和遠程計算機存儲介質中。
雖然通過實施方式描繪了本申請,本領域普通技術人員知道,本申請有許多變形和變化而不脫離本申請的精神,希望所附的權利要求包括這些變形和變化而不脫離本申請的精神。