blob: 66e6db29f36f471d94673c9e3875eb27b7afaa8e [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>AbstractMathTransform (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.transform.AbstractMathTransform class">
<meta name="keywords" content="getSourceDimensions()">
<meta name="keywords" content="getTargetDimensions()">
<meta name="keywords" content="getParameterDescriptors()">
<meta name="keywords" content="getParameterValues()">
<meta name="keywords" content="getContextualParameters()">
<meta name="keywords" content="isIdentity()">
<meta name="keywords" content="transform()">
<meta name="keywords" content="derivative()">
<meta name="keywords" content="inverse()">
<meta name="keywords" content="tryConcatenate()">
<meta name="keywords" content="hashCode()">
<meta name="keywords" content="computeHashCode()">
<meta name="keywords" content="equals()">
<meta name="keywords" content="formatTo()">
<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="AbstractMathTransform (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":6,"i9":6,"i10":10,"i11":10,"i12":10,"i13":6,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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/AbstractMathTransform.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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&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>Field&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.transform</a></div>
<h2 title="Class AbstractMathTransform" class="title">Class AbstractMathTransform</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../io/wkt/FormattableObject.html" title="class in org.apache.sis.io.wkt">FormattableObject</a></li>
<li>
<ul class="inheritance">
<li>AbstractMathTransform</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="../../../parameter/Parameterized.html" title="interface in org.apache.sis.parameter">Parameterized</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/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Math­Transform</a></code></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="AbstractMathTransform.Inverse.html" title="class in org.apache.sis.referencing.operation.transform">Abstract­Math­Transform​.Inverse</a></code>, <code><a href="AbstractMathTransform1D.html" title="class in org.apache.sis.referencing.operation.transform">Abstract­Math­Transform1D</a></code>, <code><a href="AbstractMathTransform2D.html" title="class in org.apache.sis.referencing.operation.transform">Abstract­Math­Transform2D</a></code>, <code><a href="DatumShiftTransform.html" title="class in org.apache.sis.referencing.operation.transform">Datum­Shift­Transform</a></code>, <code><a href="EllipsoidToCentricTransform.html" title="class in org.apache.sis.referencing.operation.transform">Ellipsoid­To­Centric­Transform</a></code>, <code><a href="PassThroughTransform.html" title="class in org.apache.sis.referencing.operation.transform">Pass­Through­Transform</a></code></dd>
</dl>
<hr>
<pre>public abstract class <span class="typeNameLabel">AbstractMathTransform</span>
extends <a href="../../../io/wkt/FormattableObject.html" title="class in org.apache.sis.io.wkt">FormattableObject</a>
implements <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform</a>, <a href="../../../parameter/Parameterized.html" title="interface in org.apache.sis.parameter">Parameterized</a>, <a href="../../../util/LenientComparable.html" title="interface in org.apache.sis.util">LenientComparable</a></pre>
<div class="block">Provides a default implementation for most methods required by the <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink"><code>Math­Transform</code></a> interface.
A <code>Math­Transform</code> is an object that actually does the work of applying a
<a href="../DefaultFormula.html" title="class in org.apache.sis.referencing.operation">formula</a> to coordinate values.
The math transform does not know or care how the coordinates relate to positions in the real world.
For example if an affine transform scales <var>z</var> values by a factor of 1000,
then it could be converting metres to millimetres, or it could be converting kilometres to metres.
<p><code>Abstract­Math­Transform</code> provides a convenient base class from which <code>Math­Transform</code> implementations
can be easily derived. It also defines a few additional SIS-specific methods for convenience of performance.
The simplest way to implement this abstract class is to provide an implementation for the following methods only:</p>
<ul>
<li><a href="#getSourceDimensions()"><code>get­Source­Dimensions()</code></a></li>
<li><a href="#getTargetDimensions()"><code>get­Target­Dimensions()</code></a></li>
<li><a href="#transform(double%5B%5D,int,double%5B%5D,int,boolean)"><code>transform(double[], int, double[], int, boolean)</code></a></li>
</ul>
However more performance may be gained by overriding the other <code>transform(…)</code> methods as well.
<div class="section">Immutability and thread safety</div>
All Apache SIS implementations of <code>Math­Transform</code> are immutable and thread-safe.
It is highly recommended that third-party implementations be immutable and thread-safe too.
This means that unless otherwise noted in the javadoc, <code>Math­Transform</code> instances can
be shared by many objects and passed between threads without synchronization.
<div class="section">Serialization</div>
<code>Math­Transform</code> may or may not be serializable, at implementation choices.
Most Apache SIS implementations are serializable, but the serialized objects are not guaranteed to be compatible
with future SIS versions. Serialization should be used only for short term storage or RMI between applications
running the same SIS version.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="DefaultMathTransformFactory.html" title="class in org.apache.sis.referencing.operation.transform"><code>Default­Math­Transform­Factory</code></a>,
<a href="../AbstractCoordinateOperation.html" title="class in org.apache.sis.referencing.operation"><code>Abstract­Coordinate­Operation</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">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="AbstractMathTransform.Inverse.html" title="class in org.apache.sis.referencing.operation.transform">AbstractMathTransform.Inverse</a></span></code></th>
<td class="colLast">
<div class="block">Base class for implementations of inverse math transforms.</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">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">AbstractMathTransform</a></span>()</code></th>
<td class="colLast">
<div class="block">Constructor for subclasses.</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="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract 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>protected int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#computeHashCode()">computeHashCode</a></span>()</code></th>
<td class="colLast">
<div class="block">Computes a hash value for this transform.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/Matrix.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Matrix</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#derivative(org.opengis.geometry.DirectPosition)">derivative</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/DirectPosition.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink">DirectPosition</a>&nbsp;point)</code></th>
<td class="colLast">
<div class="block">Gets the derivative of this transform at a point.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equals(java.lang.Object)">equals</a></span>&#8203;(<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>&nbsp;object)</code></th>
<td class="colLast">
<div class="block">Compares the specified object with this math transform for strict equality.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)">equals</a></span>&#8203;(<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>&nbsp;object,
<a href="../../../util/ComparisonMode.html" title="enum in org.apache.sis.util">ComparisonMode</a>&nbsp;mode)</code></th>
<td class="colLast">
<div class="block">Compares the specified object with this math transform for equality.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#formatTo(org.apache.sis.io.wkt.Formatter)">formatTo</a></span>&#8203;(<a href="../../../io/wkt/Formatter.html" title="class in org.apache.sis.io.wkt">Formatter</a>&nbsp;formatter)</code></th>
<td class="colLast">
<div class="block">Formats the inner part of a <cite>Well Known Text</cite> version 1 (WKT 1) element.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected <a href="ContextualParameters.html" title="class in org.apache.sis.referencing.operation.transform">ContextualParameters</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getContextualParameters()">getContextualParameters</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the parameters for a sequence of <cite>normalize</cite><code>this</code><cite>denormalize</cite>
transforms (<i>optional operation</i>).</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/parameter/ParameterDescriptorGroup.html?is-external=true" title="class or interface in org.opengis.parameter" class="externalLink">ParameterDescriptorGroup</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getParameterDescriptors()">getParameterDescriptors</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the parameter descriptors for this math transform, or <code>null</code> if unknown.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/parameter/ParameterValueGroup.html?is-external=true" title="class or interface in org.opengis.parameter" class="externalLink">ParameterValueGroup</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getParameterValues()">getParameterValues</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the parameter values for this math transform, or <code>null</code> if unknown.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>abstract int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSourceDimensions()">getSourceDimensions</a></span>()</code></th>
<td class="colLast">
<div class="block">Gets the dimension of input points.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>abstract int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTargetDimensions()">getTargetDimensions</a></span>()</code></th>
<td class="colLast">
<div class="block">Gets the dimension of output points.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hashCode()">hashCode</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns a hash value for this transform.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#inverse()">inverse</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the inverse transform of this object.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isIdentity()">isIdentity</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests whether this transform does not move any points.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>abstract <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/Matrix.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Matrix</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#transform(double%5B%5D,int,double%5B%5D,int,boolean)">transform</a></span>&#8203;(double[]&nbsp;srcPts,
int&nbsp;srcOff,
double[]&nbsp;dstPts,
int&nbsp;dstOff,
boolean&nbsp;derivate)</code></th>
<td class="colLast">
<div class="block">Transforms a single coordinate point in an array, and optionally computes the transform
derivative at that location.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#transform(double%5B%5D,int,double%5B%5D,int,int)">transform</a></span>&#8203;(double[]&nbsp;srcPts,
int&nbsp;srcOff,
double[]&nbsp;dstPts,
int&nbsp;dstOff,
int&nbsp;numPts)</code></th>
<td class="colLast">
<div class="block">Transforms a list of coordinate points.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#transform(double%5B%5D,int,float%5B%5D,int,int)">transform</a></span>&#8203;(double[]&nbsp;srcPts,
int&nbsp;srcOff,
float[]&nbsp;dstPts,
int&nbsp;dstOff,
int&nbsp;numPts)</code></th>
<td class="colLast">
<div class="block">Transforms a list of coordinate points.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#transform(float%5B%5D,int,double%5B%5D,int,int)">transform</a></span>&#8203;(float[]&nbsp;srcPts,
int&nbsp;srcOff,
double[]&nbsp;dstPts,
int&nbsp;dstOff,
int&nbsp;numPts)</code></th>
<td class="colLast">
<div class="block">Transforms a list of coordinate points.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#transform(float%5B%5D,int,float%5B%5D,int,int)">transform</a></span>&#8203;(float[]&nbsp;srcPts,
int&nbsp;srcOff,
float[]&nbsp;dstPts,
int&nbsp;dstOff,
int&nbsp;numPts)</code></th>
<td class="colLast">
<div class="block">Transforms a list of coordinate points.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/DirectPosition.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink">DirectPosition</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#transform(org.opengis.geometry.DirectPosition,org.opengis.geometry.DirectPosition)">transform</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/DirectPosition.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink">DirectPosition</a>&nbsp;ptSrc,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/DirectPosition.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink">DirectPosition</a>&nbsp;ptDst)</code></th>
<td class="colLast">
<div class="block">Transforms the specified <code>pt­Src</code> and stores the result in <code>pt­Dst</code>.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>protected <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#tryConcatenate(boolean,org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransformFactory)">tryConcatenate</a></span>&#8203;(boolean&nbsp;applyOtherFirst,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform</a>&nbsp;other,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransformFactory.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransformFactory</a>&nbsp;factory)</code></th>
<td class="colLast">
<div class="block">Concatenates or pre-concatenates in an optimized way this math transform with the given one, if possible.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.FormattableObject">
<!-- -->
</a>
<h3>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></li>
</ul>
<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#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#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#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>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.MathTransform">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform</a></h3>
<code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#toWKT()" title="class or interface in org.opengis.referencing.operation" class="externalLink">to­WKT</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= 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;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>AbstractMathTransform</h4>
<pre>protected&nbsp;AbstractMathTransform()</pre>
<div class="block">Constructor for subclasses.</div>
</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="getSourceDimensions()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSourceDimensions</h4>
<pre class="methodSignature">public abstract&nbsp;int&nbsp;getSourceDimensions()</pre>
<div class="block">Gets the dimension of input points.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#getSourceDimensions()" title="class or interface in org.opengis.referencing.operation" class="externalLink">get­Source­Dimensions</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Math­Transform</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the dimension of input points.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../DefaultOperationMethod.html#getSourceDimensions()"><code>Default­Operation­Method​.get­Source­Dimensions()</code></a></dd>
</dl>
</li>
</ul>
<a id="getTargetDimensions()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTargetDimensions</h4>
<pre class="methodSignature">public abstract&nbsp;int&nbsp;getTargetDimensions()</pre>
<div class="block">Gets the dimension of output points.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#getTargetDimensions()" title="class or interface in org.opengis.referencing.operation" class="externalLink">get­Target­Dimensions</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Math­Transform</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the dimension of output points.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../DefaultOperationMethod.html#getTargetDimensions()"><code>Default­Operation­Method​.get­Target­Dimensions()</code></a></dd>
</dl>
</li>
</ul>
<a id="getParameterDescriptors()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParameterDescriptors</h4>
<pre class="methodSignature">public&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/parameter/ParameterDescriptorGroup.html?is-external=true" title="class or interface in org.opengis.parameter" class="externalLink">ParameterDescriptorGroup</a>&nbsp;getParameterDescriptors()</pre>
<div class="block">Returns the parameter descriptors for this math transform, or <code>null</code> if unknown.
<div class="note"><b>Relationship with ISO 19111:</b>
This method is similar to <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/OperationMethod.html?is-external=true#getParameters()" title="class or interface in org.opengis.referencing.operation" class="externalLink"><code>Operation­Method​.get­Parameters()</code></a>, except that typical
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink"><code>Math­Transform</code></a> implementations return parameters in standard units (usually
<a href="../../../measure/Units.html#METRE">metres</a> or
<a href="../../../measure/Units.html#DEGREE">decimal degrees</a>).
</div></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></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><span class="returnLabel">Returns:</span></dt>
<dd>the parameter descriptors for this math transform, or <code>null</code> if unspecified.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../DefaultOperationMethod.html#getParameters()"><code>Default­Operation­Method​.get­Parameters()</code></a></dd>
</dl>
</li>
</ul>
<a id="getParameterValues()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParameterValues</h4>
<pre class="methodSignature">public&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/parameter/ParameterValueGroup.html?is-external=true" title="class or interface in org.opengis.parameter" class="externalLink">ParameterValueGroup</a>&nbsp;getParameterValues()</pre>
<div class="block">Returns the parameter values for this math transform, or <code>null</code> if unknown.
This is not necessarily the parameters that the user specified at construction time,
since implementations may have applied normalizations.
<div class="section">Normalized and contextual parameters</div>
Most Apache SIS implementations of map projections perform their calculations on an ellipsoid
having a semi-major axis length of 1. In such cases, the group returned by this method contains
a <code>"semi_major"</code> parameter with a value of 1. If the real axis length is desired, we need
to take in account the context of this math transform, i.e. the scales and offsets applied before
and after this transform. This information is provided by <a href="#getContextualParameters()"><code>get­Contextual­Parameters()</code></a>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></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><span class="returnLabel">Returns:</span></dt>
<dd>the parameter values for this math transform, or <code>null</code> if unspecified.
Note that those parameters may be normalized (e.g. represent a transformation
of an ellipsoid of semi-major axis length of 1).</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#getContextualParameters()"><code>get­Contextual­Parameters()</code></a>,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/SingleOperation.html?is-external=true#getParameterValues()" title="class or interface in org.opengis.referencing.operation" class="externalLink"><code>Single­Operation​.get­Parameter­Values()</code></a></dd>
</dl>
</li>
</ul>
<a id="getContextualParameters()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getContextualParameters</h4>
<pre class="methodSignature">protected&nbsp;<a href="ContextualParameters.html" title="class in org.apache.sis.referencing.operation.transform">ContextualParameters</a>&nbsp;getContextualParameters()</pre>
<div class="block">Returns the parameters for a sequence of <cite>normalize</cite><code>this</code><cite>denormalize</cite>
transforms (<i>optional operation</i>).
Subclasses can override this method if they choose to split their computation in linear and non-linear parts.
Such split is optional: it can leads to better performance (because SIS can concatenate efficiently consecutive
linear transforms), but should not change significantly the result (ignoring differences in rounding errors).
If a split has been done, then this <code>Math­Transform</code> represents only the non-linear step and Apache SIS
needs this method for reconstructing the parameters of the complete transform.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the parameters values for the sequence of <cite>normalize</cite><code>this</code><cite>denormalize</cite>
transforms, or <code>null</code> if unspecified.
Callers should not modify the returned parameters, since modifications (if allowed)
will generally not be reflected back in this <code>Math­Transform</code>.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.6</dd>
</dl>
</li>
</ul>
<a id="isIdentity()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isIdentity</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isIdentity()</pre>
<div class="block">Tests whether this transform does not move any points.
The default implementation always returns <code>false</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#isIdentity()" title="class or interface in org.opengis.referencing.operation" class="externalLink">is­Identity</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Math­Transform</a></code></dd>
</dl>
</li>
</ul>
<a id="transform(org.opengis.geometry.DirectPosition,org.opengis.geometry.DirectPosition)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>transform</h4>
<pre class="methodSignature">public&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/DirectPosition.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink">DirectPosition</a>&nbsp;transform&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/DirectPosition.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink">DirectPosition</a>&nbsp;ptSrc,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/DirectPosition.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink">DirectPosition</a>&nbsp;ptDst)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">TransformException</a></pre>
<div class="block">Transforms the specified <code>pt­Src</code> and stores the result in <code>pt­Dst</code>.
The default implementation performs the following steps:
<ul>
<li>Ensures that the dimension of the given points are consistent with the
<a href="#getSourceDimensions()">source</a> and <a href="#getTargetDimensions()">target dimensions</a> of this math transform.</li>
<li>Delegates to the <a href="#transform(double%5B%5D,int,double%5B%5D,int,boolean)"><code>transform(double[], int, double[], int, boolean)</code></a> method.</li>
</ul>
This method does not update the associated <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"><code>Coordinate­Reference­System</code></a> value.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#transform(org.opengis.geometry.DirectPosition,org.opengis.geometry.DirectPosition)" title="class or interface in org.opengis.referencing.operation" class="externalLink">transform</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Math­Transform</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>pt­Src</code> - the coordinate point to be transformed.</dd>
<dd><code>pt­Dst</code> - the coordinate point that stores the result of transforming <code>pt­Src</code>, or <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the coordinate point after transforming <code>pt­Src</code> and storing the result in <code>pt­Dst</code>,
or a newly created point if <code>pt­Dst</code> was null.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/MismatchedDimensionException.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink">Mismatched­Dimension­Exception</a></code> - if <code>pt­Src</code> or <code>pt­Dst</code> doesn't have the expected dimension.</dd>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Transform­Exception</a></code> - if the point can not be transformed.</dd>
</dl>
</li>
</ul>
<a id="transform(double[],int,double[],int,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>transform</h4>
<pre class="methodSignature">public abstract&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/Matrix.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Matrix</a>&nbsp;transform&#8203;(double[]&nbsp;srcPts,
int&nbsp;srcOff,
double[]&nbsp;dstPts,
int&nbsp;dstOff,
boolean&nbsp;derivate)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">TransformException</a></pre>
<div class="block">Transforms a single coordinate point in an array, and optionally computes the transform
derivative at that location. Invoking this method is conceptually equivalent to running
the following:
<blockquote><pre>Matrix derivative = <font color="green">null</font>;
<font color="green">if</font> (derivate) {
<font color="green">double</font>[] coordinates = Arrays.<b>copyOfRange</b>(srcPts, srcOff, srcOff + <b>getSourceDimensions</b>());
derivative = <font color="green">this</font>.<b>derivative</b>(<font color="green">new</font> <b>GeneralDirectPosition</b>(coordinates));
}
<font color="green">this</font>.<b>transform</b>(srcPts, srcOff, dstPts, dstOff, 1); <i><font color="gray">// May overwrite srcPts.</font></i>
<font color="green">return</font> derivative;</pre></blockquote>
However this method provides two advantages:
<ul>
<li>It is usually easier to implement for <code>Abstract­Math­Transform</code> subclasses.
The default <a href="#transform(double%5B%5D,int,double%5B%5D,int,int)"><code>transform(double[], int, double[], int, int)</code></a> method implementation will invoke this
method in a loop, taking care of the <a href="IterationStrategy.html" title="enum in org.apache.sis.referencing.operation.transform">iteration strategy</a> depending on the
argument value.</li>
<li>When both the transformed point and its derivative are needed, this method may be significantly faster than
invoking the <code>transform</code> and <code>derivative</code> methods separately because many internal calculations are
the same. Computing those two information in a single step can help to reduce redundant calculation.</li>
</ul>
<div class="section">Note for implementers</div>
The source and destination may overlap. Consequently, implementers must read all source
coordinate values before to start writing the transformed coordinates in the destination array.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>src­Pts</code> - the array containing the source coordinate (can not be <code>null</code>).</dd>
<dd><code>src­Off</code> - the offset to the point to be transformed in the source array.</dd>
<dd><code>dst­Pts</code> - the array into which the transformed coordinate is returned. May be the same than <code>src­Pts</code>.
May be <code>null</code> if only the derivative matrix is desired.</dd>
<dd><code>dst­Off</code> - the offset to the location of the transformed point that is stored in the destination array.</dd>
<dd><code>derivate</code> - <code>true</code> for computing the derivative, or <code>false</code> if not needed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the matrix of the transform derivative at the given source position,
or <code>null</code> if the <code>derivate</code> argument is <code>false</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Transform­Exception</a></code> - if the point can not be transformed or
if a problem occurred while calculating the derivative.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#derivative(org.opengis.geometry.DirectPosition)"><code>derivative(Direct­Position)</code></a>,
<a href="#transform(org.opengis.geometry.DirectPosition,org.opengis.geometry.DirectPosition)"><code>transform(Direct­Position, Direct­Position)</code></a>,
<a href="MathTransforms.html#derivativeAndTransform(org.opengis.referencing.operation.MathTransform,double%5B%5D,int,double%5B%5D,int)"><code>Math­Transforms​.derivative­And­Transform(Math­Transform, double[], int, double[], int)</code></a></dd>
</dl>
</li>
</ul>
<a id="transform(double[],int,double[],int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>transform</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;transform&#8203;(double[]&nbsp;srcPts,
int&nbsp;srcOff,
double[]&nbsp;dstPts,
int&nbsp;dstOff,
int&nbsp;numPts)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">TransformException</a></pre>
<div class="block">Transforms a list of coordinate points. This method is provided for efficiently transforming many points.
The supplied array of coordinate values will contain packed coordinate values.
<div class="note"><b>Example:</b> if the source dimension is 3, then the coordinates will be packed in this order:
(<var>x₀</var>,<var>y₀</var>,<var>z₀</var>,
<var>x₁</var>,<var>y₁</var>,<var>z₁</var> …).
</div>
The default implementation invokes <a href="#transform(double%5B%5D,int,double%5B%5D,int,boolean)"><code>transform(double[], int, double[], int, boolean)</code></a> in a loop,
using an <a href="IterationStrategy.html" title="enum in org.apache.sis.referencing.operation.transform">iteration strategy</a> determined from the arguments for iterating
over the points.
<div class="note"><b>Implementation note:</b> see <a href="IterationStrategy.html" title="enum in org.apache.sis.referencing.operation.transform"><code>Iteration­Strategy</code></a> javadoc for a method skeleton.</div></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#transform(double%5B%5D,int,double%5B%5D,int,int)" title="class or interface in org.opengis.referencing.operation" class="externalLink">transform</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Math­Transform</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>src­Pts</code> - the array containing the source point coordinates.</dd>
<dd><code>src­Off</code> - the offset to the first point to be transformed in the source array.</dd>
<dd><code>dst­Pts</code> - the array into which the transformed point coordinates are returned.
May be the same than <code>src­Pts</code>.</dd>
<dd><code>dst­Off</code> - the offset to the location of the first transformed point that is stored in the destination array.</dd>
<dd><code>num­Pts</code> - the number of point objects to be transformed.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Transform­Exception</a></code> - if a point can not be transformed. Some implementations will stop at the first failure,
wile some other implementations will fill the untransformable points with <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true#NaN" title="class or interface in java.lang" class="externalLink">Double.NaN</a> values,
continue and throw the exception only at end. Implementations that fall in the later case should set the
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true#getLastCompletedTransform()" title="class or interface in org.opengis.referencing.operation" class="externalLink">last completed transform</a> to <code>this</code>.</dd>
</dl>
</li>
</ul>
<a id="transform(float[],int,float[],int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>transform</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;transform&#8203;(float[]&nbsp;srcPts,
int&nbsp;srcOff,
float[]&nbsp;dstPts,
int&nbsp;dstOff,
int&nbsp;numPts)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">TransformException</a></pre>
<div class="block">Transforms a list of coordinate points. The default implementation delegates
to <a href="#transform(double%5B%5D,int,double%5B%5D,int,int)"><code>transform(double[], int, double[], int, int)</code></a> using a temporary array of doubles.
<div class="note"><b>Implementation note:</b> see <a href="IterationStrategy.html" title="enum in org.apache.sis.referencing.operation.transform"><code>Iteration­Strategy</code></a> javadoc for a method skeleton.</div></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#transform(float%5B%5D,int,float%5B%5D,int,int)" title="class or interface in org.opengis.referencing.operation" class="externalLink">transform</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Math­Transform</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>src­Pts</code> - the array containing the source point coordinates.</dd>
<dd><code>src­Off</code> - the offset to the first point to be transformed in the source array.</dd>
<dd><code>dst­Pts</code> - the array into which the transformed point coordinates are returned.
May be the same than <code>src­Pts</code>.</dd>
<dd><code>dst­Off</code> - the offset to the location of the first transformed point that is stored in the destination array.</dd>
<dd><code>num­Pts</code> - the number of point objects to be transformed.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Transform­Exception</a></code> - if a point can't be transformed. Some implementations will stop at the first failure,
wile some other implementations will fill the un-transformable points with <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Float.html?is-external=true#NaN" title="class or interface in java.lang" class="externalLink"><code>Float​.Na­N</code></a> values,
continue and throw the exception only at end. Implementations that fall in the later case should set
the <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true#getLastCompletedTransform()" title="class or interface in org.opengis.referencing.operation" class="externalLink">last completed transform</a> to <code>this</code>.</dd>
</dl>
</li>
</ul>
<a id="transform(double[],int,float[],int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>transform</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;transform&#8203;(double[]&nbsp;srcPts,
int&nbsp;srcOff,
float[]&nbsp;dstPts,
int&nbsp;dstOff,
int&nbsp;numPts)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">TransformException</a></pre>
<div class="block">Transforms a list of coordinate points. The default implementation delegates
to <a href="#transform(double%5B%5D,int,double%5B%5D,int,int)"><code>transform(double[], int, double[], int, int)</code></a> using a temporary array of doubles.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#transform(double%5B%5D,int,float%5B%5D,int,int)" title="class or interface in org.opengis.referencing.operation" class="externalLink">transform</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Math­Transform</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>src­Pts</code> - the array containing the source point coordinates.</dd>
<dd><code>src­Off</code> - the offset to the first point to be transformed in the source array.</dd>
<dd><code>dst­Pts</code> - the array into which the transformed point coordinates are returned.</dd>
<dd><code>dst­Off</code> - the offset to the location of the first transformed point that is stored in the destination array.</dd>
<dd><code>num­Pts</code> - the number of point objects to be transformed.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Transform­Exception</a></code> - if a point can not be transformed. Some implementations will stop at the first failure,
wile some other implementations will fill the untransformable points with <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Float.html?is-external=true#NaN" title="class or interface in java.lang" class="externalLink">Float.NaN</a> values,
continue and throw the exception only at end. Implementations that fall in the later case should set the
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true#getLastCompletedTransform()" title="class or interface in org.opengis.referencing.operation" class="externalLink">last completed transform</a> to <code>this</code>.</dd>
</dl>
</li>
</ul>
<a id="transform(float[],int,double[],int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>transform</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;transform&#8203;(float[]&nbsp;srcPts,
int&nbsp;srcOff,
double[]&nbsp;dstPts,
int&nbsp;dstOff,
int&nbsp;numPts)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">TransformException</a></pre>
<div class="block">Transforms a list of coordinate points. The default implementation delegates
to <a href="#transform(double%5B%5D,int,double%5B%5D,int,int)"><code>transform(double[], int, double[], int, int)</code></a> using a temporary array of doubles
if necessary.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#transform(float%5B%5D,int,double%5B%5D,int,int)" title="class or interface in org.opengis.referencing.operation" class="externalLink">transform</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Math­Transform</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>src­Pts</code> - the array containing the source point coordinates.</dd>
<dd><code>src­Off</code> - the offset to the first point to be transformed in the source array.</dd>
<dd><code>dst­Pts</code> - the array into which the transformed point coordinates are returned.</dd>
<dd><code>dst­Off</code> - the offset to the location of the first transformed point that is stored in the destination array.</dd>
<dd><code>num­Pts</code> - the number of point objects to be transformed.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Transform­Exception</a></code> - if a point can not be transformed. Some implementations will stop at the first failure,
wile some other implementations will fill the untransformable points with <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true#NaN" title="class or interface in java.lang" class="externalLink">Double.NaN</a> values,
continue and throw the exception only at end. Implementations that fall in the later case should set the
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true#getLastCompletedTransform()" title="class or interface in org.opengis.referencing.operation" class="externalLink">last completed transform</a> to <code>this</code>.</dd>
</dl>
</li>
</ul>
<a id="derivative(org.opengis.geometry.DirectPosition)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>derivative</h4>
<pre class="methodSignature">public&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/Matrix.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Matrix</a>&nbsp;derivative&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/DirectPosition.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink">DirectPosition</a>&nbsp;point)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">TransformException</a></pre>
<div class="block">Gets the derivative of this transform at a point.
The default implementation performs the following steps:
<ul>
<li>Ensure that the <code>point</code> dimension is equals to this math transform
<a href="#getSourceDimensions()">source dimensions</a>.</li>
<li>Copy the coordinate in a temporary array and pass that array to the
<a href="#transform(double%5B%5D,int,double%5B%5D,int,boolean)"><code>transform(double[], int, double[], int, boolean)</code></a> method,
with the <code>derivate</code> boolean argument set to <code>true</code>.</li>
<li>If the later method returned a non-null matrix, returns that matrix.
Otherwise throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink"><code>Transform­Exception</code></a>.</li>
</ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#derivative(org.opengis.geometry.DirectPosition)" title="class or interface in org.opengis.referencing.operation" class="externalLink">derivative</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Math­Transform</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>point</code> - the coordinate point where to evaluate the derivative.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the derivative at the specified point (never <code>null</code>).</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang" class="externalLink">Null­Pointer­Exception</a></code> - if the derivative depends on coordinate and <code>point</code> is <code>null</code>.</dd>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/MismatchedDimensionException.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink">Mismatched­Dimension­Exception</a></code> - if <code>point</code> does not have the expected dimension.</dd>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Transform­Exception</a></code> - if the derivative can not be evaluated at the specified point.</dd>
</dl>
</li>
</ul>
<a id="inverse()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>inverse</h4>
<pre class="methodSignature">public&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform</a>&nbsp;inverse()
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/NoninvertibleTransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">NoninvertibleTransformException</a></pre>
<div class="block">Returns the inverse transform of this object. The default implementation returns
<code>this</code> if this transform is an <a href="#isIdentity()">identity</a> transform,
or throws an exception otherwise. Subclasses should override this method.
<div class="note"><b>Implementation note:</b> the <a href="AbstractMathTransform.Inverse.html" title="class in org.apache.sis.referencing.operation.transform"><code>Abstract­Math­Transform​.Inverse</code></a> inner class can be used as
a base for inverse transform implementations.</div></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#inverse()" title="class or interface in org.opengis.referencing.operation" class="externalLink">inverse</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Math­Transform</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/NoninvertibleTransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Noninvertible­Transform­Exception</a></code></dd>
</dl>
</li>
</ul>
<a id="tryConcatenate(boolean,org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransformFactory)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>tryConcatenate</h4>
<pre class="methodSignature">protected&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform</a>&nbsp;tryConcatenate&#8203;(boolean&nbsp;applyOtherFirst,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform</a>&nbsp;other,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransformFactory.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransformFactory</a>&nbsp;factory)
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">Concatenates or pre-concatenates in an optimized way this math transform with the given one, if possible.
If an optimization is possible, a new math transform is created to perform the combined transformation.
The <code>apply­Other­First</code> value determines the transformation order as bellow:
<ul>
<li>If <code>apply­Other­First</code> is <code>true</code>, then transforming a point
<var>p</var> by the combined transform is equivalent to first transforming
<var>p</var> by <code>other</code> and then transforming the result by <code>this</code>.</li>
<li>If <code>apply­Other­First</code> is <code>false</code>, then transforming a point
<var>p</var> by the combined transform is equivalent to first transforming
<var>p</var> by <code>this</code> and then transforming the result by <code>other</code>.</li>
</ul>
If no optimization is available for the combined transform, then this method returns <code>null</code>.
In the later case, the concatenation will be prepared by <a href="DefaultMathTransformFactory.html" title="class in org.apache.sis.referencing.operation.transform"><code>Default­Math­Transform­Factory</code></a> using
a generic implementation.
<p>The default implementation returns the identity transform if the other transform is the inverse
of this transform, or returns <code>null</code> otherwise. This method is ought to be overridden
by subclasses capable of concatenating some combination of transforms in a special way.
<a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform"><code>Linear­Transform</code></a> implementations do not need to override this method since matrix multiplications
will be handled automatically, and this method does not need to handle the <a href="#isIdentity()"><code>is­Identity()</code></a> case.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>apply­Other­First</code> - <code>true</code> if the transformation order is <code>other</code> followed by <code>this</code>, or
<code>false</code> if the transformation order is <code>this</code> followed by <code>other</code>.</dd>
<dd><code>other</code> - the other math transform to (pre-)concatenate with this transform.</dd>
<dd><code>factory</code> - the factory which is (indirectly) invoking this method, or <code>null</code> if none.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the math transforms combined in an optimized way, or <code>null</code> if no such optimization is available.</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 combining the transforms.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.8</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="DefaultMathTransformFactory.html#createConcatenatedTransform(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)"><code>Default­Math­Transform­Factory​.create­Concatenated­Transform(Math­Transform, Math­Transform)</code></a></dd>
</dl>
</li>
</ul>
<a id="hashCode()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
<pre class="methodSignature">public final&nbsp;int&nbsp;hashCode()</pre>
<div class="block">Returns a hash value for this transform. This method invokes <a href="#computeHashCode()"><code>compute­Hash­Code()</code></a>
when first needed and caches the value for future invocations. Subclasses shall override
<code>compute­Hash­Code()</code> instead than this method.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><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></code>&nbsp;in class&nbsp;<code><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></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the hash code value. This value may change between different execution of the Apache SIS library.</dd>
</dl>
</li>
</ul>
<a id="computeHashCode()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeHashCode</h4>
<pre class="methodSignature">protected&nbsp;int&nbsp;computeHashCode()</pre>
<div class="block">Computes a hash value for this transform. This method is invoked by <a href="#hashCode()"><code>hash­Code()</code></a> when first needed.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the hash code value. This value may change between different execution of the Apache SIS library.</dd>
</dl>
</li>
</ul>
<a id="equals(java.lang.Object)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre class="methodSignature">public final&nbsp;boolean&nbsp;equals&#8203;(<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>&nbsp;object)</pre>
<div class="block">Compares the specified object with this math transform for strict equality.
This method is implemented as below (omitting assertions):
<blockquote><pre><font color="green">return</font> <b>equals</b>(other, ComparisonMode.STRICT);</pre></blockquote></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../util/LenientComparable.html#equals(java.lang.Object)">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><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><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></code>&nbsp;in class&nbsp;<code><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></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>object</code> - the object to compare with this transform.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the given object is a transform of the same class and using the same parameter values.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../util/ComparisonMode.html#STRICT"><code>Comparison­Mode​.STRICT</code></a></dd>
</dl>
</li>
</ul>
<a id="equals(java.lang.Object,org.apache.sis.util.ComparisonMode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;equals&#8203;(<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>&nbsp;object,
<a href="../../../util/ComparisonMode.html" title="enum in org.apache.sis.util">ComparisonMode</a>&nbsp;mode)</pre>
<div class="block">Compares the specified object with this math transform for equality.
Two math transforms are considered equal if, given identical source positions, their
<a href="#transform(org.opengis.geometry.DirectPosition,org.opengis.geometry.DirectPosition)">transformed</a> positions would be
equal or <a href="../../../util/ComparisonMode.html#APPROXIMATE"><code>approximately</code></a> equal.
This method may conservatively returns <code>false</code> if unsure.
<p>The default implementation returns <code>true</code> if the following conditions are met:</p>
<ul>
<li><code>object</code> is an instance of the same class than <code>this</code>. We require the
same class because there is no interface for the various kinds of transform.</li>
<li>If the hash code value has already been <a href="#computeHashCode()">computed</a> for both
instances, their values are the same <i>(opportunist performance enhancement)</i>.</li>
<li>The <a href="#getContextualParameters()">contextual parameters</a> are equal according
the given comparison mode.</li>
</ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></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><span class="paramLabel">Parameters:</span></dt>
<dd><code>object</code> - the object to compare with this transform.</dd>
<dd><code>mode</code> - the strictness level of the comparison. Default to <a href="../../../util/ComparisonMode.html#STRICT"><code>STRICT</code></a>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the given object is considered equals to this math transform.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><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></dd>
</dl>
</li>
</ul>
<a id="formatTo(org.apache.sis.io.wkt.Formatter)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>formatTo</h4>
<pre class="methodSignature">protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;formatTo&#8203;(<a href="../../../io/wkt/Formatter.html" title="class in org.apache.sis.io.wkt">Formatter</a>&nbsp;formatter)</pre>
<div class="block">Formats the inner part of a <cite>Well Known Text</cite> version 1 (WKT 1) element.
The default implementation formats all parameter values returned by <a href="#getParameterValues()"><code>get­Parameter­Values()</code></a>.
The parameter group name is used as the math transform name.
<div class="note"><b>Compatibility note:</b>
<code>Param_MT</code> is defined in the WKT 1 specification only.
If the <a href="../../../io/wkt/Formatter.html#getConvention()">formatter convention</a> is set to WKT 2,
then this method silently uses the WKT 1 convention without raising an error
(unless this <code>Math­Transform</code> can not be formatted as valid WKT 1 neither).</div></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../io/wkt/FormattableObject.html#formatTo(org.apache.sis.io.wkt.Formatter)">format­To</a></code>&nbsp;in class&nbsp;<code><a href="../../../io/wkt/FormattableObject.html" title="class in org.apache.sis.io.wkt">Formattable­Object</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>formatter</code> - the formatter to use.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the WKT element name, which is <code>"Param_MT"</code> in the default implementation.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../io/wkt/FormattableObject.html#toWKT()"><code>Formattable­Object​.to­WKT()</code></a>,
<a href="../../../io/wkt/FormattableObject.html#toString()"><code>Formattable­Object​.to­String()</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/AbstractMathTransform.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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&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>Field&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>