, ,
(武漢理工大學 仿真中心, 武漢 430063)
全球海上遇險和安全系統(global maritime distress and safety system,GMDSS)[1]主要設備如C船站、B船站、F船站都通過Inmarsat衛星[2-3]進行通訊。Inmarsat系統的4顆衛星分別覆蓋了大西洋東區、大西洋西區、太平洋區和印度洋區。以B船站為例,當船舶發送遇險消息時,首先入網,由該船所處位置地理坐標,通過坐標變換轉換成不同比例尺下的屏幕坐標;同時計算出4顆衛星覆蓋區域的函數,確定該船在哪幾個衛星的覆蓋范圍內,由此選擇相應的衛星及岸站進行入網通訊。船與衛星的距離決定了入網后信號的強弱。
通過3種坐標系概念[4]及其相應坐標變換的介紹,將船舶所處地理位置轉化為對應的屏幕坐標,并且由Inmarsat系統中4顆衛星覆蓋區域的劃分,計算出相應區域函數,由此確定船舶所處衛星覆蓋區域。
大地坐標系是固定在地球上,并與地球一同轉動的坐標系。主要用來表示地球表面點群之間的相對位置和確定空間點群間的相對位置,以真實地球質心為原點的地心坐標系,有直角坐標系和大地坐標系之分。參心大地坐標系,簡稱大地坐標,即用大地經度、大地緯度和大地高度表示,這種坐標系是經典大地測量的一種通用坐標系。
平面直角坐標系簡稱平面坐標,即在繪制電子海圖時,需要把矢量海圖上的大地坐標(φ,λ)通過某種投影方式轉換為平面直角坐標,在本系統中采用墨卡托投影方式,即等角正圓柱投影。
屏幕顯示坐標系,簡稱屏幕坐標,即導航系統屏幕上顯示的坐標。電子海圖應用系統下,在不同的顯示比例尺及海圖移動狀態中,屏幕坐標將不斷變化。
墨卡托投影變換[5]是在繪制海圖時,將地理坐標(φ,λ)轉換為平面直角坐標系中的(x,y)。
從地球旋轉橢圓體上,取出子午線和緯度圈相交構成的微量橢圓體面梯形ABCD(圖1),如果將它投影到墨卡托海圖上去,則變成abcd(圖2)。由于它是等角投影,因此地圖上任意一點的各個方向上的局部比例尺都必須相等。數學上可以證明,只要任意點的經線和緯線2個相互垂直的主方向上的局部比例尺相等,則該點上的各個方向上的局部比例尺也就一定相等。
圖1 橢圓體面梯
圖2 橢圓體面梯形在墨卡托海圖上投
由上面分析,墨卡托投影變換的公式為:
x=rλ
y=rq
(1)
式中:r0——等緯圓半徑;
λ——大地坐標系經度,
(2)
q——等量緯度,
(3)
墨卡托投影將經緯度信息轉換成了平面直角坐標,但是與電子海圖的Windows屏幕坐標有區別,海圖平面坐標的圓點在左下角,橫坐標向右遞增,縱坐標向上遞增;而Windows屏幕坐標的原點在左上角,橫坐標向右上遞增,縱坐標向下遞增。但兩種坐標之間呈現簡單的線性關系。
設海圖的直角坐標為(x0,y0),橫幅為W0,縱幅為H0;屏幕顯示坐標為(x1,y1),橫幅為W1,縱幅為H1,則它們的線性關系為:
(4)
取k=min{k1,k2}
綜合墨卡托投影和平面坐標到屏幕坐標轉換,由式(3)、(4)可得船舶定位公式為:
(5)
式中:x0、y0——地理坐標為(0,0)點對應的屏幕坐標。
a——經度;
b——緯度。
北緯、東經取正值(+),南緯、西經取負值(-)。
Inmarsat系統由船站、岸站、網絡協調站和衛星等部分組成。Inmarsat通信系統的空間段由四顆工作衛星和在軌道上等待隨時啟用的四顆備用衛星組成。這些衛星位于距離地球赤道上空約35 700 km的同步軌道上,軌道上衛星的運動與地球自轉同步,即與地球表面保持相對固定位置。所有Inmarsat衛星受位于英國倫敦Inmarsat總部的衛星控制中心(SCC)控制,以保證每顆衛星的正常運行。
每顆衛星可覆蓋地球表面約1/3面積,覆蓋區內地球上的衛星終端的天線與所覆蓋的衛星處于視距范圍內。4顆衛星覆蓋區分別是大西洋東區、大西洋西區、太平洋區和印度洋區。除南北緯75°以上的極地區域以外,4顆衛星幾乎可以覆蓋全球所有的陸地區域。
如圖3所示,把每個洋區邊緣曲線南北緯50°之間的部分近似看作為直線,南北緯50°到75°之間部分看作拋物線,從上任取3點(地理坐標)求出其公式。
圖3 Inmarsat衛星覆蓋
可得每個洋區的邊緣曲線公式:
y=m(x+n)2+p(y>50 或y<-50)
(6)
x=c(-50 (7) 把有衛星覆蓋的區域可以分為11個部分,得到每個洋區邊緣曲線公式后,給出點的屏幕坐標,即可判斷出該點位于哪顆衛星覆蓋區域,哪個小部分內。例如,船舶某刻位于地理緯度為(0,0)的點上,經上文中坐標換算方法,最終計算可得該船處于第Ⅴ部分,在大西洋東、大西洋西及印度洋3顆衛星覆蓋范圍內。 上述坐標變換算法及Inmarsat衛星覆蓋區域公式均以函數庫的形式提供。在GMDSS模擬器的子模塊——海圖文件解析器中測試該函數庫。該軟件采用Win2000平臺下的Visual C++6.0開發,其主要函數有: void SetMainStatus(double nlongi,double nlati);//判斷該點位于哪個衛星覆蓋范圍; int GetMainRectIndex(double nlongi,double nlati);//判斷該點位于衛星覆蓋哪個部分; double GetDistance(double nlongi,double nlati,int nSatellite);//計算該點與所選衛星距離; 程序思想是獲得船舶所處點的經度、緯度,首先調用SetMainStatus(double nlongi,double nlati) 函數,以判斷該船是否位于衛星覆蓋范圍,如果是的話,進而調用GetMainRectIndex(double nlongi,double nlati) 函數,來具體判斷位于上文11個部分中的哪塊。選擇衛星后,調用GetDistance(double nlongi,double nlati,int nSatellite) 函數來判斷該點與所選衛星的距離,以顯示信號等級。軟件的實現界面見圖4。 圖4 程序實現界 選擇東經或西經,南緯或北緯,輸入經度、緯度值,點擊按鈕“計算船位區域”,可得到該點屏幕坐標,并且可以計算出該船所處的洋區,計算出距離最近的衛星,及與該衛星的距離,也可以改變衛星(輸入數字1~4),如果該船不在該衛星覆蓋范圍內,此時距離輸出-1。 文中介紹的船舶坐標變換及定位算法已應用于武漢理工大學能動學院仿真中心開發的GMDSS模擬器開發中,實現了電子海圖數據的繪制及航行過程中的信息顯示,精度高、內存資源消耗少、速度快。 [1] 谷 溪.GMDSS通信業務[M].大連:大連海事大學出版社,1999. [2] 單巧根.Inmarsat情況簡介[J].航海技術, 1995(4)31-33. [3] 王曉暉.船岸數據通信系統的使用[J].世界海運, 2005(2):51-52. [4] 郭 禹.航海學[M].大連:大連海事大學出版社,2001. [5] 張英俊.電子海圖數學與算法基礎[M].大連:大連海事大學出版社,2001.3 仿真實現
4 結論