This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/sis-site.git


The following commit(s) were added to refs/heads/asf-staging by this push:
     new e47b80ed Move "How to" items from the FAQ to new pages in the "How to" 
directory.
e47b80ed is described below

commit e47b80ed297be0e12ef8208a50d7841009d36f8d
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Sat Jan 21 13:22:25 2023 +0100

    Move "How to" items from the FAQ to new pages in the "How to" directory.
---
 en/sitemap.xml                                     |  22 ++-
 faq.html                                           | 141 +++----------
 howto.html                                         |  19 +-
 howto/crs_equality.html                            | 194 ++++++++++++++++++
 howto/index.xml                                    |  39 ++++
 howto/instantiate_UTM_projection.html              | 215 ++++++++++++++++++++
 howto/instantiate_utm_projection.html              | 215 ++++++++++++++++++++
 howto/lookup_crs_urn.html                          | 220 +++++++++++++++++++++
 howto/raster_values_at_geographic_coordinates.html |   6 +-
 howto/rasters_bigger_than_memory.html              |   6 +-
 howto/resample_and_save_raster.html                |  15 +-
 howto/transform_coordinates.html                   | 210 ++++++++++++++++++++
 index.xml                                          |  41 +++-
 sitemap.xml                                        |   2 +-
 14 files changed, 1215 insertions(+), 130 deletions(-)

diff --git a/en/sitemap.xml b/en/sitemap.xml
index 38f46fd4..54241706 100644
--- a/en/sitemap.xml
+++ b/en/sitemap.xml
@@ -19,9 +19,12 @@
   </url><url>
     <loc>https://sis.apache.org/formats.html</loc>
     <lastmod>2022-12-26T23:26:50+01:00</lastmod>
+  </url><url>
+    <loc>https://sis.apache.org/howto/crs_equality.html</loc>
+    <lastmod>2023-01-21T00:15:54+01:00</lastmod>
   </url><url>
     <loc>https://sis.apache.org/faq.html</loc>
-    <lastmod>2022-12-08T22:07:22+01:00</lastmod>
+    <lastmod>2023-01-21T00:15:54+01:00</lastmod>
     <xhtml:link
                 rel="alternate"
                 hreflang="fr"
@@ -34,16 +37,22 @@
                 />
   </url><url>
     
<loc>https://sis.apache.org/howto/raster_values_at_geographic_coordinates.html</loc>
-    <lastmod>2023-01-18T11:09:36+01:00</lastmod>
+    <lastmod>2023-01-21T00:15:54+01:00</lastmod>
+  </url><url>
+    <loc>https://sis.apache.org/howto/lookup_crs_urn.html</loc>
+    <lastmod>2023-01-21T00:15:54+01:00</lastmod>
   </url><url>
     <loc>https://sis.apache.org/howto/rasters_bigger_than_memory.html</loc>
-    <lastmod>2023-01-18T11:09:36+01:00</lastmod>
+    <lastmod>2023-01-21T00:15:54+01:00</lastmod>
   </url><url>
     <loc>https://sis.apache.org/howto.html</loc>
-    <lastmod>2023-01-18T11:09:36+01:00</lastmod>
+    <lastmod>2023-01-21T00:15:54+01:00</lastmod>
   </url><url>
     <loc>https://sis.apache.org/epsg.html</loc>
     <lastmod>2022-12-08T22:07:22+01:00</lastmod>
+  </url><url>
+    <loc>https://sis.apache.org/howto/instantiate_utm_projection.html</loc>
+    <lastmod>2023-01-21T00:15:54+01:00</lastmod>
   </url><url>
     <loc>https://sis.apache.org/javafx.html</loc>
     <lastmod>2022-12-08T22:07:22+01:00</lastmod>
@@ -73,7 +82,7 @@
     <lastmod>2022-12-08T22:07:22+01:00</lastmod>
   </url><url>
     <loc>https://sis.apache.org/howto/resample_and_save_raster.html</loc>
-    <lastmod>2023-01-18T11:09:36+01:00</lastmod>
+    <lastmod>2023-01-21T00:15:54+01:00</lastmod>
   </url><url>
     <loc>https://sis.apache.org/release-notes/0.1.html</loc>
     <lastmod>2022-12-12T22:21:04+01:00</lastmod>
@@ -129,5 +138,8 @@
                 hreflang="en"
                 href="https://sis.apache.org/";
                 />
+  </url><url>
+    <loc>https://sis.apache.org/howto/transform_coordinates.html</loc>
+    <lastmod>2023-01-21T00:15:54+01:00</lastmod>
   </url>
 </urlset>
diff --git a/faq.html b/faq.html
index fc21c478..8a91498d 100644
--- a/faq.html
+++ b/faq.html
@@ -112,20 +112,16 @@
       <ul>
         <li><a href="#referencing-intro">Getting started   </a>
           <ul>
+            <li><a href="#getCRS">How do I get a Coordinate Reference System?  
 </a></li>
             <li><a href="#transform-point">How do I transform a coordinate?   
</a></li>
             <li><a href="#operation-methods">Which map projections are 
supported?   </a></li>
-            <li><a href="#axisOrder">What is the axis order issue and how is 
it addressed?   </a></li>
           </ul>
         </li>
         <li><a href="#crs">Coordinate Reference Systems   </a>
           <ul>
-            <li><a href="#UTM">How do I instantiate a Universal Transverse 
Mercator (UTM) projection?   </a></li>
-            <li><a href="#google">How do I instantiate a Google projection?   
</a></li>
-            <li><a href="#projectionKind">How can I identify the projection 
kind of a CRS?   </a></li>
-            <li><a href="#lookupEPSG">How do I get the EPSG code of an 
existing CRS?   </a></li>
-            <li><a href="#lookupURN">How do I get the 
&ldquo;urn:ogc:def:crs:…&rdquo; URN of an existing CRS?   </a></li>
+            <li><a href="#google">What is the Google projection?   </a></li>
+            <li><a href="#axisOrder">What is the axis order issue and how is 
it addressed?   </a></li>
             <li><a href="#lookupReliability">Is 
IdentifiedObjects.lookupEPSG(…) a reliable inverse of CRS.forCode(…)?  </a></li>
-            <li><a href="#equalsIgnoreMetadata">How can I determine if two CRS 
are &ldquo;functionally&rdquo; equal?   </a></li>
             <li><a href="#crsHashCode">Are CRS objects safe for use as keys in 
HashMap?   </a></li>
           </ul>
         </li>
@@ -155,37 +151,19 @@
 </nav>
 <h1 id="referencing">Referencing   </h1>
 <h2 id="referencing-intro">Getting started   </h2>
+<h3 id="getCRS">How do I get a Coordinate Reference System?   </h3>
+<p>The <code>CRS</code> class in the 
<code>org.apache.sis.referencing.crs</code> package provides static convenience 
methods.
+The most notable methods are:</p>
+<ul>
+<li><code>CRS.forCode(String)</code> for fetching a <abbr title="Coordinate 
Reference System">CRS</abbr> from an authority code in a database.
+Some supported authorities are <a href="epsg.html">EPSG</a>, AUTO, AUTO2 and 
CRS.</li>
+<li><code>CRS.fromWKT(String)</code> for parsing a <abbr title="Coordinate 
Reference System">CRS</abbr> definition from a character string in Well-Known 
Text (WKT) format.</li>
+<li><code>CRS.fromXML(String)</code> for parsing a <abbr title="Coordinate 
Reference System">CRS</abbr> definition from a character string in Geographic 
Markup Language (GML) format.</li>
+</ul>
 <h3 id="transform-point">How do I transform a coordinate?   </h3>
-<p>The following Java code projects a geographic coordinate from the <em>World 
Geodetic System 1984</em> (WGS84) to <em>WGS 84 / UTM zone 33N</em>.
-In order to make the example a little bit simpler, this code uses predefined 
constants given by the <code>CommonCRS</code> convenience class.
-But more advanced applications will typically use EPSG codes instead.
-Note that all geographic coordinates below express latitude <em>before</em> 
longitude.</p>
-<div class="highlight"><pre tabindex="0" class="chroma"><code 
class="language-java" data-lang="java"><span class="line"><span 
class="cl"><span class="kn">import</span> <span 
class="nn">org.opengis.geometry.DirectPosition</span><span class="o">;</span>
-</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.opengis.referencing.crs.CoordinateReferenceSystem</span><span 
class="o">;</span>
-</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.opengis.referencing.operation.CoordinateOperation</span><span 
class="o">;</span>
-</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.opengis.referencing.operation.TransformException</span><span 
class="o">;</span>
-</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.opengis.util.FactoryException</span><span class="o">;</span>
-</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.referencing.CRS</span><span class="o">;</span>
-</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.referencing.CommonCRS</span><span class="o">;</span>
-</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.geometry.DirectPosition2D</span><span 
class="o">;</span>
-</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"><span 
class="kd">public</span> <span class="kd">class</span> <span 
class="nc">MyApp</span> <span class="o">{</span>
-</span></span><span class="line"><span class="cl">    <span 
class="kd">public</span> <span class="kd">static</span> <span 
class="kt">void</span> <span class="nf">main</span><span 
class="o">(</span><span class="n">String</span><span class="o">[]</span> <span 
class="n">args</span><span class="o">)</span> <span class="kd">throws</span> 
<span class="n">FactoryException</span><span class="o">,</span> <span 
class="n">TransformException</span> <span class="o">{</span>
-</span></span><span class="line"><span class="cl">        <span 
class="n">CoordinateReferenceSystem</span> <span class="n">sourceCRS</span> 
<span class="o">=</span> <span class="n">CommonCRS</span><span 
class="o">.</span><span class="na">WGS84</span><span class="o">.</span><span 
class="na">geographic</span><span class="o">();</span>
-</span></span><span class="line"><span class="cl">        <span 
class="n">CoordinateReferenceSystem</span> <span class="n">targetCRS</span> 
<span class="o">=</span> <span class="n">CommonCRS</span><span 
class="o">.</span><span class="na">WGS84</span><span class="o">.</span><span 
class="na">universal</span><span class="o">(</span><span 
class="n">40</span><span class="o">,</span> <span class="n">14</span><span 
class="o">);</span>  <span class="c1">// Get whatever zone is valid for 14°E.
-</span></span></span><span class="line"><span class="cl"><span 
class="c1"></span>        <span class="n">CoordinateOperation</span> <span 
class="n">operation</span> <span class="o">=</span> <span 
class="n">CRS</span><span class="o">.</span><span 
class="na">findOperation</span><span class="o">(</span><span 
class="n">sourceCRS</span><span class="o">,</span> <span 
class="n">targetCRS</span><span class="o">,</span> <span 
class="kc">null</span><span class="o">);</span>
-</span></span><span class="line"><span class="cl">        <span class="cm">/*
-</span></span></span><span class="line"><span class="cl"><span class="cm">     
    * The above lines are costly and should be performed only once before to 
project many points.
-</span></span></span><span class="line"><span class="cl"><span class="cm">     
    * In this example, the operation that we got is valid for coordinates in 
geographic area from
-</span></span></span><span class="line"><span class="cl"><span class="cm">     
    * 12°E to 18°E (UTM zone 33) and 0°N to 84°N.
-</span></span></span><span class="line"><span class="cl"><span class="cm">     
    */</span>
-</span></span><span class="line"><span class="cl">        <span 
class="n">DirectPosition</span> <span class="n">ptSrc</span> <span 
class="o">=</span> <span class="k">new</span> <span 
class="n">DirectPosition2D</span><span class="o">(</span><span 
class="n">40</span><span class="o">,</span> <span class="n">14</span><span 
class="o">);</span>           <span class="c1">// 40°N 14°E
-</span></span></span><span class="line"><span class="cl"><span 
class="c1"></span>        <span class="n">DirectPosition</span> <span 
class="n">ptDst</span> <span class="o">=</span> <span 
class="n">operation</span><span class="o">.</span><span 
class="na">getMathTransform</span><span class="o">().</span><span 
class="na">transform</span><span class="o">(</span><span 
class="n">ptSrc</span><span class="o">,</span> <span 
class="kc">null</span><span class="o">);</span>
-</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;Source: &#34;</span> <span class="o">+</span> <span 
class="n">ptSrc</span><span class="o">);</span>
-</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;Target: &#34;</span> <span class="o">+</span> <span 
class="n">ptDst</span><span class="o">);</span>
-</span></span><span class="line"><span class="cl">    <span class="o">}</span>
-</span></span><span class="line"><span class="cl"><span 
class="o">}</span></span></span></code></pre></div>
+<p>See the <a href="howto.html#referencing">&ldquo;How to…&rdquo;</a> page for 
Java code examples.
+Those examples get Coordinate Reference Systems (CRS) instances in various ways
+and apply coordinate operations between two reference systems.</p>
 <h3 id="operation-methods">Which map projections are supported?   </h3>
 <p>The operation <em>methods</em> (including, but not limited to, map 
projections) supported by
 Apache <abbr title="Spatial Information System">SIS</abbr> are listed in the 
<a href="tables/CoordinateOperationMethods.html">Coordinate Operation 
Methods</a> page.
@@ -198,6 +176,22 @@ For convenience, thousands of projected <abbr 
title="Coordinate Reference System
 A well-known source of such definitions is the EPSG geodetic dataset, but 
other authorities also exist.
 The predefined <abbr title="Coordinate Reference System">CRS</abbr> known to 
Apache <abbr title="Spatial Information System">SIS</abbr> are listed in the
 <a href="tables/CoordinateReferenceSystems.html">Coordinate Reference 
Systems</a> page.</p>
+<h2 id="crs">Coordinate Reference Systems   </h2>
+<h3 id="google">What is the Google projection?   </h3>
+<p>The Google projection is a Mercator projection that pretends to be defined 
on the WGS84 datum,
+but actually ignores the ellipsoidal nature of that datum and uses the simpler 
spherical formulas instead.
+Since version 6.15 of EPSG geodetic dataset, the preferred way to get that 
projection is to invoke <code>CRS.forCode(&quot;EPSG:3857&quot;)</code>.
+Note that the use of that projection is <strong>not</strong> recommended, 
unless needed for compatibility with other data.</p>
+<p>The EPSG:3857 definition uses a map projection method named 
<em>&ldquo;Popular Visualisation Pseudo Mercator&rdquo;</em>.
+The EPSG geodetic dataset provides also some other map projections that use 
spherical formulas.
+Those methods have &ldquo;(Spherical)&rdquo; in their name, for example 
<em>&ldquo;Mercator (Spherical)&rdquo;</em>,
+and differs from <em>&ldquo;Popular Visualisation Pseudo Mercator&rdquo;</em> 
by the use of a more appropriate sphere radius.
+Those projection methods can be used in Well Known Text (WKT) definitions.</p>
+<p>If there is a need to use spherical formulas with a projection that does 
not have a spherical counterpart,
+this can be done with explicit declarations of 
<code>&quot;semi_major&quot;</code> and <code>&quot;semi_minor&quot;</code> 
parameter values in the <abbr title="Well Known Text">WKT</abbr> definition.
+Those parameter values are usually inferred from the datum, but Apache <abbr 
title="Spatial Information System">SIS</abbr> allows explicit declarations to 
override the inferred values.
+This hack is provided for making possible to use data that ignore the 
ellipsoid flattening factor
+(which are unfortunately not uncommon), but it should be used in last resort 
only.</p>
 <h3 id="axisOrder">What is the axis order issue and how is it addressed?   
</h3>
 <p>The axis order is specified by the authority (typically a national agency) 
defining the Coordinate Reference System (CRS).
 The order depends on the <abbr title="Coordinate Reference System">CRS</abbr> 
type and the country defining the <abbr title="Coordinate Reference 
System">CRS</abbr>.
@@ -226,75 +220,6 @@ but allows changing axis order to the (<em>x</em>, 
<em>y</em>) order after <abbr
 This change can be done with the following code:</p>
 <div class="highlight"><pre tabindex="0" class="chroma"><code 
class="language-java" data-lang="java"><span class="line"><span 
class="cl"><span class="n">CoordinateReferenceSystem</span> <span 
class="n">crs</span> <span class="o">=</span> <span class="o">...;</span> <span 
class="c1">// CRS obtained by any means.
 </span></span></span><span class="line"><span class="cl"><span 
class="c1"></span><span class="n">crs</span> <span class="o">=</span> <span 
class="n">AbstractCRS</span><span class="o">.</span><span 
class="na">castOrCopy</span><span class="o">(</span><span 
class="n">crs</span><span class="o">).</span><span 
class="na">forConvention</span><span class="o">(</span><span 
class="n">AxesConvention</span><span class="o">.</span><span 
class="na">RIGHT_HANDED</span><span class="o">)</span></span></s [...]
-<h2 id="crs">Coordinate Reference Systems   </h2>
-<h3 id="UTM">How do I instantiate a Universal Transverse Mercator (UTM) 
projection?   </h3>
-<p>If the UTM zone is unknown, an easy way is to invoke the 
<code>universal(…)</code> method on one of the <code>CommonCRS</code> 
predefined constants.
-That method receives in argument a geographic coordinate in 
(<em>latitude</em>, <em>longitude</em>) order and computes the UTM zone from it.
-See the <a href="#transform-point">above Java code example</a>.</p>
-<p>If the UTM zone is know, one way is to use the &ldquo;EPSG&rdquo; or 
&ldquo;AUTO&rdquo; authority factory.
-The EPSG code of some UTM projections can be determined as below, where 
<em>zone</em> is a number from 1 to 60 inclusive (unless otherwise 
specified):</p>
-<ul>
-<li>WGS 84 (northern hemisphere): 32600 + <em>zone</em></li>
-<li>WGS 84 (southern hemisphere): 32700 + <em>zone</em></li>
-<li>WGS 72 (northern hemisphere): 32200 + <em>zone</em></li>
-<li>WGS 72 (southern hemisphere): 32300 + <em>zone</em></li>
-<li>NAD 83 (northern hemisphere): 26900 + <em>zone</em> (zone 1 to 23 
only)</li>
-<li>NAD 27 (northern hemisphere): 26700 + <em>zone</em> (zone 1 to 22 
only)</li>
-</ul>
-<p>Note that the above list is incomplete. See the EPSG database for 
additional UTM definitions
-(WGS 72BE, SIRGAS 2000, SIRGAS 1995, SAD 69, ETRS 89, <em>etc.</em>, most of 
them defined only for a few zones).
-Once the EPSG code of the UTM projection has been determined, the <abbr 
title="Coordinate Reference System">CRS</abbr> can be obtained as in the 
example below:</p>
-<div class="highlight"><pre tabindex="0" class="chroma"><code 
class="language-java" data-lang="java"><span class="line"><span 
class="cl"><span class="kt">int</span> <span class="n">code</span> <span 
class="o">=</span> <span class="n">32600</span> <span class="o">+</span> <span 
class="n">zone</span><span class="o">;</span>    <span class="c1">// For WGS84 
northern hemisphere
-</span></span></span><span class="line"><span class="cl"><span 
class="c1"></span><span class="n">CoordinateReferenceSystem</span> <span 
class="n">crs</span> <span class="o">=</span> <span class="n">CRS</span><span 
class="o">.</span><span class="na">forCode</span><span class="o">(</span><span 
class="s">&#34;EPSG:&#34;</span> <span class="o">+</span> <span 
class="n">code</span><span class="o">);</span></span></span></code></pre></div>
-<h3 id="google">How do I instantiate a Google projection?   </h3>
-<p>The Google projection is a Mercator projection that pretends to be defined 
on the WGS84 datum,
-but actually ignores the ellipsoidal nature of that datum and uses the simpler 
spherical formulas instead.
-Since version 6.15 of EPSG geodetic dataset, the preferred way to get that 
projection is to invoke <code>CRS.forCode(&quot;EPSG:3857&quot;)</code>.
-Note that the use of that projection is <strong>not</strong> recommended, 
unless needed for compatibility with other data.</p>
-<p>The EPSG:3857 definition uses a map projection method named 
<em>&ldquo;Popular Visualisation Pseudo Mercator&rdquo;</em>.
-The EPSG geodetic dataset provides also some other map projections that use 
spherical formulas.
-Those methods have &ldquo;(Spherical)&rdquo; in their name, for example 
<em>&ldquo;Mercator (Spherical)&rdquo;</em>
-(which differs from <em>&ldquo;Popular Visualisation Pseudo 
Mercator&rdquo;</em> by the use of a more appropriate sphere radius).
-Those projection methods can be used in Well Known Text (WKT) definitions.</p>
-<p>If there is a need to use spherical formulas with a projection that does 
not have a &ldquo;(Spherical)&rdquo; counterpart,
-this can be done with explicit declarations of 
<code>&quot;semi_major&quot;</code> and <code>&quot;semi_minor&quot;</code> 
parameter values in the <abbr title="Well Known Text">WKT</abbr> definition.
-Those parameter values are usually inferred from the datum, but Apache <abbr 
title="Spatial Information System">SIS</abbr> allows explicit declarations to 
override the inferred values.</p>
-<h3 id="projectionKind">How can I identify the projection kind of a CRS?   
</h3>
-<p>The &ldquo;kind of projection&rdquo; (Mercator, Lambert Conformal, 
<em>etc.</em>) is called <em>Operation Method</em> in <abbr 
title="International Organization for Standardization">ISO</abbr> 19111 
terminology.
-One approach is to check the value of <code>OperationMethod.getName()</code> 
and compare them against the <abbr title="Open Geospatial 
Consortium">OGC</abbr> or EPSG names
-listed in the <a href="tables/CoordinateOperationMethods.html">Coordinate 
Operation Methods</a> page.</p>
-<h3 id="lookupEPSG">How do I get the EPSG code of an existing CRS?   </h3>
-<p>The <em>identifier</em> of a Coordinate Reference System (CRS) object can 
be obtained by the <code>getIdentifiers()</code> method,
-which usually return a collection of zero or one element.
-If the <abbr title="Coordinate Reference System">CRS</abbr> has been created 
from a Well Known Text (WKT) parsing
-and the <abbr title="Well Known Text">WKT</abbr> ends with an 
<code>AUTHORITY[&quot;EPSG&quot;, &quot;xxxx&quot;]</code> (<abbr title="Well 
Known Text">WKT</abbr> version 1)
-or <code>ID[&quot;EPSG&quot;, xxxx]</code> (<abbr title="Well Known 
Text">WKT</abbr> version 2) element,
-then the identifier (an EPSG numerical code in this example) is the 
<em>xxxx</em> value in that element.
-If the <abbr title="Coordinate Reference System">CRS</abbr> has been created 
from the EPSG geodetic dataset (for example by a call to 
<code>CRS.forCode(&quot;EPSG:xxxx&quot;)</code>),
-then the identifier is the <em>xxxx</em> code given to that method.
-If the <abbr title="Coordinate Reference System">CRS</abbr> has been created 
in another way, then the collection returned by the 
<code>getIdentifiers()</code> method
-may or may not be empty depending if the program that created the <abbr 
title="Coordinate Reference System">CRS</abbr> took the responsibility of 
providing identifiers.</p>
-<p>If the collection of identifiers is empty, the most effective fix is to 
make sure that the <abbr title="Well Known Text">WKT</abbr>
-contains an <code>AUTHORITY</code> or <code>ID</code> element (assuming that 
the <abbr title="Coordinate Reference System">CRS</abbr> was parsed from a 
<abbr title="Well Known Text">WKT</abbr>).
-If this is not possible, then the 
<code>org.apache.sis.referencing.IdentifiedObjects</code> class contains some 
convenience methods which may help.
-In the following example, the call to <code>lookupEPSG(…)</code> will scan the 
EPSG database for a <abbr title="Coordinate Reference System">CRS</abbr> equals
-(ignoring metadata) to the given one. <em>Note that this scan is sensitive to 
axis order.</em>
-Most geographic <abbr title="Coordinate Reference System">CRS</abbr> in the 
EPSG database are declared with (<em>latitude</em>, <em>longitude</em>) axis 
order.
-Consequently if the given <abbr title="Coordinate Reference System">CRS</abbr> 
has (<em>longitude</em>, <em>latitude</em>) axis order, then the scan is likely 
to find no match.</p>
-<div class="highlight"><pre tabindex="0" class="chroma"><code 
class="language-java" data-lang="java"><span class="line"><span 
class="cl"><span class="n">CoordinateReferenceSystem</span> <span 
class="n">myCRS</span> <span class="o">=</span> <span class="o">...;</span>
-</span></span><span class="line"><span class="cl"><span 
class="n">Integer</span> <span class="n">identifier</span> <span 
class="o">=</span> <span class="n">IdentifiedObjects</span><span 
class="o">.</span><span class="na">lookupEPSG</span><span 
class="o">(</span><span class="n">myCRS</span><span class="o">);</span>
-</span></span><span class="line"><span class="cl"><span class="k">if</span> 
<span class="o">(</span><span class="n">identifier</span> <span 
class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span 
class="o">{</span>
-</span></span><span class="line"><span class="cl">    <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;The EPSG code has been found: &#34;</span> <span 
class="o">+</span> <span class="n">identifier</span><span class="o">);</span>
-</span></span><span class="line"><span class="cl"><span 
class="o">}</span></span></span></code></pre></div>
-<h3 id="lookupURN">How do I get the &ldquo;urn:ogc:def:crs:…&rdquo; URN of an 
existing CRS?   </h3>
-<p><abbr title="Open Geospatial Consortium">OGC</abbr> defines URN for <abbr 
title="Coordinate Reference System">CRS</abbr> identifiers, for example 
<code>&quot;urn:​ogc:​def:​crs:​epsg:​7.1:​4326&quot;</code>
-where <code>&quot;7.1&quot;</code> is the version of the EPSG database used.
-URN may or may not be present in the set of identifiers returned by 
<code>crs.getIdentifiers()</code>.
-In many cases (especially if the <abbr title="Coordinate Reference 
System">CRS</abbr> was parsed from a Well Known Text), only simple identifiers 
like <code>&quot;EPSG:​4326&quot;</code> are provided.
-An easy way to build the full URN is to use the code below.
-That example may scan the EPSG database for finding the information if it was 
not explicitly provided in the given <abbr title="Coordinate Reference 
System">CRS</abbr>.</p>
-<div class="highlight"><pre tabindex="0" class="chroma"><code 
class="language-java" data-lang="java"><span class="line"><span 
class="cl"><span class="n">CoordinateReferenceSystem</span> <span 
class="n">myCRS</span> <span class="o">=</span> <span class="o">...;</span>
-</span></span><span class="line"><span class="cl"><span 
class="n">String</span> <span class="n">urn</span> <span class="o">=</span> 
<span class="n">IdentifiedObjects</span><span class="o">.</span><span 
class="na">lookupURN</span><span class="o">(</span><span 
class="n">myCRS</span><span class="o">);</span></span></span></code></pre></div>
 <h3 id="lookupReliability">Is IdentifiedObjects.lookupEPSG(…) a reliable 
inverse of CRS.forCode(…)?  </h3>
 <p>For <abbr title="Coordinate Reference System">CRS</abbr> created from the 
EPSG geodetic dataset, usually yes.
 Note however that <code>IdentifiedObjects.getIdentifier(…)</code> is cheaper 
and insensitive to the details of <abbr title="Coordinate Reference 
System">CRS</abbr> definition,
@@ -304,10 +229,6 @@ The <code>lookupEPSG(…)</code> method on the other hand is 
robust to erroneous
 since it always compares the <abbr title="Coordinate Reference 
System">CRS</abbr> with the database content.
 But it may fail if there is slight mismatch (for example rounding errors in 
projection parameters)
 between the supplied <abbr title="Coordinate Reference System">CRS</abbr> and 
the <abbr title="Coordinate Reference System">CRS</abbr> found in the 
database.</p>
-<h3 id="equalsIgnoreMetadata">How can I determine if two CRS are 
&ldquo;functionally&rdquo; equal?   </h3>
-<p>Two Coordinate Reference Systems may not be considered equal if they are 
associated to different metadata
-(name, identifiers, scope, domain of validity, remarks), even though they 
represent the same logical <abbr title="Coordinate Reference System">CRS</abbr>.
-In order to test if two <abbr title="Coordinate Reference System">CRS</abbr> 
are functionally equivalent, use 
<code>Utilities​.equals­Ignore­Metadata(myFirstCRS, mySecondCRS)</code>.</p>
 <h3 id="crsHashCode">Are CRS objects safe for use as keys in HashMap?   </h3>
 <p>Yes, every classes defined in the 
<code>org.apache.sis.referencing.crs</code>, <code>cs</code> and 
<code>datum</code> packages
 define properly their <code>equals(Object)</code> and <code>hashCode()</code> 
methods.
diff --git a/howto.html b/howto.html
index e86dfc1b..4fb233c1 100644
--- a/howto.html
+++ b/howto.html
@@ -105,8 +105,23 @@
         <img src="./images/logo.png" class="sis-logo" align="left"/>
         <p class="page-title">How to</p>
 
-  <p>Java code examples for performing some tasks with Apache <abbr 
title="Spatial Information System">SIS</abbr>.</p>
-<h1 id="rasters">Rasters</h1>
+  <p>Java code examples for performing some tasks with Apache <abbr 
title="Spatial Information System">SIS</abbr>.
+The examples are grouped in the following sections:</p>
+<nav id="TableOfContents">
+  <ul>
+    <li><a href="#referencing">Referencing by coordinates   </a></li>
+    <li><a href="#raster">Grid coverages (rasters)   </a></li>
+  </ul>
+</nav>
+<h1 id="referencing">Referencing by coordinates   </h1>
+<ul>
+<li><a href="howto/instantiate_utm_projection.html">Instantiate a Universal 
Transverse Mercator (UTM) projection</a></li>
+<li><a href="faq.html#google">Instantiate a Pseudo Mercator (a.k.a. Google) 
projection</a></li>
+<li><a href="howto/transform_coordinates.html">Transform coordinates between 
two reference systems</a></li>
+<li><a href="howto/lookup_crs_urn.html">Get the EPSG code or URN of an 
existing <abbr title="Coordinate Reference System">CRS</abbr></a></li>
+<li><a href="howto/crs_equality.html">Determine if two <abbr title="Coordinate 
Reference System">CRS</abbr> are functionally equal</a></li>
+</ul>
+<h1 id="raster">Grid coverages (rasters)   </h1>
 <ul>
 <li><a href="howto/raster_values_at_geographic_coordinates.html">Get raster 
values at geographic coordinates</a></li>
 <li><a href="howto/rasters_bigger_than_memory.html">Handle rasters bigger than 
memory</a></li>
diff --git a/howto/crs_equality.html b/howto/crs_equality.html
new file mode 100644
index 00000000..297302d0
--- /dev/null
+++ b/howto/crs_equality.html
@@ -0,0 +1,194 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+
+
+  <title>Apache SIS - Determine if two CRS are functionally equal</title>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <link 
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css";
+        rel="stylesheet" 
integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU"
 crossorigin="anonymous">
+  <link rel="stylesheet" type="text/css" media="screen" href="../syntax.css">
+  <link rel="stylesheet" type="text/css" media="screen" href="../sis.css">
+</head>
+
+<body>
+
+<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
+  <div class="container-fluid">
+    <a class="navbar-brand" href="../index.html"> Apache SIS™</a>
+    <ul class="navbar-nav me-auto mb-2 mb-md-0">
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuAbout" 
data-bs-toggle="dropdown" aria-expanded="false">About</a>
+        <ul class="dropdown-menu" aria-labelledby="menuAbout">
+          <li><a class="dropdown-item" 
href="http://www.apache.org/licenses/";>License</a></li>
+          <li><a class="dropdown-item" href="../mail-lists.html">Mailing 
Lists</a></li>
+          <li><a class="dropdown-item" href="../team-list.html">Project 
Team</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuDownload" 
data-bs-toggle="dropdown" aria-expanded="false">Download</a>
+        <ul class="dropdown-menu" aria-labelledby="menuDownload">
+          <li><a class="dropdown-item" 
href="../downloads.html">Downloads</a></li>
+          <li><a class="dropdown-item" href="../source.html">Checkout 
Sources</a></li>
+          <li><a class="dropdown-item" href="../build.html">Build from 
Sources</a></li>
+          <li><a class="dropdown-item" href="../epsg.html">EPSG 
Database</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuDocumentation" 
data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+        <ul class="dropdown-menu" aria-labelledby="menuDocumentation">
+          <li><a class="dropdown-item" href="../apidocs/index.html">Online 
Javadoc</a></li>
+          <li><a class="dropdown-item" 
href="../book/en/developer-guide.html">Developer Guide</a></li>
+          <li><a class="dropdown-item" href="../howto.html">How to…</a></li>
+          <li><a class="dropdown-item" href="../formats.html">Supported 
formats</a></li>
+          <li><a class="dropdown-item" 
href="../tables/CoordinateReferenceSystems.html">Supported CRS</a></li>
+          <li><a class="dropdown-item" 
href="../tables/CoordinateOperationMethods.html">Map Projections</a></li>
+          <li><a class="dropdown-item" href="../code-patterns.html">Code 
Patterns</a></li>
+          <li><a class="dropdown-item" href="../faq.html">FAQ</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuContribute" 
data-bs-toggle="dropdown" aria-expanded="false">Contribute</a>
+        <ul class="dropdown-menu" aria-labelledby="menuContribute">
+          <li><a class="dropdown-item" href="../contributor.html">New 
Contributor</a></li>
+          <li><a class="dropdown-item" 
href="../coding-conventions.html">Coding Conventions</a></li>
+          <li><a class="dropdown-item" href="../mail-lists.html">Mailing 
Lists</a></li>
+          <li><a class="dropdown-item" 
href="https://issues.apache.org/jira/browse/SIS";>Issue Tracker</a></li>
+          <li><a class="dropdown-item" 
href="https://github.com/apache/sis";>GitHub mirror</a></li>
+          <li><a class="dropdown-item" 
href="https://cwiki.apache.org/confluence/display/SIS";>Wiki</a></li>
+          <li><hr class="dropdown-divider"></li>
+          <li><a class="dropdown-item" 
href="../release-management.html">Release management</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuASF" 
data-bs-toggle="dropdown" aria-expanded="false">The Foundation</a>
+        <ul class="dropdown-menu" aria-labelledby="menuASF">
+          <li><a class="dropdown-item" href="http://www.apache.org";>The 
Foundation</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/foundation/sponsorship.html";>Donate</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/security/";>Security</a></li>
+        </ul>
+      </li>
+    </ul>
+    <ul class="navbar-nav ml-auto mb-2 mb-md-0">
+      <li class="nav-item">
+        <a href="https://www.apache.org/events/current-event.html";>
+           <img class="apache-con" 
src="https://www.apache.org/events/current-event-234x60.png"; alt="ApacheCon"/>
+        </a>
+      </li>
+    </ul>
+  </div>
+</nav>
+
+
+<div class="row flex-nowrap">
+  <div class="d-flex flex-column flex-shrink-0 p-3 text-white bg-dark" 
style="width:13rem; min-height:40rem">
+    <ul class="nav nav-pills flex-column mb-auto position-fixed">
+      <li><a class="nav-link  text-white " href="../index.html">Home</a></li>
+      <li><a class="nav-link text-white" 
href="http://www.apache.org/licenses/";>License</a></li>
+      <li><a class="nav-link  text-white " 
href="../downloads.html">Downloads</a></li>
+      <li><a class="nav-link  active " href="../howto.html">How to…</a></li>
+      <li><a class="nav-link  text-white " 
href="../standards.html">Standards</a></li>
+      <li><a class="nav-link  text-white " href="../formats.html">Data 
formats</a></li>
+      <li><a class="nav-link  text-white " href="../epsg.html">EPSG 
Database</a></li>
+      <li><a class="nav-link  text-white " href="../javafx.html">Application 
(demo)</a></li>
+      <li><a class="nav-link text-white" href="../apidocs/index.html">Online 
Javadoc</a></li>
+      <li><a class="nav-link text-white" 
href="../book/en/developer-guide.html">Developer Guide</a></li>
+      <li><a class="nav-link  text-white " href="../code-patterns.html">Code 
patterns</a></li>
+      <li><a class="nav-link  text-white " href="../faq.html">FAQ</a></li>
+    </ul>
+  </div>
+  <div class="col">
+    <main class="container">
+      <article>
+        <img src="../images/logo.png" class="sis-logo" align="left"/>
+        <p class="page-title">Determine if two CRS are functionally equal</p>
+
+  <p>Two Coordinate Reference Systems may not be considered equal if they are 
associated to different metadata
+(name, identifiers, scope, domain of validity, remarks), even though they 
represent the same logical <abbr title="Coordinate Reference System">CRS</abbr>.
+In order to test if two <abbr title="Coordinate Reference System">CRS</abbr> 
are functionally equivalent,
+<code>Utilities​.equals­Ignore­Metadata(myFirstCRS, mySecondCRS)</code> can be 
used.</p>
+<p>In some cases, <code>equals­Ignore­Metadata(…)</code> may fail to see that 
two reference systems are equal.
+It may happen for example when two map projections are defined with different 
parameters,
+but are mathematically equivalent.
+A more reliable but more costly way to check if two <abbr title="Coordinate 
Reference System">CRS</abbr> are functionally equivalent
+is to request the coordinate operation between them, and check if that 
operation is identity.</p>
+<h1 id="direct-dependencies">Direct dependencies</h1>
+<table>
+<thead>
+<tr>
+<th>Maven coordinates</th>
+<th>Module info</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>org.apache.sis.storage:sis-referencing</code></td>
+<td><code>org.apache.sis.referencing</code></td>
+</tr>
+</tbody>
+</table>
+<h1 id="code-example">Code example</h1>
+<div class="highlight"><pre tabindex="0" class="chroma"><code 
class="language-java" data-lang="java"><span class="line"><span 
class="cl"><span class="kn">import</span> <span 
class="nn">org.opengis.referencing.crs.CoordinateReferenceSystem</span><span 
class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.opengis.util.FactoryException</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.referencing.CRS</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.referencing.CommonCRS</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.util.Utilities</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span 
class="kd">public</span> <span class="kd">class</span> <span 
class="nc">CrsEquality</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl">    <span class="cm">/**
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* Demo entry point.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
*
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* @param  args  ignored.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* @throws FactoryException if an error occurred while creating the CRS
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
*         or searching for a coordinate operation.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
*/</span>
+</span></span><span class="line"><span class="cl">    <span 
class="kd">public</span> <span class="kd">static</span> <span 
class="kt">void</span> <span class="nf">main</span><span 
class="o">(</span><span class="n">String</span><span class="o">[]</span> <span 
class="n">args</span><span class="o">)</span> <span class="kd">throws</span> 
<span class="n">FactoryException</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl">        <span 
class="n">CoordinateReferenceSystem</span> <span class="n">crs1</span> <span 
class="o">=</span> <span class="n">CommonCRS</span><span 
class="o">.</span><span class="na">WGS84</span><span class="o">.</span><span 
class="na">geographic</span><span class="o">();</span>
+</span></span><span class="line"><span class="cl">        <span 
class="n">CoordinateReferenceSystem</span> <span class="n">crs2</span> <span 
class="o">=</span> <span class="n">CRS</span><span class="o">.</span><span 
class="na">fromWKT</span><span class="o">(</span>
+</span></span><span class="line"><span class="cl">        <span 
class="s">&#34;&#34;&#34;
+</span></span></span><span class="line"><span class="cl"><span class="s">      
  GeodeticCRS[&#34;</span><span class="n">WGS84</span> <span 
class="n">with</span> <span class="n">a</span> <span class="n">different</span> 
<span class="n">name</span><span class="s">&#34;,
+</span></span></span><span class="line"><span class="cl"><span class="s">      
    Datum[&#34;</span><span class="n">World</span> <span 
class="n">Geodetic</span> <span class="n">System</span> <span 
class="n">1984</span><span class="s">&#34;,
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      Ellipsoid[&#34;</span><span class="n">A</span> <span 
class="n">different</span> <span class="n">name</span><span class="s">&#34;, 
6378137.0, 298.257223563]],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
    CS[ellipsoidal, 2],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      Axis[&#34;</span><span class="n">Latitude</span> <span 
class="o">(</span><span class="n">B</span><span class="o">)</span><span 
class="s">&#34;, north],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      Axis[&#34;</span><span class="n">Longitude</span> <span 
class="o">(</span><span class="n">L</span><span class="o">)</span><span 
class="s">&#34;, east],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      Unit[&#34;</span><span class="n">degree</span><span class="s">&#34;, 
0.017453292519943295]]
+</span></span></span><span class="line"><span class="cl"><span class="s">      
  &#34;&#34;&#34;</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;equals: &#34;</span>
+</span></span><span class="line"><span class="cl">                <span 
class="o">+</span> <span class="n">crs1</span><span class="o">.</span><span 
class="na">equals</span><span class="o">(</span><span 
class="n">crs2</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;equalsIgnoreMetadata: &#34;</span>
+</span></span><span class="line"><span class="cl">                <span 
class="o">+</span> <span class="n">Utilities</span><span 
class="o">.</span><span class="na">equalsIgnoreMetadata</span><span 
class="o">(</span><span class="n">crs1</span><span class="o">,</span> <span 
class="n">crs2</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;Identity transform: &#34;</span>
+</span></span><span class="line"><span class="cl">                <span 
class="o">+</span> <span class="n">CRS</span><span class="o">.</span><span 
class="na">findOperation</span><span class="o">(</span><span 
class="n">crs2</span><span class="o">,</span> <span class="n">crs2</span><span 
class="o">,</span> <span class="kc">null</span><span class="o">).</span><span 
class="na">getMathTransform</span><span class="o">().</span><span 
class="na">isIdentity</span><span class="o">());</span>
+</span></span><span class="line"><span class="cl">    <span class="o">}</span>
+</span></span><span class="line"><span class="cl"><span 
class="o">}</span></span></span></code></pre></div>
+<h1 id="output">Output</h1>
+<pre tabindex="0"><code>equals: false
+equalsIgnoreMetadata: true
+Identity transform: true
+</code></pre>
+
+      </article>
+    </main>
+    <footer class="footer">
+    <div class="container">
+      <p>
+        Copyright &copy; 2013-2023 The Apache Software Foundation, Licensed 
under the
+        <a href="http://www.apache.org/licenses/LICENSE-2.0";>Apache License, 
Version 2.0</a>.<br/>
+        Apache SIS, Apache, the Apache feather logo are trademarks of The 
Apache Software Foundation.
+      </p>
+    </div>
+</footer>
+  </div>
+</div>
+
+<script 
src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js";
+    
integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ"
 crossorigin="anonymous"></script>
+
+</body>
+</html>
diff --git a/howto/index.xml b/howto/index.xml
index f0c6f341..4eb4e7e9 100644
--- a/howto/index.xml
+++ b/howto/index.xml
@@ -6,6 +6,16 @@
     <description>Recent content in How to on Apache SIS</description>
     <generator>Hugo -- gohugo.io</generator>
     <language>en</language><atom:link 
href="https://sis.apache.org/howto/index.xml"; rel="self" 
type="application/rss+xml" />
+    <item>
+      <title>Determine if two CRS are functionally equal</title>
+      <link>https://sis.apache.org/howto/crs_equality.html</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+      <guid>https://sis.apache.org/howto/crs_equality.html</guid>
+      <description>Two Coordinate Reference Systems may not be considered 
equal if they are associated to different metadata (name, identifiers, scope, 
domain of validity, remarks), even though they represent the same logical CRS. 
In order to test if two CRS are functionally equivalent, 
Utilities​.equals­Ignore­Metadata(myFirstCRS, mySecondCRS) can be used.
+In some cases, equals­Ignore­Metadata(…) may fail to see that two reference 
systems are equal. It may happen for example when two map projections are 
defined with different parameters, but are mathematically 
equivalent.</description>
+    </item>
+
     <item>
       <title>Get raster values at geographic coordinates</title>
       
<link>https://sis.apache.org/howto/raster_values_at_geographic_coordinates.html</link>
@@ -16,6 +26,15 @@
 This example uses data in netCDF format. A netCDF file can contain an 
arbitrary amount of variables.</description>
     </item>
 
+    <item>
+      <title>Get the EPSG code or URN of an existing CRS</title>
+      <link>https://sis.apache.org/howto/lookup_crs_urn.html</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+      <guid>https://sis.apache.org/howto/lookup_crs_urn.html</guid>
+      <description>The identifier of a Coordinate Reference System (CRS) 
object can be obtained by the getIdentifiers() method, which usually return a 
collection of zero or one element. If the CRS has been created from a Well 
Known Text (WKT) parsing and the WKT ends with an 
AUTHORITY[&amp;quot;EPSG&amp;quot;, &amp;quot;xxxx&amp;quot;] (WKT version 1) 
or ID[&amp;quot;EPSG&amp;quot;, xxxx] (WKT version 2) element, then the 
identifier (an EPSG numerical code in this example) is the xxxx va [...]
+    </item>
+
     <item>
       <title>Handle rasters bigger than memory</title>
       <link>https://sis.apache.org/howto/rasters_bigger_than_memory.html</link>
@@ -25,6 +44,16 @@ This example uses data in netCDF format. A netCDF file can 
contain an arbitrary
       <description>This example opens a big GeoTIFF file without reading the 
tiles immediately. Instead, tiles will be read only when requested by a call to 
the Java2D RenderedImage.getTile(int, int) method. Loaded tiles are cached by 
soft references, i.e. they may be discarted and reloaded when needed again. 
This approach allows processing of raster data larger than memory, provided 
that the application does not request all tiles at once. It integrates well 
with operations provided by A [...]
     </item>
 
+    <item>
+      <title>Instantiate a UTM projection</title>
+      <link>https://sis.apache.org/howto/instantiate_utm_projection.html</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+      <guid>https://sis.apache.org/howto/instantiate_utm_projection.html</guid>
+      <description>The Universal Transverse Mercator (UTM) projection divides 
the world in 60 zones. If the UTM zone is unknown, an easy way to instantiate 
the projection is to invoke the universal(…) method on one of the CommonCRS 
predefined constants. That method receives in argument a geographic coordinate 
in (latitude, longitude) order and computes the UTM zone from it. It takes in 
account the special cases of Norway and Svalbard.
+An alternative, more standard, way using geographic coordinates is to format 
an &amp;ldquo;AUTO&amp;rdquo; authority code.</description>
+    </item>
+
     <item>
       <title>Resample a raster and write to a file</title>
       <link>https://sis.apache.org/howto/resample_and_save_raster.html</link>
@@ -35,5 +64,15 @@ This example uses data in netCDF format. A netCDF file can 
contain an arbitrary
 Direct dependencies    Maven coordinates Module info Remarks     
org.apache.sis.storage:sis-geotiff org.apache.sis.storage.geotiff    
org.apache.sis.non-free:sis-embedded-data org.apache.sis.referencing.database 
Non-Apache license.    The EPSG dependency is necessary for this example 
because a Coordinate Reference System (CRS) is instantiated from its EPSG 
code.</description>
     </item>
 
+    <item>
+      <title>Transform coordinates</title>
+      <link>https://sis.apache.org/howto/transform_coordinates.html</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+      <guid>https://sis.apache.org/howto/transform_coordinates.html</guid>
+      <description>The following Java code projects geographic coordinates 
from the World Geodetic System 1984 (WGS84) to WGS 84 / UTM zone 33N. In order 
to make the example a little bit simpler, this code uses predefined constants 
given by the CommonCRS convenience class. But more advanced applications may 
use EPSG codes or definitions in Well-Known Text (WKT) instead.
+Note: if the result of a coordinate transformation seems wrong, see the FAQ 
page.</description>
+    </item>
+
   </channel>
 </rss>
diff --git a/howto/instantiate_UTM_projection.html 
b/howto/instantiate_UTM_projection.html
new file mode 100644
index 00000000..3cf1e732
--- /dev/null
+++ b/howto/instantiate_UTM_projection.html
@@ -0,0 +1,215 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+
+
+  <title>Apache SIS - Instantiate a UTM projection</title>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <link 
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css";
+        rel="stylesheet" 
integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU"
 crossorigin="anonymous">
+  <link rel="stylesheet" type="text/css" media="screen" href="../syntax.css">
+  <link rel="stylesheet" type="text/css" media="screen" href="../sis.css">
+</head>
+
+<body>
+
+<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
+  <div class="container-fluid">
+    <a class="navbar-brand" href="../index.html"> Apache SIS™</a>
+    <ul class="navbar-nav me-auto mb-2 mb-md-0">
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuAbout" 
data-bs-toggle="dropdown" aria-expanded="false">About</a>
+        <ul class="dropdown-menu" aria-labelledby="menuAbout">
+          <li><a class="dropdown-item" 
href="http://www.apache.org/licenses/";>License</a></li>
+          <li><a class="dropdown-item" href="../mail-lists.html">Mailing 
Lists</a></li>
+          <li><a class="dropdown-item" href="../team-list.html">Project 
Team</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuDownload" 
data-bs-toggle="dropdown" aria-expanded="false">Download</a>
+        <ul class="dropdown-menu" aria-labelledby="menuDownload">
+          <li><a class="dropdown-item" 
href="../downloads.html">Downloads</a></li>
+          <li><a class="dropdown-item" href="../source.html">Checkout 
Sources</a></li>
+          <li><a class="dropdown-item" href="../build.html">Build from 
Sources</a></li>
+          <li><a class="dropdown-item" href="../epsg.html">EPSG 
Database</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuDocumentation" 
data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+        <ul class="dropdown-menu" aria-labelledby="menuDocumentation">
+          <li><a class="dropdown-item" href="../apidocs/index.html">Online 
Javadoc</a></li>
+          <li><a class="dropdown-item" 
href="../book/en/developer-guide.html">Developer Guide</a></li>
+          <li><a class="dropdown-item" href="../howto.html">How to…</a></li>
+          <li><a class="dropdown-item" href="../formats.html">Supported 
formats</a></li>
+          <li><a class="dropdown-item" 
href="../tables/CoordinateReferenceSystems.html">Supported CRS</a></li>
+          <li><a class="dropdown-item" 
href="../tables/CoordinateOperationMethods.html">Map Projections</a></li>
+          <li><a class="dropdown-item" href="../code-patterns.html">Code 
Patterns</a></li>
+          <li><a class="dropdown-item" href="../faq.html">FAQ</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuContribute" 
data-bs-toggle="dropdown" aria-expanded="false">Contribute</a>
+        <ul class="dropdown-menu" aria-labelledby="menuContribute">
+          <li><a class="dropdown-item" href="../contributor.html">New 
Contributor</a></li>
+          <li><a class="dropdown-item" 
href="../coding-conventions.html">Coding Conventions</a></li>
+          <li><a class="dropdown-item" href="../mail-lists.html">Mailing 
Lists</a></li>
+          <li><a class="dropdown-item" 
href="https://issues.apache.org/jira/browse/SIS";>Issue Tracker</a></li>
+          <li><a class="dropdown-item" 
href="https://github.com/apache/sis";>GitHub mirror</a></li>
+          <li><a class="dropdown-item" 
href="https://cwiki.apache.org/confluence/display/SIS";>Wiki</a></li>
+          <li><hr class="dropdown-divider"></li>
+          <li><a class="dropdown-item" 
href="../release-management.html">Release management</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuASF" 
data-bs-toggle="dropdown" aria-expanded="false">The Foundation</a>
+        <ul class="dropdown-menu" aria-labelledby="menuASF">
+          <li><a class="dropdown-item" href="http://www.apache.org";>The 
Foundation</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/foundation/sponsorship.html";>Donate</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/security/";>Security</a></li>
+        </ul>
+      </li>
+    </ul>
+    <ul class="navbar-nav ml-auto mb-2 mb-md-0">
+      <li class="nav-item">
+        <a href="https://www.apache.org/events/current-event.html";>
+           <img class="apache-con" 
src="https://www.apache.org/events/current-event-234x60.png"; alt="ApacheCon"/>
+        </a>
+      </li>
+    </ul>
+  </div>
+</nav>
+
+
+<div class="row flex-nowrap">
+  <div class="d-flex flex-column flex-shrink-0 p-3 text-white bg-dark" 
style="width:13rem; min-height:40rem">
+    <ul class="nav nav-pills flex-column mb-auto position-fixed">
+      <li><a class="nav-link  text-white " href="../index.html">Home</a></li>
+      <li><a class="nav-link text-white" 
href="http://www.apache.org/licenses/";>License</a></li>
+      <li><a class="nav-link  text-white " 
href="../downloads.html">Downloads</a></li>
+      <li><a class="nav-link  active " href="../howto.html">How to…</a></li>
+      <li><a class="nav-link  text-white " 
href="../standards.html">Standards</a></li>
+      <li><a class="nav-link  text-white " href="../formats.html">Data 
formats</a></li>
+      <li><a class="nav-link  text-white " href="../epsg.html">EPSG 
Database</a></li>
+      <li><a class="nav-link  text-white " href="../javafx.html">Application 
(demo)</a></li>
+      <li><a class="nav-link text-white" href="../apidocs/index.html">Online 
Javadoc</a></li>
+      <li><a class="nav-link text-white" 
href="../book/en/developer-guide.html">Developer Guide</a></li>
+      <li><a class="nav-link  text-white " href="../code-patterns.html">Code 
patterns</a></li>
+      <li><a class="nav-link  text-white " href="../faq.html">FAQ</a></li>
+    </ul>
+  </div>
+  <div class="col">
+    <main class="container">
+      <article>
+        <img src="../images/logo.png" class="sis-logo" align="left"/>
+        <p class="page-title">Instantiate a UTM projection</p>
+
+  <p>The Universal Transverse Mercator (UTM) projection divides the world in 
60 zones.
+If the UTM zone is unknown, an easy way to instantiate the projection
+is to invoke the <code>universal(…)</code> method on one of the 
<code>CommonCRS</code> predefined constants.
+That method receives in argument a geographic coordinate in 
(<em>latitude</em>, <em>longitude</em>) order and computes the UTM zone from it.
+It takes in account the special cases of Norway and Svalbard.</p>
+<p>An alternative, more standard, way using geographic coordinates is to 
format an &ldquo;AUTO&rdquo; authority code.
+The syntax is 
<code>&quot;AUTO2:​42001,​1,​&lt;longitude&gt;,​&lt;latitude&gt;&quot;</code>.
+However this approach works only for the WGS84 datum.</p>
+<p>If the UTM zone is known, another way is to use the &ldquo;EPSG&rdquo; 
authority factory.
+The EPSG code of some UTM projections can be determined as below, where 
<em>zone</em> is a number from 1 to 60 inclusive (unless otherwise 
specified):</p>
+<ul>
+<li>WGS 84 (northern hemisphere): 32600 + <em>zone</em></li>
+<li>WGS 84 (southern hemisphere): 32700 + <em>zone</em></li>
+<li>WGS 72 (northern hemisphere): 32200 + <em>zone</em></li>
+<li>WGS 72 (southern hemisphere): 32300 + <em>zone</em></li>
+<li>NAD 83 (northern hemisphere): 26900 + <em>zone</em> (zone 1 to 23 
only)</li>
+<li>NAD 27 (northern hemisphere): 26700 + <em>zone</em> (zone 1 to 22 
only)</li>
+<li>See the EPSG dataset for additional UTM definitions
+(WGS 72BE, SIRGAS 2000, SIRGAS 1995, SAD 69, ETRS 89, <em>etc.</em>).</li>
+</ul>
+<p>The code example below instantiates the same <abbr title="Coordinate 
Reference System">CRS</abbr> using the three approaches.</p>
+<h1 id="direct-dependencies">Direct dependencies</h1>
+<table>
+<thead>
+<tr>
+<th>Maven coordinates</th>
+<th>Module info</th>
+<th>Remarks</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>org.apache.sis.storage:sis-referencing</code></td>
+<td><code>org.apache.sis.referencing</code></td>
+<td></td>
+</tr>
+<tr>
+<td><code>org.apache.sis.non-free:sis-embedded-data</code></td>
+<td><code>org.apache.sis.referencing.database</code></td>
+<td>Optional. Non-Apache license.</td>
+</tr>
+</tbody>
+</table>
+<p>The <a href="../epsg.html">EPSG dependency</a> is optional for examples 
using the <code>CommonCRS</code> enumeration
+or the &ldquo;AUTO&rdquo; authority, but is required for examples using the 
&ldquo;EPSG&rdquo; authority.</p>
+<h1 id="code-example">Code example</h1>
+<p>Note that all geographic coordinates below express latitude <em>before</em> 
longitude,
+except in &ldquo;AUTO2&rdquo; authority code.</p>
+<div class="highlight"><pre tabindex="0" class="chroma"><code 
class="language-java" data-lang="java"><span class="line"><span 
class="cl"><span class="kn">import</span> <span 
class="nn">org.opengis.referencing.crs.CoordinateReferenceSystem</span><span 
class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.opengis.util.FactoryException</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.referencing.CRS</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.referencing.CommonCRS</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.util.Utilities</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span 
class="kd">public</span> <span class="kd">class</span> <span 
class="nc">InstantiateUTM</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl">    <span class="cm">/**
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* Demo entry point.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
*
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* @param  args  ignored.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* @throws FactoryException if an error occurred while creating the Coordinate 
Reference System (CRS).
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
*/</span>
+</span></span><span class="line"><span class="cl">    <span 
class="kd">public</span> <span class="kd">static</span> <span 
class="kt">void</span> <span class="nf">main</span><span 
class="o">(</span><span class="n">String</span><span class="o">[]</span> <span 
class="n">args</span><span class="o">)</span> <span class="kd">throws</span> 
<span class="n">FactoryException</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl">        <span class="cm">/*
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    * Get UTM projection for whatever zone is valid for 40°N 14°E.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    */</span>
+</span></span><span class="line"><span class="cl">        <span 
class="kt">double</span> <span class="n">latitude</span>  <span 
class="o">=</span> <span class="n">40</span><span class="o">;</span>      <span 
class="c1">// Will determine the hemisphere.
+</span></span></span><span class="line"><span class="cl"><span 
class="c1"></span>        <span class="kt">double</span> <span 
class="n">longitude</span> <span class="o">=</span> <span 
class="n">14</span><span class="o">;</span>      <span class="c1">// Will 
determine the UTM zone.
+</span></span></span><span class="line"><span class="cl"><span 
class="c1"></span>        <span class="n">CoordinateReferenceSystem</span> 
<span class="n">crsFromPoint</span> <span class="o">=</span> <span 
class="n">CommonCRS</span><span class="o">.</span><span 
class="na">WGS84</span><span class="o">.</span><span 
class="na">universal</span><span class="o">(</span><span 
class="n">latitude</span><span class="o">,</span> <span 
class="n">longitude</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl">        <span 
class="n">CoordinateReferenceSystem</span> <span class="n">crsFromAUTO2</span> 
<span class="o">=</span> <span class="n">CRS</span><span 
class="o">.</span><span class="na">forCode</span><span class="o">(</span><span 
class="s">&#34;AUTO2:42001,1,&#34;</span> <span class="o">+</span> <span 
class="n">longitude</span> <span class="o">+</span> <span 
class="s">&#34;,&#34;</span> <span class="o">+</span> <span 
class="n">latitude</sp [...]
+</span></span><span class="line"><span class="cl">        <span class="cm">/*
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    * Get the UTM projection for a specific zone.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    */</span>
+</span></span><span class="line"><span class="cl">        <span 
class="kt">int</span> <span class="n">zone</span> <span class="o">=</span> 
<span class="n">33</span><span class="o">;</span>              <span 
class="c1">// UTM zone 33.
+</span></span></span><span class="line"><span class="cl"><span 
class="c1"></span>        <span class="kt">int</span> <span 
class="n">code</span> <span class="o">=</span> <span class="n">32600</span> 
<span class="o">+</span> <span class="n">zone</span><span class="o">;</span>    
<span class="c1">// For WGS84 northern hemisphere
+</span></span></span><span class="line"><span class="cl"><span 
class="c1"></span>        <span class="n">CoordinateReferenceSystem</span> 
<span class="n">crsFromCode</span> <span class="o">=</span> <span 
class="n">CRS</span><span class="o">.</span><span 
class="na">forCode</span><span class="o">(</span><span 
class="s">&#34;EPSG:&#34;</span> <span class="o">+</span> <span 
class="n">code</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl">        <span class="cm">/*
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    * Compare the results.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    */</span>
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;Are the CRS equivalent?&#34;</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;AUTO2: &#34;</span> <span class="o">+</span> <span 
class="n">Utilities</span><span class="o">.</span><span 
class="na">equalsIgnoreMetadata</span><span class="o">(</span><span 
class="n">crsFromPoint</span><span class="o">,</span> <span class="n">crsFromAU 
[...]
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;EPSG:  &#34;</span> <span class="o">+</span> <span 
class="n">Utilities</span><span class="o">.</span><span 
class="na">equalsIgnoreMetadata</span><span class="o">(</span><span 
class="n">crsFromPoint</span><span class="o">,</span> <span class="n">crsFromCo 
[...]
+</span></span><span class="line"><span class="cl">    <span class="o">}</span>
+</span></span><span class="line"><span class="cl"><span 
class="o">}</span></span></span></code></pre></div>
+<h1 id="output">Output</h1>
+<pre tabindex="0"><code>Are the CRS equivalent?
+AUTO2: true
+EPSG:  true
+</code></pre>
+
+      </article>
+    </main>
+    <footer class="footer">
+    <div class="container">
+      <p>
+        Copyright &copy; 2013-2023 The Apache Software Foundation, Licensed 
under the
+        <a href="http://www.apache.org/licenses/LICENSE-2.0";>Apache License, 
Version 2.0</a>.<br/>
+        Apache SIS, Apache, the Apache feather logo are trademarks of The 
Apache Software Foundation.
+      </p>
+    </div>
+</footer>
+  </div>
+</div>
+
+<script 
src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js";
+    
integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ"
 crossorigin="anonymous"></script>
+
+</body>
+</html>
diff --git a/howto/instantiate_utm_projection.html 
b/howto/instantiate_utm_projection.html
new file mode 100644
index 00000000..3cf1e732
--- /dev/null
+++ b/howto/instantiate_utm_projection.html
@@ -0,0 +1,215 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+
+
+  <title>Apache SIS - Instantiate a UTM projection</title>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <link 
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css";
+        rel="stylesheet" 
integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU"
 crossorigin="anonymous">
+  <link rel="stylesheet" type="text/css" media="screen" href="../syntax.css">
+  <link rel="stylesheet" type="text/css" media="screen" href="../sis.css">
+</head>
+
+<body>
+
+<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
+  <div class="container-fluid">
+    <a class="navbar-brand" href="../index.html"> Apache SIS™</a>
+    <ul class="navbar-nav me-auto mb-2 mb-md-0">
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuAbout" 
data-bs-toggle="dropdown" aria-expanded="false">About</a>
+        <ul class="dropdown-menu" aria-labelledby="menuAbout">
+          <li><a class="dropdown-item" 
href="http://www.apache.org/licenses/";>License</a></li>
+          <li><a class="dropdown-item" href="../mail-lists.html">Mailing 
Lists</a></li>
+          <li><a class="dropdown-item" href="../team-list.html">Project 
Team</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuDownload" 
data-bs-toggle="dropdown" aria-expanded="false">Download</a>
+        <ul class="dropdown-menu" aria-labelledby="menuDownload">
+          <li><a class="dropdown-item" 
href="../downloads.html">Downloads</a></li>
+          <li><a class="dropdown-item" href="../source.html">Checkout 
Sources</a></li>
+          <li><a class="dropdown-item" href="../build.html">Build from 
Sources</a></li>
+          <li><a class="dropdown-item" href="../epsg.html">EPSG 
Database</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuDocumentation" 
data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+        <ul class="dropdown-menu" aria-labelledby="menuDocumentation">
+          <li><a class="dropdown-item" href="../apidocs/index.html">Online 
Javadoc</a></li>
+          <li><a class="dropdown-item" 
href="../book/en/developer-guide.html">Developer Guide</a></li>
+          <li><a class="dropdown-item" href="../howto.html">How to…</a></li>
+          <li><a class="dropdown-item" href="../formats.html">Supported 
formats</a></li>
+          <li><a class="dropdown-item" 
href="../tables/CoordinateReferenceSystems.html">Supported CRS</a></li>
+          <li><a class="dropdown-item" 
href="../tables/CoordinateOperationMethods.html">Map Projections</a></li>
+          <li><a class="dropdown-item" href="../code-patterns.html">Code 
Patterns</a></li>
+          <li><a class="dropdown-item" href="../faq.html">FAQ</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuContribute" 
data-bs-toggle="dropdown" aria-expanded="false">Contribute</a>
+        <ul class="dropdown-menu" aria-labelledby="menuContribute">
+          <li><a class="dropdown-item" href="../contributor.html">New 
Contributor</a></li>
+          <li><a class="dropdown-item" 
href="../coding-conventions.html">Coding Conventions</a></li>
+          <li><a class="dropdown-item" href="../mail-lists.html">Mailing 
Lists</a></li>
+          <li><a class="dropdown-item" 
href="https://issues.apache.org/jira/browse/SIS";>Issue Tracker</a></li>
+          <li><a class="dropdown-item" 
href="https://github.com/apache/sis";>GitHub mirror</a></li>
+          <li><a class="dropdown-item" 
href="https://cwiki.apache.org/confluence/display/SIS";>Wiki</a></li>
+          <li><hr class="dropdown-divider"></li>
+          <li><a class="dropdown-item" 
href="../release-management.html">Release management</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuASF" 
data-bs-toggle="dropdown" aria-expanded="false">The Foundation</a>
+        <ul class="dropdown-menu" aria-labelledby="menuASF">
+          <li><a class="dropdown-item" href="http://www.apache.org";>The 
Foundation</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/foundation/sponsorship.html";>Donate</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/security/";>Security</a></li>
+        </ul>
+      </li>
+    </ul>
+    <ul class="navbar-nav ml-auto mb-2 mb-md-0">
+      <li class="nav-item">
+        <a href="https://www.apache.org/events/current-event.html";>
+           <img class="apache-con" 
src="https://www.apache.org/events/current-event-234x60.png"; alt="ApacheCon"/>
+        </a>
+      </li>
+    </ul>
+  </div>
+</nav>
+
+
+<div class="row flex-nowrap">
+  <div class="d-flex flex-column flex-shrink-0 p-3 text-white bg-dark" 
style="width:13rem; min-height:40rem">
+    <ul class="nav nav-pills flex-column mb-auto position-fixed">
+      <li><a class="nav-link  text-white " href="../index.html">Home</a></li>
+      <li><a class="nav-link text-white" 
href="http://www.apache.org/licenses/";>License</a></li>
+      <li><a class="nav-link  text-white " 
href="../downloads.html">Downloads</a></li>
+      <li><a class="nav-link  active " href="../howto.html">How to…</a></li>
+      <li><a class="nav-link  text-white " 
href="../standards.html">Standards</a></li>
+      <li><a class="nav-link  text-white " href="../formats.html">Data 
formats</a></li>
+      <li><a class="nav-link  text-white " href="../epsg.html">EPSG 
Database</a></li>
+      <li><a class="nav-link  text-white " href="../javafx.html">Application 
(demo)</a></li>
+      <li><a class="nav-link text-white" href="../apidocs/index.html">Online 
Javadoc</a></li>
+      <li><a class="nav-link text-white" 
href="../book/en/developer-guide.html">Developer Guide</a></li>
+      <li><a class="nav-link  text-white " href="../code-patterns.html">Code 
patterns</a></li>
+      <li><a class="nav-link  text-white " href="../faq.html">FAQ</a></li>
+    </ul>
+  </div>
+  <div class="col">
+    <main class="container">
+      <article>
+        <img src="../images/logo.png" class="sis-logo" align="left"/>
+        <p class="page-title">Instantiate a UTM projection</p>
+
+  <p>The Universal Transverse Mercator (UTM) projection divides the world in 
60 zones.
+If the UTM zone is unknown, an easy way to instantiate the projection
+is to invoke the <code>universal(…)</code> method on one of the 
<code>CommonCRS</code> predefined constants.
+That method receives in argument a geographic coordinate in 
(<em>latitude</em>, <em>longitude</em>) order and computes the UTM zone from it.
+It takes in account the special cases of Norway and Svalbard.</p>
+<p>An alternative, more standard, way using geographic coordinates is to 
format an &ldquo;AUTO&rdquo; authority code.
+The syntax is 
<code>&quot;AUTO2:​42001,​1,​&lt;longitude&gt;,​&lt;latitude&gt;&quot;</code>.
+However this approach works only for the WGS84 datum.</p>
+<p>If the UTM zone is known, another way is to use the &ldquo;EPSG&rdquo; 
authority factory.
+The EPSG code of some UTM projections can be determined as below, where 
<em>zone</em> is a number from 1 to 60 inclusive (unless otherwise 
specified):</p>
+<ul>
+<li>WGS 84 (northern hemisphere): 32600 + <em>zone</em></li>
+<li>WGS 84 (southern hemisphere): 32700 + <em>zone</em></li>
+<li>WGS 72 (northern hemisphere): 32200 + <em>zone</em></li>
+<li>WGS 72 (southern hemisphere): 32300 + <em>zone</em></li>
+<li>NAD 83 (northern hemisphere): 26900 + <em>zone</em> (zone 1 to 23 
only)</li>
+<li>NAD 27 (northern hemisphere): 26700 + <em>zone</em> (zone 1 to 22 
only)</li>
+<li>See the EPSG dataset for additional UTM definitions
+(WGS 72BE, SIRGAS 2000, SIRGAS 1995, SAD 69, ETRS 89, <em>etc.</em>).</li>
+</ul>
+<p>The code example below instantiates the same <abbr title="Coordinate 
Reference System">CRS</abbr> using the three approaches.</p>
+<h1 id="direct-dependencies">Direct dependencies</h1>
+<table>
+<thead>
+<tr>
+<th>Maven coordinates</th>
+<th>Module info</th>
+<th>Remarks</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>org.apache.sis.storage:sis-referencing</code></td>
+<td><code>org.apache.sis.referencing</code></td>
+<td></td>
+</tr>
+<tr>
+<td><code>org.apache.sis.non-free:sis-embedded-data</code></td>
+<td><code>org.apache.sis.referencing.database</code></td>
+<td>Optional. Non-Apache license.</td>
+</tr>
+</tbody>
+</table>
+<p>The <a href="../epsg.html">EPSG dependency</a> is optional for examples 
using the <code>CommonCRS</code> enumeration
+or the &ldquo;AUTO&rdquo; authority, but is required for examples using the 
&ldquo;EPSG&rdquo; authority.</p>
+<h1 id="code-example">Code example</h1>
+<p>Note that all geographic coordinates below express latitude <em>before</em> 
longitude,
+except in &ldquo;AUTO2&rdquo; authority code.</p>
+<div class="highlight"><pre tabindex="0" class="chroma"><code 
class="language-java" data-lang="java"><span class="line"><span 
class="cl"><span class="kn">import</span> <span 
class="nn">org.opengis.referencing.crs.CoordinateReferenceSystem</span><span 
class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.opengis.util.FactoryException</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.referencing.CRS</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.referencing.CommonCRS</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.util.Utilities</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span 
class="kd">public</span> <span class="kd">class</span> <span 
class="nc">InstantiateUTM</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl">    <span class="cm">/**
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* Demo entry point.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
*
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* @param  args  ignored.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* @throws FactoryException if an error occurred while creating the Coordinate 
Reference System (CRS).
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
*/</span>
+</span></span><span class="line"><span class="cl">    <span 
class="kd">public</span> <span class="kd">static</span> <span 
class="kt">void</span> <span class="nf">main</span><span 
class="o">(</span><span class="n">String</span><span class="o">[]</span> <span 
class="n">args</span><span class="o">)</span> <span class="kd">throws</span> 
<span class="n">FactoryException</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl">        <span class="cm">/*
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    * Get UTM projection for whatever zone is valid for 40°N 14°E.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    */</span>
+</span></span><span class="line"><span class="cl">        <span 
class="kt">double</span> <span class="n">latitude</span>  <span 
class="o">=</span> <span class="n">40</span><span class="o">;</span>      <span 
class="c1">// Will determine the hemisphere.
+</span></span></span><span class="line"><span class="cl"><span 
class="c1"></span>        <span class="kt">double</span> <span 
class="n">longitude</span> <span class="o">=</span> <span 
class="n">14</span><span class="o">;</span>      <span class="c1">// Will 
determine the UTM zone.
+</span></span></span><span class="line"><span class="cl"><span 
class="c1"></span>        <span class="n">CoordinateReferenceSystem</span> 
<span class="n">crsFromPoint</span> <span class="o">=</span> <span 
class="n">CommonCRS</span><span class="o">.</span><span 
class="na">WGS84</span><span class="o">.</span><span 
class="na">universal</span><span class="o">(</span><span 
class="n">latitude</span><span class="o">,</span> <span 
class="n">longitude</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl">        <span 
class="n">CoordinateReferenceSystem</span> <span class="n">crsFromAUTO2</span> 
<span class="o">=</span> <span class="n">CRS</span><span 
class="o">.</span><span class="na">forCode</span><span class="o">(</span><span 
class="s">&#34;AUTO2:42001,1,&#34;</span> <span class="o">+</span> <span 
class="n">longitude</span> <span class="o">+</span> <span 
class="s">&#34;,&#34;</span> <span class="o">+</span> <span 
class="n">latitude</sp [...]
+</span></span><span class="line"><span class="cl">        <span class="cm">/*
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    * Get the UTM projection for a specific zone.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    */</span>
+</span></span><span class="line"><span class="cl">        <span 
class="kt">int</span> <span class="n">zone</span> <span class="o">=</span> 
<span class="n">33</span><span class="o">;</span>              <span 
class="c1">// UTM zone 33.
+</span></span></span><span class="line"><span class="cl"><span 
class="c1"></span>        <span class="kt">int</span> <span 
class="n">code</span> <span class="o">=</span> <span class="n">32600</span> 
<span class="o">+</span> <span class="n">zone</span><span class="o">;</span>    
<span class="c1">// For WGS84 northern hemisphere
+</span></span></span><span class="line"><span class="cl"><span 
class="c1"></span>        <span class="n">CoordinateReferenceSystem</span> 
<span class="n">crsFromCode</span> <span class="o">=</span> <span 
class="n">CRS</span><span class="o">.</span><span 
class="na">forCode</span><span class="o">(</span><span 
class="s">&#34;EPSG:&#34;</span> <span class="o">+</span> <span 
class="n">code</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl">        <span class="cm">/*
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    * Compare the results.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    */</span>
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;Are the CRS equivalent?&#34;</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;AUTO2: &#34;</span> <span class="o">+</span> <span 
class="n">Utilities</span><span class="o">.</span><span 
class="na">equalsIgnoreMetadata</span><span class="o">(</span><span 
class="n">crsFromPoint</span><span class="o">,</span> <span class="n">crsFromAU 
[...]
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;EPSG:  &#34;</span> <span class="o">+</span> <span 
class="n">Utilities</span><span class="o">.</span><span 
class="na">equalsIgnoreMetadata</span><span class="o">(</span><span 
class="n">crsFromPoint</span><span class="o">,</span> <span class="n">crsFromCo 
[...]
+</span></span><span class="line"><span class="cl">    <span class="o">}</span>
+</span></span><span class="line"><span class="cl"><span 
class="o">}</span></span></span></code></pre></div>
+<h1 id="output">Output</h1>
+<pre tabindex="0"><code>Are the CRS equivalent?
+AUTO2: true
+EPSG:  true
+</code></pre>
+
+      </article>
+    </main>
+    <footer class="footer">
+    <div class="container">
+      <p>
+        Copyright &copy; 2013-2023 The Apache Software Foundation, Licensed 
under the
+        <a href="http://www.apache.org/licenses/LICENSE-2.0";>Apache License, 
Version 2.0</a>.<br/>
+        Apache SIS, Apache, the Apache feather logo are trademarks of The 
Apache Software Foundation.
+      </p>
+    </div>
+</footer>
+  </div>
+</div>
+
+<script 
src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js";
+    
integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ"
 crossorigin="anonymous"></script>
+
+</body>
+</html>
diff --git a/howto/lookup_crs_urn.html b/howto/lookup_crs_urn.html
new file mode 100644
index 00000000..43060363
--- /dev/null
+++ b/howto/lookup_crs_urn.html
@@ -0,0 +1,220 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+
+
+  <title>Apache SIS - Get the EPSG code or URN of an existing CRS</title>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <link 
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css";
+        rel="stylesheet" 
integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU"
 crossorigin="anonymous">
+  <link rel="stylesheet" type="text/css" media="screen" href="../syntax.css">
+  <link rel="stylesheet" type="text/css" media="screen" href="../sis.css">
+</head>
+
+<body>
+
+<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
+  <div class="container-fluid">
+    <a class="navbar-brand" href="../index.html"> Apache SIS™</a>
+    <ul class="navbar-nav me-auto mb-2 mb-md-0">
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuAbout" 
data-bs-toggle="dropdown" aria-expanded="false">About</a>
+        <ul class="dropdown-menu" aria-labelledby="menuAbout">
+          <li><a class="dropdown-item" 
href="http://www.apache.org/licenses/";>License</a></li>
+          <li><a class="dropdown-item" href="../mail-lists.html">Mailing 
Lists</a></li>
+          <li><a class="dropdown-item" href="../team-list.html">Project 
Team</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuDownload" 
data-bs-toggle="dropdown" aria-expanded="false">Download</a>
+        <ul class="dropdown-menu" aria-labelledby="menuDownload">
+          <li><a class="dropdown-item" 
href="../downloads.html">Downloads</a></li>
+          <li><a class="dropdown-item" href="../source.html">Checkout 
Sources</a></li>
+          <li><a class="dropdown-item" href="../build.html">Build from 
Sources</a></li>
+          <li><a class="dropdown-item" href="../epsg.html">EPSG 
Database</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuDocumentation" 
data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+        <ul class="dropdown-menu" aria-labelledby="menuDocumentation">
+          <li><a class="dropdown-item" href="../apidocs/index.html">Online 
Javadoc</a></li>
+          <li><a class="dropdown-item" 
href="../book/en/developer-guide.html">Developer Guide</a></li>
+          <li><a class="dropdown-item" href="../howto.html">How to…</a></li>
+          <li><a class="dropdown-item" href="../formats.html">Supported 
formats</a></li>
+          <li><a class="dropdown-item" 
href="../tables/CoordinateReferenceSystems.html">Supported CRS</a></li>
+          <li><a class="dropdown-item" 
href="../tables/CoordinateOperationMethods.html">Map Projections</a></li>
+          <li><a class="dropdown-item" href="../code-patterns.html">Code 
Patterns</a></li>
+          <li><a class="dropdown-item" href="../faq.html">FAQ</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuContribute" 
data-bs-toggle="dropdown" aria-expanded="false">Contribute</a>
+        <ul class="dropdown-menu" aria-labelledby="menuContribute">
+          <li><a class="dropdown-item" href="../contributor.html">New 
Contributor</a></li>
+          <li><a class="dropdown-item" 
href="../coding-conventions.html">Coding Conventions</a></li>
+          <li><a class="dropdown-item" href="../mail-lists.html">Mailing 
Lists</a></li>
+          <li><a class="dropdown-item" 
href="https://issues.apache.org/jira/browse/SIS";>Issue Tracker</a></li>
+          <li><a class="dropdown-item" 
href="https://github.com/apache/sis";>GitHub mirror</a></li>
+          <li><a class="dropdown-item" 
href="https://cwiki.apache.org/confluence/display/SIS";>Wiki</a></li>
+          <li><hr class="dropdown-divider"></li>
+          <li><a class="dropdown-item" 
href="../release-management.html">Release management</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuASF" 
data-bs-toggle="dropdown" aria-expanded="false">The Foundation</a>
+        <ul class="dropdown-menu" aria-labelledby="menuASF">
+          <li><a class="dropdown-item" href="http://www.apache.org";>The 
Foundation</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/foundation/sponsorship.html";>Donate</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/security/";>Security</a></li>
+        </ul>
+      </li>
+    </ul>
+    <ul class="navbar-nav ml-auto mb-2 mb-md-0">
+      <li class="nav-item">
+        <a href="https://www.apache.org/events/current-event.html";>
+           <img class="apache-con" 
src="https://www.apache.org/events/current-event-234x60.png"; alt="ApacheCon"/>
+        </a>
+      </li>
+    </ul>
+  </div>
+</nav>
+
+
+<div class="row flex-nowrap">
+  <div class="d-flex flex-column flex-shrink-0 p-3 text-white bg-dark" 
style="width:13rem; min-height:40rem">
+    <ul class="nav nav-pills flex-column mb-auto position-fixed">
+      <li><a class="nav-link  text-white " href="../index.html">Home</a></li>
+      <li><a class="nav-link text-white" 
href="http://www.apache.org/licenses/";>License</a></li>
+      <li><a class="nav-link  text-white " 
href="../downloads.html">Downloads</a></li>
+      <li><a class="nav-link  active " href="../howto.html">How to…</a></li>
+      <li><a class="nav-link  text-white " 
href="../standards.html">Standards</a></li>
+      <li><a class="nav-link  text-white " href="../formats.html">Data 
formats</a></li>
+      <li><a class="nav-link  text-white " href="../epsg.html">EPSG 
Database</a></li>
+      <li><a class="nav-link  text-white " href="../javafx.html">Application 
(demo)</a></li>
+      <li><a class="nav-link text-white" href="../apidocs/index.html">Online 
Javadoc</a></li>
+      <li><a class="nav-link text-white" 
href="../book/en/developer-guide.html">Developer Guide</a></li>
+      <li><a class="nav-link  text-white " href="../code-patterns.html">Code 
patterns</a></li>
+      <li><a class="nav-link  text-white " href="../faq.html">FAQ</a></li>
+    </ul>
+  </div>
+  <div class="col">
+    <main class="container">
+      <article>
+        <img src="../images/logo.png" class="sis-logo" align="left"/>
+        <p class="page-title">Get the EPSG code or URN of an existing CRS</p>
+
+  <p>The <em>identifier</em> of a Coordinate Reference System (CRS) object can 
be obtained by the <code>getIdentifiers()</code> method,
+which usually return a collection of zero or one element.
+If the <abbr title="Coordinate Reference System">CRS</abbr> has been created 
from a Well Known Text (WKT) parsing
+and the <abbr title="Well Known Text">WKT</abbr> ends with an 
<code>AUTHORITY[&quot;EPSG&quot;, &quot;xxxx&quot;]</code> (<abbr title="Well 
Known Text">WKT</abbr> version 1)
+or <code>ID[&quot;EPSG&quot;, xxxx]</code> (<abbr title="Well Known 
Text">WKT</abbr> version 2) element,
+then the identifier (an EPSG numerical code in this example) is the 
<em>xxxx</em> value in that element.
+If the <abbr title="Coordinate Reference System">CRS</abbr> has been created 
from the EPSG geodetic dataset (for example by a call to 
<code>CRS.forCode(&quot;EPSG:xxxx&quot;)</code>),
+then the identifier is the <em>xxxx</em> code given to that method.
+If the <abbr title="Coordinate Reference System">CRS</abbr> has been created 
in another way, then the collection returned by the 
<code>getIdentifiers()</code> method
+may or may not be empty depending if the program that created the <abbr 
title="Coordinate Reference System">CRS</abbr> took the responsibility of 
providing identifiers.</p>
+<p>If the collection of identifiers is empty, the most effective fix is to 
make sure that the <abbr title="Well Known Text">WKT</abbr>
+contains an <code>AUTHORITY</code> or <code>ID</code> element (assuming that 
the <abbr title="Coordinate Reference System">CRS</abbr> was parsed from a 
<abbr title="Well Known Text">WKT</abbr>).
+If this is not possible, then the 
<code>org.apache.sis.referencing.IdentifiedObjects</code> class contains some 
convenience methods which may help.
+In the following example, the call to <code>lookupEPSG(…)</code> will scan the 
EPSG database for a <abbr title="Coordinate Reference System">CRS</abbr> equals
+(ignoring metadata) to the given one. <em>Note that this scan is sensitive to 
axis order.</em>
+Most geographic <abbr title="Coordinate Reference System">CRS</abbr> in the 
EPSG database are declared with (<em>latitude</em>, <em>longitude</em>) axis 
order.
+Consequently if the given <abbr title="Coordinate Reference System">CRS</abbr> 
has (<em>longitude</em>, <em>latitude</em>) axis order, then the scan is likely 
to find no match.</p>
+<h1 id="direct-dependencies">Direct dependencies</h1>
+<table>
+<thead>
+<tr>
+<th>Maven coordinates</th>
+<th>Module info</th>
+<th>Remarks</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>org.apache.sis.storage:sis-referencing</code></td>
+<td><code>org.apache.sis.referencing</code></td>
+<td></td>
+</tr>
+<tr>
+<td><code>org.apache.sis.non-free:sis-embedded-data</code></td>
+<td><code>org.apache.sis.referencing.database</code></td>
+<td>Optional. Non-Apache license.</td>
+</tr>
+</tbody>
+</table>
+<p>The <a href="../epsg.html">EPSG dependency</a> is not needed if the <abbr 
title="Well Known Text">WKT</abbr> string declares an <code>AUTHORITY</code> 
element.
+But it is required if the <code>AUTHORITY</code> element is absent and Apache 
<abbr title="Spatial Information System">SIS</abbr> needs to scan the EPSG 
database
+for finding its value.</p>
+<h1 id="code-example">Code example</h1>
+<div class="highlight"><pre tabindex="0" class="chroma"><code 
class="language-java" data-lang="java"><span class="line"><span 
class="cl"><span class="kn">import</span> <span 
class="nn">org.opengis.referencing.crs.CoordinateReferenceSystem</span><span 
class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.opengis.util.FactoryException</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.referencing.CRS</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.referencing.IdentifiedObjects</span><span 
class="o">;</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span 
class="kd">public</span> <span class="kd">class</span> <span 
class="nc">LookupAuthorityCode</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl">    <span class="cm">/**
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* Demo entry point.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
*
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* @param  args  ignored.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* @throws FactoryException if an error occurred while creating the CRS or 
searching in EPSG database.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
*/</span>
+</span></span><span class="line"><span class="cl">    <span 
class="kd">public</span> <span class="kd">static</span> <span 
class="kt">void</span> <span class="nf">main</span><span 
class="o">(</span><span class="n">String</span><span class="o">[]</span> <span 
class="n">args</span><span class="o">)</span> <span class="kd">throws</span> 
<span class="n">FactoryException</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl">        <span 
class="n">CoordinateReferenceSystem</span> <span class="n">crs</span> <span 
class="o">=</span> <span class="n">CRS</span><span class="o">.</span><span 
class="na">fromWKT</span><span class="o">(</span>
+</span></span><span class="line"><span class="cl">        <span 
class="s">&#34;&#34;&#34;
+</span></span></span><span class="line"><span class="cl"><span class="s">      
  PROJCRS[&#34;</span><span class="n">NTF</span> <span class="o">(</span><span 
class="n">Paris</span><span class="o">)</span> <span class="o">/</span> <span 
class="n">zone</span> <span class="n">to</span> <span class="n">be</span> <span 
class="n">discovered</span> <span class="n">by</span> <span 
class="n">the</span> <span class="n">demo</span><span class="s">&#34;,
+</span></span></span><span class="line"><span class="cl"><span class="s">      
    BASEGEODCRS[&#34;</span><span class="n">NTF</span> <span 
class="o">(</span><span class="n">Paris</span><span class="o">)</span><span 
class="s">&#34;,
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      DATUM[&#34;</span><span class="n">Nouvelle</span> <span 
class="n">Triangulation</span> <span class="n">Francaise</span><span 
class="s">&#34;,
+</span></span></span><span class="line"><span class="cl"><span class="s">      
        ELLIPSOID[&#34;</span><span class="n">Clarke</span> <span 
class="nf">1880</span> <span class="o">(</span><span class="n">IGN</span><span 
class="o">)</span><span class="s">&#34;, 6378249.2, 293.4660212936269]],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
        PRIMEM[&#34;</span><span class="n">Paris</span><span class="s">&#34;, 
2.5969213],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      UNIT[&#34;</span><span class="n">grade</span><span class="s">&#34;, 
0.015707963267948967]],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
    CONVERSION[&#34;</span><span class="n">Lambert</span> <span 
class="n">zone</span> <span class="n">II</span><span class="s">&#34;,
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      METHOD[&#34;</span><span class="n">Lambert</span> <span 
class="n">Conic</span> <span class="nf">Conformal</span> <span 
class="o">(</span><span class="n">1SP</span><span class="o">)</span><span 
class="s">&#34;],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      PARAMETER[&#34;</span><span class="n">Latitude</span> <span 
class="n">of</span> <span class="n">natural</span> <span 
class="n">origin</span><span class="s">&#34;, 52.0],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      PARAMETER[&#34;</span><span class="n">Longitude</span> <span 
class="n">of</span> <span class="n">natural</span> <span 
class="n">origin</span><span class="s">&#34;, 0.0],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      PARAMETER[&#34;</span><span class="n">Scale</span> <span 
class="n">factor</span> <span class="n">at</span> <span 
class="n">natural</span> <span class="n">origin</span><span class="s">&#34;, 
0.99987742],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      PARAMETER[&#34;</span><span class="n">False</span> <span 
class="n">easting</span><span class="s">&#34;, 600000.0],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      PARAMETER[&#34;</span><span class="n">False</span> <span 
class="n">northing</span><span class="s">&#34;, 2200000.0]],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
    CS[Cartesian, 2],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      AXIS[&#34;</span><span class="n">Easting</span> <span 
class="o">(</span><span class="n">E</span><span class="o">)</span><span 
class="s">&#34;, east],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      AXIS[&#34;</span><span class="n">Northing</span> <span 
class="o">(</span><span class="n">N</span><span class="o">)</span><span 
class="s">&#34;, north],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
      LENGTHUNIT[&#34;</span><span class="n">metre</span><span class="s">&#34;, 
1],
+</span></span></span><span class="line"><span class="cl"><span class="s">      
    REMARK[&#34;</span><span class="n">EPSG</span><span class="o">:</span><span 
class="n">27572</span> <span class="n">identifier</span> <span 
class="n">intentionally</span> <span class="n">omitted</span><span 
class="o">.</span><span class="s">&#34;]]
+</span></span></span><span class="line"><span class="cl"><span class="s">      
  &#34;&#34;&#34;</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;Identifier declared in the CRS: &#34;</span>
+</span></span><span class="line"><span class="cl">                <span 
class="o">+</span> <span class="n">IdentifiedObjects</span><span 
class="o">.</span><span class="na">getIdentifier</span><span 
class="o">(</span><span class="n">crs</span><span class="o">,</span> <span 
class="kc">null</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;Searching in EPSG database: &#34;</span>
+</span></span><span class="line"><span class="cl">                <span 
class="o">+</span> <span class="n">IdentifiedObjects</span><span 
class="o">.</span><span class="na">lookupEPSG</span><span 
class="o">(</span><span class="n">crs</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;Same, but more generic: &#34;</span>
+</span></span><span class="line"><span class="cl">                <span 
class="o">+</span> <span class="n">IdentifiedObjects</span><span 
class="o">.</span><span class="na">lookupURN</span><span 
class="o">(</span><span class="n">crs</span><span class="o">,</span> <span 
class="kc">null</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl">    <span class="o">}</span>
+</span></span><span class="line"><span class="cl"><span 
class="o">}</span></span></span></code></pre></div>
+<h1 id="output">Output</h1>
+<pre tabindex="0"><code>Identifier declared in the CRS: null
+Searching in EPSG database: 27572
+Same, but more generic: urn:ogc:def:crs:EPSG:9.9.1:27572
+</code></pre>
+
+      </article>
+    </main>
+    <footer class="footer">
+    <div class="container">
+      <p>
+        Copyright &copy; 2013-2023 The Apache Software Foundation, Licensed 
under the
+        <a href="http://www.apache.org/licenses/LICENSE-2.0";>Apache License, 
Version 2.0</a>.<br/>
+        Apache SIS, Apache, the Apache feather logo are trademarks of The 
Apache Software Foundation.
+      </p>
+    </div>
+</footer>
+  </div>
+</div>
+
+<script 
src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js";
+    
integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ"
 crossorigin="anonymous"></script>
+
+</body>
+</html>
diff --git a/howto/raster_values_at_geographic_coordinates.html 
b/howto/raster_values_at_geographic_coordinates.html
index 1c5ccd55..5455cd19 100644
--- a/howto/raster_values_at_geographic_coordinates.html
+++ b/howto/raster_values_at_geographic_coordinates.html
@@ -145,10 +145,10 @@ the <code>GridCoverageResource</code> interface instead 
of <code>Aggregate</code
 <p>The <code>cdm-core</code> dependency can be omitted for netCDF-3 (a.k.a. 
&ldquo;classic&rdquo;),
 GeoTIFF or any other <a href="../formats.html">formats supported by Apache 
SIS</a>.
 For the dependencies required for reading GeoTIFF instead of netCDF files,
-see the <a href="rasters_bigger_than_memory.html">rasters bigger than 
memory</a> snippet.</p>
-<h1 id="code-snippet">Code snippet</h1>
+see the <a href="rasters_bigger_than_memory.html">rasters bigger than 
memory</a> code example.</p>
+<h1 id="code-example">Code example</h1>
 <p>The file name, resource name and geographic coordinates
-in following snippet need to be updated for yours data.</p>
+in following code need to be updated for yours data.</p>
 <div class="highlight"><pre tabindex="0" class="chroma"><code 
class="language-java" data-lang="java"><span class="line"><span 
class="cl"><span class="kn">import</span> <span 
class="nn">java.io.File</span><span class="o">;</span>
 </span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span class="nn">java.util.Map</span><span 
class="o">;</span>
 </span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span class="nn">javax.measure.Unit</span><span 
class="o">;</span>
diff --git a/howto/rasters_bigger_than_memory.html 
b/howto/rasters_bigger_than_memory.html
index 4cd710c6..4aeeea55 100644
--- a/howto/rasters_bigger_than_memory.html
+++ b/howto/rasters_bigger_than_memory.html
@@ -115,7 +115,7 @@ It integrates well with operations provided by Apache <abbr 
title="Spatial Infor
 <a href="raster_values_at_geographic_coordinates.html">getting values at 
geographic coordinates</a>.</p>
 <p>The example in this page works with pixel coordinates.
 For working with geographic coordinates, see
-<a href="raster_values_at_geographic_coordinates.html">values at geographic 
coordinates</a> snippet.</p>
+<a href="raster_values_at_geographic_coordinates.html">values at geographic 
coordinates</a> code example.</p>
 <h1 id="direct-dependencies">Direct dependencies</h1>
 <table>
 <thead>
@@ -140,8 +140,8 @@ For working with geographic coordinates, see
 </table>
 <p>The <a href="../epsg.html">EPSG dependency</a> may or may not be needed,
 depending how the Coordinate Reference System (CRS) is encoded in the GeoTIFF 
file.</p>
-<h1 id="code-snippet">Code snippet</h1>
-<p>The file name in following snippet need to be updated for yours data.</p>
+<h1 id="code-example">Code example</h1>
+<p>The file name in following code need to be updated for yours data.</p>
 <div class="highlight"><pre tabindex="0" class="chroma"><code 
class="language-java" data-lang="java"><span class="line"><span 
class="cl"><span class="kn">import</span> <span 
class="nn">java.io.File</span><span class="o">;</span>
 </span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span class="nn">java.util.Collection</span><span 
class="o">;</span>
 </span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span class="nn">java.awt.Rectangle</span><span 
class="o">;</span>
diff --git a/howto/resample_and_save_raster.html 
b/howto/resample_and_save_raster.html
index b67393a5..b3cd378f 100644
--- a/howto/resample_and_save_raster.html
+++ b/howto/resample_and_save_raster.html
@@ -134,10 +134,13 @@ The result is saved as a World File in PNG format.</p>
 because a Coordinate Reference System (CRS) is instantiated from its EPSG code.
 But it would also be possible to specify a CRS without EPSG code,
 for example using Well Known Text (WKT) format.</p>
-<h1 id="code-snippet">Code snippet</h1>
-<p>The file name in following snippet need to be updated for yours data.</p>
-<div class="highlight"><pre tabindex="0" class="chroma"><code 
class="language-java" data-lang="java"><span class="line"><span 
class="cl"><span class="kn">import</span> <span 
class="nn">java.nio.file.Paths</span><span class="o">;</span>
+<h1 id="code-example">Code example</h1>
+<p>The file name in following code need to be updated for yours data.</p>
+<div class="highlight"><pre tabindex="0" class="chroma"><code 
class="language-java" data-lang="java"><span class="line"><span 
class="cl"><span class="kn">import</span> <span 
class="nn">java.io.File</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span class="nn">java.io.IOException</span><span 
class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span class="nn">java.nio.file.Paths</span><span 
class="o">;</span>
 </span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span class="nn">java.util.Collection</span><span 
class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span class="nn">javax.imageio.ImageIO</span><span 
class="o">;</span>
 </span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">java.awt.image.ImagingOpException</span><span class="o">;</span>
 </span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.storage.Resource</span><span class="o">;</span>
 </span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.storage.Aggregate</span><span class="o">;</span>
@@ -162,7 +165,7 @@ for example using Well Known Text (WKT) format.</p>
 </span></span></span><span class="line"><span class="cl"><span class="cm">     
* @throws TransformException if an error occurred while transforming 
coordinates to the target CRS.
 </span></span></span><span class="line"><span class="cl"><span class="cm">     
* @throws ImagingOpException unchecked exception thrown if an error occurred 
while resampling a tile.
 </span></span></span><span class="line"><span class="cl"><span class="cm">     
*/</span>
-</span></span><span class="line"><span class="cl">    <span 
class="kd">public</span> <span class="kd">static</span> <span 
class="kt">void</span> <span class="nf">main</span><span 
class="o">(</span><span class="n">String</span><span class="o">[]</span> <span 
class="n">args</span><span class="o">)</span> <span class="kd">throws</span> 
<span class="n">DataStoreException</span><span class="o">,</span> <span 
class="n">FactoryException</span><span class="o">,</span> <span 
class="n">TransformEx [...]
+</span></span><span class="line"><span class="cl">    <span 
class="kd">public</span> <span class="kd">static</span> <span 
class="kt">void</span> <span class="nf">main</span><span 
class="o">(</span><span class="n">String</span><span class="o">[]</span> <span 
class="n">args</span><span class="o">)</span> <span class="kd">throws</span> 
<span class="n">DataStoreException</span><span class="o">,</span> <span 
class="n">FactoryException</span><span class="o">,</span> <span 
class="n">TransformEx [...]
 </span></span><span class="line"><span class="cl">        <span 
class="k">try</span> <span class="o">(</span><span class="n">DataStore</span> 
<span class="n">store</span> <span class="o">=</span> <span 
class="n">DataStores</span><span class="o">.</span><span 
class="na">open</span><span class="o">(</span><span class="n">Paths</span><span 
class="o">.</span><span class="na">get</span><span class="o">(</span><span 
class="s">&#34;Airport.tiff&#34;</span><span class="o">)))</span> <span class= 
[...]
 </span></span><span class="line"><span class="cl">            <span 
class="cm">/*
 </span></span></span><span class="line"><span class="cl"><span class="cm">     
        * This data store is an aggregate because a GeoTIFF file may contain 
many images.
@@ -188,10 +191,12 @@ for example using Well Known Text (WKT) format.</p>
 </span></span><span class="line"><span class="cl">            <span 
class="n">data</span> <span class="o">=</span> <span 
class="n">processor</span><span class="o">.</span><span 
class="na">resample</span><span class="o">(</span><span 
class="n">data</span><span class="o">,</span> <span class="n">CRS</span><span 
class="o">.</span><span class="na">forCode</span><span class="o">(</span><span 
class="s">&#34;EPSG::3395&#34;</span><span class="o">));</span>
 </span></span><span class="line"><span class="cl">            <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">printf</span><span class="o">(</span><span 
class="s">&#34;Information about the image after 
reprojection:%n%s%n&#34;</span><span class="o">,</span> <span 
class="n">data</span><span class="o">);</span>
 </span></span><span class="line"><span class="cl">            <span 
class="cm">/*
-</span></span></span><span class="line"><span class="cl"><span class="cm">     
        * TODO: Apache SIS is missing an `DataStores.write(…)` convenience 
method.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
        * TODO: Apache SIS is missing a `DataStores.write(…)` convenience 
method.
 </span></span></span><span class="line"><span class="cl"><span class="cm">     
        * Writing a TIFF World File is possible but requires use of internal 
API.
 </span></span></span><span class="line"><span class="cl"><span class="cm">     
        * A public convenience method will be added in next version.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
        * For now we use Java I/O API.
 </span></span></span><span class="line"><span class="cl"><span class="cm">     
        */</span>
+</span></span><span class="line"><span class="cl">            <span 
class="n">ImageIO</span><span class="o">.</span><span 
class="na">write</span><span class="o">(</span><span class="n">data</span><span 
class="o">.</span><span class="na">render</span><span class="o">(</span><span 
class="kc">null</span><span class="o">),</span> <span 
class="s">&#34;png&#34;</span><span class="o">,</span> <span 
class="k">new</span> <span class="n">File</span><span class="o">(</span><span 
class="s">&#34;test [...]
 </span></span><span class="line"><span class="cl">        <span 
class="o">}</span>
 </span></span><span class="line"><span class="cl">    <span class="o">}</span>
 </span></span><span class="line"><span class="cl"><span 
class="o">}</span></span></span></code></pre></div>
diff --git a/howto/transform_coordinates.html b/howto/transform_coordinates.html
new file mode 100644
index 00000000..442ef1e3
--- /dev/null
+++ b/howto/transform_coordinates.html
@@ -0,0 +1,210 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+
+
+  <title>Apache SIS - Transform coordinates</title>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <link 
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css";
+        rel="stylesheet" 
integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU"
 crossorigin="anonymous">
+  <link rel="stylesheet" type="text/css" media="screen" href="../syntax.css">
+  <link rel="stylesheet" type="text/css" media="screen" href="../sis.css">
+</head>
+
+<body>
+
+<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
+  <div class="container-fluid">
+    <a class="navbar-brand" href="../index.html"> Apache SIS™</a>
+    <ul class="navbar-nav me-auto mb-2 mb-md-0">
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuAbout" 
data-bs-toggle="dropdown" aria-expanded="false">About</a>
+        <ul class="dropdown-menu" aria-labelledby="menuAbout">
+          <li><a class="dropdown-item" 
href="http://www.apache.org/licenses/";>License</a></li>
+          <li><a class="dropdown-item" href="../mail-lists.html">Mailing 
Lists</a></li>
+          <li><a class="dropdown-item" href="../team-list.html">Project 
Team</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuDownload" 
data-bs-toggle="dropdown" aria-expanded="false">Download</a>
+        <ul class="dropdown-menu" aria-labelledby="menuDownload">
+          <li><a class="dropdown-item" 
href="../downloads.html">Downloads</a></li>
+          <li><a class="dropdown-item" href="../source.html">Checkout 
Sources</a></li>
+          <li><a class="dropdown-item" href="../build.html">Build from 
Sources</a></li>
+          <li><a class="dropdown-item" href="../epsg.html">EPSG 
Database</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuDocumentation" 
data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+        <ul class="dropdown-menu" aria-labelledby="menuDocumentation">
+          <li><a class="dropdown-item" href="../apidocs/index.html">Online 
Javadoc</a></li>
+          <li><a class="dropdown-item" 
href="../book/en/developer-guide.html">Developer Guide</a></li>
+          <li><a class="dropdown-item" href="../howto.html">How to…</a></li>
+          <li><a class="dropdown-item" href="../formats.html">Supported 
formats</a></li>
+          <li><a class="dropdown-item" 
href="../tables/CoordinateReferenceSystems.html">Supported CRS</a></li>
+          <li><a class="dropdown-item" 
href="../tables/CoordinateOperationMethods.html">Map Projections</a></li>
+          <li><a class="dropdown-item" href="../code-patterns.html">Code 
Patterns</a></li>
+          <li><a class="dropdown-item" href="../faq.html">FAQ</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuContribute" 
data-bs-toggle="dropdown" aria-expanded="false">Contribute</a>
+        <ul class="dropdown-menu" aria-labelledby="menuContribute">
+          <li><a class="dropdown-item" href="../contributor.html">New 
Contributor</a></li>
+          <li><a class="dropdown-item" 
href="../coding-conventions.html">Coding Conventions</a></li>
+          <li><a class="dropdown-item" href="../mail-lists.html">Mailing 
Lists</a></li>
+          <li><a class="dropdown-item" 
href="https://issues.apache.org/jira/browse/SIS";>Issue Tracker</a></li>
+          <li><a class="dropdown-item" 
href="https://github.com/apache/sis";>GitHub mirror</a></li>
+          <li><a class="dropdown-item" 
href="https://cwiki.apache.org/confluence/display/SIS";>Wiki</a></li>
+          <li><hr class="dropdown-divider"></li>
+          <li><a class="dropdown-item" 
href="../release-management.html">Release management</a></li>
+        </ul>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" id="menuASF" 
data-bs-toggle="dropdown" aria-expanded="false">The Foundation</a>
+        <ul class="dropdown-menu" aria-labelledby="menuASF">
+          <li><a class="dropdown-item" href="http://www.apache.org";>The 
Foundation</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/foundation/sponsorship.html";>Donate</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li>
+          <li><a class="dropdown-item" 
href="http://www.apache.org/security/";>Security</a></li>
+        </ul>
+      </li>
+    </ul>
+    <ul class="navbar-nav ml-auto mb-2 mb-md-0">
+      <li class="nav-item">
+        <a href="https://www.apache.org/events/current-event.html";>
+           <img class="apache-con" 
src="https://www.apache.org/events/current-event-234x60.png"; alt="ApacheCon"/>
+        </a>
+      </li>
+    </ul>
+  </div>
+</nav>
+
+
+<div class="row flex-nowrap">
+  <div class="d-flex flex-column flex-shrink-0 p-3 text-white bg-dark" 
style="width:13rem; min-height:40rem">
+    <ul class="nav nav-pills flex-column mb-auto position-fixed">
+      <li><a class="nav-link  text-white " href="../index.html">Home</a></li>
+      <li><a class="nav-link text-white" 
href="http://www.apache.org/licenses/";>License</a></li>
+      <li><a class="nav-link  text-white " 
href="../downloads.html">Downloads</a></li>
+      <li><a class="nav-link  active " href="../howto.html">How to…</a></li>
+      <li><a class="nav-link  text-white " 
href="../standards.html">Standards</a></li>
+      <li><a class="nav-link  text-white " href="../formats.html">Data 
formats</a></li>
+      <li><a class="nav-link  text-white " href="../epsg.html">EPSG 
Database</a></li>
+      <li><a class="nav-link  text-white " href="../javafx.html">Application 
(demo)</a></li>
+      <li><a class="nav-link text-white" href="../apidocs/index.html">Online 
Javadoc</a></li>
+      <li><a class="nav-link text-white" 
href="../book/en/developer-guide.html">Developer Guide</a></li>
+      <li><a class="nav-link  text-white " href="../code-patterns.html">Code 
patterns</a></li>
+      <li><a class="nav-link  text-white " href="../faq.html">FAQ</a></li>
+    </ul>
+  </div>
+  <div class="col">
+    <main class="container">
+      <article>
+        <img src="../images/logo.png" class="sis-logo" align="left"/>
+        <p class="page-title">Transform coordinates</p>
+
+  <p>The following Java code projects geographic coordinates from the 
<em>World Geodetic System 1984</em> (WGS84) to <em>WGS 84 / UTM zone 33N</em>.
+In order to make the example a little bit simpler, this code uses predefined 
constants given by the <code>CommonCRS</code> convenience class.
+But more advanced applications may use <a href="../epsg.html">EPSG codes</a> 
or definitions in Well-Known Text (WKT) instead.</p>
+<p><strong>Note:</strong> if the result of a coordinate transformation seems 
wrong, see the <a href="../faq.html">FAQ</a> page.
+Unexpected results are often caused by wrong axis order.</p>
+<h1 id="direct-dependencies">Direct dependencies</h1>
+<table>
+<thead>
+<tr>
+<th>Maven coordinates</th>
+<th>Module info</th>
+<th>Remarks</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>org.apache.sis.storage:sis-referencing</code></td>
+<td><code>org.apache.sis.referencing</code></td>
+<td></td>
+</tr>
+<tr>
+<td><code>org.apache.sis.non-free:sis-embedded-data</code></td>
+<td><code>org.apache.sis.referencing.database</code></td>
+<td>Optional. Non-Apache license.</td>
+</tr>
+</tbody>
+</table>
+<p>The <a href="../epsg.html">EPSG dependency</a> is optional for this example.
+But if present, the Coordinate Reference Systems will have more metadata.
+Consequently, coordinate transformation results between some pairs of 
reference systems
+may be different depending on whether the EPSG dataset is present or not.
+In general, results are more accurate and/or more reliable in presence of EPSG 
dataset.</p>
+<h1 id="code-example">Code example</h1>
+<p>Note that all geographic coordinates below express latitude <em>before</em> 
longitude.</p>
+<div class="highlight"><pre tabindex="0" class="chroma"><code 
class="language-java" data-lang="java"><span class="line"><span 
class="cl"><span class="kn">import</span> <span 
class="nn">org.opengis.geometry.DirectPosition</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.opengis.referencing.crs.CoordinateReferenceSystem</span><span 
class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.opengis.referencing.operation.CoordinateOperation</span><span 
class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.opengis.referencing.operation.TransformException</span><span 
class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.opengis.util.FactoryException</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.referencing.CRS</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.referencing.CommonCRS</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"><span 
class="kn">import</span> <span 
class="nn">org.apache.sis.geometry.DirectPosition2D</span><span 
class="o">;</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span 
class="kd">public</span> <span class="kd">class</span> <span 
class="nc">TransformCoordinates</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl">    <span class="cm">/**
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* Demo entry point.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
*
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* @param  args  ignored.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* @throws FactoryException   if an error occurred while creating the Coordinate 
Reference System (CRS).
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
* @throws TransformException if an error occurred while transforming 
coordinates to the target CRS.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
*/</span>
+</span></span><span class="line"><span class="cl">    <span 
class="kd">public</span> <span class="kd">static</span> <span 
class="kt">void</span> <span class="nf">main</span><span 
class="o">(</span><span class="n">String</span><span class="o">[]</span> <span 
class="n">args</span><span class="o">)</span> <span class="kd">throws</span> 
<span class="n">FactoryException</span><span class="o">,</span> <span 
class="n">TransformException</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl">        <span 
class="n">CoordinateReferenceSystem</span> <span class="n">sourceCRS</span> 
<span class="o">=</span> <span class="n">CommonCRS</span><span 
class="o">.</span><span class="na">WGS84</span><span class="o">.</span><span 
class="na">geographic</span><span class="o">();</span>
+</span></span><span class="line"><span class="cl">        <span 
class="n">CoordinateReferenceSystem</span> <span class="n">targetCRS</span> 
<span class="o">=</span> <span class="n">CommonCRS</span><span 
class="o">.</span><span class="na">WGS84</span><span class="o">.</span><span 
class="na">universal</span><span class="o">(</span><span 
class="n">40</span><span class="o">,</span> <span class="n">14</span><span 
class="o">);</span>  <span class="c1">// UTM zone for 40°N 14°E.
+</span></span></span><span class="line"><span class="cl"><span 
class="c1"></span>        <span class="n">CoordinateOperation</span> <span 
class="n">operation</span> <span class="o">=</span> <span 
class="n">CRS</span><span class="o">.</span><span 
class="na">findOperation</span><span class="o">(</span><span 
class="n">sourceCRS</span><span class="o">,</span> <span 
class="n">targetCRS</span><span class="o">,</span> <span 
class="kc">null</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl">        <span class="cm">/*
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    * The above lines are costly and should be performed only once before to 
project many points.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    * In this example, the operation that we got is valid for coordinates in 
geographic area from
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    * 12°E to 18°E (UTM zone 33) and 0°N to 84°N.
+</span></span></span><span class="line"><span class="cl"><span class="cm">     
    */</span>
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;Domain of validity:&#34;</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="n">CRS</span><span class="o">.</span><span 
class="na">getGeographicBoundingBox</span><span class="o">(</span><span 
class="n">operation</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">        <span 
class="n">DirectPosition</span> <span class="n">ptSrc</span> <span 
class="o">=</span> <span class="k">new</span> <span 
class="n">DirectPosition2D</span><span class="o">(</span><span 
class="n">40</span><span class="o">,</span> <span class="n">14</span><span 
class="o">);</span>           <span class="c1">// 40°N 14°E
+</span></span></span><span class="line"><span class="cl"><span 
class="c1"></span>        <span class="n">DirectPosition</span> <span 
class="n">ptDst</span> <span class="o">=</span> <span 
class="n">operation</span><span class="o">.</span><span 
class="na">getMathTransform</span><span class="o">().</span><span 
class="na">transform</span><span class="o">(</span><span 
class="n">ptSrc</span><span class="o">,</span> <span 
class="kc">null</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;Source: &#34;</span> <span class="o">+</span> <span 
class="n">ptSrc</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl">        <span 
class="n">System</span><span class="o">.</span><span class="na">out</span><span 
class="o">.</span><span class="na">println</span><span class="o">(</span><span 
class="s">&#34;Target: &#34;</span> <span class="o">+</span> <span 
class="n">ptDst</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl">    <span class="o">}</span>
+</span></span><span class="line"><span class="cl"><span 
class="o">}</span></span></span></code></pre></div>
+<h1 id="output">Output</h1>
+<p>Note: for some pairs of Coordinate Reference Systems,
+the output may vary depending on whether the <a href="../epsg.html">EPSG 
geodetic dataset</a> is present or not.</p>
+<pre tabindex="0"><code>Domain of validity:
+Geographic bounding box
+  ├─West bound longitude…… 12°E
+  ├─East bound longitude…… 18°E
+  ├─South bound latitude…… 0°N
+  └─North bound latitude…… 84°N
+
+Source: POINT(40 14)
+Target: POINT(414639.5381572213 4428236.064633072)
+</code></pre>
+
+      </article>
+    </main>
+    <footer class="footer">
+    <div class="container">
+      <p>
+        Copyright &copy; 2013-2023 The Apache Software Foundation, Licensed 
under the
+        <a href="http://www.apache.org/licenses/LICENSE-2.0";>Apache License, 
Version 2.0</a>.<br/>
+        Apache SIS, Apache, the Apache feather logo are trademarks of The 
Apache Software Foundation.
+      </p>
+    </div>
+</footer>
+  </div>
+</div>
+
+<script 
src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js";
+    
integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ"
 crossorigin="anonymous"></script>
+
+</body>
+</html>
diff --git a/index.xml b/index.xml
index e835b974..cefd1700 100644
--- a/index.xml
+++ b/index.xml
@@ -67,6 +67,16 @@ mvn install The JavaFX application is excluded by default 
because it depends on
   Format Capability Type of resource  CSV Read FeatureSet  ESRI ASCII Grid 
Read/write GridCoverageResource  ESRI BIL/BIQ/BSQ Read GridCoverageResource  
Folder Read/write Aggregate, FeatureSet, GridCoverageResource  (Big) GeoTIFF 
Read Aggregate, GridCoverageResource  GML (CRS only) Read/write⁽¹⁾ Resource  
GPX Read/write FeatureSet  ISO 19115 XML Read/write⁽¹⁾ Resource  Landsat Read 
Aggregate, GridCoverageResource  NetCDF Read Aggregate, FeatureSet, 
GridCoverageResource  SQL⁽²⁾ Read Aggreg [...]
     </item>
 
+    <item>
+      <title>Determine if two CRS are functionally equal</title>
+      <link>https://sis.apache.org/howto/crs_equality.html</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+      <guid>https://sis.apache.org/howto/crs_equality.html</guid>
+      <description>Two Coordinate Reference Systems may not be considered 
equal if they are associated to different metadata (name, identifiers, scope, 
domain of validity, remarks), even though they represent the same logical CRS. 
In order to test if two CRS are functionally equivalent, 
Utilities​.equals­Ignore­Metadata(myFirstCRS, mySecondCRS) can be used.
+In some cases, equals­Ignore­Metadata(…) may fail to see that two reference 
systems are equal. It may happen for example when two map projections are 
defined with different parameters, but are mathematically 
equivalent.</description>
+    </item>
+
     <item>
       <title>Frequently asked questions</title>
       <link>https://sis.apache.org/faq.html</link>
@@ -74,7 +84,7 @@ mvn install The JavaFX application is excluded by default 
because it depends on
 
       <guid>https://sis.apache.org/faq.html</guid>
       <description>This page lists some Frequently Asked Questions (FAQ) when 
using Apache SIS.
- Referencing   Getting started   How do I transform a coordinate?  Which map 
projections are supported?  What is the axis order issue and how is it 
addressed?    Coordinate Reference Systems   How do I instantiate a Universal 
Transverse Mercator (UTM) projection?  How do I instantiate a Google 
projection?  How can I identify the projection kind of a CRS?</description>
+ Referencing   Getting started   How do I get a Coordinate Reference System?  
How do I transform a coordinate?  Which map projections are supported?    
Coordinate Reference Systems   What is the Google projection?  What is the axis 
order issue and how is it addressed?  Is IdentifiedObjects.lookupEPSG(…) a 
reliable inverse of CRS.</description>
     </item>
 
     <item>
@@ -87,6 +97,15 @@ mvn install The JavaFX application is excluded by default 
because it depends on
 This example uses data in netCDF format. A netCDF file can contain an 
arbitrary amount of variables.</description>
     </item>
 
+    <item>
+      <title>Get the EPSG code or URN of an existing CRS</title>
+      <link>https://sis.apache.org/howto/lookup_crs_urn.html</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+      <guid>https://sis.apache.org/howto/lookup_crs_urn.html</guid>
+      <description>The identifier of a Coordinate Reference System (CRS) 
object can be obtained by the getIdentifiers() method, which usually return a 
collection of zero or one element. If the CRS has been created from a Well 
Known Text (WKT) parsing and the WKT ends with an 
AUTHORITY[&amp;quot;EPSG&amp;quot;, &amp;quot;xxxx&amp;quot;] (WKT version 1) 
or ID[&amp;quot;EPSG&amp;quot;, xxxx] (WKT version 2) element, then the 
identifier (an EPSG numerical code in this example) is the xxxx va [...]
+    </item>
+
     <item>
       <title>Handle rasters bigger than memory</title>
       <link>https://sis.apache.org/howto/rasters_bigger_than_memory.html</link>
@@ -105,6 +124,16 @@ This example uses data in netCDF format. A netCDF file can 
contain an arbitrary
       <description>The EPSG geodetic dataset is a de-facto standard providing 
thousands of Coordinate Reference System (CRS) definitions together with 
information about how to perform coordinate operations, their accuracies and 
their domains of validity. The EPSG dataset is owned and maintained by the 
International Association of Oil &amp;amp; Gas producers. Usage of EPSG dataset 
with Apache SIS is optional but strongly recommended: without that geodetic 
dataset, only a small subset of C [...]
     </item>
 
+    <item>
+      <title>Instantiate a UTM projection</title>
+      <link>https://sis.apache.org/howto/instantiate_utm_projection.html</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+      <guid>https://sis.apache.org/howto/instantiate_utm_projection.html</guid>
+      <description>The Universal Transverse Mercator (UTM) projection divides 
the world in 60 zones. If the UTM zone is unknown, an easy way to instantiate 
the projection is to invoke the universal(…) method on one of the CommonCRS 
predefined constants. That method receives in argument a geographic coordinate 
in (latitude, longitude) order and computes the UTM zone from it. It takes in 
account the special cases of Norway and Svalbard.
+An alternative, more standard, way using geographic coordinates is to format 
an &amp;ldquo;AUTO&amp;rdquo; authority code.</description>
+    </item>
+
     <item>
       <title>JavaFX application</title>
       <link>https://sis.apache.org/javafx.html</link>
@@ -327,5 +356,15 @@ Incompatible changes  The following changes in Apache SIS 
1.3 are incompatibles
       <description>Apache SIS implements the following standards from the Open 
Geospatial Consortium (OGC), the International Organization for Standardization 
(ISO) or the Java Community Process (JCP). The same standard is sometimes 
published jointly by both OGC and ISO organizations. Links to free versions of 
the standards are given when available. The Upgrade needed column indicates 
that a more recent version of the standard is available but that Apache SIS has 
not yet been upgraded to [...]
     </item>
 
+    <item>
+      <title>Transform coordinates</title>
+      <link>https://sis.apache.org/howto/transform_coordinates.html</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+      <guid>https://sis.apache.org/howto/transform_coordinates.html</guid>
+      <description>The following Java code projects geographic coordinates 
from the World Geodetic System 1984 (WGS84) to WGS 84 / UTM zone 33N. In order 
to make the example a little bit simpler, this code uses predefined constants 
given by the CommonCRS convenience class. But more advanced applications may 
use EPSG codes or definitions in Well-Known Text (WKT) instead.
+Note: if the result of a coordinate transformation seems wrong, see the FAQ 
page.</description>
+    </item>
+
   </channel>
 </rss>
diff --git a/sitemap.xml b/sitemap.xml
index 49111881..d78124c1 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -4,7 +4,7 @@
   <sitemap>
     <loc>https://sis.apache.org/en/sitemap.xml</loc>
 
-      <lastmod>2023-01-18T11:09:36+01:00</lastmod>
+      <lastmod>2023-01-21T00:15:54+01:00</lastmod>
 
   </sitemap>
 


Reply via email to