cs namespace

namespace osgeo::proj::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:2019

Public Static Attributes

static 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.

static const AxisDirection NORTH_NORTH_EAST

Axis positive direction is approximately north-north-east.

static const AxisDirection NORTH_EAST

Axis positive direction is approximately north-east.

static const AxisDirection EAST_NORTH_EAST

Axis positive direction is approximately east-north-east.

static const AxisDirection EAST

Axis positive direction is 90deg clockwise from north.

static const AxisDirection EAST_SOUTH_EAST

Axis positive direction is approximately east-south-east.

static const AxisDirection SOUTH_EAST

Axis positive direction is approximately south-east.

static const AxisDirection SOUTH_SOUTH_EAST

Axis positive direction is approximately south-south-east.

static const AxisDirection SOUTH

Axis positive direction is 180deg clockwise from north.

static const AxisDirection SOUTH_SOUTH_WEST

Axis positive direction is approximately south-south-west.

static const AxisDirection SOUTH_WEST

Axis positive direction is approximately south-west.

static const AxisDirection WEST_SOUTH_WEST

Axis positive direction is approximately west-south-west.

static const AxisDirection WEST

Axis positive direction is 270deg clockwise from north.

static const AxisDirection WEST_NORTH_WEST

Axis positive direction is approximately west-north-west.

static const AxisDirection NORTH_WEST

Axis positive direction is approximately north-west.

static const AxisDirection NORTH_NORTH_WEST

Axis positive direction is approximately north-north-west.

static const AxisDirection UP

Axis positive direction is up relative to gravity.

static const AxisDirection DOWN

Axis positive direction is down relative to gravity.

static 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.

static 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.

static 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.

static const AxisDirection COLUMN_POSITIVE

Axis positive direction is towards higher pixel column.

static const AxisDirection COLUMN_NEGATIVE

Axis positive direction is towards lower pixel column.

static const AxisDirection ROW_POSITIVE

Axis positive direction is towards higher pixel row.

static const AxisDirection ROW_NEGATIVE

Axis positive direction is towards lower pixel row.

static const AxisDirection DISPLAY_RIGHT

Axis positive direction is right in display.

static const AxisDirection DISPLAY_LEFT

Axis positive direction is left in display.

static const AxisDirection DISPLAY_UP

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

static const AxisDirection DISPLAY_DOWN

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

static 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.

static 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.

static const AxisDirection PORT

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

static const AxisDirection STARBOARD

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

static const AxisDirection CLOCKWISE

Axis positive direction is clockwise from a specified direction.

static const AxisDirection COUNTER_CLOCKWISE

Axis positive direction is counter clockwise from a specified direction.

static const AxisDirection TOWARDS

Axis positive direction is towards the object.

static const AxisDirection AWAY_FROM

Axis positive direction is away from the object.

static const AxisDirection FUTURE

Temporal axis positive direction is towards the future.

static const AxisDirection PAST

Temporal axis positive direction is towards the past.

static const AxisDirection UNSPECIFIED

Axis positive direction is unspecified.

class Meridian : public osgeo::proj::common::IdentifiedObject
#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:2019

Remark

Implements MERIDIAN from WKT2 standard

Public Functions

const common::Angle &longitude()

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

Returns

the longitude.

Public Static Functions

static MeridianNNPtr create(const common::Angle &longitudeIn)

Instantiate a Meridian.

Parameters

longitudeIn – longitude of the meridian that the axis follows from the pole.

Returns

new Meridian.

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

The definition of a coordinate system axis.

Remark

Implements CoordinateSystemAxis from ISO 19111:2019

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.

Returns

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.

Returns

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.

Returns

the axis unit.

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

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

Returns

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.

Returns

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.

Returns

the meridian, or null.

Public Static Functions

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

Instantiate a 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

Returns

a new CoordinateSystemAxis.

class CoordinateSystem : public osgeo::proj::common::IdentifiedObject, public osgeo::proj::io::IJSONExportable
#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:2019

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.

Returns

the axes.

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:2019

Public Static Functions

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

Instantiate a SphericalCS.

Parameters
  • properties – See General properties.

  • axis1 – The first axis.

  • axis2 – The second axis.

  • axis3 – The third axis.

Returns

a new SphericalCS.

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:2019

Public Static Functions

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

Instantiate a EllipsoidalCS.

Parameters
  • properties – See General properties.

  • axis1 – The first axis.

  • axis2 – The second axis.

Returns

a new EllipsoidalCS.

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

Instantiate a EllipsoidalCS.

Parameters
  • properties – See General properties.

  • axis1 – The first axis.

  • axis2 – The second axis.

  • axis3 – The third axis.

Returns

a new EllipsoidalCS.

static EllipsoidalCSNNPtr createLatitudeLongitude(const common::UnitOfMeasure &unit)

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

Parameters

unit – Angular unit of the axes.

Returns

a new EllipsoidalCS.

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

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

Parameters
  • angularUnit – Angular unit of the latitude and longitude axes.

  • linearUnit – Linear unit of the ellipsoidal height axis.

Returns

a new EllipsoidalCS.

static EllipsoidalCSNNPtr createLongitudeLatitude(const common::UnitOfMeasure &unit)

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

Parameters

unit – Angular unit of the axes.

Returns

a new EllipsoidalCS.

static EllipsoidalCSNNPtr createLongitudeLatitudeEllipsoidalHeight(const common::UnitOfMeasure &angularUnit, const common::UnitOfMeasure &linearUnit)

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

Since

7.0

Parameters
  • angularUnit – Angular unit of the latitude and longitude axes.

  • linearUnit – Linear unit of the ellipsoidal height axis.

Returns

a new EllipsoidalCS.

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:2019

Public Static Functions

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

Instantiate a VerticalCS.

Parameters
Returns

a new VerticalCS.

static VerticalCSNNPtr createGravityRelatedHeight(const common::UnitOfMeasure &unit)

Instantiate a VerticalCS with a Gravity-related height axis.

Parameters

unit – linear unit.

Returns

a new VerticalCS.

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:2019

Public Static Functions

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

Instantiate a CartesianCS.

Parameters
  • properties – See General properties.

  • axis1 – The first axis.

  • axis2 – The second axis.

Returns

a new CartesianCS.

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

Instantiate a CartesianCS.

Parameters
  • properties – See General properties.

  • axis1 – The first axis.

  • axis2 – The second axis.

  • axis3 – The third axis.

Returns

a new CartesianCS.

static CartesianCSNNPtr createEastingNorthing(const common::UnitOfMeasure &unit)

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

Parameters

unit – Linear unit of the axes.

Returns

a new CartesianCS.

static CartesianCSNNPtr createNorthingEasting(const common::UnitOfMeasure &unit)

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

Parameters

unit – Linear unit of the axes.

Returns

a new CartesianCS.

static CartesianCSNNPtr createNorthPoleEastingSouthNorthingSouth(const common::UnitOfMeasure &unit)

Instantiate a CartesianCS, north-pole centered, with a Easting (first) South-Oriented and Northing (second) South-Oriented axis.

Parameters

unit – Linear unit of the axes.

Returns

a new CartesianCS.

static CartesianCSNNPtr createSouthPoleEastingNorthNorthingNorth(const common::UnitOfMeasure &unit)

Instantiate a CartesianCS, south-pole centered, with a Easting (first) North-Oriented and Northing (second) North-Oriented axis.

Parameters

unit – Linear unit of the axes.

Returns

a new CartesianCS.

static CartesianCSNNPtr createWestingSouthing(const common::UnitOfMeasure &unit)

Instantiate a CartesianCS with a Westing (first) and Southing (second) axis.

Parameters

unit – Linear unit of the axes.

Returns

a new CartesianCS.

static CartesianCSNNPtr createGeocentric(const common::UnitOfMeasure &unit)

Instantiate a CartesianCS with the three geocentric axes.

Parameters

unit – Linear unit of the axes.

Returns

a new CartesianCS.

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:2019

Public Static Functions

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

Instantiate a OrdinalCS.

Parameters
Returns

a new OrdinalCS.

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:2019

Public Static Functions

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

Instantiate a ParametricCS.

Parameters
Returns

a new ParametricCS.

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:2019

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

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:2019

Public Static Functions

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

Instantiate a DateTimeTemporalCS.

Parameters
Returns

a new DateTimeTemporalCS.

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:2019

Public Static Functions

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

Instantiate a TemporalCountCS.

Parameters
Returns

a new TemporalCountCS.

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:2019

Public Static Functions

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

Instantiate a TemporalMeasureCS.

Parameters
Returns

a new TemporalMeasureCS.