基于 GMDSS 的电子海图定位仿真研究

全球海上遇险和安全系统(globalmaritimedistressandsafetysystem,GMDSS)[1]主要设备如C船站、B船站、F船站都通过Inmarsat卫星[2-3]进行通讯。Inmarsat系统的4颗卫星分别覆盖了大西洋东区、大西洋西区、太平洋区和印度洋区。以B船站为例,当船舶发送遇险消息时,首先入网,由该船所处位置地理坐标,通过坐标变换转换成不同比例尺下的屏幕坐标;同时计算出4颗卫星覆盖区域的函数,确定该船在哪几个卫星的覆盖范围内,由此选择相应的卫星及岸站进行入网通讯。船与卫星的距离决定了入网后信号的强弱。

通过3种坐标系概念[4]及其相应坐标变换的介绍,将船舶所处地理位置转化为对应的屏幕坐标,并且由Inmarsat系统中4颗卫星覆盖区域的划分,计算出相应区域函数,由此确定船舶所处卫星覆盖区域。

1坐标变换

大地坐标系是固定在地球上,并与地球一同转动的坐标系。主要用来表示地球表面点群之间的相对位置和确定空间点群间的相对位置,以真实地球质心为原点的地心坐标系,有直角坐标系和大地坐标系之分。参心大地坐标系,简称大地坐标,即用大地经度、大地纬度和大地高度表示,这种坐标系是经典大地测量的一种通用坐标系。

平面直角坐标系简称平面坐标,即在绘制电子海图时,需要把矢量海图上的大地坐标(φ,λ)通过某种投影方式转换为平面直角坐标,在本系统中采用墨卡托投影方式,即等角正圆柱投影。

屏幕显示坐标系,简称屏幕坐标,即导航系统屏幕上显示的坐标。电子海图应用系统下,在不同的显示比例尺及海图移动状态中,屏幕坐标将不断变化。

1.1地理坐标到平面坐标的墨卡托投影变换

墨卡托投影变换[5]是在绘制海图时,将地理坐标(φ,λ)转换为平面直角坐标系中的(x,y)。

从地球旋转椭圆体上,取出子午线和纬度圈相交构成的微量椭圆体面梯形ABCD(图1),如果将它投影到墨卡托海图上去,则变成abcd(图2)。由于它是等角投影,因此地图上任意一点的各个方向上的局部比例尺都必须相等。数学上可以证明,只要任意点的经线和纬线2个相互垂直的主方向上的局部比例尺相等,则该点上的各个方向上的局部比例尺也就一定相等。

由上面分析,墨卡托投影变换的公式为:

x=rλ

y=rq(1)

式中:r0———等纬圆半径;

λ———大地坐标系经度,

q———等量纬度,

1.2平面坐标到屏幕坐标的转换

墨卡托投影将经纬度信息转换成了平面直角坐标,但是与电子海图的Windows屏幕坐标有区别,海图平面坐标的圆点在左下角,横坐标向右递增,纵坐标向上递增;而Windows屏幕坐标的原点在左上角,横坐标向右上递增,纵坐标向下递增。但两种坐标之间呈现简单的线性关系。

设海图的直角坐标为(x0,y0),横幅为W0,纵幅为H0;屏幕显示坐标为(x1,y1),横幅为W1,纵幅为H1,则它们的线性关系为:

取k=min{k1,k2}

综合墨卡托投影和平面坐标到屏幕坐标转换,由式(3)、(4)可得船舶定位公式为:

式中:x0、y0———地理坐标为(0,0)点对应的屏幕坐标。

a———经度;

b———纬度。

北纬、东经取正值(+),南纬、西经取负值(-)。

2Inmarsat系统区域

Inmarsat系统由船站、岸站、网络协调站和卫星等部分组成。Inmarsat通信系统的空间段由四颗工作卫星和在轨道上等待随时启用的四颗备用卫星组成。这些卫星位于距离地球赤道上空约35700km的同步轨道上,轨道上卫星的运动与地球自转同步,即与地球表面保持相对固定位置。所有Inmarsat卫星受位于英国伦敦Inmarsat总部的卫星控制中心(SCC)控制,以保证每颗卫星的正常运行。

每颗卫星可覆盖地球表面约1/3面积,覆盖区内地球上的卫星终端的天线与所覆盖的卫星处于视距范围内。4颗卫星覆盖区分别是大西洋东区、大西洋西区、太平洋区和印度洋区。除南北纬75°以上的极地区域以外,4颗卫星几乎可以覆盖全球所有的陆地区域。

如图3所示,把每个洋区边缘曲线南北纬50°之间的部分近似看作为直线,南北纬50°到75°之间部分看作抛物线,从上任取3点(地理坐标)求出其公式。


可得每个洋区的边缘曲线公式:

y=m(x+n)2+p(y>50或y<-50)

来具体判断位于上文11个部分中的哪块。选择卫星后,调用GetDistance(doublenlongi,doublenlati,intnSatellite)函数来判断该点与所选卫星的距离,以显示信号等级。软件的实现界面见图4。选择东经或西经,南纬或北纬,输入经度、纬度值,点击按钮“计算船位区域”,可得到该点屏幕坐标,并且可以计算出该船所处的洋区,计算出距离最近的卫星,及与该卫星的距离,也可以改变卫星(输入数字1~4),如果该船不在该卫星覆盖范围内,

3仿真实现

上述坐标变换算法及Inmarsat卫星覆盖区域公式均以函数库的形式提供。在GMDSS模拟器的子模块———海图文件解析器中测试该函数库。该软件采用Win2000平台下的VisualC++6.0开发,其主要函数有:

voidSetMainStatus(doublenlongi,doublenlati);//判断该点位于哪个卫星覆盖范围;

intGetMainRectIndex(doublenlongi,doublenlati);//判断该点位于卫星覆盖哪个部分;

doubleGetDistance(doublenlongi,doublenlati,intnSatellite);//计算该点与所选卫星距离;

程序思想是获得船舶所处点的经度、纬度,首先调用SetMainStatus(doublenlongi,doublenlati)函数,以判断该船是否位于卫星覆盖范围,如果是的话,进而调用GetMainRectIndex(doublenlongi,doublenlati)函数,来具体判断位于上文11个部分中的哪块。选择卫星后,调用GetDistance(doublenlongi,doublenlati,intnSatellite)函数来判断该点与所选卫星的距离,以显示信号等级。软件的实现界面见图4。


选择东经或西经,南纬或北纬,输入经度、纬度值,点击按钮“计算船位区域”,可得到该点屏幕坐标,并且可以计算出该船所处的洋区,计算出距离最近的卫星,及与该卫星的距离,也可以改变卫星(输入数字1~4),如果该船不在该卫星覆盖范围内,此时距离输出-1。

4结论

文中介绍的船舶坐标变换及定位算法已应用于武汉理工大学能动学院仿真中心开发的GMDSS模拟器开发中,实现了电子海图数据的绘制及航行过程中的信息显示,精度高、内存资源消耗少、速度快