blob: 8fbdba10e04f401c389b04e83af1dae50cd8c88e [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (19) -->
<title>DefaultConversion (Apache SIS 1.3 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.sis.referencing.operation, class: DefaultConversion">
<meta name="generator" content="javadoc/ClassWriterImpl">
<meta name="keywords" content="org.apache.sis.referencing.operation.DefaultConversion class">
<meta name="keywords" content="castOrCopy()">
<meta name="keywords" content="getInterface()">
<meta name="keywords" content="specialize()">
<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="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/DefaultConversion.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#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li><a href="#field-summary">Field</a></li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<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="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.referencing.operation</a></div>
<h1 title="Class DefaultConversion" class="title">Class DefaultConversion</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
<div class="inheritance"><a href="../../io/wkt/FormattableObject.html" title="class in org.apache.sis.io.wkt">FormattableObject</a>
<div class="inheritance"><a href="../AbstractIdentifiedObject.html" title="class in org.apache.sis.referencing">AbstractIdentifiedObject</a>
<div class="inheritance"><a href="AbstractCoordinateOperation.html" title="class in org.apache.sis.referencing.operation">AbstractCoordinateOperation</a>
<div class="inheritance">DefaultConversion</div>
</div>
</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Formattable.html" title="class or interface in java.util" class="external-link">Formattable</a></code>, <code><a href="../../parameter/Parameterized.html" title="interface in org.apache.sis.parameter">Parameterized</a></code>, <code><a href="../../util/Deprecable.html" title="interface in org.apache.sis.util">Deprecable</a></code>, <code><a href="../../util/LenientComparable.html" title="interface in org.apache.sis.util">Lenient­Comparable</a></code>, <code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">Identified­Object</a></code>, <code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Conversion</a></code>, <code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CoordinateOperation.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Coordinate­Operation</a></code>, <code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Single­Operation</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DefaultConversion</span>
<span class="extends-implements">extends <a href="AbstractCoordinateOperation.html" title="class in org.apache.sis.referencing.operation">AbstractCoordinateOperation</a>
implements <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Conversion</a></span></div>
<div class="block">A parameterized mathematical operation that converts coordinates to another CRS without any change of
<a href="../datum/AbstractDatum.html" title="class in org.apache.sis.referencing.datum">datum</a>.
The best-known example of a coordinate conversion is a map projection.
The parameters describing coordinate conversions are defined rather than empirically derived.
<p>This coordinate operation contains an <a href="DefaultOperationMethod.html" title="class in org.apache.sis.referencing.operation">operation method</a>, usually
with associated <a href="../../parameter/DefaultParameterValueGroup.html" title="class in org.apache.sis.parameter">parameter values</a>.
In the SIS implementation, the parameter values can be either inferred from the
<a href="transform/AbstractMathTransform.html" title="class in org.apache.sis.referencing.operation.transform">math transform</a>
or explicitly provided at construction time in a <cite>defining conversion</cite> (see below).</p>
<h2>Defining conversions</h2>
<code>Operation­Method</code> instances are generally created for a pair of existing <a href="AbstractCoordinateOperation.html#getSourceCRS()">source</a>
and <a href="AbstractCoordinateOperation.html#getTargetCRS()">target CRS</a>. But <code>Conversion</code> instances without those information may exist
temporarily while creating a <a href="../crs/DefaultDerivedCRS.html" title="class in org.apache.sis.referencing.crs">derived</a> or
<a href="../crs/DefaultProjectedCRS.html" title="class in org.apache.sis.referencing.crs">projected CRS</a>.
Those <cite>defining conversions</cite> have no source and target CRS since those elements are provided by the
derived or projected CRS themselves. This class provides a <a href="#%3Cinit%3E(java.util.Map,org.opengis.referencing.operation.OperationMethod,org.opengis.referencing.operation.MathTransform,org.opengis.parameter.ParameterValueGroup)">constructor</a> for such defining conversions.
<p>After the source and target CRS become known, we can invoke the <a href="#specialize(java.lang.Class,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.operation.MathTransformFactory)"><code>specialize(…)</code></a> method for
<a href="transform/DefaultMathTransformFactory.html#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup)">creating a math transform from the parameters</a>,
instantiate a new <code>Conversion</code> of a more specific type
(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/ConicProjection.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Conic­Projection</code></a>,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CylindricalProjection.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Cylindrical­Projection</code></a> or
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/PlanarProjection.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Planar­Projection</code></a>) if possible,
and assign the source and target CRS to it.</p>
<h2>Immutability and thread safety</h2>
This class is immutable and thus thread-safe if the property <em>values</em> (not necessarily the map itself)
given to the constructor are also immutable. This means that unless otherwise noted in the javadoc,
<code>Conversion</code> instances created using only SIS factories and static constants can be shared
by many objects and passed between threads without synchronization.</div>
<dl class="notes">
<dt>Since:</dt>
<dd>0.6</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="DefaultTransformation.html" title="class in org.apache.sis.referencing.operation"><code>Default­Transformation</code></a></li>
<li><a href="../../../../../serialized-form.html#org.apache.sis.referencing.operation.DefaultConversion">Serialized Form</a></li>
</ul>
</dd>
<p><font size="-1">Defined in the <code>sis-referencing</code> module</font></p>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-AbstractIdentifiedObject">Fields inherited from class&nbsp;<a href="../AbstractIdentifiedObject.html" title="class in org.apache.sis.referencing">AbstractIdentifiedObject</a></h3>
<code><a href="../AbstractIdentifiedObject.html#DEPRECATED_KEY">DEPRECATED_KEY</a>, <a href="../AbstractIdentifiedObject.html#LOCALE_KEY">LOCALE_KEY</a></code></div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-CoordinateOperation">Fields inherited from interface&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CoordinateOperation.html" title="class or interface in org.opengis.referencing.operation" class="external-link">CoordinateOperation</a></h3>
<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CoordinateOperation.html#COORDINATE_OPERATION_ACCURACY_KEY" title="class or interface in org.opengis.referencing.operation" class="external-link">COORDINATE_OPERATION_ACCURACY_KEY</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CoordinateOperation.html#DOMAIN_OF_VALIDITY_KEY" title="class or interface in org.opengis.referencing.operation" class="external-link">DOMAIN_OF_VALIDITY_KEY</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CoordinateOperation.html#OPERATION_VERSION_KEY" title="class or interface in org.opengis.referencing.operation" class="external-link">OPERATION_VERSION_KEY</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CoordinateOperation.html#SCOPE_KEY" title="class or interface in org.opengis.referencing.operation" class="external-link">SCOPE_KEY</a></code></div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-IdentifiedObject">Fields inherited from interface&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">IdentifiedObject</a></h3>
<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#ALIAS_KEY" title="class or interface in org.opengis.referencing" class="external-link">ALIAS_KEY</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#IDENTIFIERS_KEY" title="class or interface in org.opengis.referencing" class="external-link">IDENTIFIERS_KEY</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#NAME_KEY" title="class or interface in org.opengis.referencing" class="external-link">NAME_KEY</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#REMARKS_KEY" title="class or interface in org.opengis.referencing" class="external-link">REMARKS_KEY</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier</div>
<div class="table-header col-second">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.util.Map,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.operation.OperationMethod,org.opengis.referencing.operation.MathTransform)" class="member-name-link">Default­Conversion</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>?&gt;&nbsp;properties,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link">Coordinate­Reference­System</a>&nbsp;source­CRS,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link">Coordinate­Reference­System</a>&nbsp;target­CRS,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link">Coordinate­Reference­System</a>&nbsp;interpolation­CRS,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Operation­Method</a>&nbsp;method,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Math­Transform</a>&nbsp;transform)</code></div>
<div class="col-last even-row-color">
<div class="block">Creates a coordinate conversion from the given properties.</div>
</div>
<div class="col-first odd-row-color"><code>&nbsp;</code></div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.util.Map,org.opengis.referencing.operation.OperationMethod,org.opengis.referencing.operation.MathTransform,org.opengis.parameter.ParameterValueGroup)" class="member-name-link">Default­Conversion</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>?&gt;&nbsp;properties,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Operation­Method</a>&nbsp;method,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Math­Transform</a>&nbsp;transform,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterValueGroup.html" title="class or interface in org.opengis.parameter" class="external-link">Parameter­Value­Group</a>&nbsp;parameters)</code></div>
<div class="col-last odd-row-color">
<div class="block">Creates a defining conversion from the given transform and/or parameters.</div>
</div>
<div class="col-first even-row-color"><code>protected </code></div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.opengis.referencing.operation.Conversion)" class="member-name-link">Default­Conversion</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Conversion</a>&nbsp;operation)</code></div>
<div class="col-last even-row-color">
<div class="block">Creates a new coordinate operation with the same values than the specified one.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="DefaultConversion.html" title="class in org.apache.sis.referencing.operation">Default­Conversion</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#castOrCopy(org.opengis.referencing.operation.Conversion)" class="member-name-link">cast­Or­Copy</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Conversion</a>&nbsp;object)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns a SIS coordinate operation implementation with the values of the given arbitrary implementation.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;object,
<a href="../../util/ComparisonMode.html" title="enum class in org.apache.sis.util">Comparison­Mode</a>&nbsp;mode)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Compares this coordinate operation with the specified object for equality.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Conversion</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getInterface()" class="member-name-link">get­Interface</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the GeoAPI interface implemented by this class.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Operation­Method</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMethod()" class="member-name-link">get­Method</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a description of the operation method, including a list of expected parameter names.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterDescriptorGroup.html" title="class or interface in org.opengis.parameter" class="external-link">Parameter­Descriptor­Group</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getParameterDescriptors()" class="member-name-link">get­Parameter­Descriptors</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a description of the parameters.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterValueGroup.html" title="class or interface in org.opengis.parameter" class="external-link">Parameter­Value­Group</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getParameterValues()" class="member-name-link">get­Parameter­Values</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the parameter values.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T extends <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Conversion</a>&gt;<br>T</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#specialize(java.lang.Class,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.operation.MathTransformFactory)" class="member-name-link">specialize</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;base­Type,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link">Coordinate­Reference­System</a>&nbsp;source­CRS,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link">Coordinate­Reference­System</a>&nbsp;target­CRS,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransformFactory.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Math­Transform­Factory</a>&nbsp;factory)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a specialization of this conversion with a more specific type, source and target CRS.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-AbstractCoordinateOperation">Methods inherited from class&nbsp;<a href="AbstractCoordinateOperation.html" title="class in org.apache.sis.referencing.operation">AbstractCoordinateOperation</a></h3>
<code><a href="AbstractCoordinateOperation.html#castOrCopy(org.opengis.referencing.operation.CoordinateOperation)">cast­Or­Copy</a>, <a href="AbstractCoordinateOperation.html#computeHashCode()">compute­Hash­Code</a>, <a href="AbstractCoordinateOperation.html#formatTo(org.apache.sis.io.wkt.Formatter)">format­To</a>, <a href="AbstractCoordinateOperation.html#getCoordinateOperationAccuracy()">get­Coordinate­Operation­Accuracy</a>, <a href="AbstractCoordinateOperation.html#getDomainOfValidity()">get­Domain­Of­Validity</a>, <a href="AbstractCoordinateOperation.html#getInterpolationCRS()">get­Interpolation­CRS</a>, <a href="AbstractCoordinateOperation.html#getLinearAccuracy()">get­Linear­Accuracy</a>, <a href="AbstractCoordinateOperation.html#getMathTransform()">get­Math­Transform</a>, <a href="AbstractCoordinateOperation.html#getOperationVersion()">get­Operation­Version</a>, <a href="AbstractCoordinateOperation.html#getScope()">get­Scope</a>, <a href="AbstractCoordinateOperation.html#getSourceCRS()">get­Source­CRS</a>, <a href="AbstractCoordinateOperation.html#getTargetCRS()">get­Target­CRS</a>, <a href="AbstractCoordinateOperation.html#getWrapAroundChanges()">get­Wrap­Around­Changes</a>, <a href="AbstractCoordinateOperation.html#isDefiningConversion()">is­Defining­Conversion</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-AbstractIdentifiedObject">Methods inherited from class&nbsp;<a href="../AbstractIdentifiedObject.html" title="class in org.apache.sis.referencing">AbstractIdentifiedObject</a></h3>
<code><a href="../AbstractIdentifiedObject.html#castOrCopy(org.opengis.referencing.IdentifiedObject)">cast­Or­Copy</a>, <a href="../AbstractIdentifiedObject.html#equals(java.lang.Object)">equals</a>, <a href="../AbstractIdentifiedObject.html#formatTo(java.util.Formatter,int,int,int)">format­To</a>, <a href="../AbstractIdentifiedObject.html#getAlias()">get­Alias</a>, <a href="../AbstractIdentifiedObject.html#getDescription()">get­Description</a>, <a href="../AbstractIdentifiedObject.html#getIdentifiers()">get­Identifiers</a>, <a href="../AbstractIdentifiedObject.html#getName()">get­Name</a>, <a href="../AbstractIdentifiedObject.html#getRemarks()">get­Remarks</a>, <a href="../AbstractIdentifiedObject.html#hashCode()">hash­Code</a>, <a href="../AbstractIdentifiedObject.html#isDeprecated()">is­Deprecated</a>, <a href="../AbstractIdentifiedObject.html#isHeuristicMatchForName(java.lang.String)">is­Heuristic­Match­For­Name</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-FormattableObject">Methods inherited from class&nbsp;<a href="../../io/wkt/FormattableObject.html" title="class in org.apache.sis.io.wkt">FormattableObject</a></h3>
<code><a href="../../io/wkt/FormattableObject.html#print()">print</a>, <a href="../../io/wkt/FormattableObject.html#toString()">to­String</a>, <a href="../../io/wkt/FormattableObject.html#toString(org.apache.sis.io.wkt.Convention)">to­String</a>, <a href="../../io/wkt/FormattableObject.html#toWKT()">to­WKT</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">get­Class</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notify­All</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-Conversion">Methods inherited from interface&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Conversion</a></h3>
<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html#getOperationVersion()" title="class or interface in org.opengis.referencing.operation" class="external-link">get­Operation­Version</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html#getSourceCRS()" title="class or interface in org.opengis.referencing.operation" class="external-link">get­Source­CRS</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html#getTargetCRS()" title="class or interface in org.opengis.referencing.operation" class="external-link">get­Target­CRS</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-CoordinateOperation">Methods inherited from interface&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CoordinateOperation.html" title="class or interface in org.opengis.referencing.operation" class="external-link">CoordinateOperation</a></h3>
<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CoordinateOperation.html#getCoordinateOperationAccuracy()" title="class or interface in org.opengis.referencing.operation" class="external-link">get­Coordinate­Operation­Accuracy</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CoordinateOperation.html#getDomainOfValidity()" title="class or interface in org.opengis.referencing.operation" class="external-link">get­Domain­Of­Validity</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CoordinateOperation.html#getMathTransform()" title="class or interface in org.opengis.referencing.operation" class="external-link">get­Math­Transform</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CoordinateOperation.html#getScope()" title="class or interface in org.opengis.referencing.operation" class="external-link">get­Scope</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-IdentifiedObject">Methods inherited from interface&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html" title="class or interface in org.opengis.referencing" class="external-link">IdentifiedObject</a></h3>
<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#getAlias()" title="class or interface in org.opengis.referencing" class="external-link">get­Alias</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#getIdentifiers()" title="class or interface in org.opengis.referencing" class="external-link">get­Identifiers</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#getName()" title="class or interface in org.opengis.referencing" class="external-link">get­Name</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#getRemarks()" title="class or interface in org.opengis.referencing" class="external-link">get­Remarks</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#toWKT()" title="class or interface in org.opengis.referencing" class="external-link">to­WKT</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-SingleOperation">Methods inherited from interface&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html" title="class or interface in org.opengis.referencing.operation" class="external-link">SingleOperation</a></h3>
<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html#getMethod()" title="class or interface in org.opengis.referencing.operation" class="external-link">get­Method</a>, <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html#getParameterValues()" title="class or interface in org.opengis.referencing.operation" class="external-link">get­Parameter­Values</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.util.Map,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.operation.OperationMethod,org.opengis.referencing.operation.MathTransform)">
<h3>DefaultConversion</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DefaultConversion</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>?&gt;&nbsp;properties,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link">CoordinateReferenceSystem</a>&nbsp;sourceCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link">CoordinateReferenceSystem</a>&nbsp;targetCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link">CoordinateReferenceSystem</a>&nbsp;interpolationCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link">OperationMethod</a>&nbsp;method,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">MathTransform</a>&nbsp;transform)</span></div>
<div class="block">Creates a coordinate conversion from the given properties.
The properties given in argument follow the same rules than for the
<a href="AbstractCoordinateOperation.html#%3Cinit%3E(java.util.Map,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.operation.MathTransform)">super-class constructor</a>.
The following table is a reminder of main (not all) properties:
<table class="sis">
<caption>Recognized properties (non exhaustive list)</caption>
<tr>
<th>Property name</th>
<th>Value type</th>
<th>Returned by</th>
</tr>
<tr>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#NAME_KEY" title="class or interface in org.opengis.referencing" class="external-link">"name"</a></td>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/Identifier.html" title="class or interface in org.opengis.metadata" class="external-link"><code>Identifier</code></a> or <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link"><code>String</code></a></td>
<td><a href="../AbstractIdentifiedObject.html#getName()"><code>AbstractIdentifiedObject.getName()</code></a></td>
</tr>
<tr>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#IDENTIFIERS_KEY" title="class or interface in org.opengis.referencing" class="external-link">"identifiers"</a></td>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/Identifier.html" title="class or interface in org.opengis.metadata" class="external-link"><code>Identifier</code></a> (optionally as array)</td>
<td><a href="../AbstractIdentifiedObject.html#getIdentifiers()"><code>AbstractIdentifiedObject.getIdentifiers()</code></a></td>
</tr>
<tr>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CoordinateOperation.html#DOMAIN_OF_VALIDITY_KEY" title="class or interface in org.opengis.referencing.operation" class="external-link">"domainOfValidity"</a></td>
<td><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/Extent.html" title="class or interface in org.opengis.metadata.extent" class="external-link"><code>Extent</code></a></td>
<td><a href="AbstractCoordinateOperation.html#getDomainOfValidity()"><code>AbstractCoordinateOperation.getDomainOfValidity()</code></a></td>
</tr>
</table>
<h4>Relationship between datum</h4>
By definition, coordinate <b>conversions</b> do not change the datum. Consequently, the given <code>source­CRS</code>
and <code>target­CRS</code> should use the same datum. If the datum is not the same, then the coordinate operation
should probably be a <a href="DefaultTransformation.html" title="class in org.apache.sis.referencing.operation">transformation</a> instead.
However, Apache SIS does not enforce that condition, but we encourage users to follow it.
The reason why SIS is tolerant is because some gray areas may exist about whether an operation
should be considered as a conversion or a transformation.
<div class="note"><b>Example:</b>
converting time instants from a <a href="../crs/DefaultTemporalCRS.html" title="class in org.apache.sis.referencing.crs">temporal CRS</a> using
the <cite>January 1st, 1950</cite> epoch to another temporal CRS using the <cite>January 1st, 1970</cite> epoch
is a datum change, since the epoch is part of <a href="../datum/DefaultTemporalDatum.html" title="class in org.apache.sis.referencing.datum">temporal datum</a> definition. However, such operation does not have all the accuracy issues of transformations
between geodetic datum (empirically determined, over-determined systems, stochastic nature of the parameters).
Consequently, some users may consider sufficient to represent temporal epoch changes as conversions instead
than transformations.</div>
Note that while Apache SIS accepts to construct <code>Default­Conversion</code> instances
with different source and target datum, it does not accept to use such instances for
<a href="../crs/DefaultDerivedCRS.html" title="class in org.apache.sis.referencing.crs">derived CRS</a> construction.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>properties</code> - the properties to be given to the identified object.</dd>
<dd><code>source­CRS</code> - the source CRS.</dd>
<dd><code>target­CRS</code> - the target CRS, which shall use a datum <a href="../../util/Utilities.html#equalsIgnoreMetadata(java.lang.Object,java.lang.Object)">equals (ignoring metadata)</a> to the source CRS datum.</dd>
<dd><code>interpolation­CRS</code> - the CRS of additional coordinates needed for the operation, or <code>null</code> if none.</dd>
<dd><code>method</code> - the coordinate operation method (mandatory in all cases).</dd>
<dd><code>transform</code> - transform from positions in the source CRS to positions in the target CRS.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(java.util.Map,org.opengis.referencing.operation.OperationMethod,org.opengis.referencing.operation.MathTransform,org.opengis.parameter.ParameterValueGroup)">
<h3>DefaultConversion</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DefaultConversion</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>?&gt;&nbsp;properties,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link">OperationMethod</a>&nbsp;method,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">MathTransform</a>&nbsp;transform,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterValueGroup.html" title="class or interface in org.opengis.parameter" class="external-link">ParameterValueGroup</a>&nbsp;parameters)</span></div>
<div class="block">Creates a defining conversion from the given transform and/or parameters.
This conversion has no source and target CRS since those elements are usually unknown
at <cite>defining conversion</cite> construction time.
The source and target CRS will become known later, at the
<a href="../crs/DefaultDerivedCRS.html" title="class in org.apache.sis.referencing.crs">Derived CRS</a> or
<a href="../crs/DefaultProjectedCRS.html" title="class in org.apache.sis.referencing.crs">Projected CRS</a>
construction time.
<p>The <code>properties</code> map given in argument follows the same rules than for the
<a href="#%3Cinit%3E(java.util.Map,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.operation.OperationMethod,org.opengis.referencing.operation.MathTransform)">above constructor</a>.</p>
<h4>Transform and parameters arguments</h4>
At least one of the <code>transform</code> or <code>parameters</code> argument must be non-null.
If the caller supplies a <code>transform</code> argument, then it shall be a transform expecting
<a href="../cs/AxesConvention.html#NORMALIZED">normalized</a> input coordinates
and producing normalized output coordinates. See <a href="../cs/AxesConvention.html" title="enum class in org.apache.sis.referencing.cs"><code>Axes­Convention</code></a>
for more information about what Apache SIS means by "normalized".
<p>If the caller cannot yet supply a <code>Math­Transform</code>, then (s)he shall supply the parameter values needed
for creating that transform, with the possible omission of <code>"semi_major"</code> and <code>"semi_minor"</code> values.
The semi-major and semi-minor parameter values will be set automatically when the
<a href="#specialize(java.lang.Class,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.operation.MathTransformFactory)"><code>specialize(…)</code></a> method will be invoked.</p>
<p>If both the <code>transform</code> and <code>parameters</code> arguments are non-null, then the latter should describe
the parameters used for creating the transform. Those parameters will be stored for information purpose and can
be given back by the <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html#getParameterValues()" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Single­Operation​.get­Parameter­Values()</code></a> method.</p></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>properties</code> - the properties to be given to the identified object.</dd>
<dd><code>method</code> - the operation method.</dd>
<dd><code>transform</code> - transform from positions in the source CRS to positions in the target CRS, or <code>null</code>.</dd>
<dd><code>parameters</code> - the <code>transform</code> parameter values, or <code>null</code>.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="transform/DefaultMathTransformFactory.html#swapAndScaleAxes(org.opengis.referencing.operation.MathTransform,org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory.Context)"><code>Default­Math­Transform­Factory​.swap­And­Scale­Axes(Math­Transform, Default­Math­Transform­Factory​.Context)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.opengis.referencing.operation.Conversion)">
<h3>DefaultConversion</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">DefaultConversion</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Conversion</a>&nbsp;operation)</span></div>
<div class="block">Creates a new coordinate operation with the same values than the specified one.
This copy constructor provides a way to convert an arbitrary implementation into a SIS one
or a user-defined one (as a subclass), usually in order to leverage some implementation-specific API.
<p>This constructor performs a shallow copy, i.e. the properties are not cloned.</p></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>operation</code> - the coordinate operation to copy.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#castOrCopy(org.opengis.referencing.operation.Conversion)"><code>cast­Or­Copy(Conversion)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="castOrCopy(org.opengis.referencing.operation.Conversion)">
<h3>castOrCopy</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="DefaultConversion.html" title="class in org.apache.sis.referencing.operation">DefaultConversion</a></span>&nbsp;<span class="element-name">castOrCopy</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Conversion</a>&nbsp;object)</span></div>
<div class="block">Returns a SIS coordinate operation implementation with the values of the given arbitrary implementation.
This method performs the first applicable action in the following choices:
<ul>
<li>If the given object is <code>null</code>, then this method returns <code>null</code>.</li>
<li>Otherwise if the given object is an instance of
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Conversion</code></a>,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Projection.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Projection</code></a>,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CylindricalProjection.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Cylindrical­Projection</code></a>,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/ConicProjection.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Conic­Projection</code></a> or
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/PlanarProjection.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Planar­Projection</code></a>,
then this method delegates to the <code>cast­Or­Copy(…)</code> method of the corresponding SIS subclass.
Note that if the given object implements more than one of the above-cited interfaces,
then the <code>cast­Or­Copy(…)</code> method to be used is unspecified.</li>
<li>Otherwise if the given object is already an instance of
<code>Default­Conversion</code>, then it is returned unchanged.</li>
<li>Otherwise a new <code>Default­Conversion</code> instance is created using the
<a href="#%3Cinit%3E(org.opengis.referencing.operation.Conversion)">copy constructor</a> and returned.
Note that this is a <em>shallow</em> copy operation, because the other
properties contained in the given object are not recursively copied.</li>
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>object</code> - the object to get as a SIS implementation, or <code>null</code> if none.</dd>
<dt>Returns:</dt>
<dd>a SIS implementation containing the values of the given object (may be the
given object itself), or <code>null</code> if the argument was null.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getInterface()">
<h3>getInterface</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Conversion</a>&gt;</span>&nbsp;<span class="element-name">getInterface</span>()</div>
<div class="block">Returns the GeoAPI interface implemented by this class.
The default implementation returns <code>Conversion​.class</code>.
Subclasses implementing a more specific GeoAPI interface shall override this method.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="AbstractCoordinateOperation.html#getInterface()">get­Interface</a></code>&nbsp;in class&nbsp;<code><a href="AbstractCoordinateOperation.html" title="class in org.apache.sis.referencing.operation">Abstract­Coordinate­Operation</a></code></dd>
<dt>Returns:</dt>
<dd>the conversion interface implemented by this class.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="specialize(java.lang.Class,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.referencing.operation.MathTransformFactory)">
<h3>specialize</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T extends <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Conversion</a>&gt;</span>&nbsp;<span class="return-type">T</span>&nbsp;<span class="element-name">specialize</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;T&gt;&nbsp;baseType,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link">CoordinateReferenceSystem</a>&nbsp;sourceCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link">CoordinateReferenceSystem</a>&nbsp;targetCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransformFactory.html" title="class or interface in org.opengis.referencing.operation" class="external-link">MathTransformFactory</a>&nbsp;factory)</span>
throws <span class="exceptions"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/FactoryException.html" title="class or interface in org.opengis.util" class="external-link">FactoryException</a></span></div>
<div class="block">Returns a specialization of this conversion with a more specific type, source and target CRS.
This <code>specialize(…)</code> method is typically invoked on <a href="#%3Cinit%3E(java.util.Map,org.opengis.referencing.operation.OperationMethod,org.opengis.referencing.operation.MathTransform,org.opengis.parameter.ParameterValueGroup)">defining conversion</a> instances,
when more information become available about the conversion to create.
<p>The given <code>base­Type</code> argument can be one of the following values:</p>
<ul>
<li><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Conversion</a>.class</code></li>
<li><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Projection.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Projection</a>.class</code></li>
<li><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/CylindricalProjection.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Cylindrical­Projection</a>.class</code></li>
<li><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/ConicProjection.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Conic­Projection</a>.class</code></li>
<li><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/PlanarProjection.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Planar­Projection</a>.class</code></li>
</ul>
This <code>specialize(…)</code> method returns a conversion which implement at least the given <code>base­Type</code>
interface, but may also implement a more specific GeoAPI interface if <code>specialize(…)</code> has been able
to infer the type from the <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html#getMethod()" title="class or interface in org.opengis.referencing.operation" class="external-link">operation method</a>.</div>
<dl class="notes">
<dt>Type Parameters:</dt>
<dd><code>T</code> - compile-time type of the <code>base­Type</code> argument.</dd>
<dt>Parameters:</dt>
<dd><code>base­Type</code> - the base GeoAPI interface to be implemented by the conversion to return.</dd>
<dd><code>source­CRS</code> - the source CRS.</dd>
<dd><code>target­CRS</code> - the target CRS.</dd>
<dd><code>factory</code> - the factory to use for creating a transform from the parameters or for performing axis changes,
or <code>null</code> for the default factory.</dd>
<dt>Returns:</dt>
<dd>the conversion of the given type between the given CRS.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/ClassCastException.html" title="class or interface in java.lang" class="external-link">Class­Cast­Exception</a></code> - if a contradiction is found between the given <code>base­Type</code>,
the defining <a href="#getInterface()">conversion type</a> and
the <a href="DefaultOperationMethod.html#getOperationType()">method operation type</a>.</dd>
<dd><code><a href="MismatchedDatumException.html" title="class in org.apache.sis.referencing.operation">Mismatched­Datum­Exception</a></code> - if the given CRS do not use the same datum than the source and target CRS
of this conversion.</dd>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/FactoryException.html" title="class or interface in org.opengis.util" class="external-link">Factory­Exception</a></code> - if the creation of a <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Math­Transform</code></a> from the <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html#getParameterValues()" title="class or interface in org.opengis.referencing.operation" class="external-link">parameter values</a>, or a <a href="../cs/CoordinateSystems.html#swapAndScaleAxes(org.opengis.referencing.cs.CoordinateSystem,org.opengis.referencing.cs.CoordinateSystem)">change of axis order or units</a>
failed.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="transform/DefaultMathTransformFactory.html#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup,org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory.Context)"><code>Default­Math­Transform­Factory​.create­Parameterized­Transform(Parameter­Value­Group, Default­Math­Transform­Factory​.Context)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getMethod()">
<h3>getMethod</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link">OperationMethod</a></span>&nbsp;<span class="element-name">getMethod</span>()</div>
<div class="block">Returns a description of the operation method, including a list of expected parameter names.
The returned object does not contains any parameter value.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html#getMethod()" title="class or interface in org.opengis.referencing.operation" class="external-link">get­Method</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Single­Operation</a></code></dd>
<dt>Returns:</dt>
<dd>a description of the operation method.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getParameterDescriptors()">
<h3>getParameterDescriptors</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterDescriptorGroup.html" title="class or interface in org.opengis.parameter" class="external-link">ParameterDescriptorGroup</a></span>&nbsp;<span class="element-name">getParameterDescriptors</span>()</div>
<div class="block">Returns a description of the parameters. The default implementation performs the following choice:
<ul>
<li>If parameter values were specified explicitly at construction time,
then the descriptor of those parameters is returned.</li>
<li>Otherwise if this method can infer the parameter descriptor from the
<a href="AbstractCoordinateOperation.html#getMathTransform()">math transform</a>, then that descriptor is returned.</li>
<li>Otherwise fallback on the <a href="DefaultOperationMethod.html#getParameters()">method parameters</a>.</li>
</ul>
<div class="note"><b>Note:</b>
the two parameter descriptions (from the <code>Math­Transform</code> or from the <code>Operation­Method</code>)
should be very similar. If they differ, it should be only in minor details like remarks, default
values or units of measurement.</div></div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../parameter/Parameterized.html#getParameterDescriptors()">get­Parameter­Descriptors</a></code>&nbsp;in interface&nbsp;<code><a href="../../parameter/Parameterized.html" title="interface in org.apache.sis.parameter">Parameterized</a></code></dd>
<dt>Returns:</dt>
<dd>a description of the parameters.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="DefaultOperationMethod.html#getParameters()"><code>Default­Operation­Method​.get­Parameters()</code></a></li>
<li><a href="transform/AbstractMathTransform.html#getParameterDescriptors()"><code>Abstract­Math­Transform​.get­Parameter­Descriptors()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getParameterValues()">
<h3>getParameterValues</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterValueGroup.html" title="class or interface in org.opengis.parameter" class="external-link">ParameterValueGroup</a></span>&nbsp;<span class="element-name">getParameterValues</span>()</div>
<div class="block">Returns the parameter values. The default implementation performs the following choice:
<ul>
<li>If parameter values were specified explicitly at construction time, then they are returned as an
<a href="../../parameter/Parameters.html#unmodifiable(org.opengis.parameter.ParameterValueGroup)">unmodifiable parameter group</a>.</li>
<li>Otherwise if this method can infer the parameter values from the
<a href="AbstractCoordinateOperation.html#getMathTransform()">math transform</a>, then those parameters are returned.</li>
<li>Otherwise throw <a href="../../util/UnsupportedImplementationException.html" title="class in org.apache.sis.util"><code>Unsupported­Implementation­Exception</code></a>.</li>
</ul></div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../parameter/Parameterized.html#getParameterValues()">get­Parameter­Values</a></code>&nbsp;in interface&nbsp;<code><a href="../../parameter/Parameterized.html" title="interface in org.apache.sis.parameter">Parameterized</a></code></dd>
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html#getParameterValues()" title="class or interface in org.opengis.referencing.operation" class="external-link">get­Parameter­Values</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Single­Operation</a></code></dd>
<dt>Returns:</dt>
<dd>the parameter values.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang" class="external-link">Unsupported­Operation­Exception</a></code> - if the parameter values cannot be determined
for the current math transform implementation.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="transform/AbstractMathTransform.html#getParameterValues()"><code>Abstract­Math­Transform​.get­Parameter­Values()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="equals(java.lang.Object,org.apache.sis.util.ComparisonMode)">
<h3>equals</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;object,
<a href="../../util/ComparisonMode.html" title="enum class in org.apache.sis.util">ComparisonMode</a>&nbsp;mode)</span></div>
<div class="block">Compares this coordinate operation with the specified object for equality. If the <code>mode</code> argument
is <a href="../../util/ComparisonMode.html#STRICT"><code>Comparison­Mode​.STRICT</code></a> or <a href="../../util/ComparisonMode.html#BY_CONTRACT"><code>BY_CONTRACT</code></a>, then all available
properties are compared including the <a href="AbstractCoordinateOperation.html#getDomainOfValidity()">domain of validity</a> and the
<a href="AbstractCoordinateOperation.html#getScope()">scope</a>.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../util/LenientComparable.html#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)">equals</a></code>&nbsp;in interface&nbsp;<code><a href="../../util/LenientComparable.html" title="interface in org.apache.sis.util">Lenient­Comparable</a></code></dd>
<dt>Overrides:</dt>
<dd><code><a href="AbstractCoordinateOperation.html#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)">equals</a></code>&nbsp;in class&nbsp;<code><a href="AbstractCoordinateOperation.html" title="class in org.apache.sis.referencing.operation">Abstract­Coordinate­Operation</a></code></dd>
<dt>Parameters:</dt>
<dd><code>object</code> - the object to compare to <code>this</code>.</dd>
<dd><code>mode</code> - <a href="../../util/ComparisonMode.html#STRICT"><code>STRICT</code></a> for performing a strict comparison, or
<a href="../../util/ComparisonMode.html#IGNORE_METADATA"><code>IGNORE_METADATA</code></a> for ignoring properties
that do not make a difference in the numerical results of coordinate operations.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if both objects are equal for the given comparison mode.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="../AbstractIdentifiedObject.html#computeHashCode()"><code>Abstract­Identified­Object​.compute­Hash­Code()</code></a></li>
<li><a href="../../util/Utilities.html#deepEquals(java.lang.Object,java.lang.Object,org.apache.sis.util.ComparisonMode)"><code>Utilities​.deep­Equals(Object, Object, Comparison­Mode)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2010&#x2013;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>