覆盖范围分析中用到的坐标系统

1. 几种坐标系统

在雷达覆盖范围分析中,常常需要将大地坐标系中的经、纬度、高度表示的点转换为以东、北、天表示的站心坐标系中的点。在此变换过程中,还需要涉及地心坐标系作为中介。因此,本文对这几种坐标系及相互变换做简单地介绍。

1) 地心坐标系(ECEF)

地心坐标系(Earth-Centered, Earth-Fixed,ECEF)与地球椭球无关,是一种以地球质心为原点的地球直角坐标系。地心坐标系的z轴与地轴平行指向北极点,x轴指向本初子午线与赤道的交点,y轴垂直于xoz平面(即东经90^{\circ}与赤道的交点),构成右手坐标系。

空间中的点P的坐标表示为(x, y, z)

覆盖范围分析中用到的坐标系统_第1张图片

 2) 大地坐标系(JWH)

大地坐标系是一种以地球椭球面和法线为基准的地球坐标系,地面点P的位置用大地经度\lambda、大地纬度\phi、大地高度h表示。大地坐标系是指地球椭球的中心与地球质心重合,椭球的短轴与地球自转轴重合。大地经度\lambda是过地面点P的椭球子午面与格林尼治天文台子午面的平角;大地纬度\phi是过点P的椭球法线(与参考椭球球面正交的直线) 和椭球赤道面的夹角;大地高度h是地面点P沿椭球法线到地球椭球面的距离。

3) 站心坐标系(ENU)

站心坐标系是以站址为原点,分别指向东、北、天的三维直角坐标系,主要用于分析周围地物或目标相对观察者的位置关系。

站心坐标系以站心(雷达天线)为坐标系原点o,z轴与椭球法线重合,向上为正(天向),y轴与椭球短半轴重合(北向),x轴与地球椭球长半轴重合(东向)所构成的直角坐标系,故也称为东北天坐标系(ENU)。

覆盖范围分析中用到的坐标系统_第2张图片

 2. 坐标间的变换

1) 大地坐标系(JWH)\Rightarrow地心坐标系(ECEF)

已知地面点P在大地坐标系(JWH)中的坐标为(\lambda, \phi, h),求该点在地心坐标系(ECEF)中的坐标(x, y, z)

相应的变换关系为

\left\{\begin{array}{l} x = (R+h)\cos\phi\cos\lambda\\ y = (R+h)\cos\phi\sin\lambda\\ x = [R(1-e^2)+h]\sin\phi \end{array} \right.

其中,

  • a=6378137米,地球长半轴
  • b=6356752.31414米,地球短半轴
  • e=\sqrt{a^2-b^2}/a=0.0818191910428,地球第一偏心率
  • R=a/\sqrt{1-e^2\sin^2\phi},过点P的卯酉圈半径

首先,设置原始参数

private double[] Lat_Lon_H0;
private double[] Lat_Lon_H;
private double a = 6378137;
private double b = 6356752.31414;
private double e;
private double R;

public Transform(double Lat0, double Lon0, double H0)
{
	Lat_Lon_H0 = new double[3];
	Lat_Lon_H0[0] = Lat0;
	Lat_Lon_H0[1] = Lon0;
	Lat_Lon_H0[2] = H0;
	e=Math.sqrt(a*a-b*b)/a;
    R=a/Math.sqrt(1-Math.pow(e,2)*Math.pow(Math.sin(Lat_Lon_H0[0]),2));
}

然后进行相应的变换

public double[] JWH2ECEF(double[] Lat_Lon_H_init) {
	Lat_Lon_H = Lat_Lon_H_init;

    double[] XYZ = new double[3];
    XYZ[0] = (R+Lat_Lon_H[2])*Math.cos(Lat_Lon_H[0])*Math.cos(Lat_Lon_H[1]);
    XYZ[1] = (R+Lat_Lon_H[2])*Math.cos(Lat_Lon_H[0])*Math.sin(Lat_Lon_H[1]);
    XYZ[2] = (R*(1-e*e)+Lat_Lon_H[2])*Math.sin(Lat_Lon_H[0]);

    return XYZ;
}

2) 地心坐标系(ECEF)\Rightarrow大地坐标系(JWH)

已知地面点P 在地心坐标系(ECEF)中的坐标(x, y, z) ,求该点在大地坐标系(JWH)中的坐标为(\lambda, \phi, h) 。

相应的变换过程为

\lambda = \arctan(y/x)

\tan\theta = \frac{z}{\sqrt{x^2+y^2}\sqrt{1-e^2}}

\tan\phi = \frac{z+be^2\sin^3\theta}{\sqrt{x^2+y^2}-ae^2\cos^3\theta}

h = \frac{z}{\sin\phi}-R(1-e^2)

3) 大地心坐标系(ECEF)\Rightarrow站心坐标系(ENU)

已知地面点P 在地心坐标系(ECEF)中的坐标(x, y, z) ,求该点在站心坐标系(ENU)中的坐标为(e, n, u)

假设雷达站天线的经纬度(\lambda_0, \phi_0),且其在地心坐标系(ECEF)中的坐标为(x_0, y_0, z_0),以该雷达站的天线为原点设立站心坐标系(ENU)。相应的变换关系为

\begin{bmatrix} n\\ e\\ u \end{bmatrix} = \begin{bmatrix} -\sin\phi_0\cos\lambda_0 & -\sin\lambda_0 & \cos\phi_0\cos\lambda_0 \\ -\sin\phi_0\sin\lambda_0 & \cos\lambda_0 & \cos\phi_0\sin\lambda_0 \\ \cos\phi_0 & 0 & \sin\phi_0 \end{bmatrix} \cdot \begin{bmatrix} x-x_0\\ y-y_0\\ z-z_0 \end{bmatrix}

变换代码

public double[] ECEF2ENU(double[] XYZ) {
	double[] XYZ0 = JWH2ECEF(Lat_Lon_H0);
	double X = XYZ[0];   double Y = XYZ[1];   double Z = XYZ[2];
	double X0 = XYZ0[0]; double Y0 = XYZ0[1]; double Z0 = XYZ0[2];
	double Lat0 = Lat_Lon_H0[0]; double Lon0 = Lat_Lon_H0[1];
		
	double[] ENU = new double[3];
	ENU[0] = - Math.sin(Lat0) * Math.sin(Lon0) * (X - X0) 
            + Math.cos(Lon0) * (Y - Y0) + Math.cos(Lat0) * Math.sin(Lon0) * (Z - Z0);
	ENU[1] = - Math.sin(Lat0) * Math.cos(Lon0) * (X - X0) 
            - Math.sin(Lat0) * (Y - Y0) + Math.cos(Lat0) * Math.sin(Lon0) * (Z - Z0);
	ENU[2] = Math.cos(Lat0) * (X - X0) + Math.sin(Lat0) * (Z - Z0);
		
	return ENU;
}

4) 站心坐标系(ENU)\Rightarrow地心坐标系(ECEF)

已知地面点P在站心坐标系(ENU)中的坐标为(e, n, u) ,求该点在地心坐标系(ECEF)中的坐标(x, y, z)

相应的变换关系为

\begin{bmatrix} x\\ y\\ z \end{bmatrix} = \begin{bmatrix} x_0\\ y_0\\ z_0 \end{bmatrix} + \begin{bmatrix} -\sin\phi_0\cos\lambda_0 & -\sin\lambda_0 & \cos\phi_0\cos\lambda_0\\ -\sin\phi_0\sin\lambda_0 & \cos\lambda_0 & \cos\phi_0\sin\lambda_0\\ \cos\phi_0 & 0 & \sin\phi_0 \end{bmatrix} \cdot \begin{bmatrix} n\\ e\\ u \end{bmatrix}

你可能感兴趣的:(电磁波覆盖范围分析,算法,java)