欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法與流程

文檔序號(hào):11917851閱讀:290來源:國(guó)知局
一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法與流程

本發(fā)明涉及成像衛(wèi)星任務(wù)預(yù)處理技術(shù)領(lǐng)域,特別是涉及一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法。



背景技術(shù):

成像衛(wèi)星任務(wù)規(guī)劃預(yù)處理問題來源于成像衛(wèi)星的工作流程。成像衛(wèi)星的工作流程可以簡(jiǎn)述如下:(1)接收用戶提出的觀測(cè)需求;(2)根據(jù)衛(wèi)星資源特性,對(duì)用戶的需求進(jìn)行預(yù)處理,得到標(biāo)準(zhǔn)的規(guī)劃輸入;(3)結(jié)合地面站和衛(wèi)星使用約束,依據(jù)特定的優(yōu)化算法,對(duì)輸入任務(wù)進(jìn)行規(guī)劃和調(diào)度,得到任務(wù)調(diào)度方案;(4)將生成的任務(wù)調(diào)度方案進(jìn)行計(jì)劃編排與指令生成,通過地面站將控制指令上注到衛(wèi)星,衛(wèi)星執(zhí)行指令進(jìn)行成像和數(shù)據(jù)回放,地面站接收成像數(shù)據(jù),數(shù)據(jù)處理后被反饋給用戶。

其中用戶提交的原始觀測(cè)需求往往不指定觀測(cè)資源,成像的時(shí)間窗口也不明確,而且很多復(fù)雜的用戶需求如區(qū)域目標(biāo)成像任務(wù)等是難以一次性完成觀測(cè)的,因此有必要對(duì)用戶原始的觀測(cè)需求進(jìn)行一些處理。一方面需要根據(jù)用戶觀測(cè)需求和衛(wèi)星的能力進(jìn)行匹配和篩選,確定需求的可選衛(wèi)星及其對(duì)應(yīng)的成像時(shí)間窗口;另一方面需要對(duì)復(fù)雜成像任務(wù)進(jìn)行分解,生成能夠一次性觀測(cè)的單一子任務(wù)。對(duì)于不同衛(wèi)星和不同用戶觀測(cè)需求,該問題有其特殊性。但是預(yù)處理的最終目的都是將用戶提出的規(guī)范化需求轉(zhuǎn)變?yōu)橹感l(wèi)星一次成像過程可以完成觀測(cè)的任務(wù),稱為元任務(wù)。元任務(wù)是衛(wèi)星可以執(zhí)行的最小成像任務(wù),它包含了具體的位置和時(shí)間信息,可以視為考慮了衛(wèi)星對(duì)地觀測(cè)幾何關(guān)系的條帶。

因此我們考慮成像衛(wèi)星任務(wù)預(yù)處理問題的共性問題,可以將其描述為:將用戶提出的規(guī)范化觀測(cè)需求根據(jù)衛(wèi)星能力處理成任務(wù)規(guī)劃模型可直接規(guī)劃調(diào)度的元任務(wù)(組)。用戶的規(guī)范化觀測(cè)需求的輸入要素主要包括目標(biāo)位置、條帶參數(shù)、成像時(shí)間段、成像模式、成像質(zhì)量(分辨率)、成像角度、成像太陽(yáng)高度角等;由于預(yù)處理要考慮衛(wèi)星的能力,因此除了用戶的需求以外,還需要 衛(wèi)星的相關(guān)參數(shù)。

成像衛(wèi)星任務(wù)規(guī)劃預(yù)處理的一般流程可描述為:(1)根據(jù)用戶觀測(cè)需求中的成像時(shí)間、成像模式、成像質(zhì)量、太陽(yáng)高度角和成像角度初步確定完成需求的可選資源,沒有合適資源的用戶需求,直接從需求集合中刪除。(2)將原始的用戶觀測(cè)需求分解為可一次性完成觀測(cè)的條帶。例如使用時(shí)姿向量對(duì)觀測(cè)目標(biāo)進(jìn)行分解,首先通過時(shí)間-姿態(tài)轉(zhuǎn)換模塊將目標(biāo)區(qū)域頂點(diǎn)坐標(biāo)轉(zhuǎn)換為時(shí)姿向量,然后進(jìn)入目標(biāo)分解與合成模塊,由全部時(shí)姿向量確定目標(biāo)的特征向量,基于時(shí)間-姿態(tài)的描述方法進(jìn)行條帶劃分和條帶裁剪,由用戶需求和衛(wèi)星能力約束進(jìn)行目標(biāo)靜態(tài)合成,再通過時(shí)間-姿態(tài)轉(zhuǎn)換模塊生成元任務(wù)的條帶坐標(biāo)信息(3)計(jì)算每個(gè)元任務(wù)條帶的時(shí)間窗口信息。計(jì)算條帶起點(diǎn)中心點(diǎn)的時(shí)間窗口,在根據(jù)成像時(shí)間段、地影區(qū)等用戶需求進(jìn)行窗口的處理,得到經(jīng)過各個(gè)裁剪過程后生成元任務(wù)的時(shí)間窗口信息。

經(jīng)過預(yù)處理的一般過程后,那些沒有合適觀測(cè)資源的觀測(cè)需求直接被刪除了,復(fù)雜的觀測(cè)需求被分解成了可調(diào)度的元任務(wù),時(shí)間窗口不能滿足用戶要求的元任務(wù)也被刪除了,從而使得原問題得到了一定程度的簡(jiǎn)化,求解時(shí)消減了不必要的搜索空間。同時(shí),所有觀測(cè)序曲被抽象成了統(tǒng)一的形式,能夠用一個(gè)統(tǒng)一的數(shù)據(jù)格式來表示與觀測(cè)需求和資源相關(guān)的屬性和約束,從而為建模過程提供了直接的數(shù)據(jù)輸入。

當(dāng)衛(wèi)星數(shù)量較少時(shí),預(yù)處理的計(jì)算模塊相對(duì)比較清晰。然而隨著衛(wèi)星數(shù)量的增加,衛(wèi)星的管控方管控的衛(wèi)星數(shù)量不再是一兩顆,而是幾十顆甚至上百顆,與之相對(duì)應(yīng)的是用戶提交的成像需求數(shù)量成倍增加。衛(wèi)星和任務(wù)的規(guī)模成倍的增加將會(huì)使得現(xiàn)有的預(yù)處理方法不再適用,主要體現(xiàn)在以下兩個(gè)方面:

(1)計(jì)算速度太慢:以衛(wèi)星對(duì)區(qū)域目標(biāo)的一般小條帶劃分這一預(yù)處理場(chǎng)景為例,1顆衛(wèi)星對(duì)100個(gè)任務(wù)的條帶劃分需要300秒,則100顆衛(wèi)星對(duì)100個(gè)任務(wù)的條帶劃分大約需要30000秒,即8.333小時(shí)。而任務(wù)規(guī)劃的周期一般為1天,因此面對(duì)這種大規(guī)模衛(wèi)星觀測(cè)任務(wù)的場(chǎng)景,現(xiàn)有的預(yù)處理方法在時(shí)間上不能滿足工程上的要求。

(2)計(jì)算邏輯雜亂:預(yù)處理方法中計(jì)算模塊具有邏輯上的依賴性,比如 計(jì)算衛(wèi)星出入地影的時(shí)間預(yù)報(bào)需要衛(wèi)星的軌道預(yù)報(bào)結(jié)果?,F(xiàn)有的預(yù)處理方法對(duì)單星或者衛(wèi)星數(shù)量較少的場(chǎng)景還能勝任。但當(dāng)衛(wèi)星數(shù)量較多時(shí),使用現(xiàn)有的預(yù)處理方法必然導(dǎo)致計(jì)算邏輯雜亂。

對(duì)于大規(guī)模衛(wèi)星觀測(cè)任務(wù)預(yù)處理問題,每顆衛(wèi)星或者每顆衛(wèi)星對(duì)單一任務(wù)的任務(wù)預(yù)處理之間是相互獨(dú)立的,可以通過分布式并行計(jì)算來將問題分解。通過上述方法,可以節(jié)約任務(wù)預(yù)處理的整體計(jì)算時(shí)間,大大提高計(jì)算效率,所以對(duì)大規(guī)模衛(wèi)星觀測(cè)任務(wù)預(yù)處理的分布式并行實(shí)現(xiàn)這一問題進(jìn)行研究是可行的。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的是提供一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法,可以節(jié)約任務(wù)預(yù)處理的整體計(jì)算時(shí)間,大大提高計(jì)算效率,對(duì)大規(guī)模衛(wèi)星觀測(cè)任務(wù)預(yù)處理的分布式并行實(shí)現(xiàn)這一問題進(jìn)行研究是可行的。

為實(shí)現(xiàn)上述目的,本發(fā)明提供了如下方案:

一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法,包括步驟:

A、軌道預(yù)報(bào)的并行化設(shè)計(jì),將大規(guī)模觀測(cè)任務(wù)分解若干個(gè)小任務(wù),每個(gè)小任務(wù)獨(dú)立完成;

B、軌道預(yù)報(bào)的并行化實(shí)現(xiàn)。

可選的,步驟A中,將大規(guī)模觀測(cè)任務(wù)分解若干個(gè)小任務(wù)是針對(duì)并行計(jì)算的思想設(shè)計(jì)一個(gè)全新的并行化算法來達(dá)到并行計(jì)算。

可選的,步驟A中,軌道預(yù)報(bào)的并行化設(shè)計(jì)包括步驟:

A1、獲取多顆衛(wèi)星軌道預(yù)報(bào)輸入;

A2、將所述輸入封裝在RDD中;

A3、將封裝后數(shù)據(jù)通過軌道預(yù)報(bào)程序輸出;

A4、所述輸出為寫入本地文件系統(tǒng)、寫入RDD、寫入Redis。

可選的,步驟A1包括:所述尾氣傳輸管連接所述集氣罩的一端處于整跟管路的最低位置,連接所述氧轉(zhuǎn)移效率測(cè)定儀的一端處于整跟管路的最高位置,防止冷凝水堵塞管道。

可選的,步驟A1包括:將一顆衛(wèi)星計(jì)算所需要的兩個(gè)文件數(shù)據(jù)放在一行,并添加一個(gè)參數(shù)標(biāo)識(shí)衛(wèi)星名稱,輸入數(shù)據(jù)之間以空格或者其他字符隔開,RDD 的每一行都表示一顆衛(wèi)星的軌道計(jì)算輸入。

可選的,步驟A2包括:RDD分區(qū)策略,所述RDD分區(qū)策略是計(jì)算多顆衛(wèi)星的軌道預(yù)報(bào),將幾顆衛(wèi)星的計(jì)算任務(wù)放在同一個(gè)分區(qū),外部程序能接受多個(gè)計(jì)算輸入,并在所述程序中依次執(zhí)行得到最終的計(jì)算結(jié)果。

可選的,步驟A3包括:每顆衛(wèi)星在每個(gè)計(jì)算時(shí)間段的軌道預(yù)報(bào)計(jì)算都會(huì)得到一個(gè)輸出結(jié)果,通過軌道標(biāo)識(shí)參數(shù)對(duì)輸出結(jié)果進(jìn)行區(qū)分,軌道預(yù)報(bào)輸出結(jié)果的存儲(chǔ)方式在外部程序的代碼中進(jìn)行指定,存儲(chǔ)方式有三種:

a)寫入本地文件系統(tǒng);

b)寫入RDD;

c)寫入Redis內(nèi)存。

可選的,步驟B包括:

B1、初始化Spark集群環(huán)境,配置集群參數(shù);

B2、從本地文件系統(tǒng)或者Redis中讀取輸入數(shù)據(jù)集生成RDD;

B3、通過pipe()方法將RDD中的元素傳遞給軌道預(yù)報(bào)這個(gè)外部程序;

B4、調(diào)用RDD的行動(dòng)操作觸發(fā)實(shí)際計(jì)算。

根據(jù)本發(fā)明提供的具體實(shí)施例,本發(fā)明公開了以下技術(shù)效果:

可以節(jié)約任務(wù)預(yù)處理的整體計(jì)算時(shí)間,大大提高計(jì)算效率,對(duì)大規(guī)模衛(wèi)星觀測(cè)任務(wù)預(yù)處理的分布式并行實(shí)現(xiàn)這一問題進(jìn)行研究是可行的。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明的一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法的流程圖;

圖1中101為軌道預(yù)報(bào)的并行化設(shè)計(jì),將大規(guī)模觀測(cè)任務(wù)分解若干個(gè)小任務(wù),每個(gè)小任務(wù)獨(dú)立完成;102為軌道預(yù)報(bào)的并行化實(shí)現(xiàn);

圖2為本發(fā)明的一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法的實(shí)施例的預(yù)處理過程圖;

圖3為本發(fā)明的一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法的實(shí)施例的計(jì)算需求之間的邏輯關(guān)系圖;

圖4為本發(fā)明的一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法的實(shí)施例的大規(guī)模衛(wèi)星觀測(cè)任務(wù)并行預(yù)處理框架圖;

圖5為本發(fā)明的一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法的實(shí)施例的基于Spark的軌道預(yù)報(bào)算法并行設(shè)計(jì)圖;

圖6為本發(fā)明的一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法的實(shí)施例的衛(wèi)星對(duì)目標(biāo)點(diǎn)可見時(shí)間窗口示意圖;

圖7為本發(fā)明的一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法的實(shí)施例的基于Spark的可見時(shí)間窗口并行計(jì)算設(shè)計(jì)圖;

圖8為本發(fā)明的一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法的實(shí)施例的基于Spark的可見時(shí)間窗口計(jì)算并行化實(shí)現(xiàn)流程圖;

圖9為本發(fā)明的一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法的實(shí)施例的區(qū)域目標(biāo)多條帶拼接成像示意圖;

圖10為本發(fā)明的一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法的實(shí)施例的基于Spark的元任務(wù)并行計(jì)算設(shè)計(jì)圖。

具體實(shí)施方式

下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

本發(fā)明的目的是提供基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法,可以節(jié)約任務(wù)預(yù)處理的整體計(jì)算時(shí)間,大大提高計(jì)算效率。

為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。

圖1為本發(fā)明的基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法的實(shí)施例的流程圖。如圖1所示,一種基于Spark的成像衛(wèi)星任務(wù)預(yù)處理并行化方法,包括步驟:101、軌道預(yù)報(bào)的并行化設(shè)計(jì),將大規(guī)模觀測(cè)任務(wù)分解若干個(gè)小任 務(wù),每個(gè)小任務(wù)可以獨(dú)立完成;

102、軌道預(yù)報(bào)的并行化實(shí)現(xiàn)。步驟101中,將大規(guī)模觀測(cè)任務(wù)分解若干個(gè)小任務(wù)是針對(duì)并行計(jì)算的思想設(shè)計(jì)一個(gè)全新的并行化算法來達(dá)到并行計(jì)算。

步驟101中,軌道預(yù)報(bào)的并行化設(shè)計(jì)包括步驟:

201、獲取多顆衛(wèi)星軌道預(yù)報(bào)輸入;

202、將所述輸入封裝在RDD中;

203、將封裝后數(shù)據(jù)通過軌道預(yù)報(bào)程序輸出;

204、所述輸出為寫入本地文件系統(tǒng)、寫入RDD、寫入Redis。

步驟201包括:將一顆衛(wèi)星計(jì)算所需要的兩個(gè)文件數(shù)據(jù)放在一行,并添加一個(gè)參數(shù)標(biāo)識(shí)衛(wèi)星名稱,輸入數(shù)據(jù)之間以空格或者其他字符隔開,RDD的每一行都表示一顆衛(wèi)星的軌道計(jì)算輸入。

步驟202包括:RDD分區(qū)策略,所述RDD分區(qū)策略是計(jì)算多顆衛(wèi)星的軌道預(yù)報(bào),將幾顆衛(wèi)星的計(jì)算任務(wù)放在同一個(gè)分區(qū),外部程序能接受多個(gè)計(jì)算輸入,并在所述程序中依次執(zhí)行得到最終的計(jì)算結(jié)果。

步驟204包括:每顆衛(wèi)星在每個(gè)計(jì)算時(shí)間段的軌道預(yù)報(bào)計(jì)算都會(huì)得到一個(gè)輸出結(jié)果,通過軌道標(biāo)識(shí)參數(shù)對(duì)輸出結(jié)果進(jìn)行區(qū)分,軌道預(yù)報(bào)輸出結(jié)果的存儲(chǔ)方式在外部程序的代碼中進(jìn)行指定,存儲(chǔ)方式有三種:

a)寫入本地文件系統(tǒng);

b)寫入RDD;

c)寫入Redis內(nèi)存。

步驟102包括:

B1、初始化Spark集群環(huán)境,配置集群參數(shù);

B2、從本地文件系統(tǒng)或者Redis中讀取輸入數(shù)據(jù)集生成RDD;

B3、通過pipe()方法將RDD中的元素傳遞給軌道預(yù)報(bào)這個(gè)外部程序;

B4、調(diào)用RDD的行動(dòng)操作觸發(fā)實(shí)際計(jì)算。。

本發(fā)明的有益效果是:對(duì)算法進(jìn)行并行化設(shè)計(jì)之后,將算法部署到Spark平臺(tái)上,算法的執(zhí)行過程由整個(gè)集群同時(shí)處理。雖然集群中的節(jié)點(diǎn)之間通信開銷需要消耗一些時(shí)間,但是這些必要的開銷相對(duì)于算法執(zhí)行的整個(gè)過程而言只占很小的部分。處理大量計(jì)算任務(wù)時(shí),集群下的并行化算法相比單機(jī)下的算法 優(yōu)勢(shì)相當(dāng)明顯。

實(shí)施例一

預(yù)處理過程本質(zhì)上就是一個(gè)計(jì)算元任務(wù)的過程,而在某些情景下,用戶只想要知道某顆衛(wèi)星對(duì)某個(gè)目標(biāo)的可見性情況,并不需要做到計(jì)算元任務(wù)這一環(huán)節(jié),甚至有的用戶只想知道某顆衛(wèi)星的軌道運(yùn)行情況?;谏鲜銮闆r,將預(yù)處理的概念進(jìn)行擴(kuò)展,將狹義的預(yù)處理過程,將用戶提出的可見性計(jì)算、軌道預(yù)報(bào)等需求也視為預(yù)處理概念的范疇,稱之為廣義的預(yù)處理過程。

如圖2所示,廣義的預(yù)處理過程主要包括衛(wèi)星信息的基本計(jì)算、衛(wèi)星對(duì)目標(biāo)的相關(guān)計(jì)算以及成像任務(wù)的元任務(wù)計(jì)算等內(nèi)容。衛(wèi)星信息的基本計(jì)算包括衛(wèi)星的軌道預(yù)報(bào)、地影預(yù)報(bào)、圈號(hào)計(jì)算。衛(wèi)星對(duì)目標(biāo)的相關(guān)計(jì)算主要是指衛(wèi)星對(duì)目標(biāo)的可見時(shí)間窗口計(jì)算,按照目標(biāo)以及衛(wèi)星機(jī)動(dòng)能力的差異,可分為對(duì)點(diǎn)目標(biāo)的可見時(shí)間窗口、對(duì)移動(dòng)目標(biāo)的時(shí)間窗口計(jì)算等。成像任務(wù)的元任務(wù)計(jì)算種類有很多,根據(jù)預(yù)處理過程的差異,算法之間略有差異。以小型敏捷衛(wèi)星對(duì)點(diǎn)目標(biāo)成像為例,一般小條帶劃分與立體成像的元任務(wù)計(jì)算不同,最后輸出的元任務(wù)信息也不同。

隨著衛(wèi)星技術(shù)的不斷發(fā)展,成像衛(wèi)星的數(shù)量和類型也越來越多,與之相對(duì)應(yīng)的是用戶需求也越來越多樣化。現(xiàn)有的預(yù)處理計(jì)算都是針對(duì)單星或者單星對(duì)單任務(wù)的場(chǎng)景,當(dāng)出現(xiàn)大量的用戶計(jì)算需求時(shí),現(xiàn)有方法只能通過在單臺(tái)機(jī)器上順序執(zhí)行,計(jì)算時(shí)間不能滿足工程需求,需要通過某種機(jī)制將這些計(jì)算需求同時(shí)進(jìn)行。因此將大規(guī)模衛(wèi)星觀測(cè)任務(wù)并行預(yù)處理問題描述為:針對(duì)多個(gè)用戶提出的大批量多類型的預(yù)處理計(jì)算需求,通過并行計(jì)算縮短計(jì)算時(shí)間,快速得到用戶需要的結(jié)果。該問題包括:

(1)計(jì)算需求種類多

廣義的預(yù)處理過程包含的計(jì)算模塊較多,有些計(jì)算模塊功能相似但算法細(xì)節(jié)不同,導(dǎo)致對(duì)計(jì)算需求的梳理較為麻煩。同時(shí)每個(gè)用戶可以提出多類計(jì)算需求,當(dāng)有多個(gè)用戶同時(shí)提出需求,如何對(duì)這些計(jì)算需求實(shí)時(shí)監(jiān)控,觀察其執(zhí)行情況也是一件比較復(fù)雜的事。

(2)計(jì)算需求之間有邏輯關(guān)系

在廣義的預(yù)處理過程中,計(jì)算需求之間存在邏輯上的關(guān)聯(lián)關(guān)系。圖3簡(jiǎn)要表明了這些計(jì)算需求之間的邏輯關(guān)系。對(duì)于多個(gè)用戶同時(shí)提出多類計(jì)算需求時(shí),如何梳理這些計(jì)算需求之間的邏輯關(guān)系得到執(zhí)行邏輯正確的計(jì)算流程也是一件值得研究的問題。

大規(guī)模衛(wèi)星觀測(cè)任務(wù)并行預(yù)處理框架

根據(jù)對(duì)大規(guī)模衛(wèi)星觀測(cè)任務(wù)并行預(yù)處理問題的描述與分析,以及Spark實(shí)現(xiàn)并行計(jì)算的特點(diǎn),構(gòu)建如圖4所示的大規(guī)模衛(wèi)星觀測(cè)任務(wù)并行預(yù)處理的框架。

該框架的功能和執(zhí)行流程如下:將多個(gè)用戶提出的多類計(jì)算需求進(jìn)行匯總分類,得到每一類計(jì)算需求的輸入并通過與之相對(duì)應(yīng)的并行算法實(shí)現(xiàn)并行計(jì)算。同時(shí)不同類型的計(jì)算需求也可以在Spark平臺(tái)上并行執(zhí)行,最后將輸出結(jié)果反饋給用戶。

上述框架描述了面向大規(guī)模觀測(cè)任務(wù)并行預(yù)處理的一般流程,該框架存在雙層并行機(jī)制。首先是針對(duì)每一類計(jì)算需求的多個(gè)輸入,設(shè)計(jì)與需求相對(duì)應(yīng)計(jì)算模塊的并行算法。同時(shí),對(duì)于上述含有多個(gè)輸入的并行計(jì)算模塊,可以將其封裝成Spark作業(yè)在Spark并發(fā)執(zhí)行。

軌道預(yù)報(bào)的并行化研究

軌道預(yù)報(bào)是預(yù)處理中最基本的計(jì)算模塊,其他計(jì)算模塊都需要使用軌道預(yù)報(bào)的計(jì)算結(jié)果。

成像衛(wèi)星一般是近地軌道,運(yùn)動(dòng)軌跡是一個(gè)橢圓曲線軌道。因此衛(wèi)星在空間軌道上的位置可以用開普勒軌道根數(shù),即半長(zhǎng)軸a、偏心率e、傾角i、升交點(diǎn)赤經(jīng)、近地點(diǎn)角和指定歷元的平近點(diǎn)角M這6個(gè)參數(shù)來描述。衛(wèi)星的運(yùn)動(dòng)也可以用衛(wèi)星在某一坐標(biāo)系下的位置速度描述,通常使用J2000地心慣性坐標(biāo)系(ECI)。地心慣性坐標(biāo)系以地心為原點(diǎn)O,OX軸指向春分點(diǎn)方向,OZ軸指向北極,根據(jù)右手定則確定OY軸,t時(shí)刻衛(wèi)星在該坐標(biāo)系下的位置速度表示為任意時(shí)刻的位置速度可以與軌道根數(shù)相互轉(zhuǎn)換。

衛(wèi)星的軌道根數(shù)和位置速度都是時(shí)間的函數(shù),可以通過動(dòng)力學(xué)模型高精度地預(yù)報(bào)出未來一段時(shí)間內(nèi)衛(wèi)星的位置,這個(gè)過程稱為星歷預(yù)報(bào)或者軌道預(yù)報(bào)。軌道預(yù)報(bào)的輸入通過文件形式,主要是衛(wèi)星瞬時(shí)軌道數(shù)據(jù)文件和計(jì)算時(shí)間段文件。瞬時(shí)軌道文件給定了某一時(shí)刻點(diǎn)以及該時(shí)刻對(duì)應(yīng)的衛(wèi)星瞬時(shí)軌道根數(shù),計(jì)算時(shí)間段文件給定了軌道預(yù)報(bào)的開始時(shí)間、結(jié)束時(shí)間以及輸出間隔時(shí)間。在軌道預(yù)報(bào)的所有輸出文件中,工程常用的是衛(wèi)星在J2000慣性系下位置速度文件,文件的每一行數(shù)據(jù)表示一個(gè)時(shí)刻點(diǎn)以及該時(shí)刻點(diǎn)對(duì)應(yīng)的位置速度。

對(duì)于軌道預(yù)報(bào),可以看出隨著衛(wèi)星數(shù)量的增加,單機(jī)上依次運(yùn)行算法的時(shí)間會(huì)近似線性增長(zhǎng),計(jì)算所需要的時(shí)間開銷大大增加,解決此問題需要將軌道預(yù)報(bào)算法并行化,通過并行化提高算法計(jì)算效率,提高算法的實(shí)用性。

軌道預(yù)報(bào)的并行化設(shè)計(jì)

并行化設(shè)計(jì)思想是將一個(gè)大的任務(wù)劃分為若干個(gè)小任務(wù),然后每個(gè)小任務(wù)可以獨(dú)立完成,這樣可以達(dá)到并行計(jì)算的效果。一般情況下,將一個(gè)任務(wù)劃分成若干個(gè)子任務(wù)來進(jìn)行并行計(jì)算有兩種方法:一種是針對(duì)并行計(jì)算的思想設(shè)計(jì)一個(gè)全新的并行化算法來達(dá)到并行計(jì)算,另一種方法是對(duì)于傳統(tǒng)的串行的算法進(jìn)行分析,找出算法中能并行化的部分并將其并行化。

對(duì)于多星軌道預(yù)報(bào)計(jì)算問題,采用后一種方法將算法并行化在理論上是一個(gè)可行的手段。考慮把每顆衛(wèi)星的軌道預(yù)報(bào)計(jì)算作為一個(gè)計(jì)算任務(wù),即以每顆衛(wèi)星的計(jì)算作為并行粒度,則多顆衛(wèi)星的軌道預(yù)報(bào)計(jì)算可以看出多個(gè)計(jì)算任務(wù),而且這些計(jì)算任務(wù)之間是相互獨(dú)立的,可以分配到集群上每個(gè)節(jié)點(diǎn)進(jìn)行計(jì)算。

在Spark中,當(dāng)通過對(duì)RDD的操作來表達(dá)計(jì)算意圖時(shí),這些計(jì)算就會(huì)自動(dòng)地在集群上并行進(jìn)行。同時(shí)Spark針對(duì)Scala、Java、Python都不能實(shí)現(xiàn)特定計(jì)算功能的情形,提供了一種通用機(jī)制,可以將數(shù)據(jù)通過管道傳給其他語(yǔ)言編寫的程序。Spark在RDD上提供pipe()方法,Spark的pipe()方法可以讓程序開發(fā)人員使用任意一種語(yǔ)言實(shí)現(xiàn)Spark作業(yè)的部分邏輯。通過pipe()可以將RDD中的各元素從標(biāo)準(zhǔn)輸入流中以字符串形式讀出,并對(duì)這些元素執(zhí)行任何你需要的操作,然后把結(jié)果以字符串的形式寫入標(biāo)準(zhǔn)輸出。

基于Spark實(shí)現(xiàn)并行計(jì)算的特點(diǎn),軌道預(yù)報(bào)并行算法的設(shè)計(jì)原理如圖5所示。在該并行模型中,將多顆衛(wèi)星軌道預(yù)報(bào)的輸入數(shù)據(jù)封裝在RDD中,同時(shí)把原有的軌道預(yù)報(bào)算法作為一個(gè)測(cè)試好的外部程序,RDD通過pipe()方法交給這個(gè)外部程序進(jìn)行處理即可實(shí)現(xiàn)多顆衛(wèi)星軌道預(yù)報(bào)的并行計(jì)算。下面分析如何將輸入數(shù)據(jù)表達(dá)成RDD,并討論RDD的分區(qū)策略以及軌道預(yù)報(bào)輸出結(jié)果的命名和存儲(chǔ)方式。

(1)輸入數(shù)據(jù)表達(dá)成RDD

每顆衛(wèi)星的軌道預(yù)報(bào)需要瞬時(shí)軌道數(shù)據(jù)文件和計(jì)算時(shí)間段文件。同時(shí)pipe()方法通過標(biāo)準(zhǔn)輸入流讀取RDD中的各元素,這就要求RDD的各元素之間以換行符作為分隔標(biāo)記。因此可以將一顆衛(wèi)星計(jì)算所需要的兩個(gè)文件數(shù)據(jù)放在一行,并添加一個(gè)參數(shù)標(biāo)識(shí)衛(wèi)星名稱,輸入數(shù)據(jù)之間以空格或者其他字符隔開。這樣RDD的每一行都表示一顆衛(wèi)星的軌道計(jì)算輸入。

(2)RDD的分區(qū)策略

Spark應(yīng)用在物理執(zhí)行期間,RDD會(huì)被分為一系列的分區(qū),每個(gè)分區(qū)都是整個(gè)數(shù)據(jù)的子集。當(dāng)Spark調(diào)度并運(yùn)行任務(wù)時(shí),Spark會(huì)為每個(gè)分區(qū)中的數(shù)據(jù)創(chuàng)建出一個(gè)任務(wù)。該任務(wù)在默認(rèn)情況下會(huì)需要集群中的一個(gè)計(jì)算核心來執(zhí)行。因此如果計(jì)算多顆衛(wèi)星的軌道預(yù)報(bào),可以將每顆衛(wèi)星的計(jì)算任務(wù)即RDD的每一行都當(dāng)成一個(gè)分區(qū),也可以將幾顆衛(wèi)星的計(jì)算任務(wù)放在同一個(gè)分區(qū)。后者需要外部程序能接受多個(gè)計(jì)算輸入,并在程序中依次執(zhí)行得到最終的計(jì)算結(jié)果。

(3)輸出結(jié)果的命名和存儲(chǔ)方式

每顆衛(wèi)星在每個(gè)計(jì)算時(shí)間段的軌道預(yù)報(bào)計(jì)算都會(huì)得到一個(gè)輸出結(jié)果,可以通過軌道標(biāo)識(shí)參數(shù)對(duì)輸出結(jié)果進(jìn)行區(qū)分,便于后續(xù)查詢。軌道標(biāo)識(shí)參數(shù)表明這是哪一顆衛(wèi)星在哪個(gè)時(shí)間段的計(jì)算結(jié)果,因此必須包含衛(wèi)星名稱和計(jì)算時(shí)間段信息。軌道預(yù)報(bào)輸出結(jié)果的存儲(chǔ)方式在外部程序的代碼中進(jìn)行指定。可選的存儲(chǔ)方式有以下三種:

寫入本地文件系統(tǒng):將結(jié)果寫入文件存儲(chǔ)在本地磁盤是最簡(jiǎn)單的存儲(chǔ)形式。但這種存儲(chǔ)方式不夠靈活,而且由于其他計(jì)算模塊的輸入需要使用軌道預(yù)報(bào)的計(jì)算結(jié)果,頻繁的讀取磁盤文件會(huì)帶來大量的I/O開銷。同時(shí)這種方式有 一個(gè)嚴(yán)重的缺陷:在集群上運(yùn)行時(shí),不同分區(qū)可能在不同節(jié)點(diǎn)上進(jìn)行計(jì)算,軌道的計(jì)算結(jié)果會(huì)分散在各個(gè)節(jié)點(diǎn)。因此當(dāng)在某個(gè)節(jié)點(diǎn)上執(zhí)行像可見時(shí)間窗口這種需要軌道數(shù)據(jù)的計(jì)算時(shí),會(huì)因?yàn)檐壍罃?shù)據(jù)缺失而出現(xiàn)錯(cuò)誤。

寫入RDD:由于pipe()方法是一個(gè)轉(zhuǎn)換操作,RDD的轉(zhuǎn)換操作會(huì)返回一個(gè)新的RDD,因此可以將結(jié)果存在RDD中。RDD操作方式比較靈活,既可以作為新的計(jì)算輸入也可以輸出到本地文件系統(tǒng)、HDFS文件系統(tǒng)以及內(nèi)存數(shù)據(jù)庫(kù)等位置。

寫入Redis內(nèi)存:Redis是一個(gè)開源的、高性能的、基于鍵值對(duì)的緩存與存儲(chǔ)系統(tǒng),它以字典結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)。字典變量是一種鍵值對(duì)形式的變量,例如dict[“key”]=“value”中dict是一個(gè)字典結(jié)構(gòu)變量,字符串“key”是鍵名,而“value”是鍵值。可以在外部程序中將軌道預(yù)報(bào)的輸出結(jié)果以字符串形式寫入“value”,并通過鍵名來訪問這些數(shù)據(jù)。

對(duì)算法進(jìn)行并行化設(shè)計(jì)之后,將算法部署到Spark平臺(tái)上,算法的執(zhí)行過程由整個(gè)集群同時(shí)處理。雖然集群中的節(jié)點(diǎn)之間通信開銷需要消耗一些時(shí)間,但是這些必要的開銷相對(duì)于算法執(zhí)行的整個(gè)過程而言只占很小的部分。處理大量計(jì)算任務(wù)時(shí),集群下的并行化算法相比單機(jī)下的算法優(yōu)勢(shì)相當(dāng)明顯。

軌道預(yù)報(bào)的并行化實(shí)現(xiàn)

在Spark平臺(tái)上軌道預(yù)報(bào)并行化實(shí)現(xiàn)的詳細(xì)步驟如下:

(1)初始化Spark集群環(huán)境,配置集群參數(shù);

(2)從本地文件系統(tǒng)或者Redis中讀取輸入數(shù)據(jù)集生成RDD;

(3)通過pipe()方法將RDD中的元素傳遞給軌道預(yù)報(bào)這個(gè)外部程序;

(4)調(diào)用RDD的行動(dòng)操作觸發(fā)實(shí)際計(jì)算。

下面給出Spark并行實(shí)現(xiàn)軌道預(yù)報(bào)的偽代碼。Step1實(shí)例化了一個(gè)SparkContext,SparkContext是Spark應(yīng)用程序的入口,應(yīng)用程序通過SparkContext提交到Spark集群中;Step2讀取程序輸入數(shù)據(jù),生成一個(gè)List類型的變量lines;Step3通過SparkContext的parallelize()方法將輸入數(shù)據(jù)表示成RDD類型的變量dataRDD,并設(shè)置了分區(qū)數(shù);Step4將輸入數(shù)據(jù)RDD的元 素通過pipe()方法交給外部程序進(jìn)行處理;Step5調(diào)用行動(dòng)操作collect()觸發(fā)實(shí)際計(jì)算。輸出文件的存儲(chǔ)形式由外部程序指定。如果要求將輸出數(shù)據(jù)寫入RDD,則outputRDD就是輸出RDD,這個(gè)新RDD的分區(qū)數(shù)與dataRDD的分區(qū)數(shù)相同。

輸入:數(shù)據(jù)的存放地址DataPath;軌道預(yù)報(bào)程序的存放地址CalPath;Spark的集群地址master;分區(qū)數(shù)PartitionNum。

Step1:sc=new SparkContext(master,″Cal-eph″)

Step2:lines=Source.fromFile(DataPath).getLines().toList

Step3:dataRDD=sc.parallelize(lines,PartitionNum)

Step4:pipeRDD=dataRDD.pipe(CalPath)

Step5:outputRDD=pipeRDD.collect()

可見時(shí)間窗口計(jì)算

衛(wèi)星繞地球飛行過程中,由于地球遮擋和衛(wèi)星機(jī)動(dòng)能力限制,衛(wèi)星對(duì)目標(biāo)不是時(shí)時(shí)可見的,而是在某個(gè)圈次某個(gè)弧段對(duì)目標(biāo)可見,將衛(wèi)星在其機(jī)動(dòng)能力限制范圍內(nèi)星上載荷對(duì)目標(biāo)點(diǎn)可見弧段所對(duì)應(yīng)的開始和結(jié)束時(shí)間范圍定義為可見時(shí)間窗口,如圖6所示。由于衛(wèi)星與地面目標(biāo)的任何直接信息交換活動(dòng)都必須在衛(wèi)星對(duì)該地面目標(biāo)的可見時(shí)間窗口中,因此計(jì)算衛(wèi)星對(duì)目標(biāo)的可見時(shí)間窗口非常重要。

可見時(shí)間窗口計(jì)算的步驟簡(jiǎn)述如下:

(1)判斷衛(wèi)星與目標(biāo)之間是否有遮擋:在t時(shí)刻建立衛(wèi)星和目標(biāo)兩點(diǎn)的連線,通過求連線與地球表面的交點(diǎn)判斷是否被地球遮擋;

(2)判斷衛(wèi)星對(duì)目標(biāo)指向姿態(tài)機(jī)動(dòng)角是否超出其能力范圍:衛(wèi)星對(duì)目標(biāo)的指向姿態(tài)通過側(cè)擺角、俯仰角、偏航角來表示,如果這三個(gè)角度都沒有超出衛(wèi)星的姿態(tài)機(jī)動(dòng)能力范圍,則說明該時(shí)刻衛(wèi)星對(duì)目標(biāo)可見。

一般來說,在上述可見時(shí)間窗口計(jì)算的基本原理的基礎(chǔ)上,可見時(shí)間窗口計(jì)算有多種變形類型。按照觀測(cè)目標(biāo)的差異可分為衛(wèi)星對(duì)點(diǎn)目標(biāo)的可見時(shí)間窗口計(jì)算和衛(wèi)星對(duì)區(qū)域目標(biāo)的可見時(shí)間窗口計(jì)算;按照衛(wèi)星機(jī)動(dòng)能力形式的差異 可以分為衛(wèi)星對(duì)目標(biāo)的矩形可見時(shí)間窗口和衛(wèi)星對(duì)目標(biāo)的錐形可見時(shí)間窗口。本文描述的可見時(shí)間窗口計(jì)算是最簡(jiǎn)單的一種方式即衛(wèi)星對(duì)點(diǎn)目標(biāo)的可見時(shí)間窗口計(jì)算。

衛(wèi)星對(duì)點(diǎn)目標(biāo)的可見時(shí)間窗口計(jì)算是指給定空間某一點(diǎn)的位置數(shù)據(jù)(經(jīng)緯高度)、衛(wèi)星的位置速度數(shù)據(jù)文件、時(shí)間范圍,衛(wèi)星在該時(shí)間范圍內(nèi),衛(wèi)星的姿態(tài)轉(zhuǎn)動(dòng)方式和能力,給出能力范圍內(nèi)可以指向該點(diǎn)的時(shí)間窗口,按指定粒度給出衛(wèi)星沿該空間點(diǎn)與該衛(wèi)星的連線的指向角度和角速度序列。輸入文件主要有三個(gè):計(jì)算時(shí)間段文件;衛(wèi)星J2000慣性系下位置速度數(shù)據(jù)文件;目標(biāo)的位置文件。計(jì)算時(shí)間段文件給定開始時(shí)間、結(jié)束時(shí)間以及輸出間隔時(shí)間。衛(wèi)星的位置速度數(shù)據(jù)文件就是軌道預(yù)報(bào)的結(jié)果,同時(shí)要求該文件的位置速度數(shù)據(jù)等間隔且時(shí)間段包含計(jì)算時(shí)間段。目標(biāo)的位置文件不僅給出目標(biāo)在大地坐標(biāo)系的經(jīng)度緯度高度表示,還給出了衛(wèi)星的姿態(tài)轉(zhuǎn)動(dòng)方式和姿態(tài)機(jī)動(dòng)能力即最大滾動(dòng)角、最大俯仰角和最大偏航角。輸出文件有兩個(gè):衛(wèi)星可見目標(biāo)的時(shí)間窗口文件和衛(wèi)星可見目標(biāo)的指向姿態(tài)角度和角速度序列文件。時(shí)間窗口文件的每一行表示衛(wèi)星在某個(gè)圈次對(duì)目標(biāo)的可見信息。指向文件給出了可見時(shí)間窗口內(nèi)每一時(shí)刻衛(wèi)星對(duì)目標(biāo)指向的角度和角速度。

與軌道預(yù)報(bào)相比,可見時(shí)間窗口計(jì)算需要讀取一個(gè)數(shù)據(jù)量較大的衛(wèi)星位置速度文件,因此I/O開銷較大。當(dāng)出現(xiàn)需要多顆衛(wèi)星計(jì)算多個(gè)點(diǎn)目標(biāo)可見時(shí)間窗口的問題時(shí),現(xiàn)有算法不再適用,下面介紹其并行化設(shè)計(jì)與實(shí)現(xiàn)。

可見時(shí)間窗口計(jì)算的并行化設(shè)計(jì)與實(shí)現(xiàn)

基于軌道預(yù)報(bào)并行化設(shè)計(jì)的思想,找到上述問題中能并行化的部分并將其并行化。由于同一顆衛(wèi)星對(duì)不同的點(diǎn)目標(biāo)計(jì)算是一個(gè)相互獨(dú)立的過程,不同的衛(wèi)星對(duì)同一個(gè)點(diǎn)目標(biāo)的計(jì)算也是一個(gè)相互獨(dú)立的過程,因此可以將每顆衛(wèi)星對(duì)每個(gè)點(diǎn)目標(biāo)的可見時(shí)間窗口計(jì)算當(dāng)成一個(gè)計(jì)算任務(wù),這些計(jì)算任務(wù)之間是相互獨(dú)立的,可以分配到集群上每個(gè)節(jié)點(diǎn)進(jìn)行計(jì)算。

可見時(shí)間窗口計(jì)算的并行化設(shè)計(jì)如圖7所示。將輸入數(shù)據(jù)封裝在RDD中,通過pipe()方法交給可見時(shí)間窗口計(jì)算這個(gè)外部程序進(jìn)行處理實(shí)現(xiàn)并行計(jì)算多顆衛(wèi)星對(duì)多個(gè)點(diǎn)目標(biāo)的可見時(shí)間窗口。但是由于衛(wèi)星的位置速度數(shù)據(jù)文件很 大,很難用RDD的一行表示表示一顆衛(wèi)星對(duì)一個(gè)點(diǎn)目標(biāo)的可見時(shí)間窗口計(jì)算輸入。為此提出了三種方法來解決如何將輸入數(shù)據(jù)表達(dá)成RDD。

(1)通過外部程序讀取衛(wèi)星的位置速度數(shù)據(jù):衛(wèi)星的位置速度數(shù)據(jù)是軌道預(yù)報(bào)的輸出結(jié)果。上一節(jié)提到軌道預(yù)報(bào)的輸出結(jié)果會(huì)以本地文件或者Redis內(nèi)存數(shù)據(jù)庫(kù)的方式進(jìn)行存儲(chǔ),因此可以在外部程序的代碼中讀取衛(wèi)星的位置速度數(shù)據(jù)。此時(shí)計(jì)算的輸入就變成了計(jì)算時(shí)間段文件和目標(biāo)的位置文件。將所需要的兩個(gè)文件數(shù)據(jù)放在一行,同時(shí)為了保證能正確讀取所需要的位置速度數(shù)據(jù),添加一個(gè)軌道標(biāo)識(shí)參數(shù),輸入數(shù)據(jù)之間以空格或者其他字符隔開。

(2)在外部程序中添加軌道預(yù)報(bào)計(jì)算模塊:讀取衛(wèi)星的位置速度數(shù)據(jù)會(huì)簡(jiǎn)化計(jì)算,但是同時(shí)會(huì)產(chǎn)生計(jì)算任務(wù)之間的依賴關(guān)系,使得計(jì)算邏輯變得復(fù)雜?;谏鲜隹紤],在外部程序的代碼中添加軌道預(yù)報(bào)計(jì)算模塊。軌道預(yù)報(bào)的計(jì)算需要輸入衛(wèi)星瞬時(shí)軌道數(shù)據(jù)文件和計(jì)算時(shí)間段文件,而軌道預(yù)報(bào)和可見時(shí)間窗口的計(jì)算時(shí)間段文件可以一致,只需要添加衛(wèi)星在計(jì)算時(shí)間段的開始時(shí)刻對(duì)應(yīng)的瞬時(shí)軌道根數(shù)即可。這種計(jì)算方式當(dāng)然也會(huì)產(chǎn)生一定的弊端,比如某一顆衛(wèi)星在同一時(shí)間段對(duì)幾個(gè)目標(biāo)點(diǎn)進(jìn)行可見時(shí)間窗口計(jì)算時(shí),每個(gè)目標(biāo)點(diǎn)都需要計(jì)算一次軌道預(yù)報(bào),而實(shí)際上只需要計(jì)算一次軌道預(yù)報(bào)。

(3)通過衛(wèi)星的位置速度數(shù)據(jù)文件與其它輸入文件創(chuàng)建pairRDD:pairRDD是鍵值對(duì)類型的RDD,它是Spark中常見的數(shù)據(jù)類型。將計(jì)算時(shí)間段文件和目標(biāo)的位置文件合并,提取這些字段作為pairRDD中的″key″值,衛(wèi)星的位置速度文件作為pairRDD中的″value″值。這種形式的輸入可以由用戶指定pairRDD的生成方式,便于軌道預(yù)報(bào)模塊和可見時(shí)間窗口計(jì)算模塊串連在一起。

對(duì)于前兩種形式的輸入RDD,支持將單個(gè)計(jì)算任務(wù)或者多個(gè)計(jì)算任務(wù)放在同一個(gè)分區(qū)中。而當(dāng)輸入為pairRDD時(shí),一個(gè)pairRDD只能表示一顆衛(wèi)星對(duì)一個(gè)點(diǎn)目標(biāo)的計(jì)算任務(wù)。可見時(shí)間窗口計(jì)算得到的輸出結(jié)果通過衛(wèi)星和目標(biāo)組成的標(biāo)識(shí)參數(shù)進(jìn)行區(qū)分,輸出的存儲(chǔ)方式主要是寫入本地文件系統(tǒng)。

可見時(shí)間窗口的并行化實(shí)現(xiàn)如圖8所示,與軌道預(yù)報(bào)的并行化實(shí)現(xiàn)原理相同。

元任務(wù)計(jì)算

元任務(wù)是衛(wèi)星可以執(zhí)行的最小成像任務(wù),可以將其看成衛(wèi)星能一次完成拍攝的條帶和該條帶時(shí)間窗口信息的組合,生成元任務(wù)的過程就是將用戶提出的規(guī)范化觀測(cè)需求根據(jù)衛(wèi)星能力處理成任務(wù)規(guī)劃模型可直接規(guī)劃調(diào)度的標(biāo)準(zhǔn)輸入。對(duì)于不同的任務(wù)規(guī)劃平臺(tái)、衛(wèi)星和用戶需求,計(jì)算元任務(wù)的過程不盡相同。下面以小型敏捷衛(wèi)星對(duì)區(qū)域目標(biāo)同軌多條帶拼接成像為例詳細(xì)描述。

圖9是小型敏捷衛(wèi)星對(duì)區(qū)域目標(biāo)同軌多條帶拼接成像示意圖。計(jì)算元任務(wù)的過程如下:

(1)判斷某一圈次衛(wèi)星對(duì)區(qū)域目標(biāo)是否完全可見。只有在衛(wèi)星對(duì)區(qū)域目標(biāo)的所有頂點(diǎn)均可見的圈次才可以進(jìn)行元任務(wù)的計(jì)算。

(2)在完全可見的圈次,對(duì)區(qū)域目標(biāo)進(jìn)行條帶劃分。對(duì)區(qū)域目標(biāo)的分解方法通過區(qū)域目標(biāo)的最早時(shí)刻、最晚時(shí)刻、最小側(cè)擺角和最大側(cè)擺角這四個(gè)特征點(diǎn)確定一個(gè)與星下線平行的外接矩形。最后根據(jù)衛(wèi)星的幅寬劃分條帶,并根據(jù)區(qū)域目標(biāo)邊界將條帶裁剪為合適的長(zhǎng)度。條帶劃分的結(jié)果得到條帶的四個(gè)頂點(diǎn)坐標(biāo)和起止中心點(diǎn)坐標(biāo)。

(3)計(jì)算元任務(wù)條帶對(duì)應(yīng)的時(shí)間信息。元任務(wù)條帶的時(shí)間信息包括衛(wèi)星對(duì)條帶起點(diǎn)中心點(diǎn)的可見時(shí)間窗口、衛(wèi)星推掃條帶所需時(shí)間等信息。

元任務(wù)計(jì)算的輸入文件有四個(gè):場(chǎng)景文件、衛(wèi)星文件、軌道計(jì)算輸入文件和任務(wù)輸入文件。場(chǎng)景文件中給出場(chǎng)景名稱、場(chǎng)景開始時(shí)間、場(chǎng)景結(jié)束時(shí)間以及場(chǎng)景是否應(yīng)急等信息。衛(wèi)星文件給出衛(wèi)星的詳細(xì)信息,包括衛(wèi)星名字、質(zhì)量、光壓系數(shù)等內(nèi)容。軌道計(jì)算輸入文件除了包括瞬時(shí)軌道根數(shù)和計(jì)算時(shí)間段之外,還有圈號(hào)、大氣阻尼面積等內(nèi)容。任務(wù)輸入文件給出任務(wù)ID、觀測(cè)目標(biāo)的邊數(shù)及其各個(gè)頂點(diǎn)的經(jīng)緯高信息。同時(shí)還給出了條帶的一些屬性包括條帶是否裁剪、條帶擴(kuò)充長(zhǎng)度、條帶劃分粒度等內(nèi)容。

元任務(wù)計(jì)算是預(yù)處理中計(jì)算量最多的任務(wù),計(jì)算時(shí)間相對(duì)較長(zhǎng)。當(dāng)多顆衛(wèi)星對(duì)多個(gè)成像任務(wù)進(jìn)行元任務(wù)計(jì)算時(shí),現(xiàn)有串行算法很難適應(yīng)工程需要,下面介紹其并行化設(shè)計(jì)與實(shí)現(xiàn)。

元任務(wù)計(jì)算的并行化設(shè)計(jì)與實(shí)現(xiàn)

我們考慮在元任務(wù)計(jì)算中能并行執(zhí)行的模塊將其并行化。由于同一顆衛(wèi)星對(duì)不同的觀測(cè)目標(biāo)進(jìn)行元任務(wù)計(jì)算是一個(gè)相互獨(dú)立的過程,不同的衛(wèi)星對(duì)同一個(gè)觀測(cè)目標(biāo)進(jìn)行元任務(wù)計(jì)算也是一個(gè)相互獨(dú)立的過程,因此可以將每顆衛(wèi)星對(duì)每個(gè)觀測(cè)目標(biāo)的元任務(wù)計(jì)算當(dāng)成一個(gè)計(jì)算任務(wù),這些計(jì)算任務(wù)之間是相互獨(dú)立的,可以分配到集群上每個(gè)節(jié)點(diǎn)進(jìn)行計(jì)算。

元任務(wù)計(jì)算的并行化設(shè)計(jì)原理同軌道預(yù)報(bào)、可見時(shí)間窗口計(jì)算并行設(shè)計(jì)原理相同,如圖10所示。將輸入數(shù)據(jù)封裝在RDD中,通過pipe()方法交給元任務(wù)計(jì)算這個(gè)外部程序進(jìn)行處理實(shí)現(xiàn)并行計(jì)算多顆衛(wèi)星對(duì)多個(gè)觀測(cè)目標(biāo)的元任務(wù)。其中輸入RDD支持將多個(gè)計(jì)算任務(wù)放在同一個(gè)分區(qū),元任務(wù)計(jì)算得到的輸出結(jié)果可以通過衛(wèi)星、目標(biāo)以及成像模式組成的標(biāo)識(shí)參數(shù)進(jìn)行區(qū)分,輸出的存儲(chǔ)方式主要是寫入本地文件系統(tǒng)。元任務(wù)計(jì)算的并行化實(shí)現(xiàn)原理也與前兩種算法相同。

本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處。綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
五原县| 仪征市| 潍坊市| 田林县| 苍南县| 南京市| 洛隆县| 道孚县| 白水县| 中牟县| 淳化县| 天祝| 昌邑市| 上虞市| 勃利县| 洞头县| 阿克陶县| 政和县| 霍林郭勒市| 霞浦县| 安化县| 南川市| 宿松县| 丹东市| 鄂州市| 车致| 通许县| 莱州市| 安西县| 南昌市| 古丈县| 勐海县| 裕民县| 彩票| 赤峰市| 南投县| 远安县| 北京市| 神农架林区| 手机| 隆尧县|