李相迎, 王建民, 馮興浩, 袁有林, 周曉凡
1(解放軍63610部隊(duì), 庫爾勒 841000)
2(巴州翱翔無人飛行器科技有限公司, 庫爾勒 841000)
空間目標(biāo)觀測是目標(biāo)編目、碎片碰撞預(yù)警和軌道預(yù)報(bào)方面的主要手段[1–3]. 一些免費(fèi)的軌道目標(biāo)觀測與分析軟件在三維可視化和任務(wù)適用性方面存在差距,大型軟件如STK (satellite tool kit)雖然可用于二次開發(fā), 但這種方式不僅需要支付組件購置費(fèi), 要求研究者具備一定的專業(yè)知識以及多種計(jì)算機(jī)語言編程能力,而且操作較為繁瑣, 熟練使用需要一定的學(xué)習(xí)周期, 開發(fā)的成品以需要下載安裝的軟件為主[4]. Cesium作為一款性能良好、基于WebGL技術(shù)的跨平臺三維開發(fā)框架, 能夠在三維虛擬地球場景中疊加豐富的矢量和模型信息, 實(shí)現(xiàn)空間數(shù)據(jù)分析和三維可視化場景的創(chuàng)建, 同時(shí)還支持在瀏覽器端的無插件瀏覽交互[5]. 本軟件基于Cesium開源庫設(shè)計(jì), 搭建了高分辨瓦片地圖服務(wù)器, 使用瀏覽器/服務(wù)器(B/S)架構(gòu)及WebGL技術(shù)實(shí)現(xiàn)了目標(biāo)預(yù)報(bào)觀測三維可視化平臺, 使用戶在任意聯(lián)網(wǎng)終端都能通過瀏覽器對空間目標(biāo)進(jìn)行觀測計(jì)算和場景展示[6,7].
Cesium是一個完全開源的基于WebGL的JavaScript框架, 它能夠基于多種瀏覽器進(jìn)行網(wǎng)頁端的2維、2.5維和3維可視化展示, 支持調(diào)用地理信息聯(lián)盟指定的空間數(shù)據(jù)規(guī)范下的WMS、WMTS、ArcGIS等多種地圖服務(wù)層[8]. 本軟件設(shè)計(jì)基于B/S方式, 在前端進(jìn)行3維數(shù)據(jù)可視化展示, 后端實(shí)現(xiàn)文件共享和必要的計(jì)算功能. 根據(jù)各個層次實(shí)現(xiàn)的功能的不同, 文獻(xiàn)[5]把系統(tǒng)整體分為客戶層、服務(wù)層以及數(shù)據(jù)存儲層3個層次.本平臺系統(tǒng)整體架構(gòu)實(shí)現(xiàn)如圖1所示.

圖1 軟件平臺實(shí)現(xiàn)框架
客戶層中的表現(xiàn)層通過網(wǎng)頁形式對系統(tǒng)整體實(shí)現(xiàn)在各種主流瀏覽器端展示, 同時(shí)通過 HTML5 和 CSS文件實(shí)現(xiàn)網(wǎng)頁內(nèi)容和網(wǎng)頁樣式的調(diào)整與設(shè)計(jì), 因此, 客戶層的模塊整體可分為3個方面: 一是三維場景的顯示, 主要體現(xiàn)在三維數(shù)字地球、衛(wèi)星航跡、衛(wèi)星實(shí)時(shí)位置動態(tài)可視化效果的呈現(xiàn), 同時(shí)包括對地球本身的鼠標(biāo)動作響應(yīng)等基本操作; 二是用戶對圖層工具的操作界面, 包括功能菜單、對話框的設(shè)置和曲線圖的展示; 三是程序?qū)又惺褂?JavaScript 語言提供的各個JS功能文件及模塊接口, 例如 Cesium 框架提供的三維可視化場景接口以及編程實(shí)現(xiàn)的JS功能函數(shù)等. 本設(shè)計(jì)的服務(wù)層實(shí)現(xiàn)了基于JQuery-Ajax對JSON數(shù)據(jù)文件的交互功能和基于地圖服務(wù)對地圖文件的訪問接口.數(shù)據(jù)存儲層主要負(fù)責(zé)對客戶端需要查找的數(shù)據(jù)進(jìn)行存儲, 本設(shè)計(jì)采用 GeoJSON數(shù)據(jù)格式將站址信息、圖標(biāo)與模型信息、航跡數(shù)據(jù)等信息存儲在服務(wù)器中的靜態(tài)文件夾中[9]; 采用高分辨衛(wèi)星地圖瓦片數(shù)據(jù)對數(shù)字地球進(jìn)行顯示. Cesium的地圖接口需要一個已發(fā)布的服務(wù)器訪問地址, 它鏈接到地圖瓦片文件[10]. 瓦片地圖是一種用瓦片金字塔結(jié)構(gòu)來組織數(shù)據(jù)的地圖服務(wù)方式, 它將地圖切割成許多較小的瓦片塊, 并根據(jù)目前的視角范圍提供快速的顯示效果, 從而大大提高地圖在瀏覽器端的加載速度[11,12].
本平臺觀測結(jié)果的生成與展示基于數(shù)據(jù)庫模型實(shí)現(xiàn). 實(shí)體對象包括觀測結(jié)果、地圖數(shù)據(jù)、測站、模型/圖標(biāo)和歷史航跡. 其中高分辨瓦片地圖數(shù)據(jù)和目標(biāo)三維模型用于二維和三維動態(tài)場景渲染; 測站信息包含測站名稱、站址坐標(biāo)和觀測設(shè)備威力指標(biāo)等屬性, 用于目標(biāo)觀測時(shí)對設(shè)備可見性和覆蓋情況進(jìn)行分析; 歷史航跡則提供了數(shù)據(jù)查詢功能. 基于數(shù)據(jù)庫設(shè)計(jì)的E-R流圖如圖2所示.

圖2 軟件平臺數(shù)據(jù)庫E-R流圖
對空間目標(biāo)的觀測需要獲取衛(wèi)星的入站和出站時(shí)間, 掌握目標(biāo)的觀測角和距離信息; 在計(jì)算得到目標(biāo)的空間坐標(biāo)后, 還需要轉(zhuǎn)換成測站極坐標(biāo)系, 以此作為觀測天線的引導(dǎo)數(shù)據(jù)文件. 以下介紹TLE兩行根數(shù)格式、SGP4軌道計(jì)算模型和站心系坐標(biāo)轉(zhuǎn)換.
TLE兩行根數(shù)格式由北美航天國防司令部(North American aerospace defence command, NORAD)公布,對應(yīng)瞬時(shí)軌道坐標(biāo)系, 其相應(yīng)的軌道預(yù)報(bào)算法由一般攝動法(即解析法)簡化得到. 將TLE數(shù)據(jù)應(yīng)用于SGP4模型, 可成功預(yù)報(bào)軌道周期小于225 min的空間目標(biāo), 解算出目標(biāo)在任意時(shí)刻的空間位置和速度[13].
衛(wèi)星星歷的結(jié)構(gòu)為3行, 首行數(shù)據(jù)為衛(wèi)星名稱; 后面兩行則存儲了衛(wèi)星相關(guān)數(shù)據(jù), 每行69個字符, 包括0–9、A–Z (大寫)、空格、點(diǎn)和正負(fù)號. 第2、3行的格式說明如表1和表2所示.

表1 第2行格式描述

表2 第3行格式描述
SGP4/SDP4是由NORAD開發(fā)的一種軌道預(yù)報(bào)模型, 代碼公布以來, 經(jīng)過了多次修正, 2006年Vallado,David等人對所有版本進(jìn)行了總結(jié), 提供了與美國國防部完全兼容的程序代碼[14]. 除了地球中心引力, 在軌衛(wèi)星還受到各種攝動力的影響, 主要包括: (1)大氣阻力攝動的影響. 大氣阻力攝動是非引力攝動之一, 人造衛(wèi)星特別是近地軌道衛(wèi)星, 在地球附加的空間飛行受到大氣阻力產(chǎn)生的攝動, 使衛(wèi)星軌道的大小和形狀不斷變化. (2)地球非球形引力的影響. 在二體問題中, 只需考慮地球?qū)πl(wèi)星的中心引力; 實(shí)際上, 由于地球質(zhì)量分布不均勻, 對衛(wèi)星還產(chǎn)生扁率攝動、形變攝動等影響.(3)太陽、月球及其他行星引力的影響. 在SGP4模型中, 這些攝動力均有對應(yīng)算法進(jìn)行修正, 考慮了地球扁率, 日月引力的長期和周期攝動, 以及大氣阻力引起的軌道衰退, 以保證預(yù)測軌道的精度[15].
經(jīng)過軌道計(jì)算得到的空間目標(biāo)位置是不同時(shí)間點(diǎn)的球心直角坐標(biāo), 如果用于測站對空間在軌目標(biāo)的觀測, 需要轉(zhuǎn)換成站心極坐標(biāo). 轉(zhuǎn)換包含兩個步驟, 一是球心直角坐標(biāo)到站心地平直角坐標(biāo)的轉(zhuǎn)換, 二是站心地平直角坐標(biāo)到站心極坐標(biāo)的轉(zhuǎn)換[16].
設(shè)測站的大地坐標(biāo)經(jīng)緯度為(L0,B0), 球心直角坐標(biāo)為(X0,Y0,Z0), 從球心直角坐標(biāo)(X,Y,Z)轉(zhuǎn)換到站心地平直角坐標(biāo)(x,y,z), 是在兩個直角坐標(biāo)系之間的轉(zhuǎn)換, 將(X,Y,Z)做兩次旋轉(zhuǎn), 繞Z軸旋轉(zhuǎn)(90°+L0),繞Y軸旋轉(zhuǎn)(90°–B0), 列出轉(zhuǎn)換公式如下:

將球心直角坐標(biāo)(X,Y,Z)代入式(1), 即可算出對應(yīng)的站心地平直角坐標(biāo)(x,y,z) . 從站心直角坐標(biāo)(x,y,z)也可以算出測站對目標(biāo)點(diǎn)的斜距R、 方位角A和俯仰角E. (R,A,E)為站心極坐標(biāo), 有如下關(guān)系:

解得:

得到站心極坐標(biāo)后, 結(jié)合目標(biāo)入站時(shí)間, 可引導(dǎo)觀測設(shè)備的天線指向, 實(shí)現(xiàn)空間在軌目標(biāo)的跟蹤測量.
三維場景的創(chuàng)建主要由創(chuàng)建容器、加載三維控件、添加地圖地形服務(wù)、加載三維模型或在線數(shù)據(jù)圖層服務(wù) 4 個部分組成, 在頁面容器創(chuàng)建之后, 通過調(diào)用Cesium 的 Viewer函數(shù)初始化三維場景控件[17]. Viewer函數(shù)中有多達(dá)幾十個參數(shù)設(shè)置項(xiàng), 這些參數(shù)決定了場景部件的顯示方式, 其中最主要的參數(shù)是通過設(shè)置imageryProvider參數(shù)訪問我們提供的地圖數(shù)據(jù). Cesium支持多種服務(wù)來源的高精度影像(地圖)數(shù)據(jù)的加載和渲染[18]. 在本設(shè)計(jì)中, 搭建了高分辨的離線地圖服務(wù)器,通過Cesium的TMS (瓦片地圖服務(wù)) 接口訪問地圖服務(wù)的URL, 然后在Viewer函數(shù)中為imageryProvider參數(shù)指定這一圖層服務(wù). 經(jīng)過以上設(shè)置. 就可以在瀏覽器窗口顯示一個完整的三維數(shù)字地球了.
軟件中通過功能函數(shù)showSatPos(tle)實(shí)現(xiàn)目標(biāo)的動態(tài)場景顯示. 首先從軌道根數(shù)tle中提取衛(wèi)星周期,根據(jù)設(shè)置的圈次數(shù), 得到衛(wèi)星從當(dāng)前時(shí)刻到結(jié)束時(shí)刻的顯示時(shí)間長度, 然后調(diào)用函數(shù)getSatelliteInfo()返回該時(shí)間長度內(nèi)指定時(shí)間間隔的觀測信息.函數(shù)getSatellite Info()接收的參數(shù)包括tle根數(shù)、時(shí)間戳和測站坐標(biāo)信息, 利用SGP4模型計(jì)算后返回結(jié)果對象, 對象中包含了目標(biāo)的空間坐標(biāo)和測站觀測的極坐標(biāo). 場景中顯示的目標(biāo)三維航跡和模型數(shù)據(jù)通過Cesium提供的Entity對象的add()方法實(shí)現(xiàn); 根據(jù)繪制需要, 可指定該方法的繪制參數(shù), 包括點(diǎn)(point)、線(polyline)、圖片(image)、模型(model)、標(biāo)簽(lable)以及它們的空間坐標(biāo)(position)等. 本設(shè)計(jì)中使用線實(shí)體(polyline)繪制目標(biāo)航跡, 通過加載衛(wèi)星模型實(shí)時(shí)更新目標(biāo)位置. Cesium中目前支持gltf和bgltf兩種格式的模型數(shù)據(jù), 可以借助3ds Max軟件從其他格式的模型文件轉(zhuǎn)換得到[19,20]. 為了顯示衛(wèi)星的移動效果, 使用定時(shí)器更新衛(wèi)星的位置[21].在本軟件中, 利用JavaScript提供的setInterval()函數(shù),通過設(shè)置回調(diào)函數(shù)和時(shí)間間隔, 實(shí)現(xiàn)了指定的目標(biāo)位置更新效果.場景動態(tài)顯示的流程如圖3所示.

圖3 場景動態(tài)顯示流程
為了獲取不同視圖的顯示效果, 場景中利用小窗增加了二維全景地圖的顯示, 顯示的航跡地圖和目標(biāo)位置與三維場景保持同步. 二維顯示窗口可拖放至屏幕任意位置, 同時(shí)支持地圖縮放功能. 圖4和圖5分別為場景3D和2.5D顯示效果.

圖4 場景動態(tài)顯示效果(3D)

圖5 場景動態(tài)顯示效果(2.5D)
目標(biāo)的可見性是指目標(biāo)進(jìn)入測站的觀測視角范圍內(nèi).通常要求目標(biāo)的觀測仰角大于0°, 觀測距離則由觀測設(shè)備的探測威力決定. 目標(biāo)可見性計(jì)算時(shí), 從參數(shù)設(shè)置對話框輸入觀測約束條件. 軟件實(shí)現(xiàn)的流程如圖6所示.

圖6 目標(biāo)可見性顯示流程
觀測約束條件包括測站坐標(biāo)、起止時(shí)間、最低仰角和最大圈數(shù)等信息. 計(jì)算過程使用了getSatelliteInfo()函數(shù)功能, 輸出觀測結(jié)果時(shí), 對數(shù)據(jù)進(jìn)行了統(tǒng)計(jì)和篩選,以獲取每個觀測圈次的入站和出站時(shí)間、觀測方位角范圍、最高仰角、最遠(yuǎn)距離和持續(xù)時(shí)間等信息. 用程序?qū)崿F(xiàn)的統(tǒng)計(jì)和篩選流程如圖7所示. 程序中設(shè)置了觀測有效標(biāo)志變量V, 初始化為0, 如果當(dāng)前時(shí)刻計(jì)算的結(jié)果符合測站的仰角觀測條件則置V=1. 通過該標(biāo)志變量的變化, 可以統(tǒng)計(jì)和記錄觀測時(shí)段的起止時(shí)刻.另外, 程序中還通過初始設(shè)置極大極小值的方法, 實(shí)現(xiàn)了邊計(jì)算邊統(tǒng)計(jì)觀測結(jié)果中方位、俯仰和距離的極值,避免了二次遍歷數(shù)據(jù), 提升了計(jì)算效率. 在統(tǒng)計(jì)結(jié)果中,選中指定的一行觀測數(shù)據(jù), 可以對結(jié)果進(jìn)行三維可視化、測站覆蓋分析或曲線圖顯示, 也可以保存為本地?cái)?shù)據(jù)文件. 在三維可視化顯示時(shí), 通過第3.1節(jié)中描述的Cesium的線實(shí)體實(shí)現(xiàn)了測站的可見航跡繪制; 在查詢和計(jì)算當(dāng)前測站相對于空間目標(biāo)的觀測距離后, 作為半徑參數(shù), 通過繪制Cesium的ellipsoid實(shí)體實(shí)現(xiàn)了測站的覆蓋分析效果. 參數(shù)設(shè)置與統(tǒng)計(jì)結(jié)果通過圖8的對話框?qū)崿F(xiàn).

圖7 觀測統(tǒng)計(jì)與篩選流程圖
從CelesTrak網(wǎng)站下載Landsat9衛(wèi)星TLE軌道根數(shù)進(jìn)行計(jì)算, 圖8中的數(shù)據(jù)表格內(nèi)容為該衛(wèi)星從2021年11月4日到5日的可見圈次計(jì)算結(jié)果.表格中每一行給出了符合條件的起止時(shí)間、最高仰角、最遠(yuǎn)距離、方位角變化范圍和持續(xù)時(shí)間. 選擇某個圈次后,可以輸出文本格式的軌道數(shù)據(jù)文件, 文件記錄了目標(biāo)在每個時(shí)間點(diǎn)的空間位置、速度、大地坐標(biāo)、站心系極坐標(biāo)等內(nèi)容.

圖8 參數(shù)設(shè)置與統(tǒng)計(jì)結(jié)果對話框
觀測結(jié)果曲線如圖9所示. 圖中橫軸為時(shí)間, 縱軸為方位、俯仰和距離, 曲線圖支持縮放功能, 可保存為本地圖片文件; 圖中的數(shù)據(jù)還可以導(dǎo)出為Excel表格文件, 方便用戶使用.

圖9 測站12的觀測曲線
為了驗(yàn)證平臺軟件得到的觀測數(shù)據(jù)的可信度, 利用TLE軌道根數(shù)和SGP4模型, 分別以STK仿真工具和平臺軟件計(jì)算OCEANSAT-2衛(wèi)星(軌道高度約730 km)的預(yù)報(bào)和觀測數(shù)據(jù). 衛(wèi)星對測站12可見的時(shí)間為UTC時(shí)間2021年11月4日05時(shí)29分03秒至05時(shí)40分03秒, 設(shè)置計(jì)算步長為60 s, 假設(shè)測站12的大地坐標(biāo)為經(jīng)度92.750 1°, 緯度37.030°, 高程1 397.59 m.得到觀測目標(biāo)的球心坐標(biāo)和轉(zhuǎn)換后的站心極坐標(biāo)后,以STK軟件的計(jì)算結(jié)果為基準(zhǔn), 驗(yàn)證平臺軟件計(jì)算結(jié)果的精度[22]. 表3為球心坐標(biāo)的計(jì)算結(jié)果, 表4為站心極坐標(biāo)的計(jì)算結(jié)果; 圖10為STK與可視化平臺計(jì)算結(jié)果比對后的偏差曲線.

表4 OCEANSAT-2衛(wèi)星的預(yù)報(bào)結(jié)果(站心極坐標(biāo))
從圖10的偏差曲線可以得出, 平臺軟件與STK分別計(jì)算的衛(wèi)星球心坐標(biāo)位置差小于50 m; 站心極坐標(biāo)的方位差小于0.005°, 俯仰差小于0.002°, 星站距離差小于100 m, 表明平臺軟件的計(jì)算結(jié)果與STK相吻合, 可以滿足使用要求.

圖10 可視化平臺與STK計(jì)算結(jié)果偏差
為了比較觀測軟件與STK在三維動態(tài)顯示時(shí)的系統(tǒng)資源使用情況, 使用Windows任務(wù)管理器對兩個軟件在自動運(yùn)行時(shí)進(jìn)行監(jiān)測. 測試的電腦CPU為Intel core i7 8550u@1.8GHz, 內(nèi)存16 GB, Intel UHD620集成顯卡. 經(jīng)過一段時(shí)間后運(yùn)行流暢, 可觀察得到兩個軟件對CPU、內(nèi)存和GPU的近似占用率. 圖11為運(yùn)行時(shí)的資源占用情況截圖. 表5對兩個軟件的基本性能做了對比.

圖11 資源使用情況截圖

表5 可視化平臺與STK基本性能對比
從測試情況看, 兩個軟件對CPU的占用率基本相同, 保持在10%以內(nèi); 在內(nèi)存和GPU的使用方面,觀測軟件相比STK偏高, 其原因是觀測平臺軟件使用了高分辨率的地圖和場景數(shù)據(jù), 渲染時(shí)占用了較多的內(nèi)存和GPU資源. 在多用戶支持方面, 觀測平臺不受限制, 而STK只能通過二次開發(fā)接口提供有限支持.
隨著我國航天事業(yè)的快速發(fā)展, 對空間目標(biāo)的觀測需求逐步增多, 為滿足各測量站對空間目標(biāo)的常規(guī)和應(yīng)急觀測任務(wù), 設(shè)計(jì)開發(fā)了基于Web訪問技術(shù)、具有三維可視化功能的軌道目標(biāo)觀測平臺. 本軟件基于Cesium開發(fā)庫進(jìn)行設(shè)計(jì), 采用瀏覽器/服務(wù)器架構(gòu), 搭建了高分辨離線瓦片地圖服務(wù)器, 增強(qiáng)了三維場景配置的靈活性, 同時(shí)使數(shù)據(jù)共享更加方便. 該軟件已多次應(yīng)用于實(shí)際觀測任務(wù), 結(jié)果表明, 軟件的跨平臺特性使其能夠適用于國產(chǎn)化軟件環(huán)境, 計(jì)算精度滿足使用要求.