cs namespace

namespace cs

Coordinate systems and their axis.

osgeo.proj.cs namespace

Typedefs

using MeridianPtr = std::shared_ptr<Meridian>

Shared pointer of Meridian.

using MeridianNNPtr = util::nn<MeridianPtr>

Non-null shared pointer of Meridian.

using CoordinateSystemAxisPtr = std::shared_ptr<CoordinateSystemAxis>

Shared pointer of CoordinateSystemAxis.

using CoordinateSystemAxisNNPtr = util::nn<CoordinateSystemAxisPtr>

Non-null shared pointer of CoordinateSystemAxis.

typedef std::shared_ptr<CoordinateSystem> CoordinateSystemPtr

Shared pointer of CoordinateSystem.

typedef util::nn<CoordinateSystemPtr> CoordinateSystemNNPtr

Non-null shared pointer of CoordinateSystem.

using SphericalCSPtr = std::shared_ptr<SphericalCS>

Shared pointer of SphericalCS.

using SphericalCSNNPtr = util::nn<SphericalCSPtr>

Non-null shared pointer of SphericalCS.

using EllipsoidalCSPtr = std::shared_ptr<EllipsoidalCS>

Shared pointer of EllipsoidalCS.

using EllipsoidalCSNNPtr = util::nn<EllipsoidalCSPtr>

Non-null shared pointer of EllipsoidalCS.

using VerticalCSPtr = std::shared_ptr<VerticalCS>

Shared pointer of VerticalCS.

using VerticalCSNNPtr = util::nn<VerticalCSPtr>

Non-null shared pointer of VerticalCS.

using CartesianCSPtr = std::shared_ptr<CartesianCS>

Shared pointer of CartesianCS.

using CartesianCSNNPtr = util::nn<CartesianCSPtr>

Non-null shared pointer of CartesianCS.

using OrdinalCSPtr = std::shared_ptr<OrdinalCS>

Shared pointer of OrdinalCS.

using OrdinalCSNNPtr = util::nn<OrdinalCSPtr>

Non-null shared pointer of OrdinalCS.

using ParametricCSPtr = std::shared_ptr<ParametricCS>

Shared pointer of ParametricCS.

using ParametricCSNNPtr = util::nn<ParametricCSPtr>

Non-null shared pointer of ParametricCS.

using TemporalCSPtr = std::shared_ptr<TemporalCS>

Shared pointer of TemporalCS.

using TemporalCSNNPtr = util::nn<TemporalCSPtr>

Non-null shared pointer of TemporalCS.

using DateTimeTemporalCSPtr = std::shared_ptr<DateTimeTemporalCS>

Shared pointer of DateTimeTemporalCS.

using DateTimeTemporalCSNNPtr = util::nn<DateTimeTemporalCSPtr>

Non-null shared pointer of DateTimeTemporalCS.

using TemporalCountCSPtr = std::shared_ptr<TemporalCountCS>

Shared pointer of TemporalCountCS.

using TemporalCountCSNNPtr = util::nn<TemporalCountCSPtr>

Non-null shared pointer of TemporalCountCS.

using TemporalMeasureCSPtr = std::shared_ptr<TemporalMeasureCS>

Shared pointer of TemporalMeasureCS.

using TemporalMeasureCSNNPtr = util::nn<TemporalMeasureCSPtr>

Non-null shared pointer of TemporalMeasureCS.

class AxisDirection : public osgeo::proj::util::CodeList
#include <coordinatesystem.hpp>

The direction of positive increase in the coordinate value for a coordinate system axis.

Remark
Implements AxisDirection from ISO_19111_2018

Public Static Attributes

const AxisDirection NORTH

Axis positive direction is north. In a geodetic or projected CRS, north is defined through the geodetic reference frame. In an engineering CRS, north may be defined with respect to an engineering object rather than a geographical direction.

const AxisDirection NORTH_NORTH_EAST

Axis positive direction is approximately north-north-east.

const AxisDirection NORTH_EAST

Axis positive direction is approximately north-east.

const AxisDirection EAST_NORTH_EAST

Axis positive direction is approximately east-north-east.

const AxisDirection EAST

Axis positive direction is 90deg clockwise from north.

const AxisDirection EAST_SOUTH_EAST

Axis positive direction is approximately east-south-east.

const AxisDirection SOUTH_EAST

Axis positive direction is approximately south-east.

const AxisDirection SOUTH_SOUTH_EAST

Axis positive direction is approximately south-south-east.

const AxisDirection SOUTH

Axis positive direction is 180deg clockwise from north.

const AxisDirection SOUTH_SOUTH_WEST

Axis positive direction is approximately south-south-west.

const AxisDirection SOUTH_WEST

Axis positive direction is approximately south-west.

const AxisDirection WEST_SOUTH_WEST

Axis positive direction is approximately west-south-west.

const AxisDirection WEST

Axis positive direction is 270deg clockwise from north.

const AxisDirection WEST_NORTH_WEST

Axis positive direction is approximately west-north-west.

const AxisDirection NORTH_WEST

Axis positive direction is approximately north-west.

const AxisDirection NORTH_NORTH_WEST

Axis positive direction is approximately north-north-west.

const AxisDirection UP

Axis positive direction is up relative to gravity.

const AxisDirection DOWN

Axis positive direction is down relative to gravity.

const AxisDirection GEOCENTRIC_X

Axis positive direction is in the equatorial plane from the centre of the modelled Earth towards the intersection of the equator with the prime meridian.

const AxisDirection GEOCENTRIC_Y

Axis positive direction is in the equatorial plane from the centre of the modelled Earth towards the intersection of the equator and the meridian 90deg eastwards from the prime meridian.

const AxisDirection GEOCENTRIC_Z

Axis positive direction is from the centre of the modelled Earth parallel to its rotation axis and towards its north pole.

const AxisDirection COLUMN_POSITIVE

Axis positive direction is towards higher pixel column.

const AxisDirection COLUMN_NEGATIVE

Axis positive direction is towards lower pixel column.

const AxisDirection ROW_POSITIVE

Axis positive direction is towards higher pixel row.

const AxisDirection ROW_NEGATIVE

Axis positive direction is towards lower pixel row.

const AxisDirection DISPLAY_RIGHT

Axis positive direction is right in display.

const AxisDirection DISPLAY_LEFT

Axis positive direction is left in display.

const AxisDirection DISPLAY_UP

Axis positive direction is towards top of approximately vertical display surface.

const AxisDirection DISPLAY_DOWN

Axis positive direction is towards bottom of approximately vertical display surface.

const AxisDirection FORWARD

Axis positive direction is forward; for an observer at the centre of the object this is will be towards its front, bow or nose.

const AxisDirection AFT

Axis positive direction is aft; for an observer at the centre of the object this will be towards its back, stern or tail.

const AxisDirection PORT

Axis positive direction is port; for an observer at the centre of the object this will be towards its left.

const AxisDirection STARBOARD

Axis positive direction is starboard; for an observer at the centre of the object this will be towards its right.

const AxisDirection CLOCKWISE

Axis positive direction is clockwise from a specified direction.

const AxisDirection COUNTER_CLOCKWISE

Axis positive direction is counter clockwise from a specified direction.

const AxisDirection TOWARDS

Axis positive direction is towards the object.

const AxisDirection AWAY_FROM

Axis positive direction is away from the object.

const AxisDirection FUTURE

Temporal axis positive direction is towards the future.

const AxisDirection PAST

Temporal axis positive direction is towards the past.

const AxisDirection UNSPECIFIED

Axis positive direction is unspecified.

class CartesianCS : public osgeo::proj::cs::CoordinateSystem
#include <coordinatesystem.hpp>

A two- or three-dimensional coordinate system in Euclidean space with orthogonal straight axes.

All axes shall have the same length unit. A CartesianCS shall have two or three axis associations; the number of associations shall equal the dimension of the CS.

Remark
Implements CartesianCS from ISO_19111_2018

Public Static Functions

CartesianCSNNPtr create(const util::PropertyMap &properties, const CoordinateSystemAxisNNPtr &axis1, const CoordinateSystemAxisNNPtr &axis2)

Instanciate a CartesianCS.

Return
a new CartesianCS.
Parameters

CartesianCSNNPtr create(const util::PropertyMap &properties, const CoordinateSystemAxisNNPtr &axis1, const CoordinateSystemAxisNNPtr &axis2, const CoordinateSystemAxisNNPtr &axis3)

Instanciate a CartesianCS.

Return
a new CartesianCS.
Parameters
  • properties: See general_properties.
  • axis1: The first axis.
  • axis2: The second axis.
  • axis3: The third axis.

CartesianCSNNPtr createEastingNorthing(const common::UnitOfMeasure &unit)

Instanciate a CartesianCS with a Easting (first) and Northing (second) axis.

Return
a new CartesianCS.
Parameters
  • unit: Linear unit of the axes.

CartesianCSNNPtr createGeocentric(const common::UnitOfMeasure &unit)

Instanciate a CartesianCS with the three geocentric axes.

Return
a new CartesianCS.
Parameters
  • unit: Liinear unit of the axes.

class CoordinateSystem : public osgeo::proj::common::IdentifiedObject, public osgeo::proj::io::IWKTExportable
#include <coordinatesystem.hpp>

Abstract class modelling a coordinate system (CS)

A CS is the non-repeating sequence of coordinate system axes that spans a given coordinate space. A CS is derived from a set of mathematical rules for specifying how coordinates in a given space are to be assigned to points. The coordinate values in a coordinate tuple shall be recorded in the order in which the coordinate system axes associations are recorded.

Remark
Implements CoordinateSystem from ISO_19111_2018

Subclassed by osgeo::proj::cs::CartesianCS, osgeo::proj::cs::EllipsoidalCS, osgeo::proj::cs::OrdinalCS, osgeo::proj::cs::ParametricCS, osgeo::proj::cs::SphericalCS, osgeo::proj::cs::TemporalCS, osgeo::proj::cs::VerticalCS

Public Functions

const std::vector<CoordinateSystemAxisNNPtr> &axisList()

Return the list of axes of this coordinate system.

Return
the axes.

bool isEquivalentTo(const util::IComparable *other, util::IComparable::Criterion criterion = util::IComparable::Criterion::STRICT) const

Returns whether an object is equivalent to another one.

Return
true if objects are equivalent.
Parameters
  • other: other object to compare to
  • criterion: comparaison criterion.

class CoordinateSystemAxis : public osgeo::proj::common::IdentifiedObject, public osgeo::proj::io::IWKTExportable
#include <coordinatesystem.hpp>

The definition of a coordinate system axis.

Remark
Implements CoordinateSystemAxis from ISO_19111_2018

Public Functions

const std::string &abbreviation()

Return the axis abbreviation.

The abbreviation used for this coordinate system axis; this abbreviation is also used to identify the coordinates in the coordinate tuple. Examples are X and Y.

Return
the abbreviation.

const AxisDirection &direction()

Return the axis direction.

The direction of this coordinate system axis (or in the case of Cartesian projected coordinates, the direction of this coordinate system axis locally) Examples: north or south, east or west, up or down. Within any set of coordinate system axes, only one of each pair of terms can be used. For Earth-fixed CRSs, this direction is often approximate and intended to provide a human interpretable meaning to the axis. When a geodetic reference frame is used, the precise directions of the axes may therefore vary slightly from this approximate direction. Note that an EngineeringCRS often requires specific descriptions of the directions of its coordinate system axes.

Return
the direction.

const common::UnitOfMeasure &unit()

Return the axis unit.

This is the spatial unit or temporal quantity used for this coordinate system axis. The value of a coordinate in a coordinate tuple shall be recorded using this unit.

Return
the axis unit.

const util::optional<double> &minimumValue()

Return the minimum value normally allowed for this axis, in the unit for the axis.

Return
the minimum value, or empty.

const util::optional<double> &maximumValue()

Return the maximum value normally allowed for this axis, in the unit for the axis.

Return
the maximum value, or empty.

const MeridianPtr &meridian()

Return the meridian that the axis follows from the pole, for a coordinate reference system centered on a pole.

Return
the meridian, or null.

bool isEquivalentTo(const util::IComparable *other, util::IComparable::Criterion criterion = util::IComparable::Criterion::STRICT) const

Returns whether an object is equivalent to another one.

Return
true if objects are equivalent.
Parameters
  • other: other object to compare to
  • criterion: comparaison criterion.

Public Static Functions

CoordinateSystemAxisNNPtr create(const util::PropertyMap &properties, const std::string &abbreviationIn, const AxisDirection &directionIn, const common::UnitOfMeasure &unitIn, const MeridianPtr &meridianIn = nullptr)

Instanciate a CoordinateSystemAxis.

Return
a new CoordinateSystemAxis.
Parameters
  • properties: See general_properties. The name should generally be defined.
  • abbreviationIn: Axis abbreviation (might be empty)
  • directionIn: Axis direction
  • unitIn: Axis unit
  • meridianIn: The meridian that the axis follows from the pole, for a coordinate reference system centered on a pole, or nullptr

class DateTimeTemporalCS : public osgeo::proj::cs::TemporalCS
#include <coordinatesystem.hpp>

A one-dimensional coordinate system used to record time in dateTime representation as defined in ISO 8601.

A DateTimeTemporalCS shall have one axis association. It does not use axisUnitID; the temporal quantities are defined through the ISO 8601 representation.

Remark
Implements DateTimeTemporalCS from ISO_19111_2018

Public Static Functions

DateTimeTemporalCSNNPtr create(const util::PropertyMap &properties, const CoordinateSystemAxisNNPtr &axis)

Instanciate a DateTimeTemporalCS.

Return
a new DateTimeTemporalCS.
Parameters

class EllipsoidalCS : public osgeo::proj::cs::CoordinateSystem
#include <coordinatesystem.hpp>

A two- or three-dimensional coordinate system in which position is specified by geodetic latitude, geodetic longitude, and (in the three-dimensional case) ellipsoidal height.

An EllipsoidalCS shall have two or three associations.

Remark
Implements EllipsoidalCS from ISO_19111_2018

Public Types

enum AxisOrder

Typical axis order.

Values:

LAT_NORTH_LONG_EAST

Latitude(North), Longitude(East)

LAT_NORTH_LONG_EAST_HEIGHT_UP

Latitude(North), Longitude(East), Height(up)

LONG_EAST_LAT_NORTH

Longitude(East), Latitude(North)

LONG_EAST_LAT_NORTH_HEIGHT_UP

Longitude(East), Latitude(North), Height(up)

OTHER

Other axis order.

Public Functions

EllipsoidalCS::AxisOrder axisOrder() const

Return the axis order in an enumerated way.

Public Static Functions

EllipsoidalCSNNPtr create(const util::PropertyMap &properties, const CoordinateSystemAxisNNPtr &axis1, const CoordinateSystemAxisNNPtr &axis2)

Instanciate a EllipsoidalCS.

Return
a new EllipsoidalCS.
Parameters

EllipsoidalCSNNPtr create(const util::PropertyMap &properties, const CoordinateSystemAxisNNPtr &axis1, const CoordinateSystemAxisNNPtr &axis2, const CoordinateSystemAxisNNPtr &axis3)

Instanciate a EllipsoidalCS.

Return
a new EllipsoidalCS.
Parameters
  • properties: See general_properties.
  • axis1: The first axis.
  • axis2: The second axis.
  • axis3: The third axis.

EllipsoidalCSNNPtr createLatitudeLongitude(const common::UnitOfMeasure &unit)

Instanciate a EllipsoidalCS with a Latitude (first) and Longitude (second) axis.

Return
a new EllipsoidalCS.
Parameters
  • unit: Angular unit of the axes.

EllipsoidalCSNNPtr createLatitudeLongitudeEllipsoidalHeight(const common::UnitOfMeasure &angularUnit, const common::UnitOfMeasure &linearUnit)

Instanciate a EllipsoidalCS with a Latitude (first), Longitude (second) axis and ellipsoidal height (third) axis.

Return
a new EllipsoidalCS.
Parameters
  • angularUnit: Angular unit of the latitude and longitude axes.
  • linearUnit: Linear unit of the ellipsoidal height axis.

EllipsoidalCSNNPtr createLongitudeLatitude(const common::UnitOfMeasure &unit)

Instanciate a EllipsoidalCS with a Longitude (first) and Latitude (second) axis.

Return
a new EllipsoidalCS.
Parameters
  • unit: Angular unit of the axes.

class Meridian : public osgeo::proj::common::IdentifiedObject, public osgeo::proj::io::IWKTExportable
#include <coordinatesystem.hpp>

The meridian that the axis follows from the pole, for a coordinate reference system centered on a pole.

Note
There is no modelling for this concept in ISO_19111_2018
Remark
Implements MERIDIAN from WKT2

Public Functions

const common::Angle &longitude()

Return the longitude of the meridian that the axis follows from the pole.

Return
the longitude.

Public Static Functions

MeridianNNPtr create(const common::Angle &longitudeIn)

Instanciate a Meridian.

Return
new Meridian.
Parameters
  • longitudeIn: longitude of the meridian that the axis follows from the pole.

class OrdinalCS : public osgeo::proj::cs::CoordinateSystem
#include <coordinatesystem.hpp>

n-dimensional coordinate system in which every axis uses integers.

The number of associations shall equal the dimension of the CS.

Remark
Implements OrdinalCS from ISO_19111_2018

Public Static Functions

OrdinalCSNNPtr create(const util::PropertyMap &properties, const std::vector<CoordinateSystemAxisNNPtr> &axisIn)

Instanciate a OrdinalCS.

Return
a new OrdinalCS.
Parameters

class ParametricCS : public osgeo::proj::cs::CoordinateSystem
#include <coordinatesystem.hpp>

one-dimensional coordinate reference system which uses parameter values or functions that may vary monotonically with height.

Remark
Implements ParametricCS from ISO_19111_2018

Public Static Functions

ParametricCSNNPtr create(const util::PropertyMap &properties, const CoordinateSystemAxisNNPtr &axisIn)

Instanciate a ParametricCS.

Return
a new ParametricCS.
Parameters

class SphericalCS : public osgeo::proj::cs::CoordinateSystem
#include <coordinatesystem.hpp>

A three-dimensional coordinate system in Euclidean space with one distance measured from the origin and two angular coordinates.

Not to be confused with an ellipsoidal coordinate system based on an ellipsoid “degenerated” into a sphere. A SphericalCS shall have three axis associations.

Remark
Implements SphericalCS from ISO_19111_2018

Public Static Functions

SphericalCSNNPtr create(const util::PropertyMap &properties, const CoordinateSystemAxisNNPtr &axis1, const CoordinateSystemAxisNNPtr &axis2, const CoordinateSystemAxisNNPtr &axis3)

Instanciate a SphericalCS.

Return
a new SphericalCS.
Parameters
  • properties: See general_properties.
  • axis1: The first axis.
  • axis2: The second axis.
  • axis3: The third axis.

class TemporalCountCS : public osgeo::proj::cs::TemporalCS
#include <coordinatesystem.hpp>

A one-dimensional coordinate system used to record time as an integer count.

A TemporalCountCS shall have one axis association.

Remark
Implements TemporalCountCS from ISO_19111_2018

Public Static Functions

TemporalCountCSNNPtr create(const util::PropertyMap &properties, const CoordinateSystemAxisNNPtr &axis)

Instanciate a TemporalCountCS.

Return
a new TemporalCountCS.
Parameters

class TemporalCS : public osgeo::proj::cs::CoordinateSystem
#include <coordinatesystem.hpp>

(Abstract class) A one-dimensional coordinate system used to record time.

A TemporalCS shall have one axis association.

Remark
Implements TemporalCS from ISO_19111_2018

Subclassed by osgeo::proj::cs::DateTimeTemporalCS, osgeo::proj::cs::TemporalCountCS, osgeo::proj::cs::TemporalMeasureCS

class TemporalMeasureCS : public osgeo::proj::cs::TemporalCS
#include <coordinatesystem.hpp>

A one-dimensional coordinate system used to record a time as a real number.

A TemporalMeasureCS shall have one axis association.

Remark
Implements TemporalMeasureCS from ISO_19111_2018

Public Static Functions

TemporalMeasureCSNNPtr create(const util::PropertyMap &properties, const CoordinateSystemAxisNNPtr &axis)

Instanciate a TemporalMeasureCS.

Return
a new TemporalMeasureCS.
Parameters

class VerticalCS : public osgeo::proj::cs::CoordinateSystem
#include <coordinatesystem.hpp>

A one-dimensional coordinate system used to record the heights or depths of points.

Such a coordinate system is usually dependent on the Earth’s gravity field. A VerticalCS shall have one axis association.

Remark
Implements VerticalCS from ISO_19111_2018

Public Static Functions

VerticalCSNNPtr create(const util::PropertyMap &properties, const CoordinateSystemAxisNNPtr &axis)

Instanciate a VerticalCS.

Return
a new VerticalCS.
Parameters

VerticalCSNNPtr createGravityRelatedHeight(const common::UnitOfMeasure &unit)

Instanciate a VerticalCS with a Gravity-related height axis.

Return
a new VerticalCS.
Parameters
  • unit: linear unit.