LuciadCPillar 2024.0.08
|
Provides geodesy calculations. More...
#include <luciad/geodesy/GeodesyCalculations.h>
Public Member Functions | |
virtual | ~GeodesyCalculations ()=default |
virtual std::optional< double > | distance2D (const Coordinate &p1, const Coordinate &p2)=0 |
Calculates the distance to go from point p1 to point p2. More... | |
virtual std::optional< double > | distance3D (const Coordinate &p1, const Coordinate &p2)=0 |
Calculates the distance to go from point p1 to point p2. More... | |
virtual std::optional< Coordinate > | extrapolate2D (const Coordinate &p1, luciad::Azimuth azimuth, double distance)=0 |
Determines the point located in the given direction and distance from point p1. More... | |
virtual std::optional< luciad::Azimuth > | forwardAzimuth2D (const Coordinate &p1, const Coordinate &p2)=0 |
Calculates the forward azimuth to go from point p1 to point p2. More... | |
virtual std::optional< Coordinate > | interpolate (const Coordinate &p1, const Coordinate &p2, double fraction)=0 |
Calculates the point at a fraction of the distance (over ground) between point p1 and point p2. More... | |
Static Public Member Functions | |
static std::shared_ptr< luciad::GeodesyCalculations > | create (std::shared_ptr< luciad::CoordinateReference > reference, luciad::LineInterpolationType lineType) |
Factory to create geodesy implementations for a given coordinate reference and line type. More... | |
Provides geodesy calculations.
All methods return an optional value. As transformations may be involved during the calculations, there may not always be a result.
|
virtualdefault |
|
static |
Factory to create geodesy implementations for a given coordinate reference and line type.
The reference can be ellipsoidal or cartesian.
The following table shows which combinations of coordinate references and line types are supported by the factory.
Coordinate Reference | Linear | Geodesic | Rhumbline |
---|---|---|---|
Geographic CRS | yes | yes | yes |
Projected CRS | yes | yes | yes |
Geocentric CRS | yes | yes | yes |
non-georeferenced | no | no | no |
The calculations are performed on the ellipsoid associated with the coordinate reference. Points are first transformed to the ellipsoid coordinates to perform the calculation. Results are transformed back to the coordinate reference.
The standard cartesian implementation of the methods. No specific (point) transformations are done.
Performs cartesian calculations on the geographic points. The implementation takes following characteristics of geographic coordinates into account:
reference | the coordinate reference on which to perform the geodesy calculations, cannot be nullptr . |
lineType | the type of interpolation for the lines. |
InvalidArgumentException | when no GeodesyCalculations can be created. This may be due to an unsupported combination of reference and line interpolation type or when the coordinate reference is nullptr . |
|
pure virtual |
Calculates the distance to go from point p1 to point p2.
This is the distance over ground. The height information is ignored.
This method can return std::nullopt
when the distance can not be calculated. This can happen in these cases:
LineInterpolationType
, the input coordinate may need to be converted to geodetic coordinates first when the input reference is not geodetic. This is not always possible, for example when the input points are outside the projection bounds of the input reference.p1 | The start point. |
p2 | The end point. |
std::nullopt
.
|
pure virtual |
Calculates the distance to go from point p1 to point p2.
The distance calculations take the heights of the given points into account.
This method can return std::nullopt
when the distance can not be calculated. This can happen in these cases:
LineInterpolationType
, the input coordinate may need to be converted to geodetic coordinates first when the input reference is not geodetic. This is not always possible, for example when the input points are outside the projection bounds of the input reference.p1 | The start point. |
p2 | The end point. |
std::nullopt
.
|
pure virtual |
Determines the point located in the given direction and distance from point p1.
The height information is assumed to be constant.
This method can return std::nullopt
. This can happen in these cases:
LineInterpolationType
, the input coordinate may need to be converted to geodetic coordinates first when the input reference is not geodetic. This is not always possible, for example when the input points are outside the projection bounds of the input reference.p1 | The start point. |
azimuth | The forward azimuth. |
distance | The distance (over ground). |
std::nullopt
.
|
pure virtual |
Calculates the forward azimuth to go from point p1 to point p2.
This method can return std::nullopt
when the azimuth can not be calculated. This can happen in these cases:
LineInterpolationType
, the input coordinate may need to be converted to geodetic coordinates first when the input reference is not geodetic. This is not always possible, for example when the input points are outside the projection bounds of the input reference.p1 | The start point. |
p2 | The end point. |
std::nullopt
.
|
pure virtual |
Calculates the point at a fraction of the distance (over ground) between point p1 and point p2.
The height information is linearly interpolated.
This method can return std::nullopt
. This can happen in these cases:
LineInterpolationType
, the input coordinate may need to be converted to geodetic coordinates first when the input reference is not geodetic. This is not always possible, for example when the input points are outside the projection bounds of the input reference.p1 | The start point. |
p2 | The end point. |
fraction | The fraction value within the range [0,1] . |
[p1,p2]
, or std::nullopt
.