Main Content

ecef2aer

Transform geocentric Earth-centered Earth-fixed coordinates to local spherical

Description

[az,elev,slantRange] = ecef2aer(X,Y,Z,lat0,lon0,h0,spheroid) transforms the geocentric Earth-centered Earth-fixed (ECEF) Cartesian coordinates specified by X, Y, and Z to the local azimuth-elevation-range (AER) spherical coordinates specified by az, elev, and slantRange. Specify the origin of the local AER system with the geodetic coordinates lat0, lon0, and h0. Each coordinate input argument must match the others in size or be scalar. Specify spheroid as the reference spheroid for the geodetic coordinates.

example

[___] = ecef2aer(___,angleUnit) specifies the units for latitude, longitude, azimuth, and elevation. Specify angleUnit as 'degrees' (the default) or 'radians'.

Examples

collapse all

Find the AER coordinates of a satellite with respect to a satellite dish, using the ECEF coordinates of the satellite and the geodetic coordinates of the satellite dish.

First, specify the reference spheroid as WGS84 with length units measured in kilometers. For more information about WGS84, see Comparison of Reference Spheroids. The units for the ellipsoidal height, slant range, and ECEF coordinates must match the units specified by the LengthUnit property of the reference spheroid.

wgs84 = wgs84Ellipsoid('kilometers');

Specify the geodetic coordinates of the local origin. In this example, the local origin is the satellite dish. Specify h0 as ellipsoidal height in kilometers.

lat0 = 42.3221;
lon0 = -71.3576;
h0 = 0.0847;

Specify the ECEF coordinates of the point of interest. In this example, the point of interest is the satellite.

x = 10766.0803;
y = 14143.6070;
z = 33992.3880;

Then, calculate the AER coordinates of the satellite with respect to the satellite dish. In this example, slantRange displays in scientific notation.

[az,elev,slantRange] = ecef2aer(x,y,z,lat0,lon0,h0,wgs84)
az = 
24.8012
elev = 
14.6185
slantRange = 
3.6272e+04

Reverse the transformation using the aer2ecef function. In this example, the results display in scientific notation.

[x,y,z] = aer2ecef(az,elev,slantRange,lat0,lon0,h0,wgs84)
x = 
1.0766e+04
y = 
1.4144e+04
z = 
3.3992e+04

Input Arguments

collapse all

ECEF x-coordinates of one or more points in the geocentric ECEF system, specified as a scalar, vector, matrix, or N-D array. Specify values in units that match the LengthUnit property of the spheroid argument. For example, the default length unit for the reference ellipsoid created by wgs84Ellipsoid is 'meter'.

Data Types: single | double

ECEF y-coordinates of one or more points in the geocentric ECEF system, specified as a scalar, vector, matrix, or N-D array. Specify values in units that match the LengthUnit property of the spheroid argument. For example, the default length unit for the reference ellipsoid created by wgs84Ellipsoid is 'meter'.

Data Types: single | double

ECEF z-coordinates of one or more points in the geocentric ECEF system, specified as a scalar, vector, matrix, or N-D array. Specify values in units that match the LengthUnit property of the spheroid argument. For example, the default length unit for the reference ellipsoid created by wgs84Ellipsoid is 'meter'.

Data Types: single | double

Geodetic latitude of the local origin, specified as a scalar, vector, matrix, or N-D array. The local origin can refer to one point or a series of points (for example, a moving platform). Specify the values in degrees. To use values in radians, specify the angleUnit argument as 'radians'.

Data Types: single | double

Geodetic longitude of the local origin, specified as a scalar, vector, matrix, or N-D array. The local origin can refer to one point or a series of points (for example, a moving platform). Specify the values in degrees. To use values in radians, specify the angleUnit argument as 'radians'.

Data Types: single | double

Ellipsoidal height of the local origin, specified as a scalar, vector, matrix, or N-D array. The local origin can refer to one point or a series of points (for example, a moving platform). Specify values in units that match the LengthUnit property of the spheroid object. For example, the default length unit for the reference ellipsoid created by wgs84Ellipsoid is 'meter'.

For more information about ellipsoidal height, see Find Ellipsoidal Height from Orthometric Height.

Data Types: single | double

Reference spheroid, specified as a referenceEllipsoid object, oblateSpheroid object, or referenceSphere object. The term reference spheroid is used synonymously with reference ellipsoid. To create a reference spheroid, use the creation function for the object. To specify the reference ellipsoid for WGS84, use the wgs84Ellipsoid function.

For more information about reference spheroids, see Comparison of Reference Spheroids.

Example: spheroid = referenceEllipsoid('GRS 80');

Angle units, specified as 'degrees' (the default) or 'radians'.

Output Arguments

collapse all

Azimuth angles of one or more points in the local AER system, returned as a scalar, vector, matrix, or N-D array. Azimuths are measured clockwise from north. Values are specified in degrees within the half-open interval [0 360). To use values in radians, specify the angleUnit argument as 'radians'.

Elevation angles of one or more points in the local AER system, returned as a scalar, vector, matrix, or N-D array. Elevations are measured with respect to a plane that is perpendicular to the normal of the spheroid surface. If the local origin is on the surface of the spheroid (h0 = 0), then the plane is tangent to the spheroid.

Values are specified in degrees within the closed interval [-90 90]. To use values in radians, specify the angleUnit argument as 'radians'.

Distances from the local origin, returned as a scalar, vector, matrix, or N-D array. Each distance is calculated along a straight, 3-D, Cartesian line. Units are specified by the LengthUnit property of the spheroid argument. For example, the default length unit for the reference ellipsoid created by wgs84Ellipsoid is 'meter'.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2012b

expand all