diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2018-12-19 12:25:33 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2018-12-26 10:08:54 +0100 |
| commit | e6de172371ea203f6393d745641d66c82b5b13e2 (patch) | |
| tree | 791fa07f431a2d1db6f6e813ab984db982587278 /src/iso19111/static.cpp | |
| parent | ce8075076b4e4ffebd32afaba419e1d9ab27cd03 (diff) | |
| download | PROJ-e6de172371ea203f6393d745641d66c82b5b13e2.tar.gz PROJ-e6de172371ea203f6393d745641d66c82b5b13e2.zip | |
cpp conversion: move source files in apps/ iso19111/ conversions/ projections/ transformations/ tests/ subdirectories
Diffstat (limited to 'src/iso19111/static.cpp')
| -rw-r--r-- | src/iso19111/static.cpp | 644 |
1 files changed, 644 insertions, 0 deletions
diff --git a/src/iso19111/static.cpp b/src/iso19111/static.cpp new file mode 100644 index 00000000..5de046f1 --- /dev/null +++ b/src/iso19111/static.cpp @@ -0,0 +1,644 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot com> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#define FROM_PROJ_CPP +#endif + +#include "proj/common.hpp" +#include "proj/coordinatesystem.hpp" +#include "proj/crs.hpp" +#include "proj/datum.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +#include "proj/internal/coordinatesystem_internal.hpp" +#include "proj/internal/io_internal.hpp" + +#include <map> +#include <set> +#include <string> + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +// We put all static definitions in the same compilation unit, and in +// increasing order of dependency, to avoid the "static initialization fiasco" +// See https://isocpp.org/wiki/faq/ctors#static-init-order + +using namespace NS_PROJ::crs; +using namespace NS_PROJ::datum; +using namespace NS_PROJ::io; +using namespace NS_PROJ::metadata; +using namespace NS_PROJ::util; + +NS_PROJ_START + +// --------------------------------------------------------------------------- + +/** \brief Key to set the authority citation of a metadata::Identifier. + * + * The value is to be provided as a string or a metadata::Citation. + */ +const std::string Identifier::AUTHORITY_KEY("authority"); + +/** \brief Key to set the code of a metadata::Identifier. + * + * The value is to be provided as a integer or a string. + */ +const std::string Identifier::CODE_KEY("code"); + +/** \brief Key to set the organization responsible for definition and + * maintenance of the code of a metadata::Identifier. + * + * The value is to be provided as a string. + */ +const std::string Identifier::CODESPACE_KEY("codespace"); + +/** \brief Key to set the version identifier for the namespace of a + * metadata::Identifier. + * + * The value is to be provided as a string. + */ +const std::string Identifier::VERSION_KEY("version"); + +/** \brief Key to set the natural language description of the meaning of the + * code value of a metadata::Identifier. + * + * The value is to be provided as a string. + */ +const std::string Identifier::DESCRIPTION_KEY("description"); + +/** \brief Key to set the URI of a metadata::Identifier. + * + * The value is to be provided as a string. + */ +const std::string Identifier::URI_KEY("uri"); + +/** \brief EPSG codespace. + */ +const std::string Identifier::EPSG("EPSG"); + +/** \brief OGC codespace. + */ +const std::string Identifier::OGC("OGC"); + +// --------------------------------------------------------------------------- + +/** \brief Key to set the name of a common::IdentifiedObject + * + * The value is to be provided as a string or metadata::IdentifierNNPtr. + */ +const std::string common::IdentifiedObject::NAME_KEY("name"); + +/** \brief Key to set the identifier(s) of a common::IdentifiedObject + * + * The value is to be provided as a common::IdentifierNNPtr or a + * util::ArrayOfBaseObjectNNPtr + * of common::IdentifierNNPtr. + */ +const std::string common::IdentifiedObject::IDENTIFIERS_KEY("identifiers"); + +/** \brief Key to set the alias(es) of a common::IdentifiedObject + * + * The value is to be provided as string, a util::GenericNameNNPtr or a + * util::ArrayOfBaseObjectNNPtr + * of util::GenericNameNNPtr. + */ +const std::string common::IdentifiedObject::ALIAS_KEY("alias"); + +/** \brief Key to set the remarks of a common::IdentifiedObject + * + * The value is to be provided as a string. + */ +const std::string common::IdentifiedObject::REMARKS_KEY("remarks"); + +/** \brief Key to set the deprecation flag of a common::IdentifiedObject + * + * The value is to be provided as a boolean. + */ +const std::string common::IdentifiedObject::DEPRECATED_KEY("deprecated"); + +// --------------------------------------------------------------------------- + +/** \brief Key to set the scope of a common::ObjectUsage + * + * The value is to be provided as a string. + */ +const std::string common::ObjectUsage::SCOPE_KEY("scope"); + +/** \brief Key to set the domain of validity of a common::ObjectUsage + * + * The value is to be provided as a common::ExtentNNPtr. + */ +const std::string + common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY("domainOfValidity"); + +/** \brief Key to set the object domain(s) of a common::ObjectUsage + * + * The value is to be provided as a common::ObjectDomainNNPtr or a + * util::ArrayOfBaseObjectNNPtr + * of common::ObjectDomainNNPtr. + */ +const std::string common::ObjectUsage::OBJECT_DOMAIN_KEY("objectDomain"); + +// --------------------------------------------------------------------------- + +/** \brief World extent. */ +const ExtentNNPtr + Extent::WORLD(Extent::createFromBBOX(-180, -90, 180, 90, + util::optional<std::string>("World"))); + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +std::vector<std::string> WKTConstants::constants_; + +const char *WKTConstants::createAndAddToConstantList(const char *text) { + WKTConstants::constants_.push_back(text); + return text; +} + +#define DEFINE_WKT_CONSTANT(x) \ + const std::string WKTConstants::x(createAndAddToConstantList(#x)) + +DEFINE_WKT_CONSTANT(GEOCCS); +DEFINE_WKT_CONSTANT(GEOGCS); +DEFINE_WKT_CONSTANT(DATUM); +DEFINE_WKT_CONSTANT(UNIT); +DEFINE_WKT_CONSTANT(SPHEROID); +DEFINE_WKT_CONSTANT(AXIS); +DEFINE_WKT_CONSTANT(PRIMEM); +DEFINE_WKT_CONSTANT(AUTHORITY); +DEFINE_WKT_CONSTANT(PROJCS); +DEFINE_WKT_CONSTANT(PROJECTION); +DEFINE_WKT_CONSTANT(PARAMETER); +DEFINE_WKT_CONSTANT(VERT_CS); +DEFINE_WKT_CONSTANT(VERT_DATUM); +DEFINE_WKT_CONSTANT(COMPD_CS); +DEFINE_WKT_CONSTANT(TOWGS84); +DEFINE_WKT_CONSTANT(EXTENSION); +DEFINE_WKT_CONSTANT(LOCAL_CS); +DEFINE_WKT_CONSTANT(LOCAL_DATUM); + +DEFINE_WKT_CONSTANT(GEODCRS); +DEFINE_WKT_CONSTANT(LENGTHUNIT); +DEFINE_WKT_CONSTANT(ANGLEUNIT); +DEFINE_WKT_CONSTANT(SCALEUNIT); +DEFINE_WKT_CONSTANT(TIMEUNIT); +DEFINE_WKT_CONSTANT(ELLIPSOID); +DEFINE_WKT_CONSTANT(CS); +DEFINE_WKT_CONSTANT(ID); +DEFINE_WKT_CONSTANT(PROJCRS); +DEFINE_WKT_CONSTANT(BASEGEODCRS); +DEFINE_WKT_CONSTANT(MERIDIAN); +DEFINE_WKT_CONSTANT(ORDER); +DEFINE_WKT_CONSTANT(ANCHOR); +DEFINE_WKT_CONSTANT(CONVERSION); +DEFINE_WKT_CONSTANT(METHOD); +DEFINE_WKT_CONSTANT(REMARK); +DEFINE_WKT_CONSTANT(GEOGCRS); +DEFINE_WKT_CONSTANT(BASEGEOGCRS); +DEFINE_WKT_CONSTANT(SCOPE); +DEFINE_WKT_CONSTANT(AREA); +DEFINE_WKT_CONSTANT(BBOX); +DEFINE_WKT_CONSTANT(CITATION); +DEFINE_WKT_CONSTANT(URI); +DEFINE_WKT_CONSTANT(VERTCRS); +DEFINE_WKT_CONSTANT(VDATUM); +DEFINE_WKT_CONSTANT(COMPOUNDCRS); +DEFINE_WKT_CONSTANT(PARAMETERFILE); +DEFINE_WKT_CONSTANT(COORDINATEOPERATION); +DEFINE_WKT_CONSTANT(SOURCECRS); +DEFINE_WKT_CONSTANT(TARGETCRS); +DEFINE_WKT_CONSTANT(INTERPOLATIONCRS); +DEFINE_WKT_CONSTANT(OPERATIONACCURACY); +DEFINE_WKT_CONSTANT(CONCATENATEDOPERATION); +DEFINE_WKT_CONSTANT(STEP); +DEFINE_WKT_CONSTANT(BOUNDCRS); +DEFINE_WKT_CONSTANT(ABRIDGEDTRANSFORMATION); +DEFINE_WKT_CONSTANT(DERIVINGCONVERSION); +DEFINE_WKT_CONSTANT(TDATUM); +DEFINE_WKT_CONSTANT(CALENDAR); +DEFINE_WKT_CONSTANT(TIMEORIGIN); +DEFINE_WKT_CONSTANT(TIMECRS); +DEFINE_WKT_CONSTANT(VERTICALEXTENT); +DEFINE_WKT_CONSTANT(TIMEEXTENT); +DEFINE_WKT_CONSTANT(USAGE); +DEFINE_WKT_CONSTANT(DYNAMIC); +DEFINE_WKT_CONSTANT(FRAMEEPOCH); +DEFINE_WKT_CONSTANT(MODEL); +DEFINE_WKT_CONSTANT(VELOCITYGRID); +DEFINE_WKT_CONSTANT(ENSEMBLE); +DEFINE_WKT_CONSTANT(MEMBER); +DEFINE_WKT_CONSTANT(ENSEMBLEACCURACY); +DEFINE_WKT_CONSTANT(DERIVEDPROJCRS); +DEFINE_WKT_CONSTANT(BASEPROJCRS); +DEFINE_WKT_CONSTANT(EDATUM); +DEFINE_WKT_CONSTANT(ENGCRS); +DEFINE_WKT_CONSTANT(PDATUM); +DEFINE_WKT_CONSTANT(PARAMETRICCRS); +DEFINE_WKT_CONSTANT(PARAMETRICUNIT); +DEFINE_WKT_CONSTANT(BASEVERTCRS); +DEFINE_WKT_CONSTANT(BASEENGCRS); +DEFINE_WKT_CONSTANT(BASEPARAMCRS); +DEFINE_WKT_CONSTANT(BASETIMECRS); + +DEFINE_WKT_CONSTANT(GEODETICCRS); +DEFINE_WKT_CONSTANT(GEODETICDATUM); +DEFINE_WKT_CONSTANT(PROJECTEDCRS); +DEFINE_WKT_CONSTANT(PRIMEMERIDIAN); +DEFINE_WKT_CONSTANT(GEOGRAPHICCRS); +DEFINE_WKT_CONSTANT(TRF); +DEFINE_WKT_CONSTANT(VERTICALCRS); +DEFINE_WKT_CONSTANT(VERTICALDATUM); +DEFINE_WKT_CONSTANT(VRF); +DEFINE_WKT_CONSTANT(TIMEDATUM); +DEFINE_WKT_CONSTANT(TEMPORALQUANTITY); +DEFINE_WKT_CONSTANT(ENGINEERINGDATUM); +DEFINE_WKT_CONSTANT(ENGINEERINGCRS); +DEFINE_WKT_CONSTANT(PARAMETRICDATUM); + +//! @endcond + +// --------------------------------------------------------------------------- + +namespace common { + +/** \brief "Empty"/"None", unit of measure of type NONE. */ +const UnitOfMeasure UnitOfMeasure::NONE("", 1.0, UnitOfMeasure::Type::NONE); + +/** \brief Scale unity, unit of measure of type SCALE. */ +const UnitOfMeasure UnitOfMeasure::SCALE_UNITY("unity", 1.0, + UnitOfMeasure::Type::SCALE, + Identifier::EPSG, "9201"); + +/** \brief Parts-per-million, unit of measure of type SCALE. */ +const UnitOfMeasure UnitOfMeasure::PARTS_PER_MILLION("parts per million", 1e-6, + UnitOfMeasure::Type::SCALE, + Identifier::EPSG, "9202"); + +/** \brief Metre, unit of measure of type LINEAR (SI unit). */ +const UnitOfMeasure UnitOfMeasure::METRE("metre", 1.0, + UnitOfMeasure::Type::LINEAR, + Identifier::EPSG, "9001"); + +/** \brief Degree, unit of measure of type ANGULAR. */ +const UnitOfMeasure UnitOfMeasure::DEGREE("degree", M_PI / 180., + UnitOfMeasure::Type::ANGULAR, + Identifier::EPSG, "9122"); + +/** \brief Arc-second, unit of measure of type ANGULAR. */ +const UnitOfMeasure UnitOfMeasure::ARC_SECOND("arc-second", M_PI / 180. / 3600., + UnitOfMeasure::Type::ANGULAR, + Identifier::EPSG, "9104"); + +/** \brief Grad, unit of measure of type ANGULAR. */ +const UnitOfMeasure UnitOfMeasure::GRAD("grad", M_PI / 200., + UnitOfMeasure::Type::ANGULAR, + Identifier::EPSG, "9105"); + +/** \brief Radian, unit of measure of type ANGULAR (SI unit). */ +const UnitOfMeasure UnitOfMeasure::RADIAN("radian", 1.0, + UnitOfMeasure::Type::ANGULAR, + Identifier::EPSG, "9101"); + +/** \brief Microradian, unit of measure of type ANGULAR. */ +const UnitOfMeasure UnitOfMeasure::MICRORADIAN("microradian", 1e-6, + UnitOfMeasure::Type::ANGULAR, + Identifier::EPSG, "9109"); + +/** \brief Second, unit of measure of type TIME (SI unit). */ +const UnitOfMeasure UnitOfMeasure::SECOND("second", 1.0, + UnitOfMeasure::Type::TIME, + Identifier::EPSG, "1029"); + +/** \brief Year, unit of measure of type TIME */ +const UnitOfMeasure UnitOfMeasure::YEAR("year", 31556925.445, + UnitOfMeasure::Type::TIME, + Identifier::EPSG, "1040"); + +/** \brief Metre per year, unit of measure of type LINEAR. */ +const UnitOfMeasure UnitOfMeasure::METRE_PER_YEAR("metres per year", + 1.0 / 31556925.445, + UnitOfMeasure::Type::LINEAR, + Identifier::EPSG, "1042"); + +/** \brief Arc-second per year, unit of measure of type ANGULAR. */ +const UnitOfMeasure UnitOfMeasure::ARC_SECOND_PER_YEAR( + "arc-seconds per year", M_PI / 180. / 3600. / 31556925.445, + UnitOfMeasure::Type::ANGULAR, Identifier::EPSG, "1043"); + +/** \brief Part-sper-million per year, unit of measure of type SCALE. */ +const UnitOfMeasure UnitOfMeasure::PPM_PER_YEAR("parts per million per year", + 1e-6 / 31556925.445, + UnitOfMeasure::Type::SCALE, + Identifier::EPSG, "1036"); + +} // namespace common + +// --------------------------------------------------------------------------- + +namespace cs { +std::map<std::string, const AxisDirection *> AxisDirection::registry; + +/** 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 AxisDirection::NORTH("north"); + +/** Axis positive direction is approximately north-north-east. */ +const AxisDirection AxisDirection::NORTH_NORTH_EAST("northNorthEast"); + +/** Axis positive direction is approximately north-east. */ +const AxisDirection AxisDirection::NORTH_EAST("northEast"); + +/** Axis positive direction is approximately east-north-east. */ +const AxisDirection AxisDirection::EAST_NORTH_EAST("eastNorthEast"); + +/** Axis positive direction is 90deg clockwise from north. */ +const AxisDirection AxisDirection::EAST("east"); + +/** Axis positive direction is approximately east-south-east. */ +const AxisDirection AxisDirection::EAST_SOUTH_EAST("eastSouthEast"); + +/** Axis positive direction is approximately south-east. */ +const AxisDirection AxisDirection::SOUTH_EAST("southEast"); + +/** Axis positive direction is approximately south-south-east. */ +const AxisDirection AxisDirection::SOUTH_SOUTH_EAST("southSouthEast"); + +/** Axis positive direction is 180deg clockwise from north. */ +const AxisDirection AxisDirection::SOUTH("south"); + +/** Axis positive direction is approximately south-south-west. */ +const AxisDirection AxisDirection::SOUTH_SOUTH_WEST("southSouthWest"); + +/** Axis positive direction is approximately south-west. */ +const AxisDirection AxisDirection::SOUTH_WEST("southWest"); + +/** Axis positive direction is approximately west-south-west. */ +const AxisDirection AxisDirection::WEST_SOUTH_WEST("westSouthWest"); + +/** Axis positive direction is 270deg clockwise from north. */ +const AxisDirection AxisDirection::WEST("west"); + +/** Axis positive direction is approximately west-north-west. */ +const AxisDirection AxisDirection::WEST_NORTH_WEST("westNorthWest"); + +/** Axis positive direction is approximately north-west. */ +const AxisDirection AxisDirection::NORTH_WEST("northWest"); + +/** Axis positive direction is approximately north-north-west. */ +const AxisDirection AxisDirection::NORTH_NORTH_WEST("northNorthWest"); + +/** Axis positive direction is up relative to gravity. */ +const AxisDirection AxisDirection::UP("up"); + +/** Axis positive direction is down relative to gravity. */ +const AxisDirection AxisDirection::DOWN("down"); + +/** 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 AxisDirection::GEOCENTRIC_X("geocentricX"); + +/** 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 AxisDirection::GEOCENTRIC_Y("geocentricY"); + +/** Axis positive direction is from the centre of the modelled Earth parallel to + * its rotation axis and towards its north pole. */ +const AxisDirection AxisDirection::GEOCENTRIC_Z("geocentricZ"); + +/** Axis positive direction is towards higher pixel column. */ +const AxisDirection AxisDirection::COLUMN_POSITIVE("columnPositive"); + +/** Axis positive direction is towards lower pixel column. */ +const AxisDirection AxisDirection::COLUMN_NEGATIVE("columnNegative"); + +/** Axis positive direction is towards higher pixel row. */ +const AxisDirection AxisDirection::ROW_POSITIVE("rowPositive"); + +/** Axis positive direction is towards lower pixel row. */ +const AxisDirection AxisDirection::ROW_NEGATIVE("rowNegative"); + +/** Axis positive direction is right in display. */ +const AxisDirection AxisDirection::DISPLAY_RIGHT("displayRight"); + +/** Axis positive direction is left in display. */ +const AxisDirection AxisDirection::DISPLAY_LEFT("displayLeft"); + +/** Axis positive direction is towards top of approximately vertical display + * surface. */ +const AxisDirection AxisDirection::DISPLAY_UP("displayUp"); + +/** Axis positive direction is towards bottom of approximately vertical display + * surface. */ +const AxisDirection AxisDirection::DISPLAY_DOWN("displayDown"); + +/** 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 AxisDirection::FORWARD("forward"); + +/** 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 AxisDirection::AFT("aft"); + +/** Axis positive direction is port; for an observer at the centre of the object + * this will be towards its left. */ +const AxisDirection AxisDirection::PORT("port"); + +/** Axis positive direction is starboard; for an observer at the centre of the + * object this will be towards its right. */ +const AxisDirection AxisDirection::STARBOARD("starboard"); + +/** Axis positive direction is clockwise from a specified direction. */ +const AxisDirection AxisDirection::CLOCKWISE("clockwise"); + +/** Axis positive direction is counter clockwise from a specified direction. */ +const AxisDirection AxisDirection::COUNTER_CLOCKWISE("counterClockwise"); + +/** Axis positive direction is towards the object. */ +const AxisDirection AxisDirection::TOWARDS("towards"); + +/** Axis positive direction is away from the object. */ +const AxisDirection AxisDirection::AWAY_FROM("awayFrom"); + +/** Temporal axis positive direction is towards the future. */ +const AxisDirection AxisDirection::FUTURE("future"); + +/** Temporal axis positive direction is towards the past. */ +const AxisDirection AxisDirection::PAST("past"); + +/** Axis positive direction is unspecified. */ +const AxisDirection AxisDirection::UNSPECIFIED("unspecified"); + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +std::map<std::string, const AxisDirectionWKT1 *> AxisDirectionWKT1::registry; + +const AxisDirectionWKT1 AxisDirectionWKT1::NORTH("NORTH"); +const AxisDirectionWKT1 AxisDirectionWKT1::EAST("EAST"); +const AxisDirectionWKT1 AxisDirectionWKT1::SOUTH("SOUTH"); +const AxisDirectionWKT1 AxisDirectionWKT1::WEST("WEST"); +const AxisDirectionWKT1 AxisDirectionWKT1::UP("UP"); +const AxisDirectionWKT1 AxisDirectionWKT1::DOWN("DOWN"); +const AxisDirectionWKT1 AxisDirectionWKT1::OTHER("OTHER"); + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +const std::string AxisName::Longitude("Longitude"); +const std::string AxisName::Latitude("Latitude"); +const std::string AxisName::Easting("Easting"); +const std::string AxisName::Northing("Northing"); +const std::string AxisName::Westing("Westing"); +const std::string AxisName::Southing("Southing"); +const std::string AxisName::Ellipsoidal_height("Ellipsoidal height"); +const std::string AxisName::Geocentric_X("Geocentric X"); +const std::string AxisName::Geocentric_Y("Geocentric Y"); +const std::string AxisName::Geocentric_Z("Geocentric Z"); +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +const std::string AxisAbbreviation::lon("lon"); +const std::string AxisAbbreviation::lat("lat"); +const std::string AxisAbbreviation::E("E"); +const std::string AxisAbbreviation::N("N"); +const std::string AxisAbbreviation::h("h"); +const std::string AxisAbbreviation::X("X"); +const std::string AxisAbbreviation::Y("Y"); +const std::string AxisAbbreviation::Z("Z"); +//! @endcond + +} // namespace cs + +// --------------------------------------------------------------------------- + +/** \brief The realization is by adjustment of a levelling network fixed to one + * or more tide gauges. */ +const RealizationMethod RealizationMethod::LEVELLING("levelling"); +/** \brief The realization is through a geoid height model or a height + * correction model. This is applied to a specified geodetic CRS. */ +const RealizationMethod RealizationMethod::GEOID("geoid"); +/** \brief The realization is through a tidal model or by tidal predictions. */ +const RealizationMethod RealizationMethod::TIDAL("tidal"); + +// --------------------------------------------------------------------------- + +/** \brief The Greenwich PrimeMeridian */ +const PrimeMeridianNNPtr + PrimeMeridian::GREENWICH(PrimeMeridian::createGREENWICH()); +/** \brief The "Reference Meridian" PrimeMeridian. + * + * This is a meridian of longitude 0 to be used with non-Earth bodies. */ +const PrimeMeridianNNPtr PrimeMeridian::REFERENCE_MERIDIAN( + PrimeMeridian::createREFERENCE_MERIDIAN()); +/** \brief The Paris PrimeMeridian */ +const PrimeMeridianNNPtr PrimeMeridian::PARIS(PrimeMeridian::createPARIS()); + +// --------------------------------------------------------------------------- + +/** \brief Earth celestial body */ +const std::string Ellipsoid::EARTH("Earth"); + +/** \brief The EPSG:7008 / "Clarke 1866" Ellipsoid */ +const EllipsoidNNPtr Ellipsoid::CLARKE_1866(Ellipsoid::createCLARKE_1866()); + +/** \brief The EPSG:7030 / "WGS 84" Ellipsoid */ +const EllipsoidNNPtr Ellipsoid::WGS84(Ellipsoid::createWGS84()); + +/** \brief The EPSG:7019 / "GRS 1980" Ellipsoid */ +const EllipsoidNNPtr Ellipsoid::GRS1980(Ellipsoid::createGRS1980()); + +// --------------------------------------------------------------------------- + +/** \brief The EPSG:6267 / "North_American_Datum_1927" GeodeticReferenceFrame */ +const GeodeticReferenceFrameNNPtr GeodeticReferenceFrame::EPSG_6267( + GeodeticReferenceFrame::createEPSG_6267()); + +/** \brief The EPSG:6269 / "North_American_Datum_1983" GeodeticReferenceFrame */ +const GeodeticReferenceFrameNNPtr GeodeticReferenceFrame::EPSG_6269( + GeodeticReferenceFrame::createEPSG_6269()); + +/** \brief The EPSG:6326 / "WGS_1984" GeodeticReferenceFrame */ +const GeodeticReferenceFrameNNPtr GeodeticReferenceFrame::EPSG_6326( + GeodeticReferenceFrame::createEPSG_6326()); + +// --------------------------------------------------------------------------- + +/** \brief The proleptic Gregorian calendar. */ +const std::string + TemporalDatum::CALENDAR_PROLEPTIC_GREGORIAN("proleptic Gregorian"); + +// --------------------------------------------------------------------------- + +/** \brief EPSG:4978 / "WGS 84" Geocentric */ +const GeodeticCRSNNPtr GeodeticCRS::EPSG_4978(GeodeticCRS::createEPSG_4978()); + +// --------------------------------------------------------------------------- + +/** \brief EPSG:4267 / "NAD27" 2D GeographicCRS */ +const GeographicCRSNNPtr + GeographicCRS::EPSG_4267(GeographicCRS::createEPSG_4267()); + +/** \brief EPSG:4269 / "NAD83" 2D GeographicCRS */ +const GeographicCRSNNPtr + GeographicCRS::EPSG_4269(GeographicCRS::createEPSG_4269()); + +/** \brief EPSG:4326 / "WGS 84" 2D GeographicCRS */ +const GeographicCRSNNPtr + GeographicCRS::EPSG_4326(GeographicCRS::createEPSG_4326()); + +/** \brief OGC:CRS84 / "CRS 84" 2D GeographicCRS (long, lat)*/ +const GeographicCRSNNPtr + GeographicCRS::OGC_CRS84(GeographicCRS::createOGC_CRS84()); + +/** \brief EPSG:4807 / "NTF (Paris)" 2D GeographicCRS */ +const GeographicCRSNNPtr + GeographicCRS::EPSG_4807(GeographicCRS::createEPSG_4807()); + +/** \brief EPSG:4979 / "WGS 84" 3D GeographicCRS */ +const GeographicCRSNNPtr + GeographicCRS::EPSG_4979(GeographicCRS::createEPSG_4979()); + +// --------------------------------------------------------------------------- + +NS_PROJ_END |
