aboutsummaryrefslogtreecommitdiff
path: root/development/reference/functions.html
diff options
context:
space:
mode:
authorPROJ deploybot <proj.bot@proj.bot>2022-03-22 20:00:06 +0000
committerPROJ deploybot <proj.bot@proj.bot>2022-03-22 20:00:06 +0000
commita3f43744feec86272fe532124679d3a013ef9a8c (patch)
tree27e4198db6011e3097eb7bcfe7197684aba7583a /development/reference/functions.html
downloadPROJ-gh-pages.tar.gz
PROJ-gh-pages.zip
update with results of commit https://github.com/OSGeo/PROJ/commit/53c07a8bd211b7aee4bc07a9c6726005504b7181gh-pages
Diffstat (limited to 'development/reference/functions.html')
-rw-r--r--development/reference/functions.html3681
1 files changed, 3681 insertions, 0 deletions
diff --git a/development/reference/functions.html b/development/reference/functions.html
new file mode 100644
index 00000000..737cc4ef
--- /dev/null
+++ b/development/reference/functions.html
@@ -0,0 +1,3681 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Functions &mdash; PROJ 9.0.0 documentation</title>
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+ <link rel="shortcut icon" href="../../_static/favicon.png"/>
+ <link rel="canonical" href="https://proj.orgdevelopment/reference/functions.html"/>
+ <!--[if lt IE 9]>
+ <script src="../../_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+ <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script src="../../_static/js/theme.js"></script>
+ <link rel="author" title="About these documents" href="../../about.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <link rel="next" title="C++ API" href="cpp/index.html" />
+ <link rel="prev" title="Data types" href="datatypes.html" />
+</head>
+
+<body class="wy-body-for-nav">
+ <div class="wy-grid-for-nav">
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #353130" >
+ <a href="../../index.html">
+ <img src="../../_static/logo.png" class="logo" alt="Logo"/>
+ </a>
+ <div class="version">
+ 9.0.0
+ </div>
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../download.html">Download</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../usage/index.html">Using PROJ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../apps/index.html">Applications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operations/index.html">Coordinate operations</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../resource_files.html">Resource files</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../geodesic.html">Geodesic calculations</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Development</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../quickstart.html">Quick start</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../transformations.html">Transformations</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../errorhandling.html">Error handling</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">Reference</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="macros.html">Macros</a></li>
+<li class="toctree-l3"><a class="reference internal" href="datatypes.html">Data types</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">Functions</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#threading-contexts">Threading contexts</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#transformation-setup">Transformation setup</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#area-of-interest">Area of interest</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#coordinate-transformation">Coordinate transformation</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#error-reporting">Error reporting</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#logging">Logging</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#info-functions">Info functions</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#lists">Lists</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#distances">Distances</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#various">Various</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#setting-custom-i-o-functions">Setting custom I/O functions</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#network-related-functionality">Network related functionality</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#cleanup">Cleanup</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#c-api-for-iso-19111-functionality">C API for ISO-19111 functionality</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="cpp/index.html">C++ API</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../cmake.html">Using PROJ in CMake projects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../bindings.html">Language bindings</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../migration.html">Version 4 to 6 API Migration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../migration.html#version-4-to-5-api-migration">Version 4 to 5 API Migration</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../specifications/index.html">Specifications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../community/index.html">Community</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../zreferences.html">References</a></li>
+</ul>
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">PROJ</a>
+ </nav>
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+ <div role="navigation" aria-label="Page navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
+ <li><a href="../index.html">Development</a> &raquo;</li>
+ <li><a href="index.html">Reference</a> &raquo;</li>
+ <li>Functions</li>
+ <li class="wy-breadcrumbs-aside">
+ <a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/development/reference/functions.rst" class="fa fa-github"> Edit on GitHub</a>
+ </li>
+ </ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
+ <a href="datatypes.html" class="btn btn-neutral float-left" title="Data types" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="cpp/index.html" class="btn btn-neutral float-right" title="C++ API" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <section id="functions">
+<span id="id1"></span><h1>Functions<a class="headerlink" href="#functions" title="Permalink to this headline">¶</a></h1>
+<section id="threading-contexts">
+<h2>Threading contexts<a class="headerlink" href="#threading-contexts" title="Permalink to this headline">¶</a></h2>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_create">
+<a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_create</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_create" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Create a new threading-context.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p>a new context</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_clone">
+<a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_clone</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_clone" title="Permalink to this definition">¶</a><br /></dt>
+<dd><div class="versionadded">
+<p><span class="versionmodified added">New in version 7.2.</span></p>
+</div>
+<p>Create a new threading-context based on an existing context.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p>a new context</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_destroy">
+<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_destroy</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_destroy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Deallocate a threading-context.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> (<a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_CONTEXT</span></code></a> *) – Threading context.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+<section id="transformation-setup">
+<h2>Transformation setup<a class="headerlink" href="#transformation-setup" title="Permalink to this headline">¶</a></h2>
+<p>The objects returned by the functions defined in this section have minimal
+interaction with the functions of the
+<a class="reference internal" href="#c-api-for-iso-19111-functionality">C API for ISO-19111 functionality</a>, and vice versa. See its introduction
+paragraph for more details.</p>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_create">
+<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_create</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">definition</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_create" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Create a transformation object, or a CRS object, from:</p>
+<ul class="simple">
+<li><p>a proj-string,</p></li>
+<li><p>a WKT string,</p></li>
+<li><p>an object code (like “EPSG:4326”, “urn:ogc:def:crs:EPSG::4326”,
+“urn:ogc:def:coordinateOperation:EPSG::1671”),</p></li>
+<li><p>an Object name. e.g “WGS 84”, “WGS 84 / UTM zone 31N”. In that case as
+uniqueness is not guaranteed, heuristics are applied to determine the appropriate best match.</p></li>
+<li><p>a OGC URN combining references for compound coordinate reference systems
+(e.g “<a class="reference external" href="urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717">urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717</a>” or custom abbreviated
+syntax “EPSG:2393+5717”),</p></li>
+<li><p>a OGC URN combining references for concatenated operations
+(e.g. “<a class="reference external" href="urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618">urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618</a>”)</p></li>
+<li><p>a PROJJSON string. The jsonschema is at <a class="reference external" href="https://proj.org/schemas/v0.4/projjson.schema.json">https://proj.org/schemas/v0.4/projjson.schema.json</a> (<em>added in 6.2</em>)</p></li>
+<li><p>a compound CRS made from two object names separated with ” + “. e.g. “WGS 84 + EGM96 height” (<em>added in 7.1</em>)</p></li>
+</ul>
+<p>Example call:</p>
+<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="n">PJ</span><span class="w"> </span><span class="o">*</span><span class="n">P</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">proj_create</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;+proj=etmerc +lat_0=38 +lon_0=125 +ellps=bessel&quot;</span><span class="p">);</span><span class="w"></span>
+</pre></div>
+</div>
+<p>If a proj-string contains a +type=crs option, then it is interpreted as
+a CRS definition. In particular geographic CRS are assumed to have axis
+in the longitude, latitude order and with degree angular unit. The use
+of proj-string to describe a CRS is discouraged. It is a legacy means of
+conveying CRS descriptions: use of object codes (EPSG:XXXX typically) or
+WKT description is recommended for better expressivity.</p>
+<p>If a proj-string does not contain +type=crs, then it is interpreted as a
+coordination operation / transformation.</p>
+<p>If creation of the transformation object fails, the function returns <cite>0</cite> and
+the PROJ error number is updated. The error number can be read with
+<a class="reference internal" href="#c.proj_errno" title="proj_errno"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_errno()</span></code></a> or <a class="reference internal" href="#c.proj_context_errno" title="proj_context_errno"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_context_errno()</span></code></a>.</p>
+<p>The returned <a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a>-pointer should be deallocated with <a class="reference internal" href="#c.proj_destroy" title="proj_destroy"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_destroy()</span></code></a>.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> (<a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_CONTEXT</span></code></a> *) – Threading context.</p></li>
+<li><p><strong>definition</strong> (<cite>const char*</cite>) – Proj-string of the desired transformation.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_create_argv">
+<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_create_argv</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">argc</span></span>, <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">argv</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_create_argv" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Create a transformation object, or a CRS object, with argc/argv-style initialization. For this
+application each parameter in the defining proj-string is an entry in <a class="reference internal" href="#c.proj_create_argv" title="argv"><code class="xref c c-data docutils literal notranslate"><span class="pre">argv</span></code></a>.</p>
+<p>Example call:</p>
+<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">args</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="s">&quot;proj=utm&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;zone=32&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ellps=GRS80&quot;</span><span class="p">};</span><span class="w"></span>
+<span class="n">PJ</span><span class="o">*</span><span class="w"> </span><span class="n">P</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">proj_create_argv</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="n">args</span><span class="p">);</span><span class="w"></span>
+</pre></div>
+</div>
+<p>If there is a type=crs argument, then the arguments are interpreted as
+a CRS definition. In particular geographic CRS are assumed to have axis
+in the longitude, latitude order and with degree angular unit.</p>
+<p>If there is no type=crs argument, then it is interpreted as a
+coordination operation / transformation.</p>
+<p>If creation of the transformation object fails, the function returns <cite>0</cite> and
+the PROJ error number is updated. The error number can be read with
+<a class="reference internal" href="#c.proj_errno" title="proj_errno"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_errno()</span></code></a> or <a class="reference internal" href="#c.proj_context_errno" title="proj_context_errno"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_context_errno()</span></code></a>.</p>
+<p>The returned <a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a>-pointer should be deallocated with <a class="reference internal" href="#c.proj_destroy" title="proj_destroy"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_destroy()</span></code></a>.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> (<a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_CONTEXT</span></code></a> *) – Threading context.</p></li>
+<li><p><strong>argc</strong> (<cite>int</cite>) – Count of arguments in <a class="reference internal" href="#c.proj_create_argv" title="argv"><code class="xref c c-data docutils literal notranslate"><span class="pre">argv</span></code></a></p></li>
+<li><p><strong>argv</strong> (<cite>char **</cite>) – Array of strings with proj-string parameters, e.g. <code class="docutils literal notranslate"><span class="pre">+proj=merc</span></code></p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_create_crs_to_crs">
+<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_create_crs_to_crs</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">source_crs</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">target_crs</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_AREA" title="PJ_AREA"><span class="n"><span class="pre">PJ_AREA</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">area</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_create_crs_to_crs" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Create a transformation object that is a pipeline between two known
+coordinate reference systems.</p>
+<p>source_crs and target_crs can be :</p>
+<blockquote>
+<div><ul class="simple">
+<li><p>a “AUTHORITY:CODE”, like EPSG:25832. When using that syntax for a source
+CRS, the created pipeline will expect that the values passed to <a class="reference internal" href="#c.proj_trans" title="proj_trans"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_trans()</span></code></a>
+respect the axis order and axis unit of the official definition (
+so for example, for EPSG:4326, with latitude first and longitude next,
+in degrees). Similarly, when using that syntax for a target CRS, output
+values will be emitted according to the official definition of this CRS.</p></li>
+<li><p>a PROJ string, like “+proj=longlat +datum=WGS84”.
+When using that syntax, the axis order and unit for geographic CRS will
+be longitude, latitude, and the unit degrees.</p></li>
+<li><p>the name of a CRS as found in the PROJ database, e.g “WGS84”, “NAD27”, etc.</p></li>
+<li><p>more generally any string accepted by <a class="reference internal" href="#c.proj_create" title="proj_create"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_create()</span></code></a> representing
+a CRS</p></li>
+</ul>
+</div></blockquote>
+<p>An “area of use” can be specified in area. When it is supplied, the more
+accurate transformation between two given systems can be chosen.</p>
+<p>When no area of use is specific and several coordinate operations are possible
+depending on the area of use, this function will internally store those
+candidate coordinate operations in the return PJ object. Each subsequent
+coordinate transformation done with <a class="reference internal" href="#c.proj_trans" title="proj_trans"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_trans()</span></code></a> will then select
+the appropriate coordinate operation by comparing the input coordinates with
+the area of use of the candidate coordinate operations.</p>
+<p>Example call:</p>
+<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="n">PJ</span><span class="w"> </span><span class="o">*</span><span class="n">P</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">proj_create_crs_to_crs</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;EPSG:25832&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;EPSG:25833&quot;</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span><span class="w"></span>
+</pre></div>
+</div>
+<p>If creation of the transformation object fails, the function returns <cite>0</cite> and
+the PROJ error number is updated. The error number can be read with
+<a class="reference internal" href="#c.proj_errno" title="proj_errno"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_errno()</span></code></a> or <a class="reference internal" href="#c.proj_context_errno" title="proj_context_errno"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_context_errno()</span></code></a>.</p>
+<p>The returned <a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a>-pointer should be deallocated with <a class="reference internal" href="#c.proj_destroy" title="proj_destroy"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_destroy()</span></code></a>.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> (<a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_CONTEXT</span></code></a> *) – Threading context.</p></li>
+<li><p><strong>source_crs</strong> (<cite>const char*</cite>) – Source CRS.</p></li>
+<li><p><strong>target_crs</strong> (<cite>const char*</cite>) – Destination SRS.</p></li>
+<li><p><strong>area</strong> (<a class="reference internal" href="datatypes.html#c.PJ_AREA" title="PJ_AREA"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_AREA</span></code></a> *) – Descriptor of the desired area for the transformation.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_create_crs_to_crs_from_pj">
+<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_create_crs_to_crs_from_pj</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">source_crs</span></span>, <a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">target_crs</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_AREA" title="PJ_AREA"><span class="n"><span class="pre">PJ_AREA</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">area</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">options</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_create_crs_to_crs_from_pj" title="Permalink to this definition">¶</a><br /></dt>
+<dd><div class="versionadded">
+<p><span class="versionmodified added">New in version 6.2.0.</span></p>
+</div>
+<p>Create a transformation object that is a pipeline between two known
+coordinate reference systems.</p>
+<p>This is the same as <a class="reference internal" href="#c.proj_create_crs_to_crs" title="proj_create_crs_to_crs"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_create_crs_to_crs()</span></code></a> except that the source and
+target CRS are passed as PJ* objects which must be of the CRS variety.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>options</strong> – a list of NUL terminated options, or NULL.</p></li>
+</ul>
+</dd>
+</dl>
+<p>The list of supported options is:</p>
+<ul class="simple">
+<li><p>AUTHORITY=name: to restrict the authority of coordinate operations
+looked up in the database. When not specified, coordinate
+<code class="docutils literal notranslate"><span class="pre">operations</span> <span class="pre">from</span> <span class="pre">any</span> <span class="pre">authority</span></code> will be searched, with the restrictions set
+in the authority_to_authority_preference database table related to the authority
+of the source/target CRS themselves.
+If authority is set to “any”, then coordinate operations from any authority will be searched
+If authority is a non-empty string different of <code class="docutils literal notranslate"><span class="pre">any</span></code>, then coordinate operations
+will be searched only in that authority namespace (e.g <code class="docutils literal notranslate"><span class="pre">EPSG</span></code>).</p></li>
+<li><p>ACCURACY=value: to set the minimum desired accuracy (in metres) of the
+candidate coordinate operations.</p></li>
+<li><p>ALLOW_BALLPARK=YES/NO: can be set to NO to disallow the use of
+<a class="reference internal" href="../../glossary.html#term-Ballpark-transformation"><span class="xref std std-term">Ballpark transformation</span></a> in the candidate coordinate operations.</p></li>
+<li><p>FORCE_OVER=YES/NO: can be set to YES to force the +over flag on the transformation
+returned by this function.</p></li>
+</ul>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_normalize_for_visualization">
+<span class="target" id="proj_8h_1a6f2e97c76583b1053895ede4cfdc80de"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_normalize_for_visualization</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_normalize_for_visualization" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns a PJ* object whose axis order is the one expected for visualization purposes. </p>
+<p>The input object must be either: <ul class="simple">
+<li><p>a coordinate operation, that has been created with proj_create_crs_to_crs(). If the axis order of its source or target CRS is northing,easting, then an axis swap operation will be inserted. </p></li>
+<li><p>or a CRS. The axis order of geographic CRS will be longitude, latitude [,height], and the one of projected CRS will be easting, northing [, height] </p></li>
+</ul>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>obj</strong> – Object of type CRS, or CoordinateOperation created with proj_create_crs_to_crs() (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a new PJ* object to free with proj_destroy() in case of success, or nullptr in case of error </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_destroy">
+<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_destroy</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_destroy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Deallocate a <a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> transformation object.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (const <a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *</p>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+<section id="area-of-interest">
+<h2>Area of interest<a class="headerlink" href="#area-of-interest" title="Permalink to this headline">¶</a></h2>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 6.0.0.</span></p>
+</div>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_area_create">
+<a class="reference internal" href="datatypes.html#c.PJ_AREA" title="PJ_AREA"><span class="n"><span class="pre">PJ_AREA</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_area_create</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_area_create" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Create an area of use.</p>
+<p>Such an area of use is to be passed to <a class="reference internal" href="#c.proj_create_crs_to_crs" title="proj_create_crs_to_crs"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_create_crs_to_crs()</span></code></a> to
+specify the area of use for the choice of relevant coordinate operations.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p><a class="reference internal" href="datatypes.html#c.PJ_AREA" title="PJ_AREA"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_AREA</span></code></a> * to be deallocated with <a class="reference internal" href="#c.proj_area_destroy" title="proj_area_destroy"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_area_destroy()</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_area_set_bbox">
+<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_area_set_bbox</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_AREA" title="PJ_AREA"><span class="n"><span class="pre">PJ_AREA</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">area</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">west_lon_degree</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">south_lat_degree</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">east_lon_degree</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">north_lat_degree</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_area_set_bbox" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Set the bounding box of the area of use</p>
+<p>Such an area of use is to be passed to <a class="reference internal" href="#c.proj_create_crs_to_crs" title="proj_create_crs_to_crs"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_create_crs_to_crs()</span></code></a> to
+specify the area of use for the choice of relevant coordinate operations.</p>
+<p>In the case of an area of use crossing the antimeridian (longitude +/- 180 degrees),
+<cite>west_lon_degree</cite> will be greater than <cite>east_lon_degree</cite>.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>area</strong> – Pointer to an object returned by <a class="reference internal" href="#c.proj_area_create" title="proj_area_create"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_area_create()</span></code></a>.</p></li>
+<li><p><strong>west_lon_degree</strong> – West longitude, in degrees. In [-180,180] range.</p></li>
+<li><p><strong>south_lat_degree</strong> – South latitude, in degrees. In [-90,90] range.</p></li>
+<li><p><strong>east_lon_degree</strong> – East longitude, in degrees. In [-180,180] range.</p></li>
+<li><p><strong>north_lat_degree</strong> – North latitude, in degrees. In [-90,90] range.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_area_destroy">
+<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_area_destroy</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_AREA" title="PJ_AREA"><span class="n"><span class="pre">PJ_AREA</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">area</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_area_destroy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Deallocate a <a class="reference internal" href="datatypes.html#c.PJ_AREA" title="PJ_AREA"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_AREA</span></code></a> object.</p>
+<p>:param PJ_AREA* area</p>
+</dd></dl>
+
+</section>
+<section id="coordinate-transformation">
+<span id="coord-trans-functions"></span><h2>Coordinate transformation<a class="headerlink" href="#coordinate-transformation" title="Permalink to this headline">¶</a></h2>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_trans">
+<a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_trans</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n"><span class="pre">PJ_DIRECTION</span></span></a><span class="w"> </span><span class="n"><span class="pre">direction</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="n"><span class="pre">coord</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_trans" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Transform a single <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_COORD</span></code></a> coordinate.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+<li><p><strong>direction</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n">PJ_DIRECTION</span></a></span></span>) – Transformation direction.</p></li>
+<li><p><strong>coord</strong> (<a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_COORD</span></code></a>) – Coordinate that will be transformed.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_COORD</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_trans_generic">
+<span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_trans_generic</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n"><span class="pre">PJ_DIRECTION</span></span></a><span class="w"> </span><span class="n"><span class="pre">direction</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">x</span></span>, <span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n"><span class="pre">sx</span></span>, <span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n"><span class="pre">nx</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">y</span></span>, <span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n"><span class="pre">sy</span></span>, <span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n"><span class="pre">ny</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">z</span></span>, <span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n"><span class="pre">sz</span></span>, <span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n"><span class="pre">nz</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">t</span></span>, <span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n"><span class="pre">st</span></span>, <span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n"><span class="pre">nt</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_trans_generic" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Transform a series of coordinates, where the individual coordinate dimension
+may be represented by an array that is either</p>
+<blockquote>
+<div><ol class="arabic simple">
+<li><p>fully populated</p></li>
+<li><p>a null pointer and/or a length of zero, which will be treated as a
+fully populated array of zeroes</p></li>
+<li><p>of length one, i.e. a constant, which will be treated as a fully
+populated array of that constant value</p></li>
+</ol>
+</div></blockquote>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>Even though the coordinate components are named <a class="reference internal" href="#c.proj_trans_generic" title="x"><code class="xref c c-data docutils literal notranslate"><span class="pre">x</span></code></a>, <a class="reference internal" href="#c.proj_trans_generic" title="y"><code class="xref c c-data docutils literal notranslate"><span class="pre">y</span></code></a>,
+<a class="reference internal" href="#c.proj_trans_generic" title="z"><code class="xref c c-data docutils literal notranslate"><span class="pre">z</span></code></a> and <a class="reference internal" href="#c.proj_trans_generic" title="t"><code class="xref c c-data docutils literal notranslate"><span class="pre">t</span></code></a>, axis ordering of the to and from CRS
+is respected. Transformations exhibit the same behavior
+as if they were gathered in a <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_COORD</span></code></a> struct.</p>
+</div>
+<p>The strides, <a class="reference internal" href="#c.proj_trans_generic" title="sx"><code class="xref c c-data docutils literal notranslate"><span class="pre">sx</span></code></a>, <a class="reference internal" href="#c.proj_trans_generic" title="sy"><code class="xref c c-data docutils literal notranslate"><span class="pre">sy</span></code></a>, <a class="reference internal" href="#c.proj_trans_generic" title="sz"><code class="xref c c-data docutils literal notranslate"><span class="pre">sz</span></code></a>, <a class="reference internal" href="#c.proj_trans_generic" title="st"><code class="xref c c-data docutils literal notranslate"><span class="pre">st</span></code></a>,
+represent the step length, in bytes, between
+consecutive elements of the corresponding array. This makes it possible for
+<a class="reference internal" href="#c.proj_trans_generic" title="proj_trans_generic"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_trans_generic()</span></code></a> to handle transformation of a large class of application
+specific data structures, without necessarily understanding the data structure
+format, as in:</p>
+<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">;</span><span class="w"></span>
+<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">quality_level</span><span class="p">;</span><span class="w"></span>
+<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="n">surveyor_name</span><span class="p">[</span><span class="mi">134</span><span class="p">];</span><span class="w"></span>
+<span class="p">}</span><span class="w"> </span><span class="n">XYQS</span><span class="p">;</span><span class="w"></span>
+
+<span class="n">XYQS</span><span class="w"> </span><span class="n">survey</span><span class="p">[</span><span class="mi">345</span><span class="p">];</span><span class="w"></span>
+<span class="kt">double</span><span class="w"> </span><span class="n">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">23.45</span><span class="p">;</span><span class="w"></span>
+<span class="kt">size_t</span><span class="w"> </span><span class="n">stride</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">sizeof</span><span class="w"> </span><span class="p">(</span><span class="n">XYQS</span><span class="p">);</span><span class="w"></span>
+
+<span class="p">...</span><span class="w"></span>
+
+<span class="n">proj_trans_generic</span><span class="w"> </span><span class="p">(</span><span class="w"></span>
+<span class="w"> </span><span class="n">P</span><span class="p">,</span><span class="w"> </span><span class="n">PJ_INV</span><span class="p">,</span><span class="w"></span>
+<span class="w"> </span><span class="o">&amp;</span><span class="p">(</span><span class="n">survey</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">x</span><span class="p">),</span><span class="w"> </span><span class="n">stride</span><span class="p">,</span><span class="w"> </span><span class="mi">345</span><span class="p">,</span><span class="w"> </span><span class="cm">/* We have 345 eastings */</span><span class="w"></span>
+<span class="w"> </span><span class="o">&amp;</span><span class="p">(</span><span class="n">survey</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">y</span><span class="p">),</span><span class="w"> </span><span class="n">stride</span><span class="p">,</span><span class="w"> </span><span class="mi">345</span><span class="p">,</span><span class="w"> </span><span class="cm">/* ...and 345 northings. */</span><span class="w"></span>
+<span class="w"> </span><span class="o">&amp;</span><span class="n">height</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="kt">double</span><span class="p">),</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="cm">/* The height is the constant 23.45 m */</span><span class="w"></span>
+<span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="cm">/* and the time is the constant 0.00 s */</span><span class="w"></span>
+<span class="p">);</span><span class="w"></span>
+</pre></div>
+</div>
+<p>This is similar to the inner workings of the deprecated <code class="xref c c-func docutils literal notranslate"><span class="pre">pj_transform()</span></code>
+function, but the stride functionality has been generalized to work for any
+size of basic unit, not just a fixed number of doubles.</p>
+<p>In most cases, the stride will be identical for x, y, z, and t, since they will
+typically be either individual arrays (<code class="docutils literal notranslate"><span class="pre">stride</span> <span class="pre">=</span> <span class="pre">sizeof(double)</span></code>), or strided
+views into an array of application specific data structures (<code class="docutils literal notranslate"><span class="pre">stride</span> <span class="pre">=</span> <span class="pre">sizeof</span> <span class="pre">(...)</span></code>).</p>
+<p>But in order to support cases where <a class="reference internal" href="#c.proj_trans_generic" title="x"><code class="xref c c-data docutils literal notranslate"><span class="pre">x</span></code></a>, <a class="reference internal" href="#c.proj_trans_generic" title="y"><code class="xref c c-data docutils literal notranslate"><span class="pre">y</span></code></a>, <a class="reference internal" href="#c.proj_trans_generic" title="z"><code class="xref c c-data docutils literal notranslate"><span class="pre">z</span></code></a>,
+and <a class="reference internal" href="#c.proj_trans_generic" title="t"><code class="xref c c-data docutils literal notranslate"><span class="pre">t</span></code></a> come from heterogeneous sources, individual strides,
+<a class="reference internal" href="#c.proj_trans_generic" title="sx"><code class="xref c c-data docutils literal notranslate"><span class="pre">sx</span></code></a>, <a class="reference internal" href="#c.proj_trans_generic" title="sy"><code class="xref c c-data docutils literal notranslate"><span class="pre">sy</span></code></a>, <a class="reference internal" href="#c.proj_trans_generic" title="sz"><code class="xref c c-data docutils literal notranslate"><span class="pre">sz</span></code></a>, <a class="reference internal" href="#c.proj_trans_generic" title="st"><code class="xref c c-data docutils literal notranslate"><span class="pre">st</span></code></a>, are used.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>Since <a class="reference internal" href="#c.proj_trans_generic" title="proj_trans_generic"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_trans_generic()</span></code></a> does its work <em>in place</em>,
+this means that even the supposedly constants (i.e. length 1 arrays)
+will return from the call in altered state. Hence, remember to
+reinitialize between repeated calls.</p>
+</div>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+<li><p><strong>direction</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n">PJ_DIRECTION</span></a></span></span>) – Transformation direction.</p></li>
+<li><p><strong>x</strong> (<cite>double *</cite>) – Array of x-coordinates</p></li>
+<li><p><strong>sx</strong> (<cite>size_t</cite>) – Step length, in bytes, between consecutive elements of the corresponding array</p></li>
+<li><p><strong>nx</strong> (<cite>size_t</cite>) – Number of elements in the corresponding array</p></li>
+<li><p><strong>y</strong> (<cite>double *</cite>) – Array of y-coordinates</p></li>
+<li><p><strong>sy</strong> (<cite>size_t</cite>) – Step length, in bytes, between consecutive elements of the corresponding array</p></li>
+<li><p><strong>ny</strong> (<cite>size_t</cite>) – Number of elements in the corresponding array</p></li>
+<li><p><strong>z</strong> (<cite>double *</cite>) – Array of z-coordinates</p></li>
+<li><p><strong>sz</strong> (<cite>size_t</cite>) – Step length, in bytes, between consecutive elements of the corresponding array</p></li>
+<li><p><strong>nz</strong> (<cite>size_t</cite>) – Number of elements in the corresponding array</p></li>
+<li><p><strong>t</strong> (<cite>double *</cite>) – Array of t-coordinates</p></li>
+<li><p><strong>st</strong> (<cite>size_t</cite>) – Step length, in bytes, between consecutive elements of the corresponding array</p></li>
+<li><p><strong>nt</strong> (<cite>size_t</cite>) – Number of elements in the corresponding array</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Number of transformations successfully completed</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_trans_array">
+<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_trans_array</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n"><span class="pre">PJ_DIRECTION</span></span></a><span class="w"> </span><span class="n"><span class="pre">direction</span></span>, <span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n"><span class="pre">n</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">coord</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_trans_array" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Batch transform an array of <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_COORD</span></code></a>.</p>
+<p>Performs transformation on all points, even if errors occur on some points
+(new to 8.0. Previous versions would exit early in case of failure on a given point)</p>
+<p>Individual points that fail to transform will have their components set to
+<code class="docutils literal notranslate"><span class="pre">HUGE_VAL</span></code></p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+<li><p><strong>direction</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n">PJ_DIRECTION</span></a></span></span>) – Transformation direction.</p></li>
+<li><p><strong>n</strong> (<cite>size_t</cite>) – Number of coordinates in <a class="reference internal" href="#c.proj_trans_array" title="coord"><code class="xref c c-data docutils literal notranslate"><span class="pre">coord</span></code></a></p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>int</cite> 0 if all observations are transformed without error, otherwise returns error number.
+This error number will be a precise error number if all coordinates that fail to transform
+for the same reason, or a generic error code if they fail for different
+reasons.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_trans_bounds">
+<span class="target" id="proj_8h_1a8a3936225c69913786d5e2dc815ebe4b"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_trans_bounds</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">context</span></span>, <a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n"><span class="pre">PJ_DIRECTION</span></span></a><span class="w"> </span><span class="n"><span class="pre">direction</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">xmin</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">ymin</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">xmax</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">ymax</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_xmin</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_ymin</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_xmax</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_ymax</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">densify_pts</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_trans_bounds" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Transform boundary,. </p>
+<p>Transform boundary densifying the edges to account for nonlinear transformations along these edges and extracting the outermost bounds.</p>
+<p>If the destination CRS is geographic, the first axis is longitude, and xmax &lt; xmin then the bounds crossed the antimeridian. In this scenario there are two polygons, one on each side of the antimeridian. The first polygon should be constructed with (xmin, ymin, 180, ymax) and the second with (-180, ymin, xmax, ymax).</p>
+<p>If the destination CRS is geographic, the first axis is latitude, and ymax &lt; ymin then the bounds crossed the antimeridian. In this scenario there are two polygons, one on each side of the antimeridian. The first polygon should be constructed with (ymin, xmin, ymax, 180) and the second with (ymin, -180, ymax, xmax).</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>8.2 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>context</strong> – The PJ_CONTEXT object. </p></li>
+<li><p><strong>P</strong> – The PJ object representing the transformation. </p></li>
+<li><p><strong>direction</strong> – The direction of the transformation. </p></li>
+<li><p><strong>xmin</strong> – Minimum bounding coordinate of the first axis in source CRS (target CRS if direction is inverse). </p></li>
+<li><p><strong>ymin</strong> – Minimum bounding coordinate of the second axis in source CRS. (target CRS if direction is inverse). </p></li>
+<li><p><strong>xmax</strong> – Maximum bounding coordinate of the first axis in source CRS. (target CRS if direction is inverse). </p></li>
+<li><p><strong>ymax</strong> – Maximum bounding coordinate of the second axis in source CRS. (target CRS if direction is inverse). </p></li>
+<li><p><strong>out_xmin</strong> – Minimum bounding coordinate of the first axis in target CRS (source CRS if direction is inverse). </p></li>
+<li><p><strong>out_ymin</strong> – Minimum bounding coordinate of the second axis in target CRS. (source CRS if direction is inverse). </p></li>
+<li><p><strong>out_xmax</strong> – Maximum bounding coordinate of the first axis in target CRS. (source CRS if direction is inverse). </p></li>
+<li><p><strong>out_ymax</strong> – Maximum bounding coordinate of the second axis in target CRS. (source CRS if direction is inverse). </p></li>
+<li><p><strong>densify_pts</strong> – Recommended to use 21. This is the number of points to use to densify the bounding polygon in the transformation. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>an integer. 1 if successful. 0 if failures encountered. </p>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+<section id="error-reporting">
+<h2>Error reporting<a class="headerlink" href="#error-reporting" title="Permalink to this headline">¶</a></h2>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_errno">
+<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_errno</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_errno" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get a reading of the current error-state of <a class="reference internal" href="#c.proj_errno" title="P"><code class="xref c c-data docutils literal notranslate"><span class="pre">P</span></code></a>. An non-zero error
+codes indicates an error either with the transformation setup or during a
+transformation. In cases <a class="reference internal" href="#c.proj_errno" title="P"><code class="xref c c-data docutils literal notranslate"><span class="pre">P</span></code></a> is <cite>0</cite> the error number of the default
+context is read. A text representation of the error number can be retrieved
+with <a class="reference internal" href="#c.proj_errno_string" title="proj_errno_string"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_errno_string()</span></code></a>.</p>
+<p>Consult <a class="reference internal" href="datatypes.html#error-codes"><span class="std std-ref">Error codes</span></a> for the list of error codes (PROJ &gt;= 8.0)</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>int</cite></p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_errno">
+<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_errno</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_errno" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get a reading of the current error-state of <a class="reference internal" href="#c.proj_context_errno" title="ctx"><code class="xref c c-data docutils literal notranslate"><span class="pre">ctx</span></code></a>. An non-zero error
+codes indicates an error either with the transformation setup or during a
+transformation. A text representation of the error number can be retrieved
+with <a class="reference internal" href="#c.proj_errno_string" title="proj_errno_string"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_errno_string()</span></code></a>.</p>
+<p>Consult <a class="reference internal" href="datatypes.html#error-codes"><span class="std std-ref">Error codes</span></a> for the list of error codes (PROJ &gt;= 8.0)</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> (<a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_CONTEXT</span></code></a> *) – threading context.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>int</cite></p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_errno_set">
+<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_errno_set</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">err</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_errno_set" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Change the error-state of <a class="reference internal" href="#c.proj_errno_set" title="P"><code class="xref c c-data docutils literal notranslate"><span class="pre">P</span></code></a> to <cite>err</cite>.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+<li><p><strong>err</strong> (<cite>int</cite>) – Error number.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_errno_reset">
+<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_errno_reset</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_errno_reset" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Clears the error number in <a class="reference internal" href="#c.proj_errno_reset" title="P"><code class="xref c c-data docutils literal notranslate"><span class="pre">P</span></code></a>, and bubbles it up to the context.</p>
+<p>Example:</p>
+<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="kt">void</span><span class="w"> </span><span class="nf">foo</span><span class="w"> </span><span class="p">(</span><span class="n">PJ</span><span class="w"> </span><span class="o">*</span><span class="n">P</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
+<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">last_errno</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">proj_errno_reset</span><span class="w"> </span><span class="p">(</span><span class="n">P</span><span class="p">);</span><span class="w"></span>
+
+<span class="w"> </span><span class="n">do_something_with_P</span><span class="w"> </span><span class="p">(</span><span class="n">P</span><span class="p">);</span><span class="w"></span>
+
+<span class="w"> </span><span class="cm">/* failure - keep latest error status */</span><span class="w"></span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">proj_errno</span><span class="p">(</span><span class="n">P</span><span class="p">))</span><span class="w"></span>
+<span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"></span>
+<span class="w"> </span><span class="cm">/* success - restore previous error status */</span><span class="w"></span>
+<span class="w"> </span><span class="n">proj_errno_restore</span><span class="w"> </span><span class="p">(</span><span class="n">P</span><span class="p">,</span><span class="w"> </span><span class="n">last_errno</span><span class="p">);</span><span class="w"></span>
+<span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"></span>
+<span class="p">}</span><span class="w"></span>
+</pre></div>
+</div>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>int</cite> Returns the previous value of the errno, for convenient reset/restore operations.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_errno_restore">
+<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_errno_restore</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">err</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_errno_restore" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Reduce some mental impedance in the canonical reset/restore use case:
+Basically, <a class="reference internal" href="#c.proj_errno_restore" title="proj_errno_restore"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_errno_restore()</span></code></a> is a synonym for
+<a class="reference internal" href="#c.proj_errno_set" title="proj_errno_set"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_errno_set()</span></code></a>, but the use cases are very different:
+<em>set</em> indicate an error to higher level user code, <em>restore</em> passes previously
+set error indicators in case of no errors at this level.</p>
+<p>Hence, although the inner working is identical, we provide both options,
+to avoid some rather confusing real world code.</p>
+<p>See usage example under <a class="reference internal" href="#c.proj_errno_reset" title="proj_errno_reset"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_errno_reset()</span></code></a></p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+<li><p><strong>err</strong> (<cite>int</cite>) – Error number.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_errno_string">
+<span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_errno_string</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">err</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_errno_string" title="Permalink to this definition">¶</a><br /></dt>
+<dd><div class="versionadded">
+<p><span class="versionmodified added">New in version 5.1.0.</span></p>
+</div>
+<p>Get a text representation of an error number.</p>
+<div class="deprecated">
+<p><span class="versionmodified deprecated">Deprecated since version This: </span>function is potentially thread-unsafe, replaced by <a class="reference internal" href="#c.proj_context_errno_string" title="proj_context_errno_string"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_context_errno_string()</span></code></a>.</p>
+</div>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>err</strong> (<cite>int</cite>) – Error number.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>const char*</cite> String with description of error.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_errno_string">
+<span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_errno_string</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">err</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_errno_string" title="Permalink to this definition">¶</a><br /></dt>
+<dd><div class="versionadded">
+<p><span class="versionmodified added">New in version 8.0.0.</span></p>
+</div>
+<p>Get a text representation of an error number.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> (<a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_CONTEXT</span></code></a> *) – threading context.</p></li>
+<li><p><strong>err</strong> (<cite>int</cite>) – Error number.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>const char*</cite> String with description of error.</p>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+<section id="logging">
+<h2>Logging<a class="headerlink" href="#logging" title="Permalink to this headline">¶</a></h2>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_log_level">
+<a class="reference internal" href="datatypes.html#c.PJ_LOG_LEVEL" title="PJ_LOG_LEVEL"><span class="n"><span class="pre">PJ_LOG_LEVEL</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_log_level</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_LOG_LEVEL" title="PJ_LOG_LEVEL"><span class="n"><span class="pre">PJ_LOG_LEVEL</span></span></a><span class="w"> </span><span class="n"><span class="pre">level</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_log_level" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get and set logging level for a given context. Changes the log level to
+<a class="reference internal" href="#c.proj_log_level" title="level"><code class="xref c c-data docutils literal notranslate"><span class="pre">level</span></code></a> and returns the previous logging level. If called with
+<a class="reference internal" href="#c.proj_log_level" title="level"><code class="xref c c-data docutils literal notranslate"><span class="pre">level</span></code></a> set to <code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_LOG_TELL</span></code> the function returns the current
+logging level without changing it.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> (<a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_CONTEXT</span></code></a> *) – Threading context.</p></li>
+<li><p><strong>level</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_LOG_LEVEL" title="PJ_LOG_LEVEL"><span class="n">PJ_LOG_LEVEL</span></a></span></span>) – New logging level.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><a class="reference internal" href="datatypes.html#c.PJ_LOG_LEVEL" title="PJ_LOG_LEVEL"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_LOG_LEVEL</span></code></a></p>
+</dd>
+</dl>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.1.0.</span></p>
+</div>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_log_func">
+<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_log_func</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">app_data</span></span>, <span class="n"><span class="pre">PJ_LOG_FUNCTION</span></span><span class="w"> </span><span class="n"><span class="pre">logf</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_log_func" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Override the internal log function of PROJ.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> (<a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_CONTEXT</span></code></a> *) – Threading context.</p></li>
+<li><p><strong>app_data</strong> (<cite>void *</cite>) – Pointer to data structure used by the calling application.</p></li>
+<li><p><strong>logf</strong> (<code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_LOG_FUNCTION</span></code>) – Log function that overrides the PROJ log function.</p></li>
+</ul>
+</dd>
+</dl>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 5.1.0.</span></p>
+</div>
+</dd></dl>
+
+</section>
+<section id="info-functions">
+<h2>Info functions<a class="headerlink" href="#info-functions" title="Permalink to this headline">¶</a></h2>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_info">
+<a class="reference internal" href="datatypes.html#c.PJ_INFO" title="PJ_INFO"><span class="n"><span class="pre">PJ_INFO</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_info</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_info" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get information about the current instance of the PROJ library.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p><a class="reference internal" href="datatypes.html#c.PJ_INFO" title="PJ_INFO"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_INFO</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_pj_info">
+<a class="reference internal" href="datatypes.html#c.PJ_PROJ_INFO" title="PJ_PROJ_INFO"><span class="n"><span class="pre">PJ_PROJ_INFO</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_pj_info</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_pj_info" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get information about a specific transformation object, <a class="reference internal" href="#c.proj_pj_info" title="P"><code class="xref c c-data docutils literal notranslate"><span class="pre">P</span></code></a>.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (const <a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><a class="reference internal" href="datatypes.html#c.PJ_PROJ_INFO" title="PJ_PROJ_INFO"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_PROJ_INFO</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_grid_info">
+<a class="reference internal" href="datatypes.html#c.PJ_GRID_INFO" title="PJ_GRID_INFO"><span class="n"><span class="pre">PJ_GRID_INFO</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_grid_info</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">gridname</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_grid_info" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get information about a specific grid.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>gridname</strong> (<cite>const char*</cite>) – Gridname in the PROJ searchpath</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><a class="reference internal" href="datatypes.html#c.PJ_GRID_INFO" title="PJ_GRID_INFO"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_GRID_INFO</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_init_info">
+<a class="reference internal" href="datatypes.html#c.PJ_INIT_INFO" title="PJ_INIT_INFO"><span class="n"><span class="pre">PJ_INIT_INFO</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_init_info</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">initname</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_init_info" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get information about a specific init file.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>initname</strong> (<cite>const char*</cite>) – Init file in the PROJ searchpath</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><a class="reference internal" href="datatypes.html#c.PJ_INIT_INFO" title="PJ_INIT_INFO"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_INIT_INFO</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+<section id="lists">
+<h2>Lists<a class="headerlink" href="#lists" title="Permalink to this headline">¶</a></h2>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_list_operations">
+<span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ_OPERATIONS" title="PJ_OPERATIONS"><span class="n"><span class="pre">PJ_OPERATIONS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_list_operations</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_list_operations" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get a pointer to an array of all operations in PROJ. The last entry
+of the returned array is a NULL-entry. The array is statically allocated
+and does not need to be freed after use.</p>
+<p>Print a list of all operations in PROJ:</p>
+<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="n">PJ_OPERATIONS</span><span class="w"> </span><span class="o">*</span><span class="n">ops</span><span class="p">;</span><span class="w"></span>
+<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">ops</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">proj_list_operations</span><span class="p">();</span><span class="w"> </span><span class="n">ops</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">ops</span><span class="p">)</span><span class="w"></span>
+<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ops</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">);</span><span class="w"></span>
+</pre></div>
+</div>
+<dl class="field-list simple">
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p>const <a class="reference internal" href="datatypes.html#c.PJ_OPERATIONS" title="PJ_OPERATIONS"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_OPERATIONS</span></code></a> *</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_list_ellps">
+<span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ_ELLPS" title="PJ_ELLPS"><span class="n"><span class="pre">PJ_ELLPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_list_ellps</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_list_ellps" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get a pointer to an array of ellipsoids defined in PROJ. The last entry
+of the returned array is a NULL-entry. The array is statically allocated
+and does not need to be freed after use.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p>const <a class="reference internal" href="datatypes.html#c.PJ_ELLPS" title="PJ_ELLPS"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_ELLPS</span></code></a> *</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_list_units">
+<span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ_UNITS" title="PJ_UNITS"><span class="n"><span class="pre">PJ_UNITS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_list_units</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_list_units" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get a pointer to an array of distance units defined in PROJ. The last
+entry of the returned array is a NULL-entry. The array is statically
+allocated and does not need to be freed after use.</p>
+<p>Note: starting with PROJ 7.1, this function is deprecated by
+<code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">proj_get_units_from_database()</span></code></p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p>const <a class="reference internal" href="datatypes.html#c.PJ_UNITS" title="PJ_UNITS"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_UNITS</span></code></a> *</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_list_prime_meridians">
+<span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ_PRIME_MERIDIANS" title="PJ_PRIME_MERIDIANS"><span class="n"><span class="pre">PJ_PRIME_MERIDIANS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_list_prime_meridians</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_list_prime_meridians" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get a pointer to an array of prime meridians defined in PROJ. The last
+entry of the returned array is a NULL-entry. The array is statically
+allocated and does not need to be freed after use.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p>const <a class="reference internal" href="datatypes.html#c.PJ_PRIME_MERIDIANS" title="PJ_PRIME_MERIDIANS"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_PRIME_MERIDIANS</span></code></a> *</p>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+<section id="distances">
+<h2>Distances<a class="headerlink" href="#distances" title="Permalink to this headline">¶</a></h2>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_lp_dist">
+<span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_lp_dist</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="n"><span class="pre">a</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="n"><span class="pre">b</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_lp_dist" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Calculate geodesic distance between two points in geodetic coordinates. The
+calculated distance is between the two points located on the ellipsoid.</p>
+<p>The coordinates in <a class="reference internal" href="#c.proj_lp_dist" title="a"><code class="xref c c-data docutils literal notranslate"><span class="pre">a</span></code></a> and <a class="reference internal" href="#c.proj_lp_dist" title="b"><code class="xref c c-data docutils literal notranslate"><span class="pre">b</span></code></a> needs to be given as longitude
+and latitude in radians. Note that the axis order of the <a class="reference internal" href="#c.proj_lp_dist" title="P"><code class="xref c c-data docutils literal notranslate"><span class="pre">P</span></code></a> object
+is not taken into account in this function, so even though a CRS object comes
+with axis ordering latitude/longitude coordinates used in this function should
+be reordered as longitude/latitude.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (const <a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation or CRS object</p></li>
+<li><p><strong>a</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n">PJ_COORD</span></a></span></span>) – Coordinate of first point</p></li>
+<li><p><strong>b</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n">PJ_COORD</span></a></span></span>) – Coordinate of second point</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>double</cite> Distance between <a class="reference internal" href="#c.proj_lp_dist" title="a"><code class="xref c c-data docutils literal notranslate"><span class="pre">a</span></code></a> and <a class="reference internal" href="#c.proj_lp_dist" title="b"><code class="xref c c-data docutils literal notranslate"><span class="pre">b</span></code></a> in meters.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_lpz_dist">
+<span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_lpz_dist</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="n"><span class="pre">a</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="n"><span class="pre">b</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_lpz_dist" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Calculate geodesic distance between two points in geodetic coordinates.
+Similar to <a class="reference internal" href="#c.proj_lp_dist" title="proj_lp_dist"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_lp_dist()</span></code></a> but also takes the height above the ellipsoid
+into account.</p>
+<p>The coordinates in <a class="reference internal" href="#c.proj_lpz_dist" title="a"><code class="xref c c-data docutils literal notranslate"><span class="pre">a</span></code></a> and <a class="reference internal" href="#c.proj_lpz_dist" title="b"><code class="xref c c-data docutils literal notranslate"><span class="pre">b</span></code></a> needs to be given as longitude
+and latitude in radians. Note that the axis order of the <a class="reference internal" href="#c.proj_lpz_dist" title="P"><code class="xref c c-data docutils literal notranslate"><span class="pre">P</span></code></a> object
+is not taken into account in this function, so even though a CRS object comes
+with axis ordering latitude/longitude coordinates used in this function should
+be reordered as longitude/latitude.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (const <a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation or CRS object</p></li>
+<li><p><strong>a</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n">PJ_COORD</span></a></span></span>) – Coordinate of first point</p></li>
+<li><p><strong>b</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n">PJ_COORD</span></a></span></span>) – Coordinate of second point</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>double</cite> Distance between <a class="reference internal" href="#c.proj_lpz_dist" title="a"><code class="xref c c-data docutils literal notranslate"><span class="pre">a</span></code></a> and <a class="reference internal" href="#c.proj_lpz_dist" title="b"><code class="xref c c-data docutils literal notranslate"><span class="pre">b</span></code></a> in meters.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_xy_dist">
+<span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_xy_dist</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="n"><span class="pre">a</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="n"><span class="pre">b</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_xy_dist" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Calculate 2-dimensional euclidean between two projected coordinates.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>a</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n">PJ_COORD</span></a></span></span>) – First coordinate</p></li>
+<li><p><strong>b</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n">PJ_COORD</span></a></span></span>) – Second coordinate</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>double</cite> Distance between <a class="reference internal" href="#c.proj_xy_dist" title="a"><code class="xref c c-data docutils literal notranslate"><span class="pre">a</span></code></a> and <a class="reference internal" href="#c.proj_xy_dist" title="b"><code class="xref c c-data docutils literal notranslate"><span class="pre">b</span></code></a> in meters.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_xyz_dist">
+<span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_xyz_dist</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="n"><span class="pre">a</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="n"><span class="pre">b</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_xyz_dist" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Calculate 3-dimensional euclidean between two projected coordinates.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>a</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n">PJ_COORD</span></a></span></span>) – First coordinate</p></li>
+<li><p><strong>b</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n">PJ_COORD</span></a></span></span>) – Second coordinate</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>double</cite> Distance between <a class="reference internal" href="#c.proj_xyz_dist" title="a"><code class="xref c c-data docutils literal notranslate"><span class="pre">a</span></code></a> and <a class="reference internal" href="#c.proj_xyz_dist" title="b"><code class="xref c c-data docutils literal notranslate"><span class="pre">b</span></code></a> in meters.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_geod">
+<a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_geod</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="n"><span class="pre">a</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="n"><span class="pre">b</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_geod" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Calculate the geodesic distance as well as forward and reverse azimuth
+between two points on the ellipsoid.</p>
+<p>The coordinates in <a class="reference internal" href="#c.proj_geod" title="a"><code class="xref c c-data docutils literal notranslate"><span class="pre">a</span></code></a> and <a class="reference internal" href="#c.proj_geod" title="b"><code class="xref c c-data docutils literal notranslate"><span class="pre">b</span></code></a> needs to be given as longitude
+and latitude in radians. Note that the axis order of the <a class="reference internal" href="#c.proj_geod" title="P"><code class="xref c c-data docutils literal notranslate"><span class="pre">P</span></code></a> object
+is not taken into account in this function, so even though a CRS object comes
+with axis ordering latitude/longitude coordinates used in this function should
+be reordered as longitude/latitude.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (const <a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation or CRS object</p></li>
+<li><p><strong>a</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n">PJ_COORD</span></a></span></span>) – Coordinate of first point</p></li>
+<li><p><strong>b</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n">PJ_COORD</span></a></span></span>) – Coordinate of second point</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>PJ_COORD</cite> where the first value is the distance between <a class="reference internal" href="#c.proj_geod" title="a"><code class="xref c c-data docutils literal notranslate"><span class="pre">a</span></code></a>
+and <a class="reference internal" href="#c.proj_geod" title="b"><code class="xref c c-data docutils literal notranslate"><span class="pre">b</span></code></a> in meters, the second value is the forward azimuth
+and the third value is the reverse azimuth. The fourth coordinate
+value is unused.</p>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+<section id="various">
+<h2>Various<a class="headerlink" href="#various" title="Permalink to this headline">¶</a></h2>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_coord">
+<a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_coord</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">x</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">y</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">z</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">t</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_coord" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Initializer for the <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_COORD</span></code></a> union. The function is
+shorthand for the otherwise convoluted assignment.
+Equivalent to</p>
+<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="n">PJ_COORD</span><span class="w"> </span><span class="n">c</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{{</span><span class="mf">10.0</span><span class="p">,</span><span class="w"> </span><span class="mf">20.0</span><span class="p">,</span><span class="w"> </span><span class="mf">30.0</span><span class="p">,</span><span class="w"> </span><span class="mf">40.0</span><span class="p">}};</span><span class="w"></span>
+</pre></div>
+</div>
+<p>or</p>
+<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="n">PJ_COORD</span><span class="w"> </span><span class="n">c</span><span class="p">;</span><span class="w"></span>
+<span class="c1">// Assign using the PJ_XYZT struct in the union</span>
+<span class="n">c</span><span class="p">.</span><span class="n">xyzt</span><span class="p">.</span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">10.0</span><span class="p">;</span><span class="w"></span>
+<span class="n">c</span><span class="p">.</span><span class="n">xyzt</span><span class="p">.</span><span class="n">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">20.0</span><span class="p">;</span><span class="w"></span>
+<span class="n">c</span><span class="p">.</span><span class="n">xyzt</span><span class="p">.</span><span class="n">z</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">30.0</span><span class="p">;</span><span class="w"></span>
+<span class="n">c</span><span class="p">.</span><span class="n">xyzt</span><span class="p">.</span><span class="n">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">40.0</span><span class="p">;</span><span class="w"></span>
+</pre></div>
+</div>
+<p>Since <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_COORD</span></code></a> is a union of structs, the above assignment can
+also be expressed in terms of the other types in the union, e.g.
+<a class="reference internal" href="datatypes.html#c.PJ_UVWT" title="PJ_UVWT"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_UVWT</span></code></a> or <a class="reference internal" href="datatypes.html#c.PJ_LPZT" title="PJ_LPZT"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_LPZT</span></code></a>.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>x</strong> (<cite>double</cite>) – 1st component in a <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_COORD</span></code></a></p></li>
+<li><p><strong>y</strong> (<cite>double</cite>) – 2nd component in a <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_COORD</span></code></a></p></li>
+<li><p><strong>z</strong> (<cite>double</cite>) – 3rd component in a <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_COORD</span></code></a></p></li>
+<li><p><strong>t</strong> (<cite>double</cite>) – 4th component in a <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_COORD</span></code></a></p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_COORD</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_roundtrip">
+<span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_roundtrip</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n"><span class="pre">PJ_DIRECTION</span></span></a><span class="w"> </span><span class="n"><span class="pre">direction</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">n</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">coord</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_roundtrip" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Measure internal consistency of a given transformation. The function
+performs <a class="reference internal" href="#c.proj_roundtrip" title="n"><code class="xref c c-data docutils literal notranslate"><span class="pre">n</span></code></a> round trip transformations starting in either
+the forward or reverse <a class="reference internal" href="#c.proj_roundtrip" title="direction"><code class="xref c c-data docutils literal notranslate"><span class="pre">direction</span></code></a>. Returns the euclidean
+distance of the starting point <code class="xref c c-data docutils literal notranslate"><span class="pre">coo</span></code> and the resulting
+coordinate after <a class="reference internal" href="#c.proj_roundtrip" title="n"><code class="xref c c-data docutils literal notranslate"><span class="pre">n</span></code></a> iterations back and forth.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+<li><p><strong>direction</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n">PJ_DIRECTION</span></a></span></span>) – Starting direction of transformation</p></li>
+<li><p><strong>n</strong> (<cite>int</cite>) – Number of roundtrip transformations</p></li>
+<li><p><strong>coord</strong> (<a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_COORD</span></code></a> *) – Input coordinate</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>double</cite> Distance between original coordinate and the resulting coordinate after <a class="reference internal" href="#c.proj_roundtrip" title="n"><code class="xref c c-data docutils literal notranslate"><span class="pre">n</span></code></a> transformation iterations.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_factors">
+<a class="reference internal" href="datatypes.html#c.PJ_FACTORS" title="PJ_FACTORS"><span class="n"><span class="pre">PJ_FACTORS</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_factors</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="n"><span class="pre">lp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_factors" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Calculate various cartographic properties, such as scale factors, angular
+distortion and meridian convergence. Depending on the underlying projection
+values will be calculated either numerically (default) or analytically.</p>
+<p>Starting with PROJ 8.2, the P object can be a projected CRS, for example
+instantiated from a EPSG CRS code. The factors computed will be those of the
+map projection implied by the transformation from the base geographic CRS of
+the projected CRS to the projected CRS.</p>
+<p>The input geodetic coordinate lp should be such that lp.lam is the longitude
+in radian, and lp.phi the latitude in radian (thus independently of the
+definition of the base CRS, if P is a projected CRS).</p>
+<p>The function also calculates the partial derivatives of the given
+coordinate.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+<li><p><strong>lp</strong> (<a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_COORD</span></code></a>) – Geodetic coordinate</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><a class="reference internal" href="datatypes.html#c.PJ_FACTORS" title="PJ_FACTORS"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ_FACTORS</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_torad">
+<span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_torad</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">angle_in_degrees</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_torad" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Convert degrees to radians.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>angle_in_degrees</strong> (<cite>double</cite>) – Degrees</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>double</cite> Radians</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_todeg">
+<span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_todeg</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">angle_in_radians</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_todeg" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Convert radians to degrees</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>angle_in_radians</strong> (<cite>double</cite>) – Radians</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>double</cite> Degrees</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_dmstor">
+<span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_dmstor</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">is</span></span>, <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">rs</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_dmstor" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Convert string of degrees, minutes and seconds to radians.
+Works similarly to the C standard library function <code class="xref c c-func docutils literal notranslate"><span class="pre">strtod()</span></code>.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>is</strong> (<cite>const char*</cite>) – Value to be converted to radians</p></li>
+<li><p><strong>rs</strong> – Reference to an already allocated char*, whose value is set by the function to the next character in <a class="reference internal" href="#c.proj_dmstor" title="is"><code class="xref c c-data docutils literal notranslate"><span class="pre">is</span></code></a> after the numerical value.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_rtodms">
+<span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_rtodms</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">s</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">r</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">pos</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">neg</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_rtodms" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Convert radians to string representation of degrees, minutes and seconds.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>s</strong> (<cite>char *</cite>) – Buffer that holds the output string</p></li>
+<li><p><strong>r</strong> (<cite>double</cite>) – Value to convert to dms-representation</p></li>
+<li><p><strong>pos</strong> (<cite>int</cite>) – Character denoting positive direction, typically <cite>‘N’</cite> or <cite>‘E’</cite>.</p></li>
+<li><p><strong>neg</strong> (<cite>int</cite>) – Character denoting negative direction, typically <cite>‘S’</cite> or <cite>‘W’</cite>.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>char*</cite> Pointer to output buffer (same as <a class="reference internal" href="#c.proj_rtodms" title="s"><code class="xref c c-data docutils literal notranslate"><span class="pre">s</span></code></a>)</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_angular_input">
+<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_angular_input</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n"><span class="pre">PJ_DIRECTION</span></span></a><span class="w"> </span><span class="n"><span class="pre">dir</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_angular_input" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Check if an operation expects input in radians or not.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+<li><p><strong>direction</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n">PJ_DIRECTION</span></a></span></span>) – Starting direction of transformation</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>int</cite> 1 if input units is expected in radians, otherwise 0</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_angular_output">
+<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_angular_output</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n"><span class="pre">PJ_DIRECTION</span></span></a><span class="w"> </span><span class="n"><span class="pre">dir</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_angular_output" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Check if an operation returns output in radians or not.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+<li><p><strong>direction</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n">PJ_DIRECTION</span></a></span></span>) – Starting direction of transformation</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>int</cite> 1 if output units is expected in radians, otherwise 0</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_degree_input">
+<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_degree_input</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n"><span class="pre">PJ_DIRECTION</span></span></a><span class="w"> </span><span class="n"><span class="pre">dir</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_degree_input" title="Permalink to this definition">¶</a><br /></dt>
+<dd><div class="versionadded">
+<p><span class="versionmodified added">New in version 7.1.0.</span></p>
+</div>
+<p>Check if an operation expects input in degrees or not.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+<li><p><strong>direction</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n">PJ_DIRECTION</span></a></span></span>) – Starting direction of transformation</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>int</cite> 1 if input units is expected in degrees, otherwise 0</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_degree_output">
+<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_degree_output</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">P</span></span>, <span class="k"><span class="pre">enum</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n"><span class="pre">PJ_DIRECTION</span></span></a><span class="w"> </span><span class="n"><span class="pre">dir</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_degree_output" title="Permalink to this definition">¶</a><br /></dt>
+<dd><div class="versionadded">
+<p><span class="versionmodified added">New in version 7.1.0.</span></p>
+</div>
+<p>Check if an operation returns output in degrees or not.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>P</strong> (<a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><code class="xref c c-type docutils literal notranslate"><span class="pre">PJ</span></code></a> *) – Transformation object</p></li>
+<li><p><strong>direction</strong> (<span><span class="c-expr sig sig-inline c"><a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n">PJ_DIRECTION</span></a></span></span>) – Starting direction of transformation</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><cite>int</cite> 1 if output units is expected in degrees, otherwise 0</p>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+<section id="setting-custom-i-o-functions">
+<h2>Setting custom I/O functions<a class="headerlink" href="#setting-custom-i-o-functions" title="Permalink to this headline">¶</a></h2>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 7.0.0.</span></p>
+</div>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_set_fileapi">
+<span class="target" id="proj_8h_1ad8419df443b60938d928d7250f3e1c54"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_set_fileapi</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PROJ_FILE_API" title="PROJ_FILE_API"><span class="n"><span class="pre">PROJ_FILE_API</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">fileapi</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">user_data</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_set_fileapi" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Set a file API</p>
+<p>All callbacks should be provided (non NULL pointers). If read-only usage is intended, then the callbacks might have a dummy implementation.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.0 </p>
+</dd>
+</dl>
+</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>Those callbacks will not be used for SQLite3 database access. If custom I/O is desired for that, then <a class="reference internal" href="#proj_8h_1aaeeb31bf23fb19d63dd5f89c56490ebd"><span class="std std-ref">proj_context_set_sqlite3_vfs_name()</span></a> should be used.</p>
+</div>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+<li><p><strong>fileapi</strong> – Pointer to file API structure (content will be copied). </p></li>
+<li><p><strong>user_data</strong> – Arbitrary pointer provided by the user, and passed to the above callbacks. May be NULL. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE in case of success. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_set_sqlite3_vfs_name">
+<span class="target" id="proj_8h_1aaeeb31bf23fb19d63dd5f89c56490ebd"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_set_sqlite3_vfs_name</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">name</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_set_sqlite3_vfs_name" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Set the name of a custom SQLite3 VFS.</p>
+<p>This should be a valid SQLite3 VFS name, such as the one passed to the sqlite3_vfs_register(). See <a class="reference external" href="https://www.sqlite.org/vfs.html">https://www.sqlite.org/vfs.html</a></p>
+<p>It will be used to read proj.db or create&amp;access the cache.db file in the PROJ user writable directory.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+<li><p><strong>name</strong> – SQLite3 VFS name. If NULL is passed, default implementation by SQLite will be used. </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_set_file_finder">
+<span class="target" id="proj_8h_1a0d19deb424deca88cd90a5429f2adbd7"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_set_file_finder</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="n"><span class="pre">proj_file_finder</span></span><span class="w"> </span><span class="n"><span class="pre">finder</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">user_data</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_set_file_finder" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Assign a file finder callback to a context. </p>
+<p>This callback will be used whenever PROJ must open one of its resource files (proj.db database, grids, etc…)</p>
+<p>The callback will be called with the context currently in use at the moment where it is used (not necessarily the one provided during this call), and with the provided user_data (which may be NULL). The user_data must remain valid during the whole lifetime of the context.</p>
+<p>A finder set on the default context will be inherited by contexts created later.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>PROJ 6.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for the default context. </p></li>
+<li><p><strong>finder</strong> – Finder callback. May be NULL </p></li>
+<li><p><strong>user_data</strong> – User data provided to the finder callback. May be NULL.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_set_search_paths">
+<span class="target" id="proj_8h_1afe6b85648984b25309b399c68716f914"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_set_search_paths</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">count_paths</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">paths</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_set_search_paths" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Sets search paths. </p>
+<p>Those search paths will be used whenever PROJ must open one of its resource files (proj.db database, grids, etc…)</p>
+<p>If set on the default context, they will be inherited by contexts created later.</p>
+<p>Starting with PROJ 7.0, the path(s) should be encoded in UTF-8.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>PROJ 6.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for the default context. </p></li>
+<li><p><strong>count_paths</strong> – Number of paths. 0 if paths == NULL. </p></li>
+<li><p><strong>paths</strong> – Paths. May be NULL.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_set_ca_bundle_path">
+<span class="target" id="proj_8h_1ac46b8530cc786c7e9675a9ab4e55f9d4"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_set_ca_bundle_path</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">path</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_set_ca_bundle_path" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Sets CA Bundle path. </p>
+<p>Those CA Bundle path will be used by PROJ when curl and PROJ_NETWORK are enabled.</p>
+<p>If set on the default context, they will be inherited by contexts created later.</p>
+<p>The path should be encoded in UTF-8.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>PROJ 7.2 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for the default context. </p></li>
+<li><p><strong>path</strong> – Path. May be NULL.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+<section id="network-related-functionality">
+<h2>Network related functionality<a class="headerlink" href="#network-related-functionality" title="Permalink to this headline">¶</a></h2>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 7.0.0.</span></p>
+</div>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_set_network_callbacks">
+<span class="target" id="proj_8h_1a4cf6f08b647734f2681c7409b192672e"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_set_network_callbacks</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <a class="reference internal" href="datatypes.html#c.proj_network_open_cbk_type" title="proj_network_open_cbk_type"><span class="n"><span class="pre">proj_network_open_cbk_type</span></span></a><span class="w"> </span><span class="n"><span class="pre">open_cbk</span></span>, <a class="reference internal" href="datatypes.html#c.proj_network_close_cbk_type" title="proj_network_close_cbk_type"><span class="n"><span class="pre">proj_network_close_cbk_type</span></span></a><span class="w"> </span><span class="n"><span class="pre">close_cbk</span></span>, <a class="reference internal" href="datatypes.html#c.proj_network_get_header_value_cbk_type" title="proj_network_get_header_value_cbk_type"><span class="n"><span class="pre">proj_network_get_header_value_cbk_type</span></span></a><span class="w"> </span><span class="n"><span class="pre">get_header_value_cbk</span></span>, <a class="reference internal" href="datatypes.html#c.proj_network_read_range_type" title="proj_network_read_range_type"><span class="n"><span class="pre">proj_network_read_range_type</span></span></a><span class="w"> </span><span class="n"><span class="pre">read_range_cbk</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">user_data</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_set_network_callbacks" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Define a custom set of callbacks for network access.</p>
+<p>All callbacks should be provided (non NULL pointers).</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+<li><p><strong>open_cbk</strong> – Callback to open a remote file given its URL </p></li>
+<li><p><strong>close_cbk</strong> – Callback to close a remote file. </p></li>
+<li><p><strong>get_header_value_cbk</strong> – Callback to get HTTP headers </p></li>
+<li><p><strong>read_range_cbk</strong> – Callback to read a range of bytes inside a remote file. </p></li>
+<li><p><strong>user_data</strong> – Arbitrary pointer provided by the user, and passed to the above callbacks. May be NULL. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE in case of success. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_set_enable_network">
+<span class="target" id="proj_8h_1a9a771bc53b785bfe6a0f658f588d11ec"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_set_enable_network</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">enabled</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_set_enable_network" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Enable or disable network access.</p>
+<p>This overrides the default endpoint in the PROJ configuration file or with the PROJ_NETWORK environment variable.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+<li><p><strong>enable</strong> – TRUE if network access is allowed. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE if network access is possible. That is either libcurl is available, or an alternate interface has been set. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_is_network_enabled">
+<span class="target" id="proj_8h_1a2b7967c55ae6edd5b52c417a6183c801"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_is_network_enabled</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_is_network_enabled" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return if network access is enabled.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE if network access has been enabled </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_set_url_endpoint">
+<span class="target" id="proj_8h_1a2e438ab67fe28502bb447cc48af913ca"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_set_url_endpoint</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">url</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_set_url_endpoint" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Define the URL endpoint to query for remote grids.</p>
+<p>This overrides the default endpoint in the PROJ configuration file or with the PROJ_NETWORK_ENDPOINT environment variable.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+<li><p><strong>url</strong> – Endpoint URL. Must NOT be NULL. </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_get_url_endpoint">
+<span class="target" id="proj_8h_1a6413de983eb94a1a7d356efce66c36ff"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_get_url_endpoint</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_get_url_endpoint" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get the URL endpoint to query for remote grids.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.1 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Endpoint URL. The returned pointer would be invalidated by a later call to <a class="reference internal" href="#proj_8h_1a2e438ab67fe28502bb447cc48af913ca"><span class="std std-ref">proj_context_set_url_endpoint()</span></a> </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_get_user_writable_directory">
+<span class="target" id="proj_8h_1af4a5207c142de7c57e41d3f242cb3152"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_get_user_writable_directory</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">create</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_get_user_writable_directory" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get the PROJ user writable directory for datumgrid files.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.1 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+<li><p><strong>create</strong> – If set to TRUE, create the directory if it does not exist already. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>The path to the PROJ user writable directory. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_grid_cache_set_enable">
+<span class="target" id="proj_8h_1ae20fdfc00246dd72d64ee74015998c41"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_grid_cache_set_enable</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">enabled</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_grid_cache_set_enable" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Enable or disable the local cache of grid chunks</p>
+<p>This overrides the setting in the PROJ configuration file.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+<li><p><strong>enabled</strong> – TRUE if the cache is enabled. </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_grid_cache_set_filename">
+<span class="target" id="proj_8h_1a2f964528154ac9e426ab39d62d14e6e3"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_grid_cache_set_filename</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">fullname</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_grid_cache_set_filename" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Override, for the considered context, the path and file of the local cache of grid chunks.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+<li><p><strong>fullname</strong> – Full name to the cache (encoded in UTF-8). If set to NULL, caching will be disabled. </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_grid_cache_set_max_size">
+<span class="target" id="proj_8h_1a55c16fa365a1f57e33cb36a8ebbf79cc"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_grid_cache_set_max_size</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">max_size_MB</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_grid_cache_set_max_size" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Override, for the considered context, the maximum size of the local cache of grid chunks.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+<li><p><strong>max_size_MB</strong> – Maximum size, in mega-bytes (1024*1024 bytes), or negative value to set unlimited size. </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_grid_cache_set_ttl">
+<span class="target" id="proj_8h_1a47d7a4c280232d7e480655513ff31e8c"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_grid_cache_set_ttl</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">ttl_seconds</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_grid_cache_set_ttl" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Override, for the considered context, the time-to-live delay for re-checking if the cached properties of files are still up-to-date.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+<li><p><strong>ttl_seconds</strong> – Delay in seconds. Use negative value for no expiration. </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_grid_cache_clear">
+<span class="target" id="proj_8h_1abb13ecf71360a5294158b89dead2e1c1"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_grid_cache_clear</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_grid_cache_clear" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Clear the local cache of grid chunks.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_is_download_needed">
+<span class="target" id="proj_8h_1a336295aa5791dc3251913682f995c100"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_is_download_needed</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">url_or_filename</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">ignore_ttl_setting</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_is_download_needed" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return if a file must be downloaded or is already available in the PROJ user-writable directory.</p>
+<p>The file will be determinted to have to be downloaded if it does not exist yet in the user-writable directory, or if it is determined that a more recent version exists. To determine if a more recent version exists, PROJ will use the “downloaded_file_properties” table of its grid cache database. Consequently files manually placed in the user-writable directory without using this function would be considered as non-existing/obsolete and would be unconditionally downloaded again.</p>
+<p>This function can only be used if networking is enabled, and either the default curl network API or a custom one have been installed.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+<li><p><strong>url_or_filename</strong> – URL or filename (without directory component) </p></li>
+<li><p><strong>ignore_ttl_setting</strong> – If set to FALSE, PROJ will only check the recentness of an already downloaded file, if the delay between the last time it has been verified and the current time exceeds the TTL setting. This can save network accesses. If set to TRUE, PROJ will unconditionally check from the server the recentness of the file. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE if the file must be downloaded with <a class="reference internal" href="#proj_8h_1aa17c90464d2c7d325d67493911b1a76b"><span class="std std-ref">proj_download_file()</span></a> </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_download_file">
+<span class="target" id="proj_8h_1aa17c90464d2c7d325d67493911b1a76b"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_download_file</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">url_or_filename</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">ignore_ttl_setting</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">progress_cbk</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">pct</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">user_data</span></span><span class="p"><span class="pre">)</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">user_data</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_download_file" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Download a file in the PROJ user-writable directory.</p>
+<p>The file will only be downloaded if it does not exist yet in the user-writable directory, or if it is determined that a more recent version exists. To determine if a more recent version exists, PROJ will use the “downloaded_file_properties” table of its grid cache database. Consequently files manually placed in the user-writable directory without using this function would be considered as non-existing/obsolete and would be unconditionally downloaded again.</p>
+<p>This function can only be used if networking is enabled, and either the default curl network API or a custom one have been installed.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL </p></li>
+<li><p><strong>url_or_filename</strong> – URL or filename (without directory component) </p></li>
+<li><p><strong>ignore_ttl_setting</strong> – If set to FALSE, PROJ will only check the recentness of an already downloaded file, if the delay between the last time it has been verified and the current time exceeds the TTL setting. This can save network accesses. If set to TRUE, PROJ will unconditionally check from the server the recentness of the file. </p></li>
+<li><p><strong>progress_cbk</strong> – Progress callback, or NULL. The passed percentage is in the [0, 1] range. The progress callback must return TRUE if download must be continued. </p></li>
+<li><p><strong>user_data</strong> – User data to provide to the progress callback, or NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE if the download was successful (or not needed) </p>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+<section id="cleanup">
+<h2>Cleanup<a class="headerlink" href="#cleanup" title="Permalink to this headline">¶</a></h2>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_cleanup">
+<span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_cleanup</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_cleanup" title="Permalink to this definition">¶</a><br /></dt>
+<dd><div class="versionadded">
+<p><span class="versionmodified added">New in version 6.2.0.</span></p>
+</div>
+<p>This function frees global resources (grids, cache of +init files). It
+should be called typically before process termination, and <em>after</em> having
+freed PJ and PJ_CONTEXT objects.</p>
+</dd></dl>
+
+</section>
+<section id="c-api-for-iso-19111-functionality">
+<h2>C API for ISO-19111 functionality<a class="headerlink" href="#c-api-for-iso-19111-functionality" title="Permalink to this headline">¶</a></h2>
+<div class="versionadded">
+<p><span class="versionmodified added">New in version 6.0.0.</span></p>
+</div>
+<p>The PJ* objects returned by <a class="reference internal" href="#c.proj_create_from_wkt" title="proj_create_from_wkt"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_create_from_wkt()</span></code></a>,
+<a class="reference internal" href="#c.proj_create_from_database" title="proj_create_from_database"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_create_from_database()</span></code></a> and other functions in that section
+will have generally minimal interaction with the functions declared in the
+previous sections (calling those functions on those objects
+will either return an error or default/nonsensical values). The exception is
+for ISO19111 objects of type CoordinateOperation that can be exported as a
+valid PROJ pipeline. In this case, objects will work for example with
+<a class="reference internal" href="#c.proj_trans_generic" title="proj_trans_generic"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_trans_generic()</span></code></a>.
+Conversely, objects returned by <a class="reference internal" href="#c.proj_create" title="proj_create"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_create()</span></code></a> and <a class="reference internal" href="#c.proj_create_argv" title="proj_create_argv"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_create_argv()</span></code></a>,
+which are not of type CRS (can be tested with <a class="reference internal" href="#c.proj_is_crs" title="proj_is_crs"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_is_crs()</span></code></a>),
+will return an error when used with functions of this section.</p>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_string_list_destroy">
+<span class="target" id="group__iso19111__functions_1gab2b385a4e935d8e0aadd32411ed7c06e"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_string_list_destroy</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PROJ_STRING_LIST" title="PROJ_STRING_LIST"><span class="n"><span class="pre">PROJ_STRING_LIST</span></span></a><span class="w"> </span><span class="n"><span class="pre">list</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_string_list_destroy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Free a list of NULL terminated strings. </p>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_set_autoclose_database">
+<span class="target" id="group__iso19111__functions_1ga6ed84e4b3915c7428e582b869c6fb6a6"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_set_autoclose_database</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">autoclose</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_set_autoclose_database" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Starting with PROJ 8.1, this function does nothing. </p>
+<p>If you want to take into account changes to the PROJ database, you need to re-create a new context.</p>
+<p><dl>
+<dt class="sig sig-object cpp">
+<em><span class="pre">Deprecated:</span></em></dt>
+<dd><p>Since 8.1 </p>
+</dd></dl>
+
+<dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>6.2 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – Ignored </p></li>
+<li><p><strong>autoclose</strong> – Ignored </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_set_database_path">
+<span class="target" id="group__iso19111__functions_1ga3eff4cd87726e46cf5a4bf971c1cabf3"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_set_database_path</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">dbPath</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">auxDbPaths</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">options</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_set_database_path" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Explicitly point to the main PROJ CRS and coordinate operation definition database (“proj.db”), and potentially auxiliary databases with same structure. </p>
+<p>Starting with PROJ 8.1, if the auxDbPaths parameter is an empty array, the PROJ_AUX_DB environment variable will be used, if set. It must contain one or several paths. If several paths are provided, they must be separated by the colon (:) character on Unix, and on Windows, by the semi-colon (;) character.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>dbPath</strong> – Path to main database, or NULL for default. </p></li>
+<li><p><strong>auxDbPaths</strong> – NULL-terminated list of auxiliary database filenames, or NULL. </p></li>
+<li><p><strong>options</strong> – should be set to NULL for now </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE in case of success </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_get_database_path">
+<span class="target" id="group__iso19111__functions_1ga6c1139a7aeccd2ae7b21009215dfd7a5"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_get_database_path</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_get_database_path" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns the path to the database. </p>
+<p>The returned pointer remains valid while ctx is valid, and until <a class="reference internal" href="#group__iso19111__functions_1ga3eff4cd87726e46cf5a4bf971c1cabf3"><span class="std std-ref">proj_context_set_database_path()</span></a> is called.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>path, or nullptr </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_get_database_metadata">
+<span class="target" id="group__iso19111__functions_1ga6ab791c35012d9591cb94b1ad82fcb97"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_get_database_metadata</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">key</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_get_database_metadata" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return a metadata from the database. </p>
+<p>The returned pointer remains valid while ctx is valid, and until <a class="reference internal" href="#group__iso19111__functions_1ga6ab791c35012d9591cb94b1ad82fcb97"><span class="std std-ref">proj_context_get_database_metadata()</span></a> is called.</p>
+<p>Available keys:</p>
+<p><ul class="simple">
+<li><p>DATABASE.LAYOUT.VERSION.MAJOR</p></li>
+<li><p>DATABASE.LAYOUT.VERSION.MINOR</p></li>
+<li><p>EPSG.VERSION</p></li>
+<li><p>EPSG.DATE</p></li>
+<li><p>ESRI.VERSION</p></li>
+<li><p>ESRI.DATE</p></li>
+<li><p>IGNF.SOURCE</p></li>
+<li><p>IGNF.VERSION</p></li>
+<li><p>IGNF.DATE</p></li>
+<li><p>NKG.SOURCE</p></li>
+<li><p>NKG.VERSION</p></li>
+<li><p>NKG.DATE</p></li>
+<li><p>PROJ.VERSION</p></li>
+<li><p>PROJ_DATA.VERSION : PROJ-data version most compatible with this database.</p></li>
+</ul>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>key</strong> – Metadata key. Must not be NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>value, or nullptr </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_get_database_structure">
+<span class="target" id="group__iso19111__functions_1gae33b9dccb71dc4c54a87a7ccaaac670f"></span><a class="reference internal" href="datatypes.html#c.PROJ_STRING_LIST" title="PROJ_STRING_LIST"><span class="n"><span class="pre">PROJ_STRING_LIST</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_get_database_structure</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">options</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_get_database_structure" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return the database structure. </p>
+<p>Return SQL statements to run to initiate a new valid auxiliary empty database. It contains definitions of tables, views and triggers, as well as metadata for the version of the layout of the database.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>8.1 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>options</strong> – null-terminated list of options, or NULL. None currently. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>list of SQL statements (to be freed with <a class="reference internal" href="#group__iso19111__functions_1gab2b385a4e935d8e0aadd32411ed7c06e"><span class="std std-ref">proj_string_list_destroy()</span></a>), or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_context_guess_wkt_dialect">
+<span class="target" id="group__iso19111__functions_1ga6b06d3c534dc0a78a2cc13b861542f1f"></span><a class="reference internal" href="datatypes.html#c.PJ_GUESSED_WKT_DIALECT" title="PJ_GUESSED_WKT_DIALECT"><span class="n"><span class="pre">PJ_GUESSED_WKT_DIALECT</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_context_guess_wkt_dialect</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">wkt</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_context_guess_wkt_dialect" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Guess the “dialect” of the WKT string. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>wkt</strong> – String (must not be NULL) </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_create_from_wkt">
+<span class="target" id="group__iso19111__functions_1ga757b6749056259c44e7acc66a700b5d8"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_create_from_wkt</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">wkt</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">options</span></span>, <a class="reference internal" href="datatypes.html#c.PROJ_STRING_LIST" title="PROJ_STRING_LIST"><span class="n"><span class="pre">PROJ_STRING_LIST</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_warnings</span></span>, <a class="reference internal" href="datatypes.html#c.PROJ_STRING_LIST" title="PROJ_STRING_LIST"><span class="n"><span class="pre">PROJ_STRING_LIST</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_grammar_errors</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_create_from_wkt" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Instantiate an object from a WKT string. </p>
+<p>This function calls <a class="reference internal" href="cpp/io.html#classosgeo_1_1proj_1_1io_1_1WKTParser_1a8931fbaea1d67eff5098da93b38de6bb"><span class="std std-ref">osgeo::proj::io::WKTParser::createFromWKT()</span></a></p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>wkt</strong> – WKT string (must not be NULL) </p></li>
+<li><p><strong>options</strong> – null-terminated list of options, or NULL. Currently supported options are: <ul>
+<li><p>STRICT=YES/NO. Defaults to NO. When set to YES, strict validation will be enabled. </p></li>
+</ul>
+</p></li>
+<li><p><strong>out_warnings</strong> – Pointer to a PROJ_STRING_LIST object, or NULL. If provided, *out_warnings will contain a list of warnings, typically for non recognized projection method or parameters. It must be freed with <a class="reference internal" href="#group__iso19111__functions_1gab2b385a4e935d8e0aadd32411ed7c06e"><span class="std std-ref">proj_string_list_destroy()</span></a>. </p></li>
+<li><p><strong>out_grammar_errors</strong> – Pointer to a PROJ_STRING_LIST object, or NULL. If provided, *out_grammar_errors will contain a list of errors regarding the WKT grammar. It must be freed with <a class="reference internal" href="#group__iso19111__functions_1gab2b385a4e935d8e0aadd32411ed7c06e"><span class="std std-ref">proj_string_list_destroy()</span></a>. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_create_from_database">
+<span class="target" id="group__iso19111__functions_1gaed12a28a006cb9677d7ede2395e248d4"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_create_from_database</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">auth_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">code</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_CATEGORY" title="PJ_CATEGORY"><span class="n"><span class="pre">PJ_CATEGORY</span></span></a><span class="w"> </span><span class="n"><span class="pre">category</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">usePROJAlternativeGridNames</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">options</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_create_from_database" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Instantiate an object from a database lookup. </p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – Context, or NULL for default context. </p></li>
+<li><p><strong>auth_name</strong> – Authority name (must not be NULL) </p></li>
+<li><p><strong>code</strong> – Object code (must not be NULL) </p></li>
+<li><p><strong>category</strong> – Object category </p></li>
+<li><p><strong>usePROJAlternativeGridNames</strong> – Whether PROJ alternative grid names should be substituted to the official grid names. Only used on transformations </p></li>
+<li><p><strong>options</strong> – should be set to NULL for now </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_uom_get_info_from_database">
+<span class="target" id="group__iso19111__functions_1gac34dbd9d6b49aaf67ab62bf3891ab003"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_uom_get_info_from_database</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">auth_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">code</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_name</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_conv_factor</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_category</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_uom_get_info_from_database" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get information for a unit of measure from a database lookup. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – Context, or NULL for default context. </p></li>
+<li><p><strong>auth_name</strong> – Authority name (must not be NULL) </p></li>
+<li><p><strong>code</strong> – Unit of measure code (must not be NULL) </p></li>
+<li><p><strong>out_name</strong> – Pointer to a string value to store the parameter name. or NULL. This value remains valid until the next call to <a class="reference internal" href="#group__iso19111__functions_1gac34dbd9d6b49aaf67ab62bf3891ab003"><span class="std std-ref">proj_uom_get_info_from_database()</span></a> or the context destruction. </p></li>
+<li><p><strong>out_conv_factor</strong> – Pointer to a value to store the conversion factor of the prime meridian longitude unit to radian. or NULL </p></li>
+<li><p><strong>out_category</strong> – Pointer to a string value to store the parameter name. or NULL. This value might be “unknown”, “none”, “linear”, “linear_per_time”, “angular”, “angular_per_time”, “scale”, “scale_per_time”, “time”, “parametric” or “parametric_per_time” </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE in case of success </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_grid_get_info_from_database">
+<span class="target" id="group__iso19111__functions_1ga9f07363878036878575ad847a23326bd"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_grid_get_info_from_database</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">grid_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_full_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_package_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_url</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_direct_download</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_open_license</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_available</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_grid_get_info_from_database" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get information for a grid from a database lookup. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – Context, or NULL for default context. </p></li>
+<li><p><strong>grid_name</strong> – Grid name (must not be NULL) </p></li>
+<li><p><strong>out_full_name</strong> – Pointer to a string value to store the grid full filename. or NULL </p></li>
+<li><p><strong>out_package_name</strong> – Pointer to a string value to store the package name where the grid might be found. or NULL </p></li>
+<li><p><strong>out_url</strong> – Pointer to a string value to store the grid URL or the package URL where the grid might be found. or NULL </p></li>
+<li><p><strong>out_direct_download</strong> – Pointer to a int (boolean) value to store whether *out_url can be downloaded directly. or NULL </p></li>
+<li><p><strong>out_open_license</strong> – Pointer to a int (boolean) value to store whether the grid is released with an open license. or NULL </p></li>
+<li><p><strong>out_available</strong> – Pointer to a int (boolean) value to store whether the grid is available at runtime. or NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE in case of success. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_clone">
+<span class="target" id="group__iso19111__functions_1gab3f8fd8798ccde680bef1b37ee07cfc2"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_clone</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_clone" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>“Clone” an object. </p>
+<p>The object might be used independently of the original object, provided that the use of context is compatible. In particular if you intend to use a clone in a different thread than the original object, you should pass a context that is different from the one of the original object (or later assign a different context with proj_assign_context()).</p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>obj</strong> – Object to clone. Must not be NULL. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_create_from_name">
+<span class="target" id="group__iso19111__functions_1ga2e3581bd359824f198f118e46c630571"></span><span class="n"><span class="pre">PJ_OBJ_LIST</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_create_from_name</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">auth_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">searchedName</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ_TYPE" title="PJ_TYPE"><span class="n"><span class="pre">PJ_TYPE</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">types</span></span>, <span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n"><span class="pre">typesCount</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">approximateMatch</span></span>, <span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n"><span class="pre">limitResultCount</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">options</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_create_from_name" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return a list of objects by their name. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – Context, or NULL for default context. </p></li>
+<li><p><strong>auth_name</strong> – Authority name, used to restrict the search. Or NULL for all authorities. </p></li>
+<li><p><strong>searchedName</strong> – Searched name. Must be at least 2 character long. </p></li>
+<li><p><strong>types</strong> – List of object types into which to search. If NULL, all object types will be searched. </p></li>
+<li><p><strong>typesCount</strong> – Number of elements in types, or 0 if types is NULL </p></li>
+<li><p><strong>approximateMatch</strong> – Whether approximate name identification is allowed. </p></li>
+<li><p><strong>limitResultCount</strong> – Maximum number of results to return. Or 0 for unlimited. </p></li>
+<li><p><strong>options</strong> – should be set to NULL for now </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a result set that must be unreferenced with <a class="reference internal" href="#group__iso19111__functions_1gaa1274c437a786f9064556c139d689d71"><span class="std std-ref">proj_list_destroy()</span></a>, or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_type">
+<span class="target" id="group__iso19111__functions_1gabbebc66b740741b14c89afa398a1b58a"></span><a class="reference internal" href="datatypes.html#c.PJ_TYPE" title="PJ_TYPE"><span class="n"><span class="pre">PJ_TYPE</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_type</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_type" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return the type of an object. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>obj</strong> – Object (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>its type. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_is_deprecated">
+<span class="target" id="group__iso19111__functions_1gac821845a4a86f6dda55d8d2083e1e836"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_is_deprecated</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_is_deprecated" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return whether an object is deprecated. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>obj</strong> – Object (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE if it is deprecated, FALSE otherwise </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_non_deprecated">
+<span class="target" id="group__iso19111__functions_1ga1643f868cc65aa73947545c06b984ecc"></span><span class="n"><span class="pre">PJ_OBJ_LIST</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_non_deprecated</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_non_deprecated" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return a list of non-deprecated objects related to the passed one. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – Context, or NULL for default context. </p></li>
+<li><p><strong>obj</strong> – Object (of type CRS for now) for which non-deprecated objects must be searched. Must not be NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a result set that must be unreferenced with <a class="reference internal" href="#group__iso19111__functions_1gaa1274c437a786f9064556c139d689d71"><span class="std std-ref">proj_list_destroy()</span></a>, or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_is_equivalent_to">
+<span class="target" id="group__iso19111__functions_1gaeb8884c512c547adfb20bf649132cfc6"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_is_equivalent_to</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">other</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COMPARISON_CRITERION" title="PJ_COMPARISON_CRITERION"><span class="n"><span class="pre">PJ_COMPARISON_CRITERION</span></span></a><span class="w"> </span><span class="n"><span class="pre">criterion</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_is_equivalent_to" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return whether two objects are equivalent. </p>
+<p>Use <a class="reference internal" href="#group__iso19111__functions_1gadd6e71f99a73b86afc5ced898cba126c"><span class="std std-ref">proj_is_equivalent_to_with_ctx()</span></a> to be able to use database information.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>obj</strong> – Object (must not be NULL) </p></li>
+<li><p><strong>other</strong> – Other object (must not be NULL) </p></li>
+<li><p><strong>criterion</strong> – Comparison criterion </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE if they are equivalent </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_is_equivalent_to_with_ctx">
+<span class="target" id="group__iso19111__functions_1gadd6e71f99a73b86afc5ced898cba126c"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_is_equivalent_to_with_ctx</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">other</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COMPARISON_CRITERION" title="PJ_COMPARISON_CRITERION"><span class="n"><span class="pre">PJ_COMPARISON_CRITERION</span></span></a><span class="w"> </span><span class="n"><span class="pre">criterion</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_is_equivalent_to_with_ctx" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return whether two objects are equivalent. </p>
+<p>Possibly using database to check for name aliases.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>6.3 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>obj</strong> – Object (must not be NULL) </p></li>
+<li><p><strong>other</strong> – Other object (must not be NULL) </p></li>
+<li><p><strong>criterion</strong> – Comparison criterion </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE if they are equivalent </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_is_crs">
+<span class="target" id="group__iso19111__functions_1ga127c2f37a3bc7535570c26e72b005f43"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_is_crs</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_is_crs" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return whether an object is a CRS. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>obj</strong> – Object (must not be NULL) </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_name">
+<span class="target" id="group__iso19111__functions_1ga2cbd7427aee737d6e6bf49ba439d4da4"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_name</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_name" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get the name of an object. </p>
+<p>The lifetime of the returned string is the same as the input obj parameter.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>obj</strong> – Object (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a string, or NULL in case of error or missing name. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_id_auth_name">
+<span class="target" id="group__iso19111__functions_1gae917ff661853ed52360dbfd4d3bcbf67"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_id_auth_name</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">index</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_id_auth_name" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get the authority name / codespace of an identifier of an object. </p>
+<p>The lifetime of the returned string is the same as the input obj parameter.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>obj</strong> – Object (must not be NULL) </p></li>
+<li><p><strong>index</strong> – Index of the identifier. 0 = first identifier </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a string, or NULL in case of error or missing name. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_id_code">
+<span class="target" id="group__iso19111__functions_1gab1c678e033ee0a425f8c52af47a20ddf"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_id_code</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">index</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_id_code" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get the code of an identifier of an object. </p>
+<p>The lifetime of the returned string is the same as the input obj parameter.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>obj</strong> – Object (must not be NULL) </p></li>
+<li><p><strong>index</strong> – Index of the identifier. 0 = first identifier </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a string, or NULL in case of error or missing name. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_remarks">
+<span class="target" id="group__iso19111__functions_1ga6c6f1bc87ee5a2c3c38f872b5eab1874"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_remarks</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_remarks" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get the remarks of an object. </p>
+<p>The lifetime of the returned string is the same as the input obj parameter.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>obj</strong> – Object (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a string, or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_scope">
+<span class="target" id="group__iso19111__functions_1gaca5b39ab9b215732470128d96e93149b"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_scope</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_scope" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get the scope of an object. </p>
+<p>In case of multiple usages, this will be the one of first usage.</p>
+<p>The lifetime of the returned string is the same as the input obj parameter.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>obj</strong> – Object (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a string, or NULL in case of error or missing scope. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_area_of_use">
+<span class="target" id="group__iso19111__functions_1ga2001cc5d15f27fd3e16c2a373559a39a"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_area_of_use</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_west_lon_degree</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_south_lat_degree</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_east_lon_degree</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_north_lat_degree</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_area_name</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_area_of_use" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return the area of use of an object. </p>
+<p>In case of multiple usages, this will be the one of first usage.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>obj</strong> – Object (must not be NULL) </p></li>
+<li><p><strong>out_west_lon_degree</strong> – Pointer to a double to receive the west longitude (in degrees). Or NULL. If the returned value is -1000, the bounding box is unknown. </p></li>
+<li><p><strong>out_south_lat_degree</strong> – Pointer to a double to receive the south latitude (in degrees). Or NULL. If the returned value is -1000, the bounding box is unknown. </p></li>
+<li><p><strong>out_east_lon_degree</strong> – Pointer to a double to receive the east longitude (in degrees). Or NULL. If the returned value is -1000, the bounding box is unknown. </p></li>
+<li><p><strong>out_north_lat_degree</strong> – Pointer to a double to receive the north latitude (in degrees). Or NULL. If the returned value is -1000, the bounding box is unknown. </p></li>
+<li><p><strong>out_area_name</strong> – Pointer to a string to receive the name of the area of use. Or NULL. *p_area_name is valid while obj is valid itself. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE in case of success, FALSE in case of error or if the area of use is unknown. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_as_wkt">
+<span class="target" id="group__iso19111__functions_1ga87d87597aad60bf06a45997fb8eaa52e"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_as_wkt</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_WKT_TYPE" title="PJ_WKT_TYPE"><span class="n"><span class="pre">PJ_WKT_TYPE</span></span></a><span class="w"> </span><span class="n"><span class="pre">type</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">options</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_as_wkt" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get a WKT representation of an object. </p>
+<p>The returned string is valid while the input obj parameter is valid, and until a next call to <a class="reference internal" href="#group__iso19111__functions_1ga87d87597aad60bf06a45997fb8eaa52e"><span class="std std-ref">proj_as_wkt()</span></a> with the same input object.</p>
+<p>This function calls <a class="reference internal" href="cpp/io.html#classosgeo_1_1proj_1_1io_1_1IWKTExportable_1a1cff37229c2159fb6bc0579e7c1190ce"><span class="std std-ref">osgeo::proj::io::IWKTExportable::exportToWKT()</span></a>.</p>
+<p>This function may return NULL if the object is not compatible with an export to the requested type.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>obj</strong> – Object (must not be NULL) </p></li>
+<li><p><strong>type</strong> – WKT version. </p></li>
+<li><p><strong>options</strong> – null-terminated list of options, or NULL. Currently supported options are: <ul>
+<li><p>MULTILINE=YES/NO. Defaults to YES, except for WKT1_ESRI </p></li>
+<li><p>INDENTATION_WIDTH=number. Defaults to 4 (when multiline output is on). </p></li>
+<li><p>OUTPUT_AXIS=AUTO/YES/NO. In AUTO mode, axis will be output for WKT2 variants, for WKT1_GDAL for ProjectedCRS with easting/northing ordering (otherwise stripped), but not for WKT1_ESRI. Setting to YES will output them unconditionally, and to NO will omit them unconditionally. </p></li>
+<li><p>STRICT=YES/NO. Default is YES. If NO, a Geographic 3D CRS can be for example exported as WKT1_GDAL with 3 axes, whereas this is normally not allowed. </p></li>
+<li><p>ALLOW_ELLIPSOIDAL_HEIGHT_AS_VERTICAL_CRS=YES/NO. Default is NO. If set to YES and type == PJ_WKT1_GDAL, a Geographic 3D CRS or a Projected 3D CRS will be exported as a compound CRS whose vertical part represents an ellipsoidal height (for example for use with LAS 1.4 WKT1). </p></li>
+</ul>
+</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a string, or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_as_proj_string">
+<span class="target" id="group__iso19111__functions_1gab903de54d45fd8a7d8d7cb53662c1826"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_as_proj_string</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_PROJ_STRING_TYPE" title="PJ_PROJ_STRING_TYPE"><span class="n"><span class="pre">PJ_PROJ_STRING_TYPE</span></span></a><span class="w"> </span><span class="n"><span class="pre">type</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">options</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_as_proj_string" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get a PROJ string representation of an object. </p>
+<p>The returned string is valid while the input obj parameter is valid, and until a next call to <a class="reference internal" href="#group__iso19111__functions_1gab903de54d45fd8a7d8d7cb53662c1826"><span class="std std-ref">proj_as_proj_string()</span></a> with the same input object.</p>
+<p>
+This function calls <a class="reference internal" href="cpp/io.html#classosgeo_1_1proj_1_1io_1_1IPROJStringExportable_1ab592dcf0f32ee2587a782d290aeb0638"><span class="std std-ref">osgeo::proj::io::IPROJStringExportable::exportToPROJString()</span></a>.</p>
+<p>This function may return NULL if the object is not compatible with an export to the requested type.</p>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>If a CRS object was not created from a PROJ string, exporting to a PROJ string will in most cases cause a loss of information. This can potentially lead to erroneous transformations.</p>
+</div>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>obj</strong> – Object (must not be NULL) </p></li>
+<li><p><strong>type</strong> – PROJ String version. </p></li>
+<li><p><strong>options</strong> – NULL-terminated list of strings with “KEY=VALUE” format. or NULL. Currently supported options are: <ul>
+<li><p>USE_APPROX_TMERC=YES to add the +approx flag to +proj=tmerc or +proj=utm. </p></li>
+<li><p>MULTILINE=YES/NO. Defaults to NO </p></li>
+<li><p>INDENTATION_WIDTH=number. Defaults to 2 (when multiline output is on). </p></li>
+<li><p>MAX_LINE_LENGTH=number. Defaults to 80 (when multiline output is on). </p></li>
+</ul>
+</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a string, or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_as_projjson">
+<span class="target" id="group__iso19111__functions_1ga667fc1dac4d91d40ea89d90f70b147e7"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_as_projjson</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">options</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_as_projjson" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get a PROJJSON string representation of an object. </p>
+<p>The returned string is valid while the input obj parameter is valid, and until a next call to <a class="reference internal" href="#group__iso19111__functions_1gab903de54d45fd8a7d8d7cb53662c1826"><span class="std std-ref">proj_as_proj_string()</span></a> with the same input object.</p>
+<p>This function calls <a class="reference internal" href="cpp/io.html#classosgeo_1_1proj_1_1io_1_1IJSONExportable_1ae33e25017d2f71ae011e908c00569382"><span class="std std-ref">osgeo::proj::io::IJSONExportable::exportToJSON()</span></a>.</p>
+<p>This function may return NULL if the object is not compatible with an export to the requested type.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>6.2 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>obj</strong> – Object (must not be NULL) </p></li>
+<li><p><strong>options</strong> – NULL-terminated list of strings with “KEY=VALUE” format. or NULL. Currently supported options are: <ul>
+<li><p>MULTILINE=YES/NO. Defaults to YES </p></li>
+<li><p>INDENTATION_WIDTH=number. Defaults to 2 (when multiline output is on). </p></li>
+<li><p>SCHEMA=string. URL to PROJJSON schema. Can be set to empty string to disable it. </p></li>
+</ul>
+</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a string, or NULL in case of error.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_source_crs">
+<span class="target" id="group__iso19111__functions_1gaca20f75e07f699cbcddea5013038af3d"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_source_crs</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_source_crs" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return the base CRS of a BoundCRS or a DerivedCRS/ProjectedCRS, or the source CRS of a CoordinateOperation. </p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>obj</strong> – Object of type BoundCRS or CoordinateOperation (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error, or missing source CRS. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_target_crs">
+<span class="target" id="group__iso19111__functions_1gabac35c21b9c1ee0dd95373d37d63fab6"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_target_crs</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_target_crs" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return the hub CRS of a BoundCRS or the target CRS of a CoordinateOperation. </p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>obj</strong> – Object of type BoundCRS or CoordinateOperation (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error, or missing target CRS. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_identify">
+<span class="target" id="group__iso19111__functions_1ga8300cfa5fb5e080e21cb205a6fde53b3"></span><span class="n"><span class="pre">PJ_OBJ_LIST</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_identify</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">auth_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">options</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_confidence</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_identify" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Identify the CRS with reference CRSs. </p>
+<p>The candidate CRSs are either hard-coded, or looked in the database when it is available.</p>
+<p>Note that the implementation uses a set of heuristics to have a good compromise of successful identifications over execution time. It might miss legitimate matches in some circumstances.</p>
+<p>The method returns a list of matching reference CRS, and the percentage (0-100) of confidence in the match. The list is sorted by decreasing confidence. <ul class="simple">
+<li><p><p>100% means that the name of the reference entry perfectly matches the CRS name, and both are equivalent. In which case a single result is returned. Note: in the case of a GeographicCRS whose axis order is implicit in the input definition (for example ESRI WKT), then axis order is ignored for the purpose of identification. That is the CRS built from GEOGCS[“GCS_WGS_1984”,DATUM[“D_WGS_1984”,SPHEROID[“WGS_1984”,6378137.0,298.257223563]], PRIMEM[“Greenwich”,0.0],UNIT[“Degree”,0.0174532925199433]] will be identified to EPSG:4326, but will not pass a isEquivalentTo(EPSG_4326, util::IComparable::Criterion::EQUIVALENT) test, but rather isEquivalentTo(EPSG_4326,</p>
+<p>util::IComparable::Criterion::EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS)</p>
+</p></li>
+<li><p>90% means that CRS are equivalent, but the names are not exactly the same. </p></li>
+<li><p>70% means that CRS are equivalent, but the names are not equivalent. </p></li>
+<li><p>25% means that the CRS are not equivalent, but there is some similarity in the names. </p></li>
+</ul>
+
+Other confidence values may be returned by some specialized implementations.</p>
+<p>This is implemented for GeodeticCRS, ProjectedCRS, VerticalCRS and CompoundCRS.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>obj</strong> – Object of type CRS. Must not be NULL </p></li>
+<li><p><strong>auth_name</strong> – Authority name, or NULL for all authorities </p></li>
+<li><p><strong>options</strong> – Placeholder for future options. Should be set to NULL. </p></li>
+<li><p><strong>out_confidence</strong> – Output parameter. Pointer to an array of integers that will be allocated by the function and filled with the confidence values (0-100). There are as many elements in this array as <a class="reference internal" href="#group__iso19111__functions_1ga645fa2f0ff64dcbf5cd4a0361d306014"><span class="std std-ref">proj_list_get_count()</span></a> returns on the return value of this function. *confidence should be released with <a class="reference internal" href="#group__iso19111__functions_1ga69e847fe98267d7d59d20c8442d4ab77"><span class="std std-ref">proj_int_list_destroy()</span></a>. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a list of matching reference CRS, or nullptr in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_geoid_models_from_database">
+<span class="target" id="group__iso19111__functions_1gabf2acd272bf28deaaefcf2d090d19a0b"></span><a class="reference internal" href="datatypes.html#c.PROJ_STRING_LIST" title="PROJ_STRING_LIST"><span class="n"><span class="pre">PROJ_STRING_LIST</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_geoid_models_from_database</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">auth_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">code</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">options</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_geoid_models_from_database" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns a list of geoid models available for that crs. </p>
+<p>The list includes the geoid models connected directly with the crs, or via “Height Depth Reversal” or “Change of Vertical Unit” transformations. The returned list is NULL terminated and must be freed with <a class="reference internal" href="#group__iso19111__functions_1gab2b385a4e935d8e0aadd32411ed7c06e"><span class="std std-ref">proj_string_list_destroy()</span></a>.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>8.1 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – Context, or NULL for default context. </p></li>
+<li><p><strong>auth_name</strong> – Authority name (must not be NULL) </p></li>
+<li><p><strong>code</strong> – Object code (must not be NULL) </p></li>
+<li><p><strong>options</strong> – should be set to NULL for now </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>list of geoid models names (to be freed with <a class="reference internal" href="#group__iso19111__functions_1gab2b385a4e935d8e0aadd32411ed7c06e"><span class="std std-ref">proj_string_list_destroy()</span></a>), or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_int_list_destroy">
+<span class="target" id="group__iso19111__functions_1ga69e847fe98267d7d59d20c8442d4ab77"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_int_list_destroy</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">list</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_int_list_destroy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Free an array of integer. </p>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_authorities_from_database">
+<span class="target" id="group__iso19111__functions_1ga49b562c6d8015209f14dfd541db745a7"></span><a class="reference internal" href="datatypes.html#c.PROJ_STRING_LIST" title="PROJ_STRING_LIST"><span class="n"><span class="pre">PROJ_STRING_LIST</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_authorities_from_database</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_authorities_from_database" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return the list of authorities used in the database. </p>
+<p>The returned list is NULL terminated and must be freed with <a class="reference internal" href="#group__iso19111__functions_1gab2b385a4e935d8e0aadd32411ed7c06e"><span class="std std-ref">proj_string_list_destroy()</span></a>.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a NULL terminated list of NUL-terminated strings that must be freed with <a class="reference internal" href="#group__iso19111__functions_1gab2b385a4e935d8e0aadd32411ed7c06e"><span class="std std-ref">proj_string_list_destroy()</span></a>, or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_codes_from_database">
+<span class="target" id="group__iso19111__functions_1gaffb1dff915e98bfd42588bdd9425e425"></span><a class="reference internal" href="datatypes.html#c.PROJ_STRING_LIST" title="PROJ_STRING_LIST"><span class="n"><span class="pre">PROJ_STRING_LIST</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_codes_from_database</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">auth_name</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_TYPE" title="PJ_TYPE"><span class="n"><span class="pre">PJ_TYPE</span></span></a><span class="w"> </span><span class="n"><span class="pre">type</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">allow_deprecated</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_codes_from_database" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns the set of authority codes of the given object type. </p>
+<p>The returned list is NULL terminated and must be freed with <a class="reference internal" href="#group__iso19111__functions_1gab2b385a4e935d8e0aadd32411ed7c06e"><span class="std std-ref">proj_string_list_destroy()</span></a>.</p>
+<p><div class="admonition seealso">
+<p class="admonition-title">See also</p>
+<p><a class="reference internal" href="#group__iso19111__functions_1gae560f23c0a760cf08df726517af32a6b"><span class="std std-ref">proj_get_crs_info_list_from_database()</span></a> </p>
+</div>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context. </p></li>
+<li><p><strong>auth_name</strong> – Authority name (must not be NULL) </p></li>
+<li><p><strong>type</strong> – Object type. </p></li>
+<li><p><strong>allow_deprecated</strong> – whether we should return deprecated objects as well.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a NULL terminated list of NUL-terminated strings that must be freed with <a class="reference internal" href="#group__iso19111__functions_1gab2b385a4e935d8e0aadd32411ed7c06e"><span class="std std-ref">proj_string_list_destroy()</span></a>, or NULL in case of error.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_celestial_body_list_from_database">
+<span class="target" id="group__iso19111__functions_1gaa5e2bbaa165953cc8662df712e780ae0"></span><a class="reference internal" href="datatypes.html#c.PROJ_CELESTIAL_BODY_INFO" title="PROJ_CELESTIAL_BODY_INFO"><span class="n"><span class="pre">PROJ_CELESTIAL_BODY_INFO</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_celestial_body_list_from_database</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">auth_name</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_result_count</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_celestial_body_list_from_database" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Enumerate celestial bodies from the database. </p>
+<p>The returned object is an array of PROJ_CELESTIAL_BODY_INFO* pointers, whose last entry is NULL. This array should be freed with <a class="reference internal" href="#group__iso19111__functions_1ga449bd02948d99d6a3aa8b78ecaade110"><span class="std std-ref">proj_celestial_body_list_destroy()</span></a></p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>8.1 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>auth_name</strong> – Authority name, used to restrict the search. Or NULL for all authorities. </p></li>
+<li><p><strong>out_result_count</strong> – Output parameter pointing to an integer to receive the size of the result list. Might be NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>an array of PROJ_CELESTIAL_BODY_INFO* pointers to be freed with <a class="reference internal" href="#group__iso19111__functions_1ga449bd02948d99d6a3aa8b78ecaade110"><span class="std std-ref">proj_celestial_body_list_destroy()</span></a>, or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_celestial_body_list_destroy">
+<span class="target" id="group__iso19111__functions_1ga449bd02948d99d6a3aa8b78ecaade110"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_celestial_body_list_destroy</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PROJ_CELESTIAL_BODY_INFO" title="PROJ_CELESTIAL_BODY_INFO"><span class="n"><span class="pre">PROJ_CELESTIAL_BODY_INFO</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">list</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_celestial_body_list_destroy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Destroy the result returned by <a class="reference internal" href="#group__iso19111__functions_1gaa5e2bbaa165953cc8662df712e780ae0"><span class="std std-ref">proj_get_celestial_body_list_from_database()</span></a>. </p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>8.1 </p>
+</dd>
+</dl>
+</p>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_crs_list_parameters_create">
+<span class="target" id="group__iso19111__functions_1ga4d1981585db661fee87887c3ddbb2ab0"></span><a class="reference internal" href="datatypes.html#c.PROJ_CRS_LIST_PARAMETERS" title="PROJ_CRS_LIST_PARAMETERS"><span class="n"><span class="pre">PROJ_CRS_LIST_PARAMETERS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_crs_list_parameters_create</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_crs_list_parameters_create" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Instantiate a default set of parameters to be used by proj_get_crs_list(). </p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns</dt>
+<dd class="field-odd"><p>a new object to free with <a class="reference internal" href="#group__iso19111__functions_1ga9e884264fb0b4b6a0a6c78722567b59f"><span class="std std-ref">proj_get_crs_list_parameters_destroy()</span></a> </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_crs_list_parameters_destroy">
+<span class="target" id="group__iso19111__functions_1ga9e884264fb0b4b6a0a6c78722567b59f"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_crs_list_parameters_destroy</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PROJ_CRS_LIST_PARAMETERS" title="PROJ_CRS_LIST_PARAMETERS"><span class="n"><span class="pre">PROJ_CRS_LIST_PARAMETERS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">params</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_crs_list_parameters_destroy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Destroy an object returned by <a class="reference internal" href="#group__iso19111__functions_1ga4d1981585db661fee87887c3ddbb2ab0"><span class="std std-ref">proj_get_crs_list_parameters_create()</span></a> </p>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_crs_info_list_from_database">
+<span class="target" id="group__iso19111__functions_1gae560f23c0a760cf08df726517af32a6b"></span><a class="reference internal" href="datatypes.html#c.PROJ_CRS_INFO" title="PROJ_CRS_INFO"><span class="n"><span class="pre">PROJ_CRS_INFO</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_crs_info_list_from_database</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">auth_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PROJ_CRS_LIST_PARAMETERS" title="PROJ_CRS_LIST_PARAMETERS"><span class="n"><span class="pre">PROJ_CRS_LIST_PARAMETERS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">params</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_result_count</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_crs_info_list_from_database" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Enumerate CRS objects from the database, taking into account various criteria. </p>
+<p>The returned object is an array of PROJ_CRS_INFO* pointers, whose last entry is NULL. This array should be freed with <a class="reference internal" href="#group__iso19111__functions_1ga8efead6c2a2d4920a3e7a9d05cca52d6"><span class="std std-ref">proj_crs_info_list_destroy()</span></a></p>
+<p>When no filter parameters are set, this is functionally equivalent to <a class="reference internal" href="#group__iso19111__functions_1gaffb1dff915e98bfd42588bdd9425e425"><span class="std std-ref">proj_get_codes_from_database()</span></a>, instantiating a PJ* object for each of the codes with <a class="reference internal" href="#group__iso19111__functions_1gaed12a28a006cb9677d7ede2395e248d4"><span class="std std-ref">proj_create_from_database()</span></a> and retrieving information with the various getters. However this function will be much faster.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>auth_name</strong> – Authority name, used to restrict the search. Or NULL for all authorities. </p></li>
+<li><p><strong>params</strong> – Additional criteria, or NULL. If not-NULL, params SHOULD have been allocated by <a class="reference internal" href="#group__iso19111__functions_1ga4d1981585db661fee87887c3ddbb2ab0"><span class="std std-ref">proj_get_crs_list_parameters_create()</span></a>, as the <a class="reference internal" href="datatypes.html#structPROJ__CRS__LIST__PARAMETERS"><span class="std std-ref">PROJ_CRS_LIST_PARAMETERS</span></a> structure might grow over time. </p></li>
+<li><p><strong>out_result_count</strong> – Output parameter pointing to an integer to receive the size of the result list. Might be NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>an array of PROJ_CRS_INFO* pointers to be freed with <a class="reference internal" href="#group__iso19111__functions_1ga8efead6c2a2d4920a3e7a9d05cca52d6"><span class="std std-ref">proj_crs_info_list_destroy()</span></a>, or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_crs_info_list_destroy">
+<span class="target" id="group__iso19111__functions_1ga8efead6c2a2d4920a3e7a9d05cca52d6"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_crs_info_list_destroy</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PROJ_CRS_INFO" title="PROJ_CRS_INFO"><span class="n"><span class="pre">PROJ_CRS_INFO</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">list</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_crs_info_list_destroy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Destroy the result returned by <a class="reference internal" href="#group__iso19111__functions_1gae560f23c0a760cf08df726517af32a6b"><span class="std std-ref">proj_get_crs_info_list_from_database()</span></a>. </p>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_units_from_database">
+<span class="target" id="group__iso19111__functions_1gad9912220346fc8c2aea7170dbf62132a"></span><a class="reference internal" href="datatypes.html#c.PROJ_UNIT_INFO" title="PROJ_UNIT_INFO"><span class="n"><span class="pre">PROJ_UNIT_INFO</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_units_from_database</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">auth_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">category</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">allow_deprecated</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_result_count</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_units_from_database" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Enumerate units from the database, taking into account various criteria. </p>
+<p>The returned object is an array of PROJ_UNIT_INFO* pointers, whose last entry is NULL. This array should be freed with <a class="reference internal" href="#group__iso19111__functions_1gac92c073d80a23c8e36b0405287899e65"><span class="std std-ref">proj_unit_list_destroy()</span></a></p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.1 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>auth_name</strong> – Authority name, used to restrict the search. Or NULL for all authorities. </p></li>
+<li><p><strong>category</strong> – Filter by category, if this parameter is not NULL. Category is one of “linear”, “linear_per_time”, “angular”, “angular_per_time”, “scale”, “scale_per_time” or “time” </p></li>
+<li><p><strong>allow_deprecated</strong> – whether we should return deprecated objects as well. </p></li>
+<li><p><strong>out_result_count</strong> – Output parameter pointing to an integer to receive the size of the result list. Might be NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>an array of PROJ_UNIT_INFO* pointers to be freed with <a class="reference internal" href="#group__iso19111__functions_1gac92c073d80a23c8e36b0405287899e65"><span class="std std-ref">proj_unit_list_destroy()</span></a>, or NULL in case of error.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_unit_list_destroy">
+<span class="target" id="group__iso19111__functions_1gac92c073d80a23c8e36b0405287899e65"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_unit_list_destroy</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PROJ_UNIT_INFO" title="PROJ_UNIT_INFO"><span class="n"><span class="pre">PROJ_UNIT_INFO</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">list</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_unit_list_destroy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Destroy the result returned by <a class="reference internal" href="#group__iso19111__functions_1gad9912220346fc8c2aea7170dbf62132a"><span class="std std-ref">proj_get_units_from_database()</span></a>. </p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.1 </p>
+</dd>
+</dl>
+</p>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_insert_object_session_create">
+<span class="target" id="group__iso19111__functions_1gadcafc50dcf519643cc9b360cb9943fcb"></span><span class="n"><span class="pre">PJ_INSERT_SESSION</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_insert_object_session_create</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_insert_object_session_create" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Starts a session for <a class="reference internal" href="#group__iso19111__functions_1gacb45f9123d0d55f18e8bea8b73bf9067"><span class="std std-ref">proj_get_insert_statements()</span></a> </p>
+<p>Starts a new session for one or several calls to <a class="reference internal" href="#group__iso19111__functions_1gacb45f9123d0d55f18e8bea8b73bf9067"><span class="std std-ref">proj_get_insert_statements()</span></a>.</p>
+<p>An insertion session guarantees that the inserted objects will not create conflicting intermediate objects.</p>
+<p>The session must be stopped with <a class="reference internal" href="#group__iso19111__functions_1gaec2ab39dea57acb2160daf089b5e3554"><span class="std std-ref">proj_insert_object_session_destroy()</span></a>.</p>
+<p>Only one session may be active at a time for a given context.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>8.1 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>the session, or NULL in case of error.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_insert_object_session_destroy">
+<span class="target" id="group__iso19111__functions_1gaec2ab39dea57acb2160daf089b5e3554"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_insert_object_session_destroy</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="n"><span class="pre">PJ_INSERT_SESSION</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">session</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_insert_object_session_destroy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Stops an insertion session started with <a class="reference internal" href="#group__iso19111__functions_1gadcafc50dcf519643cc9b360cb9943fcb"><span class="std std-ref">proj_insert_object_session_create()</span></a> </p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>8.1 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>session</strong> – The insertion session. </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_insert_statements">
+<span class="target" id="group__iso19111__functions_1gacb45f9123d0d55f18e8bea8b73bf9067"></span><a class="reference internal" href="datatypes.html#c.PROJ_STRING_LIST" title="PROJ_STRING_LIST"><span class="n"><span class="pre">PROJ_STRING_LIST</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_insert_statements</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="n"><span class="pre">PJ_INSERT_SESSION</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">session</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">object</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">authority</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">code</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">numeric_codes</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">allowed_authorities</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">options</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_insert_statements" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns SQL statements needed to insert the passed object into the database. </p>
+<p><a class="reference internal" href="#group__iso19111__functions_1gadcafc50dcf519643cc9b360cb9943fcb"><span class="std std-ref">proj_insert_object_session_create()</span></a> may have been called previously.</p>
+<p>It is strongly recommended that new objects should not be added in common registries, such as “EPSG”, “ESRI”, “IAU”, etc. Users should use a custom authority name instead. If a new object should be added to the official EPSG registry, users are invited to follow the procedure explained at <a class="reference external" href="https://epsg.org/dataset-change-requests.html">https://epsg.org/dataset-change-requests.html</a>.</p>
+<p>Combined with <a class="reference internal" href="#group__iso19111__functions_1gae33b9dccb71dc4c54a87a7ccaaac670f"><span class="std std-ref">proj_context_get_database_structure()</span></a>, users can create auxiliary databases, instead of directly modifying the main proj.db database. Those auxiliary databases can be specified through <a class="reference internal" href="#group__iso19111__functions_1ga3eff4cd87726e46cf5a4bf971c1cabf3"><span class="std std-ref">proj_context_set_database_path()</span></a> or the PROJ_AUX_DB environment variable.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>8.1 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>session</strong> – The insertion session. May be NULL if a single object must be inserted. </p></li>
+<li><p><strong>object</strong> – The object to insert into the database. Currently only PrimeMeridian, Ellipsoid, Datum, GeodeticCRS, ProjectedCRS, VerticalCRS, CompoundCRS or BoundCRS are supported. </p></li>
+<li><p><strong>authority</strong> – Authority name into which the object will be inserted. Must not be NULL. </p></li>
+<li><p><strong>code</strong> – Code with which the object will be inserted.Must not be NULL. </p></li>
+<li><p><strong>numeric_codes</strong> – Whether intermediate objects that can be created should use numeric codes (true), or may be alphanumeric (false) </p></li>
+<li><p><strong>allowed_authorities</strong> – NULL terminated list of authority names, or NULL. Authorities to which intermediate objects are allowed to refer to. “authority” will be implicitly added to it. Note that unit, coordinate systems, projection methods and parameters will in any case be allowed to refer to EPSG. If NULL, allowed_authorities defaults to {“EPSG”, “PROJ”, nullptr} </p></li>
+<li><p><strong>options</strong> – NULL terminated list of options, or NULL. No options are supported currently.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a list of insert statements (to be freed with <a class="reference internal" href="#group__iso19111__functions_1gab2b385a4e935d8e0aadd32411ed7c06e"><span class="std std-ref">proj_string_list_destroy()</span></a>), or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_suggests_code_for">
+<span class="target" id="group__iso19111__functions_1ga69b505fcea7739eed09cf4142eafadcb"></span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_suggests_code_for</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">object</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">authority</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">numeric_code</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">options</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_suggests_code_for" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Suggests a database code for the passed object. </p>
+<p>Supported type of objects are PrimeMeridian, Ellipsoid, Datum, DatumEnsemble, GeodeticCRS, ProjectedCRS, VerticalCRS, CompoundCRS, BoundCRS, Conversion.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>8.1 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>object</strong> – Object for which to suggest a code. </p></li>
+<li><p><strong>authority</strong> – Authority name into which the object will be inserted. </p></li>
+<li><p><strong>numeric_code</strong> – Whether the code should be numeric, or derived from the object name. </p></li>
+<li><p><strong>options</strong> – NULL terminated list of options, or NULL. No options are supported currently. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>the suggested code, that is guaranteed to not conflict with an existing one (to be freed with proj_string_destroy), or nullptr in case of error.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_string_destroy">
+<span class="target" id="group__iso19111__functions_1gadeab7bc5cb9fad8e72e056f1de6926f6"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_string_destroy</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">str</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_string_destroy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Free a string. </p>
+<p>Only to be used with functions that document using this function.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>8.1 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>str</strong> – String to free.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_create_operation_factory_context">
+<span class="target" id="group__iso19111__functions_1gafa1d9bb19763799dbf60cd5da298c9ef"></span><span class="n"><span class="pre">PJ_OPERATION_FACTORY_CONTEXT</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_create_operation_factory_context</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">authority</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_create_operation_factory_context" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Instantiate a context for building coordinate operations between two CRS. </p>
+<p>The returned object must be unreferenced with <a class="reference internal" href="#group__iso19111__functions_1ga84662943acd6b3913e11e77ecb773d11"><span class="std std-ref">proj_operation_factory_context_destroy()</span></a> after use.</p>
+<p>If authority is NULL or the empty string, then coordinate operations from any authority will be searched, with the restrictions set in the authority_to_authority_preference database table. If authority is set to “any”, then coordinate operations from any authority will be searched If authority is a non-empty string different of “any”, then coordinate operations will be searched only in that authority namespace.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – Context, or NULL for default context. </p></li>
+<li><p><strong>authority</strong> – Name of authority to which to restrict the search of candidate operations. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with <a class="reference internal" href="#group__iso19111__functions_1ga84662943acd6b3913e11e77ecb773d11"><span class="std std-ref">proj_operation_factory_context_destroy()</span></a>, or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_operation_factory_context_destroy">
+<span class="target" id="group__iso19111__functions_1ga84662943acd6b3913e11e77ecb773d11"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_operation_factory_context_destroy</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">PJ_OPERATION_FACTORY_CONTEXT</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_operation_factory_context_destroy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Drops a reference on an object. </p>
+<p>This method should be called one and exactly one for each function returning a PJ_OPERATION_FACTORY_CONTEXT*</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – Object, or NULL. </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_operation_factory_context_set_desired_accuracy">
+<span class="target" id="group__iso19111__functions_1ga9fd369cc4f25e52acf0a6a21d5f13c2f"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_operation_factory_context_set_desired_accuracy</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="n"><span class="pre">PJ_OPERATION_FACTORY_CONTEXT</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">factory_ctx</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">accuracy</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_operation_factory_context_set_desired_accuracy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Set the desired accuracy of the resulting coordinate transformations. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>factory_ctx</strong> – Operation factory context. must not be NULL </p></li>
+<li><p><strong>accuracy</strong> – Accuracy in meter (or 0 to disable the filter). </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_operation_factory_context_set_area_of_interest">
+<span class="target" id="group__iso19111__functions_1ga65a925cc0ae3098276d81f993adf3863"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_operation_factory_context_set_area_of_interest</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="n"><span class="pre">PJ_OPERATION_FACTORY_CONTEXT</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">factory_ctx</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">west_lon_degree</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">south_lat_degree</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">east_lon_degree</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n"><span class="pre">north_lat_degree</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_operation_factory_context_set_area_of_interest" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Set the desired area of interest for the resulting coordinate transformations. </p>
+<p>For an area of interest crossing the anti-meridian, west_lon_degree will be greater than east_lon_degree.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>factory_ctx</strong> – Operation factory context. must not be NULL </p></li>
+<li><p><strong>west_lon_degree</strong> – West longitude (in degrees). </p></li>
+<li><p><strong>south_lat_degree</strong> – South latitude (in degrees). </p></li>
+<li><p><strong>east_lon_degree</strong> – East longitude (in degrees). </p></li>
+<li><p><strong>north_lat_degree</strong> – North latitude (in degrees). </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_operation_factory_context_set_crs_extent_use">
+<span class="target" id="group__iso19111__functions_1gab679a8098a87c41952adeb3822f3b4d8"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_operation_factory_context_set_crs_extent_use</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="n"><span class="pre">PJ_OPERATION_FACTORY_CONTEXT</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">factory_ctx</span></span>, <a class="reference internal" href="datatypes.html#c.PROJ_CRS_EXTENT_USE" title="PROJ_CRS_EXTENT_USE"><span class="n"><span class="pre">PROJ_CRS_EXTENT_USE</span></span></a><span class="w"> </span><span class="n"><span class="pre">use</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_operation_factory_context_set_crs_extent_use" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Set how source and target CRS extent should be used when considering if a transformation can be used (only takes effect if no area of interest is explicitly defined). </p>
+<p>The default is PJ_CRS_EXTENT_SMALLEST.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>factory_ctx</strong> – Operation factory context. must not be NULL </p></li>
+<li><p><strong>use</strong> – How source and target CRS extent should be used. </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_operation_factory_context_set_spatial_criterion">
+<span class="target" id="group__iso19111__functions_1ga98fd7b9b60687e40484e7f669bb44696"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_operation_factory_context_set_spatial_criterion</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="n"><span class="pre">PJ_OPERATION_FACTORY_CONTEXT</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">factory_ctx</span></span>, <a class="reference internal" href="datatypes.html#c.PROJ_SPATIAL_CRITERION" title="PROJ_SPATIAL_CRITERION"><span class="n"><span class="pre">PROJ_SPATIAL_CRITERION</span></span></a><span class="w"> </span><span class="n"><span class="pre">criterion</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_operation_factory_context_set_spatial_criterion" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Set the spatial criterion to use when comparing the area of validity of coordinate operations with the area of interest / area of validity of source and target CRS. </p>
+<p>The default is PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>factory_ctx</strong> – Operation factory context. must not be NULL </p></li>
+<li><p><strong>criterion</strong> – spatial criterion to use </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_operation_factory_context_set_grid_availability_use">
+<span class="target" id="group__iso19111__functions_1gaa6d4402c5f2cf18da3269fdd4bdabd1c"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_operation_factory_context_set_grid_availability_use</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="n"><span class="pre">PJ_OPERATION_FACTORY_CONTEXT</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">factory_ctx</span></span>, <a class="reference internal" href="datatypes.html#c.PROJ_GRID_AVAILABILITY_USE" title="PROJ_GRID_AVAILABILITY_USE"><span class="n"><span class="pre">PROJ_GRID_AVAILABILITY_USE</span></span></a><span class="w"> </span><span class="n"><span class="pre">use</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_operation_factory_context_set_grid_availability_use" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Set how grid availability is used. </p>
+<p>The default is USE_FOR_SORTING.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>factory_ctx</strong> – Operation factory context. must not be NULL </p></li>
+<li><p><strong>use</strong> – how grid availability is used. </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_operation_factory_context_set_use_proj_alternative_grid_names">
+<span class="target" id="group__iso19111__functions_1ga102372fec6cfaa23798bc64ecb91292c"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_operation_factory_context_set_use_proj_alternative_grid_names</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="n"><span class="pre">PJ_OPERATION_FACTORY_CONTEXT</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">factory_ctx</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">usePROJNames</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_operation_factory_context_set_use_proj_alternative_grid_names" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Set whether PROJ alternative grid names should be substituted to the official authority names. </p>
+<p>The default is true.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>factory_ctx</strong> – Operation factory context. must not be NULL </p></li>
+<li><p><strong>usePROJNames</strong> – whether PROJ alternative grid names should be used </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_operation_factory_context_set_allow_use_intermediate_crs">
+<span class="target" id="group__iso19111__functions_1ga0576d0803c28bf5d9283e4300756b9f5"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_operation_factory_context_set_allow_use_intermediate_crs</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="n"><span class="pre">PJ_OPERATION_FACTORY_CONTEXT</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">factory_ctx</span></span>, <a class="reference internal" href="datatypes.html#c.PROJ_INTERMEDIATE_CRS_USE" title="PROJ_INTERMEDIATE_CRS_USE"><span class="n"><span class="pre">PROJ_INTERMEDIATE_CRS_USE</span></span></a><span class="w"> </span><span class="n"><span class="pre">use</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_operation_factory_context_set_allow_use_intermediate_crs" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Set whether an intermediate pivot CRS can be used for researching coordinate operations between a source and target CRS. </p>
+<p>Concretely if in the database there is an operation from A to C (or C to A), and another one from C to B (or B to C), but no direct operation between A and B, setting this parameter to true, allow chaining both operations.</p>
+<p>The current implementation is limited to researching one intermediate step.</p>
+<p>By default, with the IF_NO_DIRECT_TRANSFORMATION strategy, all potential C candidates will be used if there is no direct transformation.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>factory_ctx</strong> – Operation factory context. must not be NULL </p></li>
+<li><p><strong>use</strong> – whether and how intermediate CRS may be used. </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_operation_factory_context_set_allowed_intermediate_crs">
+<span class="target" id="group__iso19111__functions_1ga6745312c4970bd4edfcc386a35590a34"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_operation_factory_context_set_allowed_intermediate_crs</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="n"><span class="pre">PJ_OPERATION_FACTORY_CONTEXT</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">factory_ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">list_of_auth_name_codes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_operation_factory_context_set_allowed_intermediate_crs" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Restrict the potential pivot CRSs that can be used when trying to build a coordinate operation between two CRS that have no direct operation. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>factory_ctx</strong> – Operation factory context. must not be NULL </p></li>
+<li><p><strong>list_of_auth_name_codes</strong> – an array of strings NLL terminated, with the format { “auth_name1”, “code1”, “auth_name2”, “code2”, … NULL } </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_operation_factory_context_set_discard_superseded">
+<span class="target" id="group__iso19111__functions_1ga58a6a250b7c29d4f6efb023fd91dabf2"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_operation_factory_context_set_discard_superseded</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="n"><span class="pre">PJ_OPERATION_FACTORY_CONTEXT</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">factory_ctx</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">discard</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_operation_factory_context_set_discard_superseded" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Set whether transformations that are superseded (but not deprecated) should be discarded. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>factory_ctx</strong> – Operation factory context. must not be NULL </p></li>
+<li><p><strong>discard</strong> – superseded crs or not </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_operation_factory_context_set_allow_ballpark_transformations">
+<span class="target" id="group__iso19111__functions_1ga94cddeb4cf048dc9efdab60e35c0230a"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_operation_factory_context_set_allow_ballpark_transformations</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="n"><span class="pre">PJ_OPERATION_FACTORY_CONTEXT</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">factory_ctx</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">allow</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_operation_factory_context_set_allow_ballpark_transformations" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Set whether ballpark transformations are allowed. </p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.1 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>factory_ctx</strong> – Operation factory context. must not be NULL </p></li>
+<li><p><strong>allow</strong> – set to TRUE to allow ballpark transformations. </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_create_operations">
+<span class="target" id="group__iso19111__functions_1gab5ef57e9bd9bff1341d05d56d1c5a8e2"></span><span class="n"><span class="pre">PJ_OBJ_LIST</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_create_operations</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">source_crs</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">target_crs</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">PJ_OPERATION_FACTORY_CONTEXT</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">operationContext</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_create_operations" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Find a list of CoordinateOperation from source_crs to target_crs. </p>
+<p>The operations are sorted with the most relevant ones first: by descending area (intersection of the transformation area with the area of interest, or intersection of the transformation with the area of use of the CRS), and by increasing accuracy. Operations with unknown accuracy are sorted last, whatever their area.</p>
+<p>When one of the source or target CRS has a vertical component but not the other one, the one that has no vertical component is automatically promoted to a 3D version, where its vertical axis is the ellipsoidal height in metres, using the ellipsoid of the base geodetic CRS.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>source_crs</strong> – source CRS. Must not be NULL. </p></li>
+<li><p><strong>target_crs</strong> – source CRS. Must not be NULL. </p></li>
+<li><p><strong>operationContext</strong> – Search context. Must not be NULL. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a result set that must be unreferenced with <a class="reference internal" href="#group__iso19111__functions_1gaa1274c437a786f9064556c139d689d71"><span class="std std-ref">proj_list_destroy()</span></a>, or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_list_get_count">
+<span class="target" id="group__iso19111__functions_1ga645fa2f0ff64dcbf5cd4a0361d306014"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_list_get_count</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">PJ_OBJ_LIST</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_list_get_count" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return the number of objects in the result set. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>result</strong> – Object of type PJ_OBJ_LIST (must not be NULL) </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_list_get">
+<span class="target" id="group__iso19111__functions_1gac831ee02c8cdef03ced2ec07abcf07d3"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_list_get</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">PJ_OBJ_LIST</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">index</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_list_get" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return an object from the result set. </p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>result</strong> – Object of type PJ_OBJ_LIST (must not be NULL) </p></li>
+<li><p><strong>index</strong> – Index </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a new object that must be unreferenced with proj_destroy(), or nullptr in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_list_destroy">
+<span class="target" id="group__iso19111__functions_1gaa1274c437a786f9064556c139d689d71"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_list_destroy</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">PJ_OBJ_LIST</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">result</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_list_destroy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Drops a reference on the result set. </p>
+<p>This method should be called one and exactly one for each function returning a PJ_OBJ_LIST*</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>result</strong> – Object, or NULL. </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_suggested_operation">
+<span class="target" id="group__iso19111__functions_1ga61bd60fa5f9c8a2f6a3443ddb2a5b10a"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_suggested_operation</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="n"><span class="pre">PJ_OBJ_LIST</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">operations</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_DIRECTION" title="PJ_DIRECTION"><span class="n"><span class="pre">PJ_DIRECTION</span></span></a><span class="w"> </span><span class="n"><span class="pre">direction</span></span>, <a class="reference internal" href="datatypes.html#c.PJ_COORD" title="PJ_COORD"><span class="n"><span class="pre">PJ_COORD</span></span></a><span class="w"> </span><span class="n"><span class="pre">coord</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_suggested_operation" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return the index of the operation that would be the most appropriate to transform the specified coordinates.</p>
+<p>This operation may use resources that are not locally available, depending on the search criteria used by <a class="reference internal" href="#group__iso19111__functions_1gab5ef57e9bd9bff1341d05d56d1c5a8e2"><span class="std std-ref">proj_create_operations()</span></a>.</p>
+<p>This could be done by using <a class="reference internal" href="#group__iso19111__functions_1gab5ef57e9bd9bff1341d05d56d1c5a8e2"><span class="std std-ref">proj_create_operations()</span></a> with a punctual bounding box, but this function is faster when one needs to evaluate on many points with the same (source_crs, target_crs) tuple.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.1 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>operations</strong> – List of operations returned by <a class="reference internal" href="#group__iso19111__functions_1gab5ef57e9bd9bff1341d05d56d1c5a8e2"><span class="std std-ref">proj_create_operations()</span></a> </p></li>
+<li><p><strong>direction</strong> – Direction into which to transform the point. </p></li>
+<li><p><strong>coord</strong> – Coordinate to transform </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>the index in operations that would be used to transform coord. Or -1 in case of error, or no match.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_crs_is_derived">
+<span class="target" id="group__iso19111__functions_1gab0bf9c7247a50e54502f3977f6c975ed"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_crs_is_derived</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">crs</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_crs_is_derived" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns whether a CRS is a derived CRS. </p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>8.0 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>crs</strong> – Object of type CRS (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE if the CRS is a derived CRS. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_crs_get_geodetic_crs">
+<span class="target" id="group__iso19111__functions_1ga2405cdec5fe6b121ff6f8d9bea358b07"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_crs_get_geodetic_crs</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">crs</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_crs_get_geodetic_crs" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get the geodeticCRS / geographicCRS from a CRS. </p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>crs</strong> – Object of type CRS (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_crs_get_horizontal_datum">
+<span class="target" id="group__iso19111__functions_1ga1d79bd02c7d38deba48825481c1ff203"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_crs_get_horizontal_datum</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">crs</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_crs_get_horizontal_datum" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get the horizontal datum from a CRS. </p>
+<p>This function may return a Datum or DatumEnsemble object.</p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>crs</strong> – Object of type CRS (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_crs_get_sub_crs">
+<span class="target" id="group__iso19111__functions_1ga212d4b01b4a05ace104884535c7c6917"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_crs_get_sub_crs</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">crs</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">index</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_crs_get_sub_crs" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get a CRS component from a CompoundCRS. </p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>crs</strong> – Object of type CRS (must not be NULL) </p></li>
+<li><p><strong>index</strong> – Index of the CRS component (typically 0 = horizontal, 1 = vertical) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_crs_get_datum">
+<span class="target" id="group__iso19111__functions_1ga62b01453e51ac619bddc553067186ca1"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_crs_get_datum</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">crs</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_crs_get_datum" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns the datum of a SingleCRS. </p>
+<p><p>If that function returns NULL,</p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<div class="admonition seealso">
+<p class="admonition-title">See also</p>
+<p><a class="reference internal" href="#group__iso19111__functions_1ga7f3d16e65d6ef1688646e8cea432ca48"><span class="std std-ref">proj_crs_get_datum_ensemble()</span></a> to potentially get a DatumEnsemble instead.</p>
+</div>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>crs</strong> – Object of type SingleCRS (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error (or if there is no datum) </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_crs_get_datum_ensemble">
+<span class="target" id="group__iso19111__functions_1ga7f3d16e65d6ef1688646e8cea432ca48"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_crs_get_datum_ensemble</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">crs</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_crs_get_datum_ensemble" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns the datum ensemble of a SingleCRS. </p>
+<p><p>If that function returns NULL,</p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<div class="admonition seealso">
+<p class="admonition-title">See also</p>
+<p><a class="reference internal" href="#group__iso19111__functions_1ga62b01453e51ac619bddc553067186ca1"><span class="std std-ref">proj_crs_get_datum()</span></a> to potentially get a Datum instead.</p>
+</div>
+</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.2 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>crs</strong> – Object of type SingleCRS (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error (or if there is no datum ensemble)</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_crs_get_datum_forced">
+<span class="target" id="group__iso19111__functions_1gaf5a7272e379e5abd367a64c426a9d414"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_crs_get_datum_forced</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">crs</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_crs_get_datum_forced" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns a datum for a SingleCRS. </p>
+<p>If the SingleCRS has a datum, then this datum is returned. Otherwise, the SingleCRS has a datum ensemble, and this datum ensemble is returned as a regular datum instead of a datum ensemble.</p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.2 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>crs</strong> – Object of type SingleCRS (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error (or if there is no datum)</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_datum_ensemble_get_member_count">
+<span class="target" id="group__iso19111__functions_1gadb56c2288b443b0fea664b4361d79d46"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_datum_ensemble_get_member_count</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">datum_ensemble</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_datum_ensemble_get_member_count" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns the number of members of a datum ensemble. </p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.2 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>datum_ensemble</strong> – Object of type DatumEnsemble (must not be NULL)</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_datum_ensemble_get_accuracy">
+<span class="target" id="group__iso19111__functions_1ga28ea9a6d171d6f9623a995bc04f862de"></span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_datum_ensemble_get_accuracy</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">datum_ensemble</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_datum_ensemble_get_accuracy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns the positional accuracy of the datum ensemble. </p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.2 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>datum_ensemble</strong> – Object of type DatumEnsemble (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>the accuracy, or -1 in case of error.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_datum_ensemble_get_member">
+<span class="target" id="group__iso19111__functions_1gabe85eca25ee77a56f0a4b7654d269fed"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_datum_ensemble_get_member</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">datum_ensemble</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">member_index</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_datum_ensemble_get_member" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns a member from a datum ensemble. </p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.2 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>datum_ensemble</strong> – Object of type DatumEnsemble (must not be NULL) </p></li>
+<li><p><strong>member_index</strong> – Index of the datum member to extract (between 0 and <a class="reference internal" href="#group__iso19111__functions_1gadb56c2288b443b0fea664b4361d79d46"><span class="std std-ref">proj_datum_ensemble_get_member_count()</span></a>-1) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error (or if there is no datum ensemble)</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_dynamic_datum_get_frame_reference_epoch">
+<span class="target" id="group__iso19111__functions_1ga42234041d803ed80cc340e35bd3bb6b3"></span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_dynamic_datum_get_frame_reference_epoch</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">datum</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_dynamic_datum_get_frame_reference_epoch" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns the frame reference epoch of a dynamic geodetic or vertical reference frame. </p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>7.2 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>datum</strong> – Object of type DynamicGeodeticReferenceFrame or DynamicVerticalReferenceFrame (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>the frame reference epoch as decimal year, or -1 in case of error.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_crs_get_coordinate_system">
+<span class="target" id="group__iso19111__functions_1ga8cb1f40bfa518906a1ce8fa42b3b2678"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_crs_get_coordinate_system</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">crs</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_crs_get_coordinate_system" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns the coordinate system of a SingleCRS. </p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>crs</strong> – Object of type SingleCRS (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_cs_get_type">
+<span class="target" id="group__iso19111__functions_1gae725f3de6682e038deaf408e7e0efe25"></span><a class="reference internal" href="datatypes.html#c.PJ_COORDINATE_SYSTEM_TYPE" title="PJ_COORDINATE_SYSTEM_TYPE"><span class="n"><span class="pre">PJ_COORDINATE_SYSTEM_TYPE</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_cs_get_type</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">cs</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_cs_get_type" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns the type of the coordinate system. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>cs</strong> – Object of type CoordinateSystem (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>type, or PJ_CS_TYPE_UNKNOWN in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_cs_get_axis_count">
+<span class="target" id="group__iso19111__functions_1ga6e3d7224db5759a7cc0e186c63a06203"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_cs_get_axis_count</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">cs</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_cs_get_axis_count" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns the number of axis of the coordinate system. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>cs</strong> – Object of type CoordinateSystem (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>number of axis, or -1 in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_cs_get_axis_info">
+<span class="target" id="group__iso19111__functions_1ga798d8fb70377cee44abd97996d39c50c"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_cs_get_axis_info</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">cs</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">index</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_abbrev</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_direction</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_unit_conv_factor</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_unit_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_unit_auth_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_unit_code</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_cs_get_axis_info" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns information on an axis. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>cs</strong> – Object of type CoordinateSystem (must not be NULL) </p></li>
+<li><p><strong>index</strong> – Index of the coordinate system (between 0 and <a class="reference internal" href="#group__iso19111__functions_1ga6e3d7224db5759a7cc0e186c63a06203"><span class="std std-ref">proj_cs_get_axis_count()</span></a> - 1) </p></li>
+<li><p><strong>out_name</strong> – Pointer to a string value to store the axis name. or NULL </p></li>
+<li><p><strong>out_abbrev</strong> – Pointer to a string value to store the axis abbreviation. or NULL </p></li>
+<li><p><strong>out_direction</strong> – Pointer to a string value to store the axis direction. or NULL </p></li>
+<li><p><strong>out_unit_conv_factor</strong> – Pointer to a double value to store the axis unit conversion factor. or NULL </p></li>
+<li><p><strong>out_unit_name</strong> – Pointer to a string value to store the axis unit name. or NULL </p></li>
+<li><p><strong>out_unit_auth_name</strong> – Pointer to a string value to store the axis unit authority name. or NULL </p></li>
+<li><p><strong>out_unit_code</strong> – Pointer to a string value to store the axis unit code. or NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE in case of success </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_ellipsoid">
+<span class="target" id="group__iso19111__functions_1ga1b9e88a9919ef4da2ba49e69a636df16"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_ellipsoid</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_ellipsoid" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get the ellipsoid from a CRS or a GeodeticReferenceFrame. </p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>obj</strong> – Object of type CRS or GeodeticReferenceFrame (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_ellipsoid_get_parameters">
+<span class="target" id="group__iso19111__functions_1gacc1402e3ce480e0618da4c615d5c3145"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_ellipsoid_get_parameters</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ellipsoid</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_semi_major_metre</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_semi_minor_metre</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_is_semi_minor_computed</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_inv_flattening</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_ellipsoid_get_parameters" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return ellipsoid parameters. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>ellipsoid</strong> – Object of type Ellipsoid (must not be NULL) </p></li>
+<li><p><strong>out_semi_major_metre</strong> – Pointer to a value to store the semi-major axis in metre. or NULL </p></li>
+<li><p><strong>out_semi_minor_metre</strong> – Pointer to a value to store the semi-minor axis in metre. or NULL </p></li>
+<li><p><strong>out_is_semi_minor_computed</strong> – Pointer to a boolean value to indicate if the semi-minor value was computed. If FALSE, its value comes from the definition. or NULL </p></li>
+<li><p><strong>out_inv_flattening</strong> – Pointer to a value to store the inverse flattening. or NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE in case of success. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_celestial_body_name">
+<span class="target" id="group__iso19111__functions_1ga0fcd43938ad966855bbe2f628dfd43fc"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_celestial_body_name</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_celestial_body_name" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get the name of the celestial body of this object. </p>
+<p>Object should be a CRS, Datum or Ellipsoid.</p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>8.1 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>obj</strong> – Object of type CRS, Datum or Ellipsoid.(must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>the name of the celestial body, or NULL. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_get_prime_meridian">
+<span class="target" id="group__iso19111__functions_1ga8d0e294b0a21514d0ed763428d7cffb8"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_get_prime_meridian</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_get_prime_meridian" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Get the prime meridian of a CRS or a GeodeticReferenceFrame. </p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>obj</strong> – Object of type CRS or GeodeticReferenceFrame (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_prime_meridian_get_parameters">
+<span class="target" id="group__iso19111__functions_1ga14a20c449ab108771eed62487b130829"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_prime_meridian_get_parameters</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">prime_meridian</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_longitude</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_unit_conv_factor</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_unit_name</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_prime_meridian_get_parameters" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return prime meridian parameters. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>prime_meridian</strong> – Object of type PrimeMeridian (must not be NULL) </p></li>
+<li><p><strong>out_longitude</strong> – Pointer to a value to store the longitude of the prime meridian, in its native unit. or NULL </p></li>
+<li><p><strong>out_unit_conv_factor</strong> – Pointer to a value to store the conversion factor of the prime meridian longitude unit to radian. or NULL </p></li>
+<li><p><strong>out_unit_name</strong> – Pointer to a string value to store the unit name. or NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE in case of success. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_crs_get_coordoperation">
+<span class="target" id="group__iso19111__functions_1ga3dffb8f90a78a3dc6cfb0586bd1c8e0a"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_crs_get_coordoperation</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">crs</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_crs_get_coordoperation" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return the Conversion of a DerivedCRS (such as a ProjectedCRS), or the Transformation from the baseCRS to the hubCRS of a BoundCRS. </p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>crs</strong> – Object of type DerivedCRS or BoundCRSs (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object of type SingleOperation that must be unreferenced with proj_destroy(), or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_coordoperation_get_method_info">
+<span class="target" id="group__iso19111__functions_1ga3e3cd827a8ed1d9d69701fe52d4c9ff2"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_coordoperation_get_method_info</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">coordoperation</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_method_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_method_auth_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_method_code</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_coordoperation_get_method_info" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return information on the operation method of the SingleOperation. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>coordoperation</strong> – Object of type SingleOperation (typically a Conversion or Transformation) (must not be NULL) </p></li>
+<li><p><strong>out_method_name</strong> – Pointer to a string value to store the method (projection) name. or NULL </p></li>
+<li><p><strong>out_method_auth_name</strong> – Pointer to a string value to store the method authority name. or NULL </p></li>
+<li><p><strong>out_method_code</strong> – Pointer to a string value to store the method code. or NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE in case of success. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_coordoperation_is_instantiable">
+<span class="target" id="group__iso19111__functions_1gaac33865ae52cf66babc2f24f6748a606"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_coordoperation_is_instantiable</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">coordoperation</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_coordoperation_is_instantiable" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return whether a coordinate operation can be instantiated as a PROJ pipeline, checking in particular that referenced grids are available. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>coordoperation</strong> – Object of type CoordinateOperation or derived classes (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE or FALSE. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_coordoperation_has_ballpark_transformation">
+<span class="target" id="group__iso19111__functions_1gaa0804ba270694460a2d315ff44219ca4"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_coordoperation_has_ballpark_transformation</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">coordoperation</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_coordoperation_has_ballpark_transformation" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return whether a coordinate operation has a “ballpark” transformation, that is a very approximate one, due to lack of more accurate transformations. </p>
+<p>Typically a null geographic offset between two horizontal datum, or a null vertical offset (or limited to unit changes) between two vertical datum. Errors of several tens to one hundred meters might be expected, compared to more accurate transformations.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>coordoperation</strong> – Object of type CoordinateOperation or derived classes (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE or FALSE. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_coordoperation_get_param_count">
+<span class="target" id="group__iso19111__functions_1ga73bd01a3d5ea9cf38d419f9f4182f4f4"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_coordoperation_get_param_count</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">coordoperation</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_coordoperation_get_param_count" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return the number of parameters of a SingleOperation. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>coordoperation</strong> – Object of type SingleOperation or derived classes (must not be NULL) </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_coordoperation_get_param_index">
+<span class="target" id="group__iso19111__functions_1ga419f328752102122e7299469a985ddfa"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_coordoperation_get_param_index</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">coordoperation</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">name</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_coordoperation_get_param_index" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return the index of a parameter of a SingleOperation. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>coordoperation</strong> – Object of type SingleOperation or derived classes (must not be NULL) </p></li>
+<li><p><strong>name</strong> – Parameter name. Must not be NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>index (&gt;=0), or -1 in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_coordoperation_get_param">
+<span class="target" id="group__iso19111__functions_1gaa47fc7f7c959d1b704bc00c5d7c5f16a"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_coordoperation_get_param</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">coordoperation</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">index</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_auth_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_code</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_value_string</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_unit_conv_factor</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_unit_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_unit_auth_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_unit_code</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_unit_category</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_coordoperation_get_param" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return a parameter of a SingleOperation. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>coordoperation</strong> – Object of type SingleOperation or derived classes (must not be NULL) </p></li>
+<li><p><strong>index</strong> – Parameter index. </p></li>
+<li><p><strong>out_name</strong> – Pointer to a string value to store the parameter name. or NULL </p></li>
+<li><p><strong>out_auth_name</strong> – Pointer to a string value to store the parameter authority name. or NULL </p></li>
+<li><p><strong>out_code</strong> – Pointer to a string value to store the parameter code. or NULL </p></li>
+<li><p><strong>out_value</strong> – Pointer to a double value to store the parameter value (if numeric). or NULL </p></li>
+<li><p><strong>out_value_string</strong> – Pointer to a string value to store the parameter value (if of type string). or NULL </p></li>
+<li><p><strong>out_unit_conv_factor</strong> – Pointer to a double value to store the parameter unit conversion factor. or NULL </p></li>
+<li><p><strong>out_unit_name</strong> – Pointer to a string value to store the parameter unit name. or NULL </p></li>
+<li><p><strong>out_unit_auth_name</strong> – Pointer to a string value to store the unit authority name. or NULL </p></li>
+<li><p><strong>out_unit_code</strong> – Pointer to a string value to store the unit code. or NULL </p></li>
+<li><p><strong>out_unit_category</strong> – Pointer to a string value to store the parameter name. or NULL. This value might be “unknown”, “none”, “linear”, “linear_per_time”, “angular”, “angular_per_time”, “scale”, “scale_per_time”, “time”, “parametric” or “parametric_per_time” </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE in case of success. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_coordoperation_get_grid_used_count">
+<span class="target" id="group__iso19111__functions_1gaa2d8da513d8c48235eb63571533b694a"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_coordoperation_get_grid_used_count</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">coordoperation</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_coordoperation_get_grid_used_count" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return the number of grids used by a CoordinateOperation. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>coordoperation</strong> – Object of type CoordinateOperation or derived classes (must not be NULL) </p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_coordoperation_get_grid_used">
+<span class="target" id="group__iso19111__functions_1gadfb7e8c628a45e56bef25ef7a7defd6d"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_coordoperation_get_grid_used</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">coordoperation</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">index</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_short_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_full_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_package_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_url</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_direct_download</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_open_license</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_available</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_coordoperation_get_grid_used" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return a parameter of a SingleOperation. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>coordoperation</strong> – Object of type SingleOperation or derived classes (must not be NULL) </p></li>
+<li><p><strong>index</strong> – Parameter index. </p></li>
+<li><p><strong>out_short_name</strong> – Pointer to a string value to store the grid short name. or NULL </p></li>
+<li><p><strong>out_full_name</strong> – Pointer to a string value to store the grid full filename. or NULL </p></li>
+<li><p><strong>out_package_name</strong> – Pointer to a string value to store the package name where the grid might be found. or NULL </p></li>
+<li><p><strong>out_url</strong> – Pointer to a string value to store the grid URL or the package URL where the grid might be found. or NULL </p></li>
+<li><p><strong>out_direct_download</strong> – Pointer to a int (boolean) value to store whether *out_url can be downloaded directly. or NULL </p></li>
+<li><p><strong>out_open_license</strong> – Pointer to a int (boolean) value to store whether the grid is released with an open license. or NULL </p></li>
+<li><p><strong>out_available</strong> – Pointer to a int (boolean) value to store whether the grid is available at runtime. or NULL </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE in case of success. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_coordoperation_get_accuracy">
+<span class="target" id="group__iso19111__functions_1ga28abd93c89d4266142c4ddca5c242d46"></span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_coordoperation_get_accuracy</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_coordoperation_get_accuracy" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return the accuracy (in metre) of a coordinate operation. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>coordoperation</strong> – Coordinate operation. Must not be NULL. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>the accuracy, or a negative value if unknown or in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_coordoperation_get_towgs84_values">
+<span class="target" id="group__iso19111__functions_1ga1935305cbaaa0b35f21d890e56192847"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_coordoperation_get_towgs84_values</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">coordoperation</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">out_values</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">value_count</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">emit_error_if_incompatible</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_coordoperation_get_towgs84_values" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Return the parameters of a Helmert transformation as WKT1 TOWGS84 values. </p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>coordoperation</strong> – Object of type Transformation, that can be represented as a WKT1 TOWGS84 node (must not be NULL) </p></li>
+<li><p><strong>out_values</strong> – Pointer to an array of value_count double values. </p></li>
+<li><p><strong>value_count</strong> – Size of out_values array. The suggested size is 7 to get translation, rotation and scale difference parameters. Rotation and scale difference terms might be zero if the transformation only includes translation parameters. In that case, value_count could be set to 3. </p></li>
+<li><p><strong>emit_error_if_incompatible</strong> – Boolean to indicate if an error must be logged if coordoperation is not compatible with a WKT1 TOWGS84 representation. </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>TRUE in case of success, or FALSE if coordoperation is not compatible with a WKT1 TOWGS84 representation. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_coordoperation_create_inverse">
+<span class="target" id="group__iso19111__functions_1ga9a1c751564fa5c4b1846af39dbd7105b"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_coordoperation_create_inverse</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">obj</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_coordoperation_create_inverse" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns a PJ* coordinate operation object which represents the inverse operation of the specified coordinate operation. </p>
+<p><dl class="simple">
+<dt><strong>Since</strong></dt><dd><p>6.3 </p>
+</dd>
+</dl>
+</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>obj</strong> – Object of type CoordinateOperation (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>a new PJ* object to free with proj_destroy() in case of success, or nullptr in case of error </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_concatoperation_get_step_count">
+<span class="target" id="group__iso19111__functions_1gace4d7b4541748dbfb958f839bfe61fa9"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">proj_concatoperation_get_step_count</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">concatoperation</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_concatoperation_get_step_count" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns the number of steps of a concatenated operation. </p>
+<p>The input object must be a concatenated operation.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>concatoperation</strong> – Concatenated operation (must not be NULL) </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>the number of steps, or 0 in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.proj_concatoperation_get_step">
+<span class="target" id="group__iso19111__functions_1gaed64a00aefa340d14389adb1390d1335"></span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">proj_concatoperation_get_step</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="datatypes.html#c.PJ_CONTEXT" title="PJ_CONTEXT"><span class="n"><span class="pre">PJ_CONTEXT</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatypes.html#c.PJ" title="PJ"><span class="n"><span class="pre">PJ</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">concatoperation</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">i_step</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.proj_concatoperation_get_step" title="Permalink to this definition">¶</a><br /></dt>
+<dd><p>Returns a step of a concatenated operation. </p>
+<p>The input object must be a concatenated operation.</p>
+<p>The returned object must be unreferenced with proj_destroy() after use. It should be used by at most one thread at a time.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>ctx</strong> – PROJ context, or NULL for default context </p></li>
+<li><p><strong>concatoperation</strong> – Concatenated operation (must not be NULL) </p></li>
+<li><p><strong>i_step</strong> – Index of the step to extract. Between 0 and <a class="reference internal" href="#group__iso19111__functions_1gace4d7b4541748dbfb958f839bfe61fa9"><span class="std std-ref">proj_concatoperation_get_step_count()</span></a>-1 </p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p>Object that must be unreferenced with proj_destroy(), or NULL in case of error. </p>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+</section>
+
+
+ </div>
+ </div>
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+ <a href="datatypes.html" class="btn btn-neutral float-left" title="Data types" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="cpp/index.html" class="btn btn-neutral float-right" title="C++ API" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>&#169; Copyright 1983-2022.
+ <span class="lastupdated">Last updated on 22 Mar 2022.
+ </span></p>
+ </div>
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+
+</footer>
+ </div>
+ </div>
+ </section>
+ </div>
+ <script>
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file