\hypertarget{general_doc_general_api_design}{}\doxysection{General API design}\label{general_doc_general_api_design}
The design of the class hierarchy is strongly derived from \mbox{\hyperlink{general_doc_ISO_19111_2019}{ISO 19111\+:2019}}.

Classes for which the constructors are not directly accessible have their instances constructed with create() methods. The returned object is a non-\/null shared pointer. Such objects are immutable, and thread-\/safe.

TODO\hypertarget{general_doc_general_properties}{}\doxysection{General properties}\label{general_doc_general_properties}
All classes deriving from Identified\+Object have general properties that can be defined at creation time. Those properties are\+:


\begin{DoxyItemize}
\item \mbox{\hyperlink{classosgeo_1_1proj_1_1metadata_1_1Identifier_af6dee2b9afdad9fba780a01cdde4f39a}{osgeo\+::proj\+::metadata\+::\+Identifier\+::\+DESCRIPTION\+\_\+\+KEY}} (\char`\"{}description\char`\"{})\+: the natural language description of the meaning of the code value, provided a a string. 
\item \mbox{\hyperlink{classosgeo_1_1proj_1_1metadata_1_1Identifier_adead8852011814afec16a03989ff14f7}{osgeo\+::proj\+::metadata\+::\+Identifier\+::\+CODE\+\_\+\+KEY}} (\char`\"{}code\char`\"{})\+: a numeric or alphanumeric code, provided as a integer or a string. For example 4326, for the EPSG\+:4326 \char`\"{}\+WGS84\char`\"{} Geographical\+CRS 
\item \mbox{\hyperlink{classosgeo_1_1proj_1_1metadata_1_1Identifier_ac565fad2dbc1f480cc31fa8a2ff9aba9}{osgeo\+::proj\+::metadata\+::\+Identifier\+::\+CODESPACE\+\_\+\+KEY}} (\char`\"{}codespace\char`\"{})\+: the organization responsible for definition and maintenance of the code., provided a a string. For example \char`\"{}\+EPSG\char`\"{}. 
\item \mbox{\hyperlink{classosgeo_1_1proj_1_1metadata_1_1Identifier_ab5679044d62e16c447447f1b6000a55e}{osgeo\+::proj\+::metadata\+::\+Identifier\+::\+VERSION\+\_\+\+KEY}} (\char`\"{}version\char`\"{})\+: the version identifier for the namespace, provided a a string. 
\item \mbox{\hyperlink{classosgeo_1_1proj_1_1metadata_1_1Identifier_ae4b7ba00c3cc174db90ebcdcc083f202}{osgeo\+::proj\+::metadata\+::\+Identifier\+::\+AUTHORITY\+\_\+\+KEY}} (\char`\"{}authority\char`\"{})\+: a citation for the authority, provided as a string or a \mbox{\hyperlink{classosgeo_1_1proj_1_1metadata_1_1Citation}{osgeo\+::proj\+::metadata\+::\+Citation}} object. Often unused 
\item \mbox{\hyperlink{classosgeo_1_1proj_1_1metadata_1_1Identifier_a2ce093bce8812891cdfce84ebed1b283}{osgeo\+::proj\+::metadata\+::\+Identifier\+::\+URI\+\_\+\+KEY}} (\char`\"{}uri\char`\"{})\+: the URI of the identifier, provided as a string. Often unused


\item \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1IdentifiedObject_afa06cdb6d6d48c6785e7374b0db60a59}{osgeo\+::proj\+::common\+::\+Identified\+Object\+::\+NAME\+\_\+\+KEY}} (\char`\"{}name\char`\"{})\+: the name of a \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1IdentifiedObject}{osgeo\+::proj\+::common\+::\+Identified\+Object}}, provided as a string or \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1metadata_aa56f3dbff085fc0fceea708365b3f1be}{osgeo\+::proj\+::metadata\+::\+Identifier\+NNPtr}}. 
\item \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1IdentifiedObject_a50b1c9dcd7f87da6533e0bd65b2f810a}{osgeo\+::proj\+::common\+::\+Identified\+Object\+::\+IDENTIFIERS\+\_\+\+KEY}} (\char`\"{}identifiers\char`\"{})\+: the identifier(s) of a \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1IdentifiedObject}{osgeo\+::proj\+::common\+::\+Identified\+Object}}, provided as a osgeo\+::proj\+::common\+::\+Identifier\+NNPtr or a \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a7fc091170790d0923879c9367fc5cc6d}{osgeo\+::proj\+::util\+::\+Array\+Of\+Base\+Object\+NNPtr}} of \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1metadata_aa56f3dbff085fc0fceea708365b3f1be}{osgeo\+::proj\+::metadata\+::\+Identifier\+NNPtr}}. 
\item \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1IdentifiedObject_a4edc3a085e20f518ebd5dff048fc0483}{osgeo\+::proj\+::common\+::\+Identified\+Object\+::\+ALIAS\+\_\+\+KEY}} (\char`\"{}alias\char`\"{})\+: the alias(es) of a \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1IdentifiedObject}{osgeo\+::proj\+::common\+::\+Identified\+Object}}, provided as string, a \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_acb99046eaf266f8cdf30304a5c43f696}{osgeo\+::proj\+::util\+::\+Generic\+Name\+NNPtr}} or a \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a7fc091170790d0923879c9367fc5cc6d}{osgeo\+::proj\+::util\+::\+Array\+Of\+Base\+Object\+NNPtr}} of \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_acb99046eaf266f8cdf30304a5c43f696}{osgeo\+::proj\+::util\+::\+Generic\+Name\+NNPtr}}. 
\item \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1IdentifiedObject_afb4d796fd45b0268575d3c2e069b06da}{osgeo\+::proj\+::common\+::\+Identified\+Object\+::\+REMARKS\+\_\+\+KEY}} (\char`\"{}remarks\char`\"{})\+: the remarks of a \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1IdentifiedObject}{osgeo\+::proj\+::common\+::\+Identified\+Object}}, provided as a string. 
\item \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1IdentifiedObject_a0f6f3ad5b0930115364d4a5a94f58a42}{osgeo\+::proj\+::common\+::\+Identified\+Object\+::\+DEPRECATED\+\_\+\+KEY}} (\char`\"{}deprecated\char`\"{})\+: the deprecation flag of a \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1IdentifiedObject}{osgeo\+::proj\+::common\+::\+Identified\+Object}}, provided as a boolean.


\item \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1ObjectUsage_ad3253602467718d7a8822b71d6180b11}{osgeo\+::proj\+::common\+::\+Object\+Usage\+::\+SCOPE\+\_\+\+KEY}} (\char`\"{}scope\char`\"{})\+: the scope of a \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1ObjectUsage}{osgeo\+::proj\+::common\+::\+Object\+Usage}}, provided as a string. 
\item \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1ObjectUsage_a50478db23c866cb3e6f7068da24f0a6c}{osgeo\+::proj\+::common\+::\+Object\+Usage\+::\+DOMAIN\+\_\+\+OF\+\_\+\+VALIDITY\+\_\+\+KEY}} (\char`\"{}domain\+Of\+Validity\char`\"{})\+: the domain of validity of a \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1ObjectUsage}{osgeo\+::proj\+::common\+::\+Object\+Usage}}, provided as a \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1metadata_af1a3c8cdeaecefe3e24f6d6b88b084f3}{osgeo\+::proj\+::metadata\+::\+Extent\+NNPtr}}. 
\item \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1ObjectUsage_a5a34b5e56034634c259ae82560e7dc44}{osgeo\+::proj\+::common\+::\+Object\+Usage\+::\+OBJECT\+\_\+\+DOMAIN\+\_\+\+KEY}} (\char`\"{}object\+Domain\char`\"{})\+: the object domain(s) of a \mbox{\hyperlink{classosgeo_1_1proj_1_1common_1_1ObjectUsage}{osgeo\+::proj\+::common\+::\+Object\+Usage}}, provided as a \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1common_a5b1a089231563f64b7ff97f4c74e9a39}{osgeo\+::proj\+::common\+::\+Object\+Domain\+NNPtr}} or a \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1util_a7fc091170790d0923879c9367fc5cc6d}{osgeo\+::proj\+::util\+::\+Array\+Of\+Base\+Object\+NNPtr}} of \mbox{\hyperlink{namespaceosgeo_1_1proj_1_1common_a5b1a089231563f64b7ff97f4c74e9a39}{osgeo\+::proj\+::common\+::\+Object\+Domain\+NNPtr}}.


\end{DoxyItemize}\hypertarget{general_doc_standards}{}\doxysection{Applicable standards}\label{general_doc_standards}
\hypertarget{general_doc_ISO_19111}{}\doxysubsection{ISO\+:19111 / OGC Topic 2 standard}\label{general_doc_ISO_19111}
Topic 2 -\/ Spatial referencing by coordinates.

This is an Abstract Specification describes the data elements, relationships and associated metadata required for spatial referencing by coordinates. It describes Coordinate Reference Systems (CRS), coordinate systems (CS) and coordinate transformation or coordinate conversion between two different coordinate reference systems.\hypertarget{general_doc_ISO_19111_2019}{}\doxysubsubsection{ISO 19111\+:2019}\label{general_doc_ISO_19111_2019}
This is the revision mostly used for PROJ C++ modelling.

\mbox{[}OGC 18-\/005r4, 2019-\/02-\/08, ISO 19111\+:2019\mbox{]} (\href{http://docs.opengeospatial.org/as/18-005r4/18-005r4.html}{\texttt{ http\+://docs.\+opengeospatial.\+org/as/18-\/005r4/18-\/005r4.\+html}})\hypertarget{general_doc_ISO_19111_2007}{}\doxysubsubsection{ISO 19111\+:2007}\label{general_doc_ISO_19111_2007}
The precedent version of the specification was\+: \mbox{[}OGC 08-\/015r2, 2010-\/04-\/27, ISO 19111\+:2007\mbox{]} (\href{http://portal.opengeospatial.org/files/?artifact_id=39049}{\texttt{ http\+://portal.\+opengeospatial.\+org/files/?artifact\+\_\+id=39049}})\hypertarget{general_doc_WKT2}{}\doxysubsection{WKT2 standard}\label{general_doc_WKT2}
Well-\/known text representation of coordinate reference systems.

Well-\/known Text (WKT) offers a compact machine-\/ and human-\/readable representation of the critical elements of coordinate reference system (CRS) definitions, and coordinate operations. This is an implementation of \mbox{\hyperlink{general_doc_ISO_19111}{ISO\+:19111 / OGC Topic 2 standard}}

PROJ implements the two following revisions of the standard\+:\hypertarget{general_doc_WKT2_2019}{}\doxysubsubsection{WKT2\+:2019}\label{general_doc_WKT2_2019}
\mbox{[}OGC 18-\/010r7, 2019-\/06-\/24, WKT2-\/2019\mbox{]} (\href{http://docs.opengeospatial.org/is/18-010r7/18-010r7.html}{\texttt{ http\+://docs.\+opengeospatial.\+org/is/18-\/010r7/18-\/010r7.\+html}})\hypertarget{general_doc_WKT2_2015}{}\doxysubsubsection{WKT2\+:2015}\label{general_doc_WKT2_2015}
\mbox{[}OGC 12-\/063r5, 2015-\/05-\/01, ISO 19162\+:2015(E), WKT2-\/2015\mbox{]} (\href{http://docs.opengeospatial.org/is/12-063r5/12-063r5.html}{\texttt{ http\+://docs.\+opengeospatial.\+org/is/12-\/063r5/12-\/063r5.\+html}})\hypertarget{general_doc_WKT1}{}\doxysubsection{WKT1 specification}\label{general_doc_WKT1}
Older specifications of well-\/known text representation of coordinate reference systems are also supported by PROJ, mostly for compatibility with legacy systems, or older versions of GDAL.

GDAL v2.\+4 and earlier mostly implements\+:

\mbox{[}OGC 01-\/009, 2001-\/01-\/12, Open\+GIS Coordinate Transformation Service Implementation Specification\mbox{]} (\href{http://portal.opengeospatial.org/files/?artifact_id=999}{\texttt{ http\+://portal.\+opengeospatial.\+org/files/?artifact\+\_\+id=999}})

The \mbox{[}GDAL documentation, OGC WKT Coordinate System Issues\mbox{]} (\href{https://gdal.org/tutorials/wktproblems.html}{\texttt{ https\+://gdal.\+org/tutorials/wktproblems.\+html}}) discusses issues, and GDAL implementation choices.

An older specification of WKT1 is/was used by some software packages\+:

\mbox{[}OGC 99-\/049, 1999-\/05-\/05, Open\+GIS Simple Features Specification For SQL v1.\+1\mbox{]} (\href{http://portal.opengeospatial.org/files/?artifact_id=829}{\texttt{ http\+://portal.\+opengeospatial.\+org/files/?artifact\+\_\+id=829}})\hypertarget{general_doc_ISO_19115}{}\doxysubsection{ISO 19115 (\+Metadata)}\label{general_doc_ISO_19115}
Defines the schema required for describing geographic information and services. It provides information about the identification, the extent, the quality, the spatial and temporal schema, spatial reference, and distribution of digital geographic data.

PROJ implements a simplified subset of ISO 19115.\hypertarget{general_doc_GeoAPI}{}\doxysubsection{Geo\+API}\label{general_doc_GeoAPI}
A set of Java and Python language programming interfaces for geospatial applications.

\href{http://www.geoapi.org/}{\texttt{ Geo\+API main page}}

\href{http://www.geoapi.org/3.0/javadoc/index.html}{\texttt{ Geo\+API Javadoc}}

\mbox{[}OGC Geo\+API Implementation Specification\mbox{]} (\href{http://www.opengeospatial.org/standards/geoapi}{\texttt{ http\+://www.\+opengeospatial.\+org/standards/geoapi}}) 