Consists of methods dealing with Earth geographic coordinates and locations. More...
#include "geographic-positions.h"
Public Types | |
enum | EarthSpheroidType { SPHERE , GRS80 , WGS84 } |
Spheroid model to use for earth: perfect sphere (SPHERE), Geodetic Reference System 1980 (GRS80), or World Geodetic System 1984 (WGS84) More... | |
Static Public Member Functions | |
static Vector | CartesianToGeographicCoordinates (Vector pos, EarthSpheroidType sphType) |
Inverse of GeographicToCartesianCoordinates using [1]. | |
static Vector | GeographicToCartesianCoordinates (double latitude, double longitude, double altitude, EarthSpheroidType sphType) |
Converts earth geographic/geodetic coordinates (latitude and longitude in degrees) with a given altitude above earth's surface (in meters) to Earth Centered Earth Fixed (ECEF) Cartesian coordinates (x, y, z in meters), where origin (0, 0, 0) is the center of the earth. | |
static std::list< Vector > | RandCartesianPointsAroundGeographicPoint (double originLatitude, double originLongitude, double maxAltitude, int numPoints, double maxDistFromOrigin, Ptr< UniformRandomVariable > uniRand) |
Generates uniformly distributed random points (in ECEF Cartesian coordinates) within a given altitude above earth's surface centered around a given origin point (on earth's surface, in geographic/geodetic coordinates) within a given distance radius (using arc length of earth's surface, not pythagorean distance). | |
Consists of methods dealing with Earth geographic coordinates and locations.
Definition at line 34 of file geographic-positions.h.
Spheroid model to use for earth: perfect sphere (SPHERE), Geodetic Reference System 1980 (GRS80), or World Geodetic System 1984 (WGS84)
Moritz, H. "Geodetic Reference System 1980." GEODETIC REFERENCE SYSTEM 1980. https://web.archive.org/web/20170712034716/http://www.gfy.ku.dk/~iag/HB2000/part4/grs80_corr.htm.
"Department of Defense World Geodetic System 1984." National Imagery and Mapping Agency, 1 Jan. 2000. https://web.archive.org/web/20200729203634/https://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf.
Enumerator | |
---|---|
SPHERE | |
GRS80 | |
WGS84 |
Definition at line 48 of file geographic-positions.h.
|
static |
Inverse of GeographicToCartesianCoordinates using [1].
This function iteratively converts cartesian (ECEF) coordinates to geographic coordinates. The residual delta is 1 m, which is approximately 1 / 30 arc seconds or 9.26e-6 deg.
pos | a vector containing the Cartesian coordinates (x, y, z referenced in meters) of the point (origin (0, 0, 0) is center of earth) |
sphType | earth spheroid model to use for conversion |
[1] "Ellipsoidal and Cartesian Coordinates Conversion", Navipedia, European Space Agency, Jul 8, 2019. https://gssc.esa.int/navipedia/index.php/Ellipsoidal_and_Cartesian_Coordinates_Conversion
Definition at line 97 of file geographic-positions.cc.
References ns3::CalculateDistance(), ns3::DEG2RAD, ns3::EARTH_GRS80_ECCENTRICITY, ns3::EARTH_RADIUS, ns3::EARTH_SEMIMAJOR_AXIS, ns3::EARTH_WGS84_ECCENTRICITY, GRS80, NS_ASSERT_MSG, NS_LOG_FUNCTION, ns3::RAD2DEG, and SPHERE.
Referenced by CartesianToGeoTestCase::DoRun().
|
static |
Converts earth geographic/geodetic coordinates (latitude and longitude in degrees) with a given altitude above earth's surface (in meters) to Earth Centered Earth Fixed (ECEF) Cartesian coordinates (x, y, z in meters), where origin (0, 0, 0) is the center of the earth.
latitude | earth-referenced latitude (in degrees) of the point |
longitude | earth-referenced longitude (in degrees) of the point |
altitude | height of the point (in meters) above earth's surface |
sphType | earth spheroid model to use for conversion |
Definition at line 61 of file geographic-positions.cc.
References ns3::DEG2RAD, ns3::EARTH_GRS80_ECCENTRICITY, ns3::EARTH_RADIUS, ns3::EARTH_SEMIMAJOR_AXIS, ns3::EARTH_WGS84_ECCENTRICITY, GRS80, NS_LOG_FUNCTION_NOARGS, and SPHERE.
Referenced by GeoToCartesianTestCase::DoRun(), CartesianToGeoTestCase::DoRun(), RandCartAroundGeoTestCase::DoRun(), and RandCartesianPointsAroundGeographicPoint().
|
static |
Generates uniformly distributed random points (in ECEF Cartesian coordinates) within a given altitude above earth's surface centered around a given origin point (on earth's surface, in geographic/geodetic coordinates) within a given distance radius (using arc length of earth's surface, not pythagorean distance).
Distance radius is measured as if all generated points are on earth's surface (with altitude = 0). Assumes earth is a perfect sphere.
originLatitude | origin point latitude in degrees |
originLongitude | origin point longitude in degrees |
maxAltitude | maximum altitude in meters above earth's surface with which random points can be generated |
numPoints | number of points to generate |
maxDistFromOrigin | max distance in meters from origin with which random transmitters can be generated (all transmitters are less than or equal to this distance from the origin, relative to points being on earth's surface) |
uniRand | pointer to the uniform random variable to use for random location and altitude generation |
Definition at line 169 of file geographic-positions.cc.
References ns3::DEG2RAD, ns3::EARTH_RADIUS, GeographicToCartesianCoordinates(), NS_LOG_FUNCTION_NOARGS, NS_LOG_WARN, ns3::RAD2DEG, and SPHERE.
Referenced by ns3::TvSpectrumTransmitterHelper::CreateRegionalTvTransmitters(), and RandCartAroundGeoTestCase::DoRun().