LuciadCPillar 2026.0.07
Loading...
Searching...
No Matches
luciad::CoordinateReferenceProvider Class Referencefinal

Factory to create coordinate references from EPSG and OGC identifiers. More...

#include <luciad/geodesy/CoordinateReferenceProvider.h>

Public Member Functions

 CoordinateReferenceProvider ()=delete
 ~CoordinateReferenceProvider ()=delete

Static Public Member Functions

static luciad::expected< std::shared_ptr< CoordinateReference >, ErrorInfocreate (const std::string &identifier)
 Creates the coordinate reference from a given EPSG, WKT (version 1) or OGC identifier.

Detailed Description

Factory to create coordinate references from EPSG and OGC identifiers.

Constructor & Destructor Documentation

◆ CoordinateReferenceProvider()

luciad::CoordinateReferenceProvider::CoordinateReferenceProvider ( )
delete

◆ ~CoordinateReferenceProvider()

luciad::CoordinateReferenceProvider::~CoordinateReferenceProvider ( )
delete

Member Function Documentation

◆ create()

luciad::expected< std::shared_ptr< CoordinateReference >, ErrorInfo > luciad::CoordinateReferenceProvider::create ( const std::string & identifier)
static

Creates the coordinate reference from a given EPSG, WKT (version 1) or OGC identifier.

Supported EPSG codes

A list of supported epsg references can be found here. A list of unsupported epsg references can be found here.

Supported WKT strings

This method supports decoding of WKT version 1 strings.

Within this version of the standard, the following types of references are supported:

  • Geographic (aka geodetic) references: WKT strings that start with "GEOGCS"
  • Geocentric references: WKT strings that start with "GEOCCS"
  • Projected (aka grid) references: WKT strings that start with "PROJCS" or "FITTED_CS"
  • Topocentric references: WKT strings that start with ENGCRS and have a topocentric deriving conversion method with authority EPSG:9837.

References with a vertical datum (strings that start with "COMPD_CS") are not supported.

Example usage

Creation of the WGS-84 coordinate reference system with an EPSG identifier.

std::string identifier = "EPSG:4326";
auto expected = CoordinateReferenceProvider::create(identifier);
const std::shared_ptr<CoordinateReference>& ptr = expected.value();

Creation of the WGS-84 coordinate reference system with a WKT identifier.

std::string identifier = "GEOGCS[\"WGS 84\",DATUM[\"World Geodetic System 1984\",SPHEROID[\"WGS "
"84\",6378137.0,298.257223563],TOWGS84[0.0,0.0,0.0]],PRIMEM[\"Greenwich\",0.0],UNIT[\"degree\",0.017453292519943295],AXIS["
"\"Geodetic latitude\",NORTH],AXIS[\"Geodetic longitude\",EAST],AUTHORITY[\"EPSG\",4326]]";
auto crs = CoordinateReferenceProvider::create(identifier);

Creation of a topocentric reference based on the WGS-84 datum with a WKT identifier.

std::string wkt =
R"raw(ENGCRS["",GEOGCS["WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563],TOWGS84[0.0,0.0,0.0,0.0,0.0,0.0,0.0]]],DERIVINGCONVERSION["",METHOD["Geographic/topocentric conversions",AUTHORITY["EPSG",9837]],PARAMETER["Latitude of topocentric origin",50.7143019,UNIT["DEGREE",0.017453292519943295]],PARAMETER["Longitude of topocentric origin",21.310094,UNIT["DEGREE",0.017453292519943295]],PARAMETER["Ellipsoidal height of topocentric origin",275.0,UNIT["METER",1.0]]],CS[Cartesian,3],AXIS["Topocentric East (E)",EAST],AXIS["Topocentric North (N)",NORTH],AXIS["Topocentric height (U)",UP],UNIT["METER",1.0]])raw";
auto topocentricCrs = CoordinateReferenceProvider::create(wkt);

Creation of the Web Mercator coordinate reference system with an OGC identifier.

std::string identifier = "urn:ogc:def:crs:EPSG::3857";
auto expected = CoordinateReferenceProvider::create(identifier);
const std::shared_ptr<CoordinateReference>& ptr = expected.value();
Parameters
identifieran EPSG, WKT (version 1) or OGC identifier, for example "EPSG:3857" or "urn:ogc:def:crs:EPSG::3857".
Returns
an expected containing the coordinate reference. If the coordinate reference cannot be created, the expected contains an informational message.