blob: 1d663697ffa6ec37d0f77388af48c86325ca0394 [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>CoordinateOperationFinder (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.operation.CoordinateOperationFinder class">
<meta name="keywords" content="createOperation()">
<meta name="keywords" content="createOperations()">
<meta name="keywords" content="createOperationStep()">
<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="CoordinateOperationFinder (Apache SIS 1.0 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete 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/CoordinateOperationFinder.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><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&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.operation</a></div>
<h2 title="Class CoordinateOperationFinder" class="title">Class CoordinateOperationFinder</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>CoordinateOperationFinder</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">CoordinateOperationFinder</span>
extends <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></pre>
<div class="block">Finds a conversion or transformation path from a source CRS to a target CRS.
This class implements two strategies for searching the coordinate operation:
<ol class="verbose">
<li>When <code><a href="#createOperation(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem)">create­Operation</a>(source­CRS, target­CRS)</code> is invoked,
this class first <a href="../factory/IdentifiedObjectFinder.html" title="class in org.apache.sis.referencing.factory">tries to
find the authority codes</a> for the given source and target CRS. If such codes are found, they are
<a href="../factory/GeodeticAuthorityFactory.html#createFromCoordinateReferenceSystemCodes(java.lang.String,java.lang.String)">submitted to a registry of coordinate operations</a>. If an operation is found, it will be returned.
<div class="note"><b>Note:</b> the above is known as the <cite>late-binding</cite> approach.
The late-binding approach allows the authority to define better suited operations than what
we would get if we were transforming everything from and to a pivot system (e.g. WGS84).
In addition, this approach provides useful information like the coordinate operation
<a href="AbstractCoordinateOperation.html#getScope()">scope</a> and
<a href="AbstractCoordinateOperation.html#getDomainOfValidity()">domain of validity</a>,
<a href="AbstractCoordinateOperation.html#getCoordinateOperationAccuracy()">accuracy</a>.</div>
</li>
<li>If the above authority factory does not know about the specified CRS, then this class tries to
infer the coordinate operation by itself. The CRS type is examined and the work is dispatched
to one or many of the <code>create­Operation­Step(…)</code> protected methods defined in this class.
Those methods use properties associated to the CRS, including <code>BOUNDCRS</code> or <code>TOWGS84</code>
elements found in <cite>Well Known Text</cite> (WKT).
<div class="note"><b>Note:</b> the use of elements like <code>TOWGS84</code> is known as the
<cite>early-binding</cite> approach. The operation found by this approach may be sub-optimal.
The early-binding approach is used only as a fallback when the late-binding approach gave no result.</div>
</li>
</ol>
<div class="section">Customization</div>
Instances of this class are created by <a href="DefaultCoordinateOperationFactory.html" title="class in org.apache.sis.referencing.operation"><code>Default­Coordinate­Operation­Factory</code></a>.
The only public method is <a href="#createOperation(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem)"><code>create­Operation(Coordinate­Reference­System, Coordinate­Reference­System)</code></a>,
which dispatches its work to the <code>create­Operation­Step(…)</code> protected methods.
Developers can override those protected methods if they want to alter the way some operations are created.
<div class="section">Limitations</div>
<ul>
<li>Each instance of this class shall be used only once.</li>
<li>This class is not thread-safe. A new instance shall be created for each coordinate operation to infer.</li>
</ul></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.7</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="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>
<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">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/Extent.html?is-external=true" title="class or interface in org.opengis.metadata.extent" class="externalLink">Extent</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#areaOfInterest">areaOfInterest</a></span></code></th>
<td class="colLast">
<div class="block">The spatiotemporal area of interest, or <code>null</code> if none.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected double</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#desiredAccuracy">desiredAccuracy</a></span></code></th>
<td class="colLast">
<div class="block">The desired accuracy in metres, or 0 for the best accuracy available.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperationFactory.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperationFactory</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#factory">factory</a></span></code></th>
<td class="colLast">
<div class="block">The factory to use for creating coordinate operations not found in the registry.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperationAuthorityFactory.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperationAuthorityFactory</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#registry">registry</a></span></code></th>
<td class="colLast">
<div class="block">The factory to use for creating operations as defined by authority, or <code>null</code> if none.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.opengis.referencing.operation.CoordinateOperationAuthorityFactory,org.opengis.referencing.operation.CoordinateOperationFactory,org.apache.sis.referencing.operation.CoordinateOperationContext)">CoordinateOperationFinder</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperationAuthorityFactory.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperationAuthorityFactory</a>&nbsp;registry,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperationFactory.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperationFactory</a>&nbsp;factory,
<a href="CoordinateOperationContext.html" title="class in org.apache.sis.referencing.operation">CoordinateOperationContext</a>&nbsp;context)</code></th>
<td class="colLast">
<div class="block">Creates a new instance for the given factory and context.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== 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="t2" class="tableTab"><span><a href="javascript:show(2);">Instance 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></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><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="#createOperation(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem)">createOperation</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)</code></th>
<td class="colLast">
<div class="block">Infers an operation for conversion or transformation between two coordinate reference systems.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><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="#createOperations(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem)">createOperations</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)</code></th>
<td class="colLast">
<div class="block">Infers operations for conversions or transformations between two coordinate reference systems.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected <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="#createOperationStep(org.opengis.referencing.crs.CoordinateReferenceSystem,java.util.List,org.opengis.referencing.crs.CoordinateReferenceSystem,java.util.List)">createOperationStep</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="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;? extends <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;sourceComponents,
<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="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;? extends <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;targetComponents)</code></th>
<td class="colLast">
<div class="block">Creates an operation between at least one <code>Compound­CRS</code> (usually the source) and an arbitrary CRS.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected <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="#createOperationStep(org.opengis.referencing.crs.GeneralDerivedCRS,org.opengis.referencing.crs.GeneralDerivedCRS)">createOperationStep</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeneralDerivedCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">GeneralDerivedCRS</a>&nbsp;sourceCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeneralDerivedCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">GeneralDerivedCRS</a>&nbsp;targetCRS)</code></th>
<td class="colLast">
<div class="block">Creates an operation between two derived coordinate reference systems.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected <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="#createOperationStep(org.opengis.referencing.crs.GeneralDerivedCRS,org.opengis.referencing.crs.SingleCRS)">createOperationStep</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeneralDerivedCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">GeneralDerivedCRS</a>&nbsp;sourceCRS,
<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;targetCRS)</code></th>
<td class="colLast">
<div class="block">Creates an operation from a derived CRS to an arbitrary single coordinate reference system.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected <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="#createOperationStep(org.opengis.referencing.crs.GeodeticCRS,org.opengis.referencing.crs.GeodeticCRS)">createOperationStep</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;sourceCRS,
<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;targetCRS)</code></th>
<td class="colLast">
<div class="block">Creates an operation between two geodetic (geographic or geocentric) coordinate reference systems.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>protected <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="#createOperationStep(org.opengis.referencing.crs.GeodeticCRS,org.opengis.referencing.crs.VerticalCRS)">createOperationStep</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;sourceCRS,
<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;targetCRS)</code></th>
<td class="colLast">
<div class="block">Creates an operation between a geodetic and a vertical coordinate reference systems.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>protected <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="#createOperationStep(org.opengis.referencing.crs.SingleCRS,org.opengis.referencing.crs.GeneralDerivedCRS)">createOperationStep</a></span>&#8203;(<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;sourceCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeneralDerivedCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">GeneralDerivedCRS</a>&nbsp;targetCRS)</code></th>
<td class="colLast">
<div class="block">Creates operations from an arbitrary single CRS to a derived coordinate reference system.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected <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="#createOperationStep(org.opengis.referencing.crs.TemporalCRS,org.opengis.referencing.crs.TemporalCRS)">createOperationStep</a></span>&#8203;(<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;sourceCRS,
<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;targetCRS)</code></th>
<td class="colLast">
<div class="block">Creates an operation between two temporal coordinate reference systems.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected <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="#createOperationStep(org.opengis.referencing.crs.VerticalCRS,org.opengis.referencing.crs.VerticalCRS)">createOperationStep</a></span>&#8203;(<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;sourceCRS,
<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;targetCRS)</code></th>
<td class="colLast">
<div class="block">Creates an operation between two vertical coordinate reference systems.</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">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="registry">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registry</h4>
<pre>protected final&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperationAuthorityFactory.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperationAuthorityFactory</a> registry</pre>
<div class="block">The factory to use for creating operations as defined by authority, or <code>null</code> if none.
This is the factory used by the <cite>late-binding</cite> approach.</div>
</li>
</ul>
<a id="factory">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>factory</h4>
<pre>protected final&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperationFactory.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperationFactory</a> factory</pre>
<div class="block">The factory to use for creating coordinate operations not found in the registry.
This is the factory used by the <cite>early-binding</cite> approach.</div>
</li>
</ul>
<a id="areaOfInterest">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>areaOfInterest</h4>
<pre>protected&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/Extent.html?is-external=true" title="class or interface in org.opengis.metadata.extent" class="externalLink">Extent</a> areaOfInterest</pre>
<div class="block">The spatiotemporal area of interest, or <code>null</code> if none.
When a new <code>Coordinate­Operation­Finder</code> instance is created with a non-null
<a href="CoordinateOperationContext.html" title="class in org.apache.sis.referencing.operation"><code>Coordinate­Operation­Context</code></a>, the context is used for initializing this value.
After initialization, this field may be updated as <code>Coordinate­Operation­Finder</code>
progresses in its search for a coordinate operation.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="CoordinateOperationContext.html#getAreaOfInterest()"><code>Coordinate­Operation­Context​.get­Area­Of­Interest()</code></a></dd>
</dl>
</li>
</ul>
<a id="desiredAccuracy">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>desiredAccuracy</h4>
<pre>protected&nbsp;double desiredAccuracy</pre>
<div class="block">The desired accuracy in metres, or 0 for the best accuracy available.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="CoordinateOperationContext.html#getDesiredAccuracy()"><code>Coordinate­Operation­Context​.get­Desired­Accuracy()</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(org.opengis.referencing.operation.CoordinateOperationAuthorityFactory,org.opengis.referencing.operation.CoordinateOperationFactory,org.apache.sis.referencing.operation.CoordinateOperationContext)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>CoordinateOperationFinder</h4>
<pre>public&nbsp;CoordinateOperationFinder&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperationAuthorityFactory.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperationAuthorityFactory</a>&nbsp;registry,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/CoordinateOperationFactory.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">CoordinateOperationFactory</a>&nbsp;factory,
<a href="CoordinateOperationContext.html" title="class in org.apache.sis.referencing.operation">CoordinateOperationContext</a>&nbsp;context)
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 new instance for the given factory and context.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>registry</code> - the factory to use for creating operations as defined by authority, or <code>null</code> if none.</dd>
<dd><code>factory</code> - the factory to use for creating operations not found in the registry.</dd>
<dd><code>context</code> - the area of interest and desired accuracy, or <code>null</code> if none.</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 initializing this <code>Coordinate­Operation­Finder</code>.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="DefaultCoordinateOperationFactory.html#createOperationFinder(org.opengis.referencing.operation.CoordinateOperationAuthorityFactory,org.apache.sis.referencing.operation.CoordinateOperationContext)"><code>Default­Coordinate­Operation­Factory​.create­Operation­Finder(Coordinate­Operation­Authority­Factory, Coordinate­Operation­Context)</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="createOperation(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createOperation</h4>
<pre class="methodSignature">public&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;createOperation&#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)
throws <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">OperationNotFoundException</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">Infers an operation for conversion or transformation between two coordinate reference systems.
If a non-null authority factory – the <cite>registry</cite> – has been specified at construction time,
then this method will first query that factory (<cite>late-binding</cite> approach – see class javadoc).
If no operation has been found in the registry or if no registry has been specified to the constructor,
this method inspects the given CRS and delegates the work to one or many <code>create­Operation­Step(…)</code>
methods (<cite>early-binding</cite> approach).
<p>The default implementation invokes <code><a href="#createOperations(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem)">create­Operations</a>(source­CRS,
target­CRS)</code>, then returns the first operation in the returned list or throws an exception if the
list is empty.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source­CRS</code> - input coordinate reference system.</dd>
<dd><code>target­CRS</code> - output coordinate reference system.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a coordinate 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 path was found from <code>source­CRS</code> to <code>target­CRS</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 operation creation failed for some other reason.</dd>
</dl>
</li>
</ul>
<a id="createOperations(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createOperations</h4>
<pre class="methodSignature">public&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;createOperations&#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)
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">Infers operations for conversions or transformations between two coordinate reference systems.
If a non-null authority factory – the <cite>registry</cite> – has been specified at construction time,
then this method will first query that factory (<cite>late-binding</cite> approach – see class javadoc).
If no operation has been found in the registry or if no registry has been specified to the constructor,
this method inspects the given CRS and delegates the work to one or many <code>create­Operation­Step(…)</code>
methods (<cite>early-binding</cite> approach).
<p>At first, this method is invoked with the <code>source­CRS</code> and <code>target­CRS</code> arguments given to the
<a href="DefaultCoordinateOperationFactory.html#createOperation(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.apache.sis.referencing.operation.CoordinateOperationContext)"><code>Coordinate­Operation­Factory​.create­Operation(…)</code></a> method. But then, this method may
be invoked recursively by some <code>create­Operation­Step(…)</code> methods with different source or target CRS,
for example in order to process the <a href="../crs/DefaultProjectedCRS.html#getBaseCRS()">base geographic CRS</a> of a projected CRS.</p>
<p>Coordinate operations are returned in preference order: best operations for the area of interest should be first.
The returned list is modifiable: callers can add, remove or set elements without impact on this
<code>Coordinate­Operation­Finder</code> instance.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source­CRS</code> - input coordinate reference system.</dd>
<dd><code>target­CRS</code> - output coordinate reference system.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>coordinate 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 path was found from <code>source­CRS</code> to <code>target­CRS</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 operation creation failed for some other reason.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a id="createOperationStep(org.opengis.referencing.crs.SingleCRS,org.opengis.referencing.crs.GeneralDerivedCRS)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createOperationStep</h4>
<pre class="methodSignature">protected&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;createOperationStep&#8203;(<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;sourceCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeneralDerivedCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">GeneralDerivedCRS</a>&nbsp;targetCRS)
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 operations from an arbitrary single CRS to a derived coordinate reference system.
Conversions from <code>Geographic­CRS</code> to <code>Projected­CRS</code> are also handled by this method,
since projected CRS are a special kind of <code>General­Derived­CRS</code>.
<p>The default implementation constructs the following operation chain:</p>
<blockquote><code>source­CRS → <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> → target­CRS</code></blockquote>
where the conversion from <code>base­CRS</code> to <code>target­CRS</code> is obtained from
<code>target­CRS.<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeneralDerivedCRS.html?is-external=true#getConversionFromBase()" title="class or interface in org.opengis.referencing.crs" class="externalLink">get­Conversion­From­Base()</a></code>.
<p>This method returns only <em>one</em> step for a chain of concatenated operations (to be built by the caller).
But a list is returned because the same step may be implemented by different operation methods. Only one element
in the returned list should be selected (usually the first one).</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source­CRS</code> - input coordinate reference system.</dd>
<dd><code>target­CRS</code> - output coordinate reference system.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>coordinate 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/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 constructed.</dd>
</dl>
</li>
</ul>
<a id="createOperationStep(org.opengis.referencing.crs.GeneralDerivedCRS,org.opengis.referencing.crs.SingleCRS)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createOperationStep</h4>
<pre class="methodSignature">protected&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;createOperationStep&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeneralDerivedCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">GeneralDerivedCRS</a>&nbsp;sourceCRS,
<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;targetCRS)
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 an operation from a derived CRS to an arbitrary single coordinate reference system.
Conversions from <code>Projected­CRS</code> to <code>Geographic­CRS</code> are also handled by this method,
since projected CRS are a special kind of <code>General­Derived­CRS</code>.
<p>The default implementation constructs the following operation chain:</p>
<blockquote><code>source­CRS → <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> → target­CRS</code></blockquote>
where the conversion from <code>source­CRS</code> to <code>base­CRS</code> is obtained from the inverse of
<code>source­CRS.<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeneralDerivedCRS.html?is-external=true#getConversionFromBase()" title="class or interface in org.opengis.referencing.crs" class="externalLink">get­Conversion­From­Base()</a></code>.
<p>This method returns only <em>one</em> step for a chain of concatenated operations (to be built by the caller).
But a list is returned because the same step may be implemented by different operation methods. Only one element
in the returned list should be selected (usually the first one).</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source­CRS</code> - input coordinate reference system.</dd>
<dd><code>target­CRS</code> - output coordinate reference system.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a coordinate 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/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 constructed.</dd>
</dl>
</li>
</ul>
<a id="createOperationStep(org.opengis.referencing.crs.GeneralDerivedCRS,org.opengis.referencing.crs.GeneralDerivedCRS)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createOperationStep</h4>
<pre class="methodSignature">protected&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;createOperationStep&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeneralDerivedCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">GeneralDerivedCRS</a>&nbsp;sourceCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/crs/GeneralDerivedCRS.html?is-external=true" title="class or interface in org.opengis.referencing.crs" class="externalLink">GeneralDerivedCRS</a>&nbsp;targetCRS)
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 an operation between two derived coordinate reference systems.
The default implementation performs three steps:
<ol>
<li>Convert from <code>source­CRS</code> to its base CRS.</li>
<li>Convert the source base CRS to target base CRS.</li>
<li>Convert from the target base CRS to the <code>target­CRS</code>.</li>
</ol>
<p>This method returns only <em>one</em> step for a chain of concatenated operations (to be built by the caller).
But a list is returned because the same step may be implemented by different operation methods. Only one element
in the returned list should be selected (usually the first one).</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source­CRS</code> - input coordinate reference system.</dd>
<dd><code>target­CRS</code> - output coordinate reference system.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a coordinate 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/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 constructed.</dd>
</dl>
</li>
</ul>
<a id="createOperationStep(org.opengis.referencing.crs.GeodeticCRS,org.opengis.referencing.crs.GeodeticCRS)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createOperationStep</h4>
<pre class="methodSignature">protected&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;createOperationStep&#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;sourceCRS,
<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;targetCRS)
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 an operation between two geodetic (geographic or geocentric) coordinate reference systems.
The default implementation can:
<ul>
<li>adjust axis order and orientation, for example converting from (<cite>North</cite>, <cite>West</cite>)
axes to (<cite>East</cite>, <cite>North</cite>) axes,</li>
<li>apply units conversion if needed,</li>
<li>perform longitude rotation if needed,</li>
<li>perform datum shift if <a href="../datum/BursaWolfParameters.html" title="class in org.apache.sis.referencing.datum">Bursa-Wolf parameters</a> are available
for the area of interest.</li>
</ul>
<p>This method returns only <em>one</em> step for a chain of concatenated operations (to be built by the caller).
But a list is returned because the same step may be implemented by different operation methods. Only one element
in the returned list should be selected (usually the first one).</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source­CRS</code> - input coordinate reference system.</dd>
<dd><code>target­CRS</code> - output coordinate reference system.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a coordinate 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/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 constructed.</dd>
</dl>
</li>
</ul>
<a id="createOperationStep(org.opengis.referencing.crs.GeodeticCRS,org.opengis.referencing.crs.VerticalCRS)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createOperationStep</h4>
<pre class="methodSignature">protected&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;createOperationStep&#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;sourceCRS,
<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;targetCRS)
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 an operation between a geodetic and a vertical coordinate reference systems.
The height returned by this method will usually be part of a
<a href="DefaultPassThroughOperation.html" title="class in org.apache.sis.referencing.operation">pass-through operation</a>.
<p>This method returns only <em>one</em> step for a chain of concatenated operations (to be built by the caller).
But a list is returned because the same step may be implemented by different operation methods. Only one element
in the returned list should be selected (usually the first one).</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source­CRS</code> - input coordinate reference system.</dd>
<dd><code>target­CRS</code> - output coordinate reference system.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a coordinate 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/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 constructed.</dd>
</dl>
</li>
</ul>
<a id="createOperationStep(org.opengis.referencing.crs.VerticalCRS,org.opengis.referencing.crs.VerticalCRS)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createOperationStep</h4>
<pre class="methodSignature">protected&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;createOperationStep&#8203;(<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;sourceCRS,
<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;targetCRS)
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 an operation between two vertical coordinate reference systems.
The default implementation checks if both CRS use the same datum, then
adjusts for axis direction and units.
<p>This method returns only <em>one</em> step for a chain of concatenated operations (to be built by the caller).
But a list is returned because the same step may be implemented by different operation methods. Only one element
in the returned list should be selected (usually the first one).</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source­CRS</code> - input coordinate reference system.</dd>
<dd><code>target­CRS</code> - output coordinate reference system.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a coordinate 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/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 constructed.</dd>
<dt><span class="simpleTagLabel">TODO:</span></dt>
<dd>Needs to implement vertical datum shift.</dd>
</dl>
</li>
</ul>
<a id="createOperationStep(org.opengis.referencing.crs.TemporalCRS,org.opengis.referencing.crs.TemporalCRS)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createOperationStep</h4>
<pre class="methodSignature">protected&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;createOperationStep&#8203;(<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;sourceCRS,
<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;targetCRS)
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 an operation between two temporal coordinate reference systems.
The default implementation checks if both CRS use the same datum, then
adjusts for axis direction, units and epoch.
<p>This method returns only <em>one</em> step for a chain of concatenated operations (to be built by the caller).
But a list is returned because the same step may be implemented by different operation methods. Only one element
in the returned list should be selected (usually the first one).</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source­CRS</code> - input coordinate reference system.</dd>
<dd><code>target­CRS</code> - output coordinate reference system.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a coordinate 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/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 constructed.</dd>
</dl>
</li>
</ul>
<a id="createOperationStep(org.opengis.referencing.crs.CoordinateReferenceSystem,java.util.List,org.opengis.referencing.crs.CoordinateReferenceSystem,java.util.List)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>createOperationStep</h4>
<pre class="methodSignature">protected&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;createOperationStep&#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="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;? extends <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;sourceComponents,
<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="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;? extends <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;targetComponents)
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 an operation between at least one <code>Compound­CRS</code> (usually the source) and an arbitrary CRS.
The default implementation tries to invoke the <a href="#createOperation(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem)"><code>create­Operation(…)</code></a> method with
various combinations of source and target components. A preference is given for components of the same
type (e.g. source <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> with target <code>Geodetic­CRS</code>, <i>etc.</i>).
<p>This method returns only <em>one</em> step for a chain of concatenated operations (to be built by the caller).
But a list is returned because the same step may be implemented by different operation methods. Only one element
in the returned list should be selected (usually the first one).</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source­CRS</code> - input coordinate reference system.</dd>
<dd><code>source­Components</code> - components of the source CRS.</dd>
<dd><code>target­CRS</code> - output coordinate reference system.</dd>
<dd><code>target­Components</code> - components of the target CRS.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a coordinate 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/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 constructed.</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/CoordinateOperationFinder.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><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&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>