blob: e0984a92b0ee148da69b7c6b6c78e9284cc4bac8 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.4) on Fri Sep 20 12:10:30 CEST 2019 -->
<title>CRS (Apache SIS 1.0 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2019-09-20">
<meta name="keywords" content="org.apache.sis.referencing.CRS class">
<meta name="keywords" content="forCode()">
<meta name="keywords" content="fromWKT()">
<meta name="keywords" content="fromXML()">
<meta name="keywords" content="fromAuthority()">
<meta name="keywords" content="suggestCommonTarget()">
<meta name="keywords" content="findOperation()">
<meta name="keywords" content="findOperations()">
<meta name="keywords" content="getLinearAccuracy()">
<meta name="keywords" content="getGeographicBoundingBox()">
<meta name="keywords" content="getDomainOfValidity()">
<meta name="keywords" content="compound()">
<meta name="keywords" content="reduce()">
<meta name="keywords" content="isHorizontalCRS()">
<meta name="keywords" content="getHorizontalComponent()">
<meta name="keywords" content="getVerticalComponent()">
<meta name="keywords" content="getTemporalComponent()">
<meta name="keywords" content="getSingleComponents()">
<meta name="keywords" content="getComponentAt()">
<meta name="keywords" content="getGreenwichLongitude()">
<meta name="keywords" content="getAuthorityFactory()">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../sis.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="CRS (Apache SIS 1.0 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":41,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":9,"i20":9,"i21":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CRS.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.referencing</a></div>
<h2 title="Class CRS" class="title">Class CRS</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../util/Static.html" title="class in org.apache.sis.util">Static</a></li>
<li>
<ul class="inheritance">
<li>CRS</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public final class <span class="typeNameLabel">CRS</span>
extends <a href="../util/Static.html" title="class in org.apache.sis.util">Static</a></pre>
<div class="block">Static methods working on <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">Coordinate Reference Systems</a>.
The methods defined in this class can be grouped in three categories:
<ul>
<li>Factory methods, the most notable one being <a href="#forCode(java.lang.String)"><code>for­Code(String)</code></a>.</li>
<li>Methods providing information, like <a href="#isHorizontalCRS(org.opengis.referencing.crs.CoordinateReferenceSystem)"><code>is­Horizontal­CRS(Coordinate­Reference­System)</code></a>.</li>
<li>Finding coordinate operations between a source and a target CRS.</li>
</ul>
<div class="section">Usage example</div>
The most frequently used methods in this class are <a href="#forCode(java.lang.String)"><code>for­Code(…)</code></a>, <a href="#fromWKT(java.lang.String)"><code>from­WKT(…)</code></a>
and <a href="#findOperation(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.metadata.extent.GeographicBoundingBox)"><code>find­Operation(…)</code></a>. An usage example is like below
(see the <a href="http://sis.apache.org/tables/CoordinateReferenceSystems.html">Apache SIS™ Coordinate
Reference System (CRS) codes</a> page for the complete list of EPSG codes):
<blockquote><pre>CoordinateReferenceSystem source = CRS.<b>forCode</b>(<font color="orangered">"EPSG:4326"</font>); <i><font color="gray">// WGS 84</font></i>
CoordinateReferenceSystem target = CRS.<b>forCode</b>(<font color="orangered">"EPSG:3395"</font>); <i><font color="gray">// WGS 84 / World Mercator</font></i>
CoordinateOperation operation = CRS.<b>findOperation</b>(source, target, <font color="green">null</font>);
<font color="green">if</font> (CRS.<b>getLinearAccuracy</b>(operation) &gt; 100) {
<i><font color="gray">// If the accuracy is coarser than 100 metres (or any other threshold at application choice)</font></i>
<i><font color="gray">// maybe the operation is not suitable. Decide here what to do (throw an exception, etc).</font></i>
}
MathTransform mt = operation.<b>getMathTransform</b>();
DirectPosition position = <font color="green">new</font> <b>DirectPosition2D</b>(20, 30); <i><font color="gray">// 20°N 30°E (watch out axis order!)</font></i>
position = mt.<b>transform</b>(position, position);
System.out.<b>println</b>(position);</pre></blockquote>
<div class="section">Note on kinds of CRS</div>
The <a href="#getSingleComponents(org.opengis.referencing.crs.CoordinateReferenceSystem)"><code>get­Single­Components(Coordinate­Reference­System)</code></a> method decomposes an arbitrary CRS into a flat
list of single components. In such flat list, vertical and temporal components can easily be identified by
<code>instanceof</code> checks. But identifying the horizontal component is not as easy. The list below suggests
ways to classify the components:
<ul>
<li><code>if (crs instanceof Temporal­CRS)</code> determines if the CRS is for the temporal component.</li>
<li><code>if (crs instanceof Vertical­CRS)</code> determines if the CRS is for the vertical component.</li>
<li><code>if (CRS.<a href="#isHorizontalCRS(org.opengis.referencing.crs.CoordinateReferenceSystem)">is­Horizontal­CRS</a>(crs))</code>
determines if the CRS is for the horizontal component.</li>
</ul></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.3</dd>
<p><font size="-1">Defined in the <code>sis-referencing</code> module</font></p>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#compound(org.opengis.referencing.crs.CoordinateReferenceSystem...)">compound</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>...&nbsp;components)</code></th>
<td class="colLast">
<div class="block">Creates a compound coordinate reference system from an ordered list of CRS components.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperation.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperation</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findOperation(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.metadata.extent.GeographicBoundingBox)">findOperation</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;sourceCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;targetCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/GeographicBoundingBox.html?is-external=true" title="class or interface in org.opengis.metadata.extent" class="externalLink">GeographicBoundingBox</a>&nbsp;areaOfInterest)</code></th>
<td class="colLast">
<div class="block">Finds a mathematical operation that transforms or converts coordinates from the given source to the
given target coordinate reference system.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperation.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperation</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findOperations(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.metadata.extent.GeographicBoundingBox)">findOperations</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;sourceCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;targetCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/GeographicBoundingBox.html?is-external=true" title="class or interface in org.opengis.metadata.extent" class="externalLink">GeographicBoundingBox</a>&nbsp;areaOfInterest)</code></th>
<td class="colLast">
<div class="block">Finds mathematical operations that transform or convert coordinates from the given source to the
given target coordinate reference system.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#forCode(java.lang.String)">forCode</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;code)</code></th>
<td class="colLast">
<div class="block">Returns the Coordinate Reference System for the given authority code.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#fromAuthority(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CRSAuthorityFactory,java.util.logging.Filter)">fromAuthority</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CRSAuthorityFactory.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CRSAuthorityFactory</a>&nbsp;factory,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/logging/Filter.html?is-external=true" title="class or interface in java.util.logging" class="externalLink">Filter</a>&nbsp;warningFilter)</code></th>
<td class="colLast">
<div class="block">Replaces the given coordinate reference system by an authoritative description, if one can be found.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#fromAuthority(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CRSAuthorityFactory,org.apache.sis.util.logging.WarningListener)">fromAuthority</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CRSAuthorityFactory.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CRSAuthorityFactory</a>&nbsp;factory,
<a href="../util/logging/WarningListener.html" title="interface in org.apache.sis.util.logging">WarningListener</a>&lt;?&gt;&nbsp;listener)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment"><code>Warning­Listener</code> argument replaced by <code>java​.util​.logging​.Filter</code>.</div>
</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#fromWKT(java.lang.String)">fromWKT</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;text)</code></th>
<td class="colLast">
<div class="block">Creates a Coordinate Reference System object from a <cite>Well Known Text</cite> (WKT).</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#fromXML(java.lang.String)">fromXML</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;xml)</code></th>
<td class="colLast">
<div class="block">Creates a coordinate reference system object from a XML string.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CRSAuthorityFactory.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CRSAuthorityFactory</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getAuthorityFactory(java.lang.String)">getAuthorityFactory</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;authority)</code></th>
<td class="colLast">
<div class="block">Returns the system-wide authority factory used by <a href="#forCode(java.lang.String)"><code>for­Code(String)</code></a> and other SIS methods.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getComponentAt(org.opengis.referencing.crs.CoordinateReferenceSystem,int,int)">getComponentAt</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs,
int&nbsp;lower,
int&nbsp;upper)</code></th>
<td class="colLast">
<div class="block">Returns the coordinate reference system in the given range of dimension indices.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/Envelope.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink">Envelope</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getDomainOfValidity(org.opengis.referencing.crs.CoordinateReferenceSystem)">getDomainOfValidity</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs)</code></th>
<td class="colLast">
<div class="block">Returns the domain of validity of the specified coordinate reference system, or <code>null</code> if unknown.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/GeographicBoundingBox.html?is-external=true" title="class or interface in org.opengis.metadata.extent" class="externalLink">GeographicBoundingBox</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getGeographicBoundingBox(org.opengis.referencing.crs.CoordinateReferenceSystem)">getGeographicBoundingBox</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs)</code></th>
<td class="colLast">
<div class="block">Returns the valid geographic area for the given coordinate reference system, or <code>null</code> if unknown.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/GeographicBoundingBox.html?is-external=true" title="class or interface in org.opengis.metadata.extent" class="externalLink">GeographicBoundingBox</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getGeographicBoundingBox(org.opengis.referencing.operation.CoordinateOperation)">getGeographicBoundingBox</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperation.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperation</a>&nbsp;operation)</code></th>
<td class="colLast">
<div class="block">Returns the valid geographic area for the given coordinate operation, or <code>null</code> if unknown.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>static double</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getGreenwichLongitude(org.opengis.referencing.crs.GeodeticCRS)">getGreenwichLongitude</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeodeticCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">GeodeticCRS</a>&nbsp;crs)</code></th>
<td class="colLast">
<div class="block">Returns the Greenwich longitude of the prime meridian of the given CRS in degrees.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/SingleCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">SingleCRS</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getHorizontalComponent(org.opengis.referencing.crs.CoordinateReferenceSystem)">getHorizontalComponent</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs)</code></th>
<td class="colLast">
<div class="block">Returns the first horizontal coordinate reference system found in the given CRS, or <code>null</code> if there is
none.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>static double</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getLinearAccuracy(org.opengis.referencing.operation.CoordinateOperation)">getLinearAccuracy</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperation.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperation</a>&nbsp;operation)</code></th>
<td class="colLast">
<div class="block">Returns a positional accuracy estimation in metres for the given operation, or <code>Na­N</code> if unknown.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/SingleCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">SingleCRS</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSingleComponents(org.opengis.referencing.crs.CoordinateReferenceSystem)">getSingleComponents</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs)</code></th>
<td class="colLast">
<div class="block">Returns the ordered list of single coordinate reference systems for the specified CRS.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/TemporalCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">TemporalCRS</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTemporalComponent(org.opengis.referencing.crs.CoordinateReferenceSystem)">getTemporalComponent</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs)</code></th>
<td class="colLast">
<div class="block">Returns the first temporal coordinate reference system found in the given CRS, or <code>null</code> if there is none.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/VerticalCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">VerticalCRS</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getVerticalComponent(org.opengis.referencing.crs.CoordinateReferenceSystem,boolean)">getVerticalComponent</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs,
boolean&nbsp;allowCreateEllipsoidal)</code></th>
<td class="colLast">
<div class="block">Returns the first vertical coordinate reference system found in the given CRS, or <code>null</code> if there is none.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isHorizontalCRS(org.opengis.referencing.crs.CoordinateReferenceSystem)">isHorizontalCRS</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs)</code></th>
<td class="colLast">
<div class="block">Returns <code>true</code> if the given CRS is horizontal.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#reduce(org.opengis.referencing.crs.CoordinateReferenceSystem,int...)">reduce</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs,
int...&nbsp;dimensions)</code></th>
<td class="colLast">
<div class="block">Gets or creates a coordinate reference system with a subset of the dimensions of the given CRS.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#suggestCommonTarget(org.opengis.metadata.extent.GeographicBoundingBox,org.opengis.referencing.crs.CoordinateReferenceSystem...)">suggestCommonTarget</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/GeographicBoundingBox.html?is-external=true" title="class or interface in org.opengis.metadata.extent" class="externalLink">GeographicBoundingBox</a>&nbsp;regionOfInterest,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>...&nbsp;sourceCRS)</code></th>
<td class="colLast">
<div class="block">Suggests a coordinate reference system which could be a common target for coordinate operations having the
given sources.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">get­Class</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hash­Code</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notify­All</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">to­String</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="forCode(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>forCode</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;forCode&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;code)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/NoSuchAuthorityCodeException.html?is-external=true" title="class or interface in org.opengis.referencing" class="externalLink">NoSuchAuthorityCodeException</a>,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">FactoryException</a></pre>
<div class="block">Returns the Coordinate Reference System for the given authority code.
The set of available codes depends on the <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CRSAuthorityFactory.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink"><code>CRSAuthority­Factory</code></a> instances available on the classpath.
There is many thousands of <a href="http://sis.apache.org/tables/CoordinateReferenceSystems.html">CRS
defined by EPSG authority or by other authorities</a>.
The following table lists a very small subset of codes which are guaranteed to be available
on any installation of Apache SIS:
<blockquote><table class="sis">
<caption>Minimal set of supported authority codes</caption>
<tr><th>Code</th> <th>Enum</th> <th>CRS Type</th> <th>Description</th></tr>
<tr><td>CRS:27</td> <td><a href="CommonCRS.html#NAD27"><code>NAD27</code></a></td> <td>Geographic</td> <td>Like EPSG:4267 except for (<var>longitude</var>, <var>latitude</var>) axis order</td></tr>
<tr><td>CRS:83</td> <td><a href="CommonCRS.html#NAD83"><code>NAD83</code></a></td> <td>Geographic</td> <td>Like EPSG:4269 except for (<var>longitude</var>, <var>latitude</var>) axis order</td></tr>
<tr><td>CRS:84</td> <td><a href="CommonCRS.html#WGS84"><code>WGS84</code></a></td> <td>Geographic</td> <td>Like EPSG:4326 except for (<var>longitude</var>, <var>latitude</var>) axis order</td></tr>
<tr><td>EPSG:4047</td> <td><a href="CommonCRS.html#SPHERE"><code>SPHERE</code></a></td> <td>Geographic</td> <td>GRS 1980 Authalic Sphere</td></tr>
<tr><td>EPSG:4230</td> <td><a href="CommonCRS.html#ED50"><code>ED50</code></a></td> <td>Geographic</td> <td>European Datum 1950</td></tr>
<tr><td>EPSG:4258</td> <td><a href="CommonCRS.html#ETRS89"><code>ETRS89</code></a></td> <td>Geographic</td> <td>European Terrestrial Reference Frame 1989</td></tr>
<tr><td>EPSG:4267</td> <td><a href="CommonCRS.html#NAD27"><code>NAD27</code></a></td> <td>Geographic</td> <td>North American Datum 1927</td></tr>
<tr><td>EPSG:4269</td> <td><a href="CommonCRS.html#NAD83"><code>NAD83</code></a></td> <td>Geographic</td> <td>North American Datum 1983</td></tr>
<tr><td>EPSG:4322</td> <td><a href="CommonCRS.html#WGS72"><code>WGS72</code></a></td> <td>Geographic</td> <td>World Geodetic System 1972</td></tr>
<tr><td>EPSG:4326</td> <td><a href="CommonCRS.html#WGS84"><code>WGS84</code></a></td> <td>Geographic</td> <td>World Geodetic System 1984</td></tr>
<tr><td>EPSG:4936</td> <td><a href="CommonCRS.html#ETRS89"><code>ETRS89</code></a></td> <td>Geocentric</td> <td>European Terrestrial Reference Frame 1989</td></tr>
<tr><td>EPSG:4937</td> <td><a href="CommonCRS.html#ETRS89"><code>ETRS89</code></a></td> <td>Geographic 3D</td> <td>European Terrestrial Reference Frame 1989</td></tr>
<tr><td>EPSG:4978</td> <td><a href="CommonCRS.html#WGS84"><code>WGS84</code></a></td> <td>Geocentric</td> <td>World Geodetic System 1984</td></tr>
<tr><td>EPSG:4979</td> <td><a href="CommonCRS.html#WGS84"><code>WGS84</code></a></td> <td>Geographic 3D</td> <td>World Geodetic System 1984</td></tr>
<tr><td>EPSG:4984</td> <td><a href="CommonCRS.html#WGS72"><code>WGS72</code></a></td> <td>Geocentric</td> <td>World Geodetic System 1972</td></tr>
<tr><td>EPSG:4985</td> <td><a href="CommonCRS.html#WGS72"><code>WGS72</code></a></td> <td>Geographic 3D</td> <td>World Geodetic System 1972</td></tr>
<tr><td>EPSG:5041</td> <td><a href="CommonCRS.html#WGS84"><code>WGS84</code></a></td> <td>Projected</td> <td>WGS 84 / UPS North (E,N)</td></tr>
<tr><td>EPSG:5042</td> <td><a href="CommonCRS.html#WGS84"><code>WGS84</code></a></td> <td>Projected</td> <td>WGS 84 / UPS South (E,N)</td></tr>
<tr><td>EPSG:322##</td><td><a href="CommonCRS.html#WGS72"><code>WGS72</code></a></td> <td>Projected</td> <td>WGS 72 / UTM zone ##N</td></tr>
<tr><td>EPSG:323##</td><td><a href="CommonCRS.html#WGS72"><code>WGS72</code></a></td> <td>Projected</td> <td>WGS 72 / UTM zone ##S</td></tr>
<tr><td>EPSG:326##</td><td><a href="CommonCRS.html#WGS84"><code>WGS84</code></a></td> <td>Projected</td> <td>WGS 84 / UTM zone ##N</td></tr>
<tr><td>EPSG:327##</td><td><a href="CommonCRS.html#WGS84"><code>WGS84</code></a></td> <td>Projected</td> <td>WGS 84 / UTM zone ##S</td></tr>
<tr><td>EPSG:5715</td> <td><a href="CommonCRS.Vertical.html#DEPTH"><code>DEPTH</code></a></td> <td>Vertical</td> <td>Mean Sea Level depth</td></tr>
<tr><td>EPSG:5714</td> <td><a href="CommonCRS.Vertical.html#MEAN_SEA_LEVEL"><code>MEAN_SEA_LEVEL</code></a></td> <td>Vertical</td> <td>Mean Sea Level height</td></tr>
</table></blockquote>
This method accepts also the URN and URL syntaxes.
For example the following codes are considered equivalent to <code>"EPSG:4326"</code>:
<ul>
<li><code>"EPSG::4326"</code></li>
<li><code>"urn:ogc:def:crs:EPSG::4326"</code></li>
<li><code>"http://www​.opengis​.net/def/crs/epsg/0/4326"</code></li>
<li><code>"http://www​.opengis​.net/gml/srs/epsg​.xml#4326"</code></li>
</ul>
URIs can be combined for creating larger objects. For example the following URIs combine a
two-dimensional WGS84 reference system (EPSG:4326) with a Mean Sea Level height (EPSG:5714).
The result is a three-dimensional <a href="crs/DefaultCompoundCRS.html" title="class in org.apache.sis.referencing.crs">compound coordinate reference system</a>:
<ul>
<li><code>"urn:ogc:def:crs,crs:EPSG::4326,crs:EPSG::5714"</code></li>
<li><code>"http://www​.opengis​.net/def/crs-compound?<br>
1=http://www​.opengis​.net/def/crs/epsg/0/4326&amp;<br>
2=http://www​.opengis​.net/def/crs/epsg/0/5714"</code></li>
</ul>
<p>URNs (but not URLs) can also combine a
<a href="datum/DefaultGeodeticDatum.html" title="class in org.apache.sis.referencing.datum">geodetic datum</a> with an
<a href="cs/DefaultEllipsoidalCS.html" title="class in org.apache.sis.referencing.cs">ellipsoidal coordinate system</a> for creating a new
<a href="crs/DefaultGeographicCRS.html" title="class in org.apache.sis.referencing.crs">geographic CRS</a>, or a base geographic CRS with a
<a href="operation/DefaultConversion.html" title="class in org.apache.sis.referencing.operation">conversion</a> and a
<a href="cs/DefaultCartesianCS.html" title="class in org.apache.sis.referencing.cs">Cartesian coordinate system</a> for creating a new
<a href="crs/DefaultProjectedCRS.html" title="class in org.apache.sis.referencing.crs">projected coordinate reference system</a>.</p>
Note that the <a href="IdentifiedObjects.html#lookupURN(org.opengis.referencing.IdentifiedObject,org.opengis.metadata.citation.Citation)"><code>Identified­Objects​.lookup­URN(Identified­Object, Citation)</code></a>
method can be seen as a converse of this method.
More codes may also be supported depending on which extension modules are available.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>code</code> - the authority code.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the Coordinate Reference System for the given authority code.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/NoSuchAuthorityCodeException.html?is-external=true" title="class or interface in org.opengis.referencing" class="externalLink">No­Such­Authority­Code­Exception</a></code> - if there is no known CRS associated to the given code.</dd>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">Factory­Exception</a></code> - if the CRS creation failed for an other reason.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#getAuthorityFactory(java.lang.String)"><code>get­Authority­Factory(String)</code></a>,
<a href="factory/GeodeticAuthorityFactory.html" title="class in org.apache.sis.referencing.factory"><code>Geodetic­Authority­Factory</code></a>,
<a href="http://epsg-registry.org/">EPSG Geodetic Registry</a></dd>
</dl>
</li>
</ul>
<a id="fromWKT(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fromWKT</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;fromWKT&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;text)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">FactoryException</a></pre>
<div class="block">Creates a Coordinate Reference System object from a <cite>Well Known Text</cite> (WKT).
The default <a href="../io/wkt/package-summary.html">Apache SIS parser</a> understands both
version 1 (a.k.a. OGC 01-009) and version 2 (a.k.a. ISO 19162) of the WKT format.
<div class="note"><b>Example:</b> below is a slightly simplified WKT 2 string for a Mercator projection.
For making this example smaller, some optional <code>UNIT[…]</code> and <code>ORDER[…]</code> elements have been omitted.
<blockquote><pre>ProjectedCRS["SIRGAS 2000 / Brazil Mercator",
BaseGeodCRS["SIRGAS 2000",
Datum["Sistema de Referencia Geocentrico para las Americas 2000",
Ellipsoid["GRS 1980", 6378137, 298.257222101]]],
Conversion["Petrobras Mercator",
Method["Mercator (variant B)", Id["EPSG",9805]],
Parameter["Latitude of 1st standard parallel", -2],
Parameter["Longitude of natural origin", -43],
Parameter["False easting", 5000000],
Parameter["False northing", 10000000]],
CS[cartesian,2],
Axis["easting (E)", east],
Axis["northing (N)", north],
LengthUnit["metre", 1],
Id["EPSG",5641]]</pre></blockquote>
</div>
If the parsing produced warnings, they will be reported in a logger named <code>"org​.apache​.sis​.io​.wkt"</code>.
In particular, this method verifies if the description provided by the WKT matches the description provided
by the authority (<code>"EPSG:5641"</code> in above example) and reports discrepancies.
Note that this comparison between parsed CRS and authoritative CRS is specific to this convenience method;
other APIs documented in <cite>see also</cite> section do not perform this comparison automatically.
Should the WKT description and the authoritative description be in conflict, the WKT description prevails
as mandated by ISO 19162 standard (see <a href="#fromAuthority(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CRSAuthorityFactory,java.util.logging.Filter)"><code>from­Authority(…)</code></a> if a different behavior is needed).
<div class="section">Usage and performance considerations</div>
This convenience method delegates to
<a href="factory/GeodeticObjectFactory.html#createFromWKT(java.lang.String)"><code>Geodetic­Object­Factory​.create­From­WKT(String)</code></a>
using a default factory instance. This is okay for occasional use, but has the following limitations:
<ul>
<li>Performance may be sub-optimal in a multi-thread environment.</li>
<li>No control on the WKT <a href="../io/wkt/Convention.html" title="enum in org.apache.sis.io.wkt">conventions</a> in use.</li>
<li>No control on the handling of <a href="../io/wkt/Warnings.html" title="class in org.apache.sis.io.wkt">warnings</a>.</li>
</ul>
Applications which need to parse a large amount of WKT strings should consider to use
the <a href="../io/wkt/WKTFormat.html" title="class in org.apache.sis.io.wkt"><code>WKTFormat</code></a> class instead than this method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>text</code> - coordinate system encoded in Well-Known Text format (version 1 or 2).</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the parsed Coordinate Reference System.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">Factory­Exception</a></code> - if the given WKT can not be parsed.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.6</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../io/wkt/WKTFormat.html" title="class in org.apache.sis.io.wkt"><code>WKTFormat</code></a>,
<a href="factory/GeodeticObjectFactory.html#createFromWKT(java.lang.String)"><code>Geodetic­Object­Factory​.create­From­WKT(String)</code></a>,
<a href="../geometry/Envelopes.html#fromWKT(java.lang.CharSequence)"><code>Envelopes​.from­WKT(Char­Sequence)</code></a>,
<a href="http://docs.opengeospatial.org/is/12-063r5/12-063r5.html">WKT 2 specification</a></dd>
</dl>
</li>
</ul>
<a id="fromXML(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fromXML</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;fromXML&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;xml)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">FactoryException</a></pre>
<div class="block">Creates a coordinate reference system object from a XML string.
Note that the given argument is the XML document itself, <strong>not</strong> a URL to a XML document.
For reading XML documents from readers or input streams,
see static methods in the <a href="../xml/XML.html" title="class in org.apache.sis.xml"><code>XML</code></a> class.
<p>If the unmarshalling produced warnings, they will be reported in a logger named <code>"org​.apache​.sis​.xml"</code>.
In particular, this method verifies if the description provided by the XML matches the description provided by
the authority code given in <code>&lt;gml:identifier&gt;</code> element, and reports discrepancies.
Note that this comparison between unmarshalled CRS and authoritative CRS is specific to this convenience method;
other APIs documented in <cite>see also</cite> section do not perform this comparison automatically.
Should the XML description and the authoritative description be in conflict, the XML description prevails
(see <a href="#fromAuthority(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CRSAuthorityFactory,java.util.logging.Filter)"><code>from­Authority(…)</code></a> if a different behavior is needed).</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>xml</code> - coordinate reference system encoded in XML format.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the unmarshalled Coordinate Reference System.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">Factory­Exception</a></code> - if the object creation failed.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.7</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="factory/GeodeticObjectFactory.html#createFromXML(java.lang.String)"><code>Geodetic­Object­Factory​.create­From­XML(String)</code></a>,
<a href="../xml/XML.html#unmarshal(java.lang.String)"><code>XML​.unmarshal(String)</code></a></dd>
</dl>
</li>
</ul>
<a id="fromAuthority(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CRSAuthorityFactory,java.util.logging.Filter)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fromAuthority</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;fromAuthority&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CRSAuthorityFactory.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CRSAuthorityFactory</a>&nbsp;factory,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/logging/Filter.html?is-external=true" title="class or interface in java.util.logging" class="externalLink">Filter</a>&nbsp;warningFilter)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">FactoryException</a></pre>
<div class="block">Replaces the given coordinate reference system by an authoritative description, if one can be found.
This method can be invoked after constructing a CRS in a context where the EPSG (or other authority)
code is suspected more reliable than the rest of the description. A common case is a <cite>Well Known
Text</cite> (WKT) string declaring wrong projection method or parameter values for the EPSG code that
it pretends to describe. For example:
<blockquote>
<code>PROJCS["WGS 84 / Pseudo-Mercator",</code><br>
<code>  </code>(…base CRS omitted for brevity…)<br>
<code>  PROJECTION["Mercator (variant A)"],</code> — <em><b>wrong:</b> shall be "Popular Visualisation Pseudo Mercator"</em><br>
<code>  </code>(…parameters and axes omitted for brevity…)<br>
<code>  AUTHORITY["EPSG", "3857"]]</code>
</blockquote>
In such cases, Apache SIS behavior in <a href="#fromWKT(java.lang.String)"><code>from­WKT(String)</code></a>, <a href="#fromXML(java.lang.String)"><code>from­XML(String)</code></a> and other methods is
conform to the <a href="http://docs.opengeospatial.org/is/12-063r5/12-063r5.html">ISO 19162 specification</a>:
<blockquote><cite>"Should any attributes or values given in the cited identifier be in conflict with attributes
or values given explicitly in the WKT description, the WKT values shall prevail."</cite></blockquote>
In situations where the opposite behavior is desired (i.e. to make the authority identifier prevails),
this method can be invoked. This method performs the following actions:
<ul>
<li>If the given CRS has an <a href="AbstractIdentifiedObject.html#getIdentifiers()">identifier</a> and if the authority factory can
<a href="factory/GeodeticAuthorityFactory.html#createCoordinateReferenceSystem(java.lang.String)">create a CRS</a>
for that identifier, then:
<ul>
<li>If the CRS defined by the authority is <a href="../util/Utilities.html#equalsIgnoreMetadata(java.lang.Object,java.lang.Object)">equal, ignoring metadata</a>,
to the given CRS, then this method returns silently the <em>authoritative</em> CRS.</li>
<li>Otherwise if the CRS defined by the authority is equal, ignoring axis order and units, to the given CRS,
then this method returns a <em>new</em> CRS derived from the authoritative one but with same
<a href="cs/AxesConvention.html" title="enum in org.apache.sis.referencing.cs">axes convention</a> than the given CRS.
A warning is emitted.</li>
<li>Otherwise this method discards the given CRS and returns the <em>authoritative</em> CRS.
A warning is emitted with a message indicating where a difference has been found.</li>
</ul>
</li>
<li>Otherwise if the given CRS does not have identifier, then this method
<a href="factory/IdentifiedObjectFinder.html" title="class in org.apache.sis.referencing.factory">searches for an equivalent CRS</a>
defined by the authority factory. If such CRS is found, then:
<ul>
<li>If the CRS defined by the authority is <a href="../util/Utilities.html#equalsIgnoreMetadata(java.lang.Object,java.lang.Object)">equal, ignoring metadata</a>,
to the given CRS, then this method returns silently the <em>authoritative</em> CRS.</li>
<li>Otherwise if the CRS defined by the authority is equal, ignoring axis order and units, to the given CRS,
then this method returns silently a <em>new</em> CRS derived from the authoritative one but with same
<a href="cs/AxesConvention.html" title="enum in org.apache.sis.referencing.cs">axes convention</a> than the given CRS.</li>
</ul>
</li>
<li>Otherwise this method silently returns the given CRS as-is.</li>
</ul>
<div class="section">Avoiding warning redundancies</div>
The warnings logged by this method are redundant with warnings logged by other methods in this class,
in particular <a href="#fromWKT(java.lang.String)"><code>from­WKT(String)</code></a> and <a href="#fromXML(java.lang.String)"><code>from­XML(String)</code></a> methods. For avoiding this annoyance,
a <code>null</code> value for the <code>warning­Filter</code> argument means to shut off those redundant loggings.
A non-null <code>warning­Filter</code> argument is more useful for CRS parsed by methods outside this class,
for example <a href="../io/wkt/WKTFormat.html" title="class in org.apache.sis.io.wkt"><code>WKTFormat</code></a> or <a href="../xml/XML.html#unmarshal(java.lang.String)"><code>XML​.unmarshal(String)</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>crs</code> - the CRS to replace by an authoritative CRS, or <code>null</code>.</dd>
<dd><code>factory</code> - the factory where to search for authoritative definitions, or <code>null</code> for the default.</dd>
<dd><code>warning­Filter</code> - whether to log warnings, or <code>null</code> for the default behavior (which is to filter out
the warnings that are redundant with warnings emitted by other methods in this class).</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the suggested CRS to use (may be the <code>crs</code> argument itself), or <code>null</code> if the given CRS was null.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">Factory­Exception</a></code> - if an error occurred while querying the authority factory.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a id="fromAuthority(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CRSAuthorityFactory,org.apache.sis.util.logging.WarningListener)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fromAuthority</h4>
<pre class="methodSignature"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang" class="externalLink">@Deprecated</a>
public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;fromAuthority&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CRSAuthorityFactory.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CRSAuthorityFactory</a>&nbsp;factory,
<a href="../util/logging/WarningListener.html" title="interface in org.apache.sis.util.logging">WarningListener</a>&lt;?&gt;&nbsp;listener)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">FactoryException</a></pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment"><code>Warning­Listener</code> argument replaced by <code>java​.util​.logging​.Filter</code>.</div>
</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">Factory­Exception</a></code></dd>
</dl>
</li>
</ul>
<a id="suggestCommonTarget(org.opengis.metadata.extent.GeographicBoundingBox,org.opengis.referencing.crs.CoordinateReferenceSystem...)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>suggestCommonTarget</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;suggestCommonTarget&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/GeographicBoundingBox.html?is-external=true" title="class or interface in org.opengis.metadata.extent" class="externalLink">GeographicBoundingBox</a>&nbsp;regionOfInterest,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>...&nbsp;sourceCRS)</pre>
<div class="block">Suggests a coordinate reference system which could be a common target for coordinate operations having the
given sources. This method compares the <a href="#getGeographicBoundingBox(org.opengis.referencing.crs.CoordinateReferenceSystem)">domain of validity</a> of all given CRSs. If a CRS has a domain of validity that contains the domain of all other
CRS, than that CRS is returned. Otherwise this method verifies if a <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeneralDerivedCRS.html?is-external=true#getBaseCRS()" title="class or interface in org.opengis.referencing.crs" class="externalLink">base CRS</a> (usually a <a href="crs/DefaultGeographicCRS.html" title="class in org.apache.sis.referencing.crs">geographic CRS</a> instance)
would be suitable. If no suitable CRS is found, then this method returns <code>null</code>.
<div class="note"><b>Use case:</b>
before to test if two arbitrary envelopes <a href="../geometry/AbstractEnvelope.html#intersects(org.opengis.geometry.Envelope)">intersect</a> each other,
they need to be <a href="../geometry/Envelopes.html#transform(org.opengis.geometry.Envelope,org.opengis.referencing.crs.CoordinateReferenceSystem)">transformed</a> in the same CRS.
However if one CRS is a Transverse Mercator projection while the other CRS is a world-wide geographic CRS, then
attempts to use the Transverse Mercator projection as the common CRS is likely to fail since the geographic envelope
may span an area far outside the projection domain of validity. This <code>suggest­Common­Target(…)</code> method can used
for choosing a common CRS which is less likely to fail.</div></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>region­Of­Interest</code> - the geographic area for which the coordinate operations will be applied,
or <code>null</code> if unknown. Will be intersected with CRS domains of validity.</dd>
<dd><code>source­CRS</code> - the coordinate reference systems for which a common target CRS is desired.
May contain <code>null</code> elements, in which case this method returns <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a CRS that may be used as a common target for all the given source CRS in the given region of interest,
or <code>null</code> if this method did not find a common target CRS. The returned CRS may be different than
all given CRS.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.8</dd>
</dl>
</li>
</ul>
<a id="findOperation(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.metadata.extent.GeographicBoundingBox)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findOperation</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperation.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperation</a>&nbsp;findOperation&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;sourceCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;targetCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/GeographicBoundingBox.html?is-external=true" title="class or interface in org.opengis.metadata.extent" class="externalLink">GeographicBoundingBox</a>&nbsp;areaOfInterest)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">FactoryException</a></pre>
<div class="block">Finds a mathematical operation that transforms or converts coordinates from the given source to the
given target coordinate reference system. If an estimation of the geographic area containing the points
to transform is known, it can be specified for helping this method to find a better suited operation.
If no area of interest is specified, then the current default is the widest
<a href="operation/AbstractCoordinateOperation.html#getDomainOfValidity()">domain of validity</a>.
A future Apache SIS version may also take the country of current locale in account.
<div class="note"><b>Note:</b>
the area of interest is just one aspect that may affect the coordinate operation.
Other aspects are the time of interest (because some coordinate operations take in account the
plate tectonics movement) or the desired accuracy. For more control on the coordinate operation
to create, see <a href="operation/CoordinateOperationContext.html" title="class in org.apache.sis.referencing.operation"><code>Coordinate­Operation­Context</code></a>.</div>
After the caller received a <code>Coordinate­Operation</code> instance, the following methods can be invoked
for checking if the operation suits the caller's needs:
<ul>
<li><a href="#getGeographicBoundingBox(org.opengis.referencing.operation.CoordinateOperation)"><code>get­Geographic­Bounding­Box(Coordinate­Operation)</code></a>
for checking if the operation is valid in the caller's area of interest.</li>
<li><a href="#getLinearAccuracy(org.opengis.referencing.operation.CoordinateOperation)"><code>get­Linear­Accuracy(Coordinate­Operation)</code></a>
for checking if the operation has sufficient accuracy for caller's purpose.</li>
</ul>
If the source and target CRS are equivalent, then this method returns an operation backed by an
<a href="operation/transform/AbstractMathTransform.html#isIdentity()">identity</a>
transform. If there is no known operation between the given pair of CRS, then this method throws an
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/OperationNotFoundException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink"><code>Operation­Not­Found­Exception</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source­CRS</code> - the CRS of source coordinates.</dd>
<dd><code>target­CRS</code> - the CRS of target coordinates.</dd>
<dd><code>area­Of­Interest</code> - the area of interest, or <code>null</code> if none.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the mathematical operation from <code>source­CRS</code> to <code>target­CRS</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/OperationNotFoundException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Operation­Not­Found­Exception</a></code> - if no operation was found between the given pair of CRS.</dd>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">Factory­Exception</a></code> - if the operation can not be created for another reason.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.7</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../geometry/Envelopes.html#findOperation(org.opengis.geometry.Envelope,org.opengis.geometry.Envelope)"><code>Envelopes​.find­Operation(Envelope, Envelope)</code></a>,
<a href="operation/DefaultCoordinateOperationFactory.html#createOperation(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.apache.sis.referencing.operation.CoordinateOperationContext)"><code>Default­Coordinate­Operation­Factory​.create­Operation(Coordinate­Reference­System, Coordinate­Reference­System, Coordinate­Operation­Context)</code></a></dd>
</dl>
</li>
</ul>
<a id="findOperations(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.metadata.extent.GeographicBoundingBox)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findOperations</h4>
<pre class="methodSignature">public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperation.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperation</a>&gt;&nbsp;findOperations&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;sourceCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;targetCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/GeographicBoundingBox.html?is-external=true" title="class or interface in org.opengis.metadata.extent" class="externalLink">GeographicBoundingBox</a>&nbsp;areaOfInterest)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">FactoryException</a></pre>
<div class="block">Finds mathematical operations that transform or convert coordinates from the given source to the
given target coordinate reference system. If at least one operation exists, they are returned in
preference order: the operation having the widest intersection between its
<a href="operation/AbstractCoordinateOperation.html#getDomainOfValidity()">domain of validity</a>
and the given area of interest are returned first.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source­CRS</code> - the CRS of source coordinates.</dd>
<dd><code>target­CRS</code> - the CRS of target coordinates.</dd>
<dd><code>area­Of­Interest</code> - the area of interest, or <code>null</code> if none.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>mathematical operations from <code>source­CRS</code> to <code>target­CRS</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/OperationNotFoundException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Operation­Not­Found­Exception</a></code> - if no operation was found between the given pair of CRS.</dd>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">Factory­Exception</a></code> - if the operation can not be created for another reason.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="operation/DefaultCoordinateOperationFactory.html#createOperations(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.apache.sis.referencing.operation.CoordinateOperationContext)"><code>Default­Coordinate­Operation­Factory​.create­Operations(Coordinate­Reference­System, Coordinate­Reference­System, Coordinate­Operation­Context)</code></a></dd>
</dl>
</li>
</ul>
<a id="getLinearAccuracy(org.opengis.referencing.operation.CoordinateOperation)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLinearAccuracy</h4>
<pre class="methodSignature">public static&nbsp;double&nbsp;getLinearAccuracy&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperation.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperation</a>&nbsp;operation)</pre>
<div class="block">Returns a positional accuracy estimation in metres for the given operation, or <code>Na­N</code> if unknown.
This method applies the following heuristics:
<ul>
<li>If the given operation is an instance of <a href="operation/AbstractCoordinateOperation.html" title="class in org.apache.sis.referencing.operation"><code>Abstract­Coordinate­Operation</code></a>, then delegate to the
operation <a href="operation/AbstractCoordinateOperation.html#getLinearAccuracy()"><code>get­Linear­Accuracy()</code></a> method.</li>
<li>Otherwise if at least one <a href="../metadata/iso/quality/DefaultQuantitativeResult.html" title="class in org.apache.sis.metadata.iso.quality">quantitative result</a> is found with a linear unit, then return the largest value converted to metres.</li>
<li>Otherwise if the operation is a <a href="operation/DefaultConversion.html" title="class in org.apache.sis.referencing.operation">conversion</a>, then returns 0 since a conversion is by definition accurate up to rounding errors.</li>
<li>Otherwise if the operation is a <a href="operation/DefaultTransformation.html" title="class in org.apache.sis.referencing.operation">transformation</a>, then the returned value depends on whether the datum shift were applied with the help
of Bursa-Wolf parameters of not.</li>
</ul>
See <a href="operation/AbstractCoordinateOperation.html#getLinearAccuracy()"><code>Abstract­Coordinate­Operation​.get­Linear­Accuracy()</code></a> for more details on the above heuristic rules.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>operation</code> - the coordinate operation for which to get the accuracy estimation, or <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the accuracy estimation (always in meters), or NaN if unknown.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.7</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#findOperation(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.metadata.extent.GeographicBoundingBox)"><code>find­Operation(Coordinate­Reference­System, Coordinate­Reference­System, Geographic­Bounding­Box)</code></a></dd>
</dl>
</li>
</ul>
<a id="getGeographicBoundingBox(org.opengis.referencing.operation.CoordinateOperation)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getGeographicBoundingBox</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/GeographicBoundingBox.html?is-external=true" title="class or interface in org.opengis.metadata.extent" class="externalLink">GeographicBoundingBox</a>&nbsp;getGeographicBoundingBox&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperation.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperation</a>&nbsp;operation)</pre>
<div class="block">Returns the valid geographic area for the given coordinate operation, or <code>null</code> if unknown.
This method explores the <a href="operation/AbstractCoordinateOperation.html#getDomainOfValidity()">domain of validity</a>
associated with the given operation. If more than one geographic bounding box is found, then this method
computes their <a href="../metadata/iso/extent/DefaultGeographicBoundingBox.html#add(org.opengis.metadata.extent.GeographicBoundingBox)">union</a>.
<p><b>Fallback:</b> if the given operation does not declare explicitly a domain of validity, then this
method computes the intersection of the domain of validity declared by source and target CRS. If no CRS
declare a domain of validity, then this method returns <code>null</code>.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>operation</code> - the coordinate operation for which to get the domain of validity, or <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the geographic area where the operation is valid, or <code>null</code> if unspecified.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.7</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#findOperation(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.metadata.extent.GeographicBoundingBox)"><code>find­Operation(Coordinate­Reference­System, Coordinate­Reference­System, Geographic­Bounding­Box)</code></a>,
<a href="../metadata/iso/extent/Extents.html#getGeographicBoundingBox(org.opengis.metadata.extent.Extent)"><code>Extents​.get­Geographic­Bounding­Box(Extent)</code></a></dd>
</dl>
</li>
</ul>
<a id="getGeographicBoundingBox(org.opengis.referencing.crs.CoordinateReferenceSystem)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getGeographicBoundingBox</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/GeographicBoundingBox.html?is-external=true" title="class or interface in org.opengis.metadata.extent" class="externalLink">GeographicBoundingBox</a>&nbsp;getGeographicBoundingBox&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs)</pre>
<div class="block">Returns the valid geographic area for the given coordinate reference system, or <code>null</code> if unknown.
This method explores the <a href="AbstractReferenceSystem.html#getDomainOfValidity()">domain of
validity</a> associated with the given CRS. If more than one geographic bounding box is found, then this method
computes their <a href="../metadata/iso/extent/DefaultGeographicBoundingBox.html#add(org.opengis.metadata.extent.GeographicBoundingBox)">union</a>.
together.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>crs</code> - the coordinate reference system for which to get the domain of validity, or <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the geographic area where the coordinate reference system is valid, or <code>null</code> if unspecified.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#getDomainOfValidity(org.opengis.referencing.crs.CoordinateReferenceSystem)"><code>get­Domain­Of­Validity(Coordinate­Reference­System)</code></a>,
<a href="../metadata/iso/extent/Extents.html#getGeographicBoundingBox(org.opengis.metadata.extent.Extent)"><code>Extents​.get­Geographic­Bounding­Box(Extent)</code></a></dd>
</dl>
</li>
</ul>
<a id="getDomainOfValidity(org.opengis.referencing.crs.CoordinateReferenceSystem)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDomainOfValidity</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/Envelope.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink">Envelope</a>&nbsp;getDomainOfValidity&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs)</pre>
<div class="block">Returns the domain of validity of the specified coordinate reference system, or <code>null</code> if unknown.
If non-null, then the returned envelope will use the same coordinate reference system them the given CRS
argument.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>crs</code> - the coordinate reference system, or <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the envelope with coordinates in the given CRS, or <code>null</code> if none.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.8</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#getGeographicBoundingBox(org.opengis.referencing.crs.CoordinateReferenceSystem)"><code>get­Geographic­Bounding­Box(Coordinate­Reference­System)</code></a></dd>
</dl>
</li>
</ul>
<a id="compound(org.opengis.referencing.crs.CoordinateReferenceSystem...)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>compound</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;compound&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>...&nbsp;components)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">FactoryException</a></pre>
<div class="block">Creates a compound coordinate reference system from an ordered list of CRS components.
A CRS is inferred from the given components and the domain of validity is set to the
<a href="../metadata/iso/extent/DefaultExtent.html#intersect(org.opengis.metadata.extent.Extent)">intersection</a>
of the domain of validity of all components.
<div class="section">Ellipsoidal height</div>
If a two-dimensional geographic or projected CRS if followed or preceded by a vertical CRS with ellipsoidal
<a href="datum/DefaultVerticalDatum.html#getVerticalDatumType()">datum type</a>, then
this method combines them in a single three-dimensional geographic or projected CRS. Note that standalone
ellipsoidal heights are not allowed according ISO 19111. But if such situation is nevertheless found, then
the action described here fixes the issue. This is the reverse of <code><a href="#getVerticalComponent(org.opengis.referencing.crs.CoordinateReferenceSystem,boolean)">get­Vertical­Component</a>(crs, true)</code>.
<div class="section">Components order</div>
Apache SIS is permissive on the order of components that can be used in a compound CRS.
However for better inter-operability, users are encouraged to follow the order mandated by ISO 19162:
<ol>
<li>A mandatory horizontal CRS (only one of two-dimensional <code>Geographic­CRS</code> or <code>Projected­CRS</code> or <code>Engineering­CRS</code>).</li>
<li>Optionally followed by a <code>Vertical­CRS</code> or a <code>Parametric­CRS</code> (but not both).</li>
<li>Optionally followed by a <code>Temporal­CRS</code>.</li>
</ol></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>components</code> - the sequence of coordinate reference systems making the compound CRS.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the compound CRS, or <code>components[0]</code> if the given array contains only one component.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang" class="externalLink">Illegal­Argument­Exception</a></code> - if the given array is empty or if the array contains incompatible components.</dd>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">Factory­Exception</a></code> - if the geodetic factory failed to create the compound CRS.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.8</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="crs/DefaultCompoundCRS.html" title="class in org.apache.sis.referencing.crs"><code>Default­Compound­CRS</code></a>,
<a href="factory/GeodeticObjectFactory.html#createCompoundCRS(java.util.Map,org.opengis.referencing.crs.CoordinateReferenceSystem...)"><code>Geodetic­Object­Factory​.create­Compound­CRS(Map, Coordinate­Reference­System...)</code></a>,
<a href="../geometry/Envelopes.html#compound(org.opengis.geometry.Envelope...)"><code>Envelopes​.compound(Envelope...)</code></a>,
<a href="operation/transform/MathTransforms.html#compound(org.opengis.referencing.operation.MathTransform...)"><code>Math­Transforms​.compound(Math­Transform...)</code></a></dd>
</dl>
</li>
</ul>
<a id="reduce(org.opengis.referencing.crs.CoordinateReferenceSystem,int...)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reduce</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;reduce&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs,
int...&nbsp;dimensions)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">FactoryException</a></pre>
<div class="block">Gets or creates a coordinate reference system with a subset of the dimensions of the given CRS.
This method can be used for dimensionality reduction, but not for changing axis order.
The specified dimensions are used as if they were in strictly increasing order without duplicated values.
<div class="section">Ellipsoidal height</div>
This method can transform a three-dimensional geographic CRS into a two-dimensional geographic CRS.
In this aspect, this method is the converse of <a href="#compound(org.opengis.referencing.crs.CoordinateReferenceSystem...)"><code>compound(Coordinate­Reference­System...)</code></a>.
This method can also extract the <a href="CommonCRS.Vertical.html#ELLIPSOIDAL">ellipsoidal height</a>
from a three-dimensional geographic CRS, but this is generally not recommended since ellipsoidal
heights make little sense without their (<var>latitude</var>, <var>longitude</var>) locations.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>crs</code> - the CRS to reduce the dimensionality, or <code>null</code> if none.</dd>
<dd><code>dimensions</code> - the dimensions to retain. The dimensions will be taken in increasing order, ignoring duplicated values.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a coordinate reference system for the given dimensions. May be the given <code>crs</code>, which may be <code>null</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang" class="externalLink">Illegal­Argument­Exception</a></code> - if the given array is empty or if the array contains invalid indices.</dd>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">Factory­Exception</a></code> - if the geodetic factory failed to create a compound CRS.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#getComponentAt(org.opengis.referencing.crs.CoordinateReferenceSystem,int,int)"><code>get­Component­At(Coordinate­Reference­System, int, int)</code></a>,
<a href="#compound(org.opengis.referencing.crs.CoordinateReferenceSystem...)"><code>compound(Coordinate­Reference­System...)</code></a></dd>
</dl>
</li>
</ul>
<a id="isHorizontalCRS(org.opengis.referencing.crs.CoordinateReferenceSystem)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isHorizontalCRS</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;isHorizontalCRS&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs)</pre>
<div class="block">Returns <code>true</code> if the given CRS is horizontal. The current implementation considers a
CRS as horizontal if it is two-dimensional and comply with one of the following conditions:
<ul>
<li>is an instance of <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeographicCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink"><code>Geographic­CRS</code></a> (or an equivalent <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeodeticCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink"><code>Geodetic­CRS</code></a>), or</li>
<li>is an instance of <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/ProjectedCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink"><code>Projected­CRS</code></a>, or</li>
<li>is an instance of <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/EngineeringCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink"><code>Engineering­CRS</code></a> (following
<a href="http://docs.opengeospatial.org/is/12-063r5/12-063r5.html#111">ISO 19162 §16.1</a>
definition of &lt;horizontal crs&gt;).</li>
</ul>
In case of doubt, this method conservatively returns <code>false</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>crs</code> - the coordinate reference system, or <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the given CRS is non-null and likely horizontal, or <code>false</code> otherwise.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#getHorizontalComponent(org.opengis.referencing.crs.CoordinateReferenceSystem)"><code>get­Horizontal­Component(Coordinate­Reference­System)</code></a></dd>
<dt><span class="simpleTagLabel">TODO:</span></dt>
<dd>Future SIS implementation may extend the above conditions list. For example a radar station could
use a polar coordinate system in a <code>Derived­CRS</code> instance based on a projected CRS.
Conversely, a future SIS versions may impose more conditions on <code>Engineering­CRS</code>.
See <a href="http://issues.apache.org/jira/browse/SIS-161">SIS-161</a>.</dd>
</dl>
</li>
</ul>
<a id="getHorizontalComponent(org.opengis.referencing.crs.CoordinateReferenceSystem)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getHorizontalComponent</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/SingleCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">SingleCRS</a>&nbsp;getHorizontalComponent&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs)</pre>
<div class="block">Returns the first horizontal coordinate reference system found in the given CRS, or <code>null</code> if there is
none. If the given CRS is already horizontal according <a href="#isHorizontalCRS(org.opengis.referencing.crs.CoordinateReferenceSystem)"><code>is­Horizontal­CRS(Coordinate­Reference­System)</code></a>,
then this method returns it as-is. Otherwise if the given CRS is compound, then this method searches for the
first horizontal component in the order of the <a href="#getSingleComponents(org.opengis.referencing.crs.CoordinateReferenceSystem)">single components list</a>.
<p>In the special case where a three-dimensional geographic or projected CRS is found, this method
will create a two-dimensional geographic or projected CRS without the vertical axis.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>crs</code> - the coordinate reference system, or <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the first horizontal CRS, or <code>null</code> if none.</dd>
</dl>
</li>
</ul>
<a id="getVerticalComponent(org.opengis.referencing.crs.CoordinateReferenceSystem,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getVerticalComponent</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/VerticalCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">VerticalCRS</a>&nbsp;getVerticalComponent&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs,
boolean&nbsp;allowCreateEllipsoidal)</pre>
<div class="block">Returns the first vertical coordinate reference system found in the given CRS, or <code>null</code> if there is none.
If the given CRS is already an instance of <code>Vertical­CRS</code>, then this method returns it as-is.
Otherwise if the given CRS is compound, then this method searches for the first vertical component
in the order of the <a href="#getSingleComponents(org.opengis.referencing.crs.CoordinateReferenceSystem)">single components list</a>.
<div class="section">Height in a three-dimensional geographic CRS</div>
In ISO 19111 model, ellipsoidal heights are indissociable from geographic CRS because such heights
without their (<var>latitude</var>, <var>longitude</var>) locations make little sense. Consequently
a standard-conformant library should return <code>null</code> when asked for the <code>Vertical­CRS</code>
component of a geographic CRS. This is what <code>get­Vertical­Component(…)</code> does when the
<code>allow­Create­Ellipsoidal</code> argument is <code>false</code>.
<p>However in some exceptional cases, handling ellipsoidal heights like any other kind of heights
may simplify the task. For example when computing <em>difference</em> between heights above the
same datum, the impact of ignoring locations may be smaller (but not necessarily canceled).
Orphan <code>Vertical­CRS</code> may also be useful for information purpose like labeling a plot axis.
If the caller feels confident that ellipsoidal heights are safe for his task, he can set the
<code>allow­Create­Ellipsoidal</code> argument to <code>true</code>. In such case, this <code>get­Vertical­Component(…)</code>
method will create a temporary <code>Vertical­CRS</code> from the first three-dimensional <code>Geographic­CRS</code>
<em>in last resort</em>, only if it can not find an existing <code>Vertical­CRS</code> instance.
<strong>Note that this is not a valid CRS according ISO 19111</strong> — use with care.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>crs</code> - the coordinate reference system, or <code>null</code>.</dd>
<dd><code>allow­Create­Ellipsoidal</code> - <code>true</code> for allowing the creation of orphan CRS for ellipsoidal heights.
The recommended value is <code>false</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the first vertical CRS, or <code>null</code> if none.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#compound(org.opengis.referencing.crs.CoordinateReferenceSystem...)"><code>compound(Coordinate­Reference­System...)</code></a></dd>
</dl>
</li>
</ul>
<a id="getTemporalComponent(org.opengis.referencing.crs.CoordinateReferenceSystem)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemporalComponent</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/TemporalCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">TemporalCRS</a>&nbsp;getTemporalComponent&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs)</pre>
<div class="block">Returns the first temporal coordinate reference system found in the given CRS, or <code>null</code> if there is none.
If the given CRS is already an instance of <code>Temporal­CRS</code>, then this method returns it as-is.
Otherwise if the given CRS is compound, then this method searches for the first temporal component
in the order of the <a href="#getSingleComponents(org.opengis.referencing.crs.CoordinateReferenceSystem)">single components list</a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>crs</code> - the coordinate reference system, or <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the first temporal CRS, or <code>null</code> if none.</dd>
</dl>
</li>
</ul>
<a id="getSingleComponents(org.opengis.referencing.crs.CoordinateReferenceSystem)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSingleComponents</h4>
<pre class="methodSignature">public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/SingleCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">SingleCRS</a>&gt;&nbsp;getSingleComponents&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs)</pre>
<div class="block">Returns the ordered list of single coordinate reference systems for the specified CRS.
This method performs the following choices:
<ul>
<li>If the given CRS is null, returns an empty list.</li>
<li>If the given CRS is an instance of <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/SingleCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink"><code>Single­CRS</code></a>, returns that instance in a singleton list.</li>
<li>If the given CRS is an instance of <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CompoundCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink"><code>Compound­CRS</code></a>, returns a flattened list of its
<a href="crs/DefaultCompoundCRS.html#getComponents()">components</a>. Some components may themselves be
other <code>Compound­CRS</code> instances, in which case those compound CRS are also flattened in their
list of <code>Single­CRS</code> components.</li>
<li>Otherwise throws a <code>Class­Cast­Exception</code>.</li>
</ul>
<div class="note"><b>Example:</b>
Apache SIS allows 4-dimensional (<var>x</var>,<var>y</var>,<var>z</var>,<var>t</var>)
coordinate reference system to be built in two different ways as shown below:
<div class="horizontal-flow">
<div><p><b>Hierarchical structure</b></p>
<blockquote>
<code>Compound­CRS</code> — (<var>x</var>, <var>y</var>, <var>z</var>, <var>t</var>)<br>
<code>  ├─Compound­CRS</code> — (<var>x</var>, <var>y</var>, <var>z</var>)<br>
<code>  │   ├─Projected­CRS</code> — (<var>x</var>, <var>y</var>)<br>
<code>  │   └─Vertical­CRS</code> — (<var>z</var>)<br>
<code>  └─Temporal­CRS</code> — (<var>t</var>)
</blockquote></div>
<div><p><b>Flat list</b></p>
<blockquote>
<code>Compound­CRS</code> — (<var>x</var>, <var>y</var>, <var>z</var>, <var>t</var>)<br>
<code>  ├─Projected­CRS</code> — (<var>x</var>, <var>y</var>)<br>
<code>  ├─Vertical­CRS</code> — (<var>z</var>)<br>
<code>  └─Temporal­CRS</code> — (<var>t</var>)
</blockquote>
</div></div>
This method guaranteed that the returned list is a flat one as shown on the right side.
Note that such flat lists are the only one allowed by ISO/OGC standards for compound CRS.
The hierarchical structure is an Apache SIS flexibility.</div></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>crs</code> - the coordinate reference system, or <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the single coordinate reference systems, or an empty list if the given CRS is <code>null</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang" class="externalLink">Class­Cast­Exception</a></code> - if a CRS is neither a <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/SingleCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink"><code>Single­CRS</code></a> or a <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CompoundCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink"><code>Compound­CRS</code></a>.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="crs/DefaultCompoundCRS.html#getSingleComponents()"><code>Default­Compound­CRS​.get­Single­Components()</code></a></dd>
</dl>
</li>
</ul>
<a id="getComponentAt(org.opengis.referencing.crs.CoordinateReferenceSystem,int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getComponentAt</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;getComponentAt&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CoordinateReferenceSystem</a>&nbsp;crs,
int&nbsp;lower,
int&nbsp;upper)</pre>
<div class="block">Returns the coordinate reference system in the given range of dimension indices.
This method processes as below:
<ul>
<li>If the given <code>crs</code> is <code>null</code>, then this method returns <code>null</code>.</li>
<li>Otherwise if <code>lower</code> is 0 and <code>upper</code> is the number of CRS dimensions,
then this method returns the given CRS unchanged.</li>
<li>Otherwise if the given CRS is an instance of <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CompoundCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink"><code>Compound­CRS</code></a>, then this method
searches for a <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CompoundCRS.html?is-external=true#getComponents()" title="class or interface in org.opengis.referencing.crs" class="externalLink">component</a> where:
<ul>
<li>The <a href="cs/AbstractCS.html#getDimension()">number of dimensions</a>
is equals to <code>upper - lower</code>;</li>
<li>The sum of the number of dimensions of all previous CRS is equals to <code>lower</code>.</li>
</ul>
If such component is found, then it is returned.</li>
<li>Otherwise (i.e. no component match), this method returns <code>null</code>.</li>
</ul>
This method does <strong>not</strong> build new CRS from the components. For example this method does not
create a <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CompoundCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink"><code>Compound­CRS</code></a> or a three-dimensional CRS if the given range spans more than one component.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>crs</code> - the coordinate reference system to decompose, or <code>null</code>.</dd>
<dd><code>lower</code> - the first dimension to keep, inclusive.</dd>
<dd><code>upper</code> - the last dimension to keep, exclusive.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the sub-coordinate system, or <code>null</code> if the given <code>crs</code> was <code>null</code>
or can not be decomposed for dimensions in the [<code>lower</code><code>upper</code>] range.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IndexOutOfBoundsException.html?is-external=true" title="class or interface in java.lang" class="externalLink">Index­Out­Of­Bounds­Exception</a></code> - if the given index are out of bounds.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#reduce(org.opengis.referencing.crs.CoordinateReferenceSystem,int...)"><code>reduce(Coordinate­Reference­System, int...)</code></a>,
<a href="../geometry/GeneralEnvelope.html#subEnvelope(int,int)"><code>General­Envelope​.sub­Envelope(int, int)</code></a></dd>
</dl>
</li>
</ul>
<a id="getGreenwichLongitude(org.opengis.referencing.crs.GeodeticCRS)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getGreenwichLongitude</h4>
<pre class="methodSignature">public static&nbsp;double&nbsp;getGreenwichLongitude&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeodeticCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">GeodeticCRS</a>&nbsp;crs)</pre>
<div class="block">Returns the Greenwich longitude of the prime meridian of the given CRS in degrees.
If the prime meridian uses an other unit than degrees, then the value will be converted.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>crs</code> - the coordinate reference system from which to get the prime meridian.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the Greenwich longitude (in degrees) of the prime meridian of the given CRS.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="datum/DefaultPrimeMeridian.html#getGreenwichLongitude(javax.measure.Unit)"><code>Default­Prime­Meridian​.get­Greenwich­Longitude(Unit)</code></a></dd>
</dl>
</li>
</ul>
<a id="getAuthorityFactory(java.lang.String)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getAuthorityFactory</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/CRSAuthorityFactory.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">CRSAuthorityFactory</a>&nbsp;getAuthorityFactory&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;authority)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">FactoryException</a></pre>
<div class="block">Returns the system-wide authority factory used by <a href="#forCode(java.lang.String)"><code>for­Code(String)</code></a> and other SIS methods.
If the given authority is non-null, then this method returns a factory specifically for that authority.
Otherwise, this method returns the <a href="factory/MultiAuthoritiesFactory.html" title="class in org.apache.sis.referencing.factory"><code>Multi­Authorities­Factory</code></a>
instance that manages all other factories.
<p>The <code>authority</code> argument can be <code>"EPSG"</code>, <code>"OGC"</code> or any other authority found
on the classpath. In the <code>"EPSG"</code> case, whether the full set of EPSG codes is supported or not
depends on whether a <a href="factory/sql/package-summary.html">connection to the database</a>
can be established. If no connection can be established, then this method returns a small embedded
EPSG factory containing at least the CRS defined in the <a href="#forCode(java.lang.String)"><code>for­Code(String)</code></a> method javadoc.</p>
<p>User-defined authorities can be added to the SIS environment by creating a <code>CRSAuthority­Factory</code>
implementation with a public no-argument constructor, and declaring the fully-qualified name of that class
in a file at the following location:</p>
<blockquote><pre>META-INF/services/org.opengis.referencing.crs.CRSAuthorityFactory</pre></blockquote></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>authority</code> - the authority of the desired factory (typically <code>"EPSG"</code> or <code>"OGC"</code>),
or <code>null</code> for the <a href="factory/MultiAuthoritiesFactory.html" title="class in org.apache.sis.referencing.factory"><code>Multi­Authorities­Factory</code></a>
instance that manage all factories.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the system-wide authority factory used by SIS for the given authority.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/FactoryException.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">Factory­Exception</a></code> - if no factory can be returned for the given authority.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.7</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#forCode(java.lang.String)"><code>for­Code(String)</code></a>,
<a href="factory/MultiAuthoritiesFactory.html" title="class in org.apache.sis.referencing.factory"><code>Multi­Authorities­Factory</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CRS.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2010&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>