<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.4) on Fri Sep 20 12:10:30 CEST 2019 -->
<title>DatumShiftTransform (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.DatumShiftTransform class">
<meta name="keywords" content="getParameterValues()">
<meta name="keywords" content="getContextualParameters()">
<meta name="keywords" content="computeHashCode()">
<meta name="keywords" content="equals()">
<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="DatumShiftTransform (Apache SIS 1.0 API)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/DatumShiftTransform.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>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.referencing.operation.transform</a></div>
<h2 title="Class DatumShiftTransform" class="title">Class DatumShiftTransform</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><a href="AbstractMathTransform.html" title="class in org.apache.sis.referencing.operation.transform">AbstractMathTransform</a></li>
<li>
<ul class="inheritance">
<li>DatumShiftTransform</li>
</ul>
</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="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io" class="externalLink">Serializable</a></code>, <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="InterpolatedGeocentricTransform.html" title="class in org.apache.sis.referencing.operation.transform">Interpolated­Geocentric­Transform</a></code>, <code><a href="InterpolatedMolodenskyTransform.html" title="class in org.apache.sis.referencing.operation.transform">Interpolated­Molodensky­Transform</a></code>, <code><a href="InterpolatedTransform.html" title="class in org.apache.sis.referencing.operation.transform">Interpolated­Transform</a></code>, <code><a href="MolodenskyTransform.html" title="class in org.apache.sis.referencing.operation.transform">Molodensky­Transform</a></code></dd>
</dl>
<hr>
<pre>public abstract class <span class="typeNameLabel">DatumShiftTransform</span>
extends <a href="AbstractMathTransform.html" title="class in org.apache.sis.referencing.operation.transform">AbstractMathTransform</a>
implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io" class="externalLink">Serializable</a></pre>
<div class="block">Transforms between two CRS (usually geographic) based on different datum. A datum shift may be needed when two CRS
 use different <a href="../../datum/DefaultEllipsoid.html" title="class in org.apache.sis.referencing.datum">ellipsoids</a> as approximation of the
 shape of the Earth. Sometime two CRS use the same ellipsoid but with different anchor point (i.e. their coordinate
 systems have their origin in different locations).

 <p>There is many different datum shift methods, ranging from transformations as simple as adding a constant offset
 to geographic coordinates, to more complex transformations involving conversions to geocentric coordinates and/or
 interpolations in a <a href="../../datum/DatumShiftGrid.html" title="class in org.apache.sis.referencing.datum">datum shift grid</a>. The simple cases like adding a constant offset
 are handled by other <code>Math­Transform</code> implementations like <a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform"><code>Linear­Transform</code></a>.
 More complex methods are subclasses of this <code>Datum­Shift­Transform</code> base class, but users should not assume
 that this is the case of every transforms performing a datum shift.</p>

 <div class="section">Datum shift methods overview</div>
 The two CRS's ellipsoids have slightly different scale and rotation in space, and their center are located in
 a slightly different position. Consequently geodetic datum shifts are often approximated by a constant scale,
 rotation and translation applied on geocentric coordinates. Those approximations are handled in SIS
 by concatenations of <a href="EllipsoidToCentricTransform.html" title="class in org.apache.sis.referencing.operation.transform"><code>Ellipsoid­To­Centric­Transform</code></a> with <a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform"><code>Linear­Transform</code></a> instead than a specific
 <code>Datum­Shift­Transform</code> subclass.

 <p>If the geodetic datum shifts is approximated only by a geocentric translation without any scale or rotation,
 and if an error of a few centimetres it acceptable, then the <a href="MolodenskyTransform.html" title="class in org.apache.sis.referencing.operation.transform"><code>Molodensky­Transform</code></a> subclass can be used
 as an approximation of the above method. The Molodensky method requires less floating point operations since
 it applies directly on geographic coordinates, without conversions to geocentric coordinates.</p>

 <p>Some countries go one step further and allow the above geocentric translations to be non-constant.
 Instead, a different geocentric translation is interpolated for each geographic input coordinates.
 This case is handled by the <a href="InterpolatedGeocentricTransform.html" title="class in org.apache.sis.referencing.operation.transform"><code>Interpolated­Geocentric­Transform</code></a> subclass, or its
 <a href="InterpolatedMolodenskyTransform.html" title="class in org.apache.sis.referencing.operation.transform"><code>Interpolated­Molodensky­Transform</code></a> variant if a few centimetres accuracy lost can be afforded.</p>

 <p>A simpler alternative to the above is to interpolate translations to apply directly on geographic coordinates.
 This is the approach taken by NADCON and NTv2 grids.
 SIS handles those datum shifts with the <a href="InterpolatedTransform.html" title="class in org.apache.sis.referencing.operation.transform"><code>Interpolated­Transform</code></a> subclass.</p></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.7</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../datum/DatumShiftGrid.html" title="class in org.apache.sis.referencing.datum"><code>Datum­Shift­Grid</code></a>, 
<a href="../../../../../../serialized-form.html#org.apache.sis.referencing.operation.transform.DatumShiftTransform">Serialized Form</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>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.org.apache.sis.referencing.operation.transform.AbstractMathTransform">
<!--   -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;<a href="AbstractMathTransform.html" title="class in org.apache.sis.referencing.operation.transform">AbstractMathTransform</a></h3>
<code><a href="AbstractMathTransform.Inverse.html" title="class in org.apache.sis.referencing.operation.transform">Abstract­Math­Transform​.Inverse</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>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>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="i2" class="altColor">
<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 used for creating the complete transformation.</div>
</td>
</tr>
<tr id="i3" 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 internal parameter values of this <code>Datum­Shift­Transform</code> instance (ignoring context).</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.AbstractMathTransform">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;<a href="AbstractMathTransform.html" title="class in org.apache.sis.referencing.operation.transform">AbstractMathTransform</a></h3>
<code><a href="AbstractMathTransform.html#derivative(org.opengis.geometry.DirectPosition)">derivative</a>, <a href="AbstractMathTransform.html#equals(java.lang.Object)">equals</a>, <a href="AbstractMathTransform.html#formatTo(org.apache.sis.io.wkt.Formatter)">format­To</a>, <a href="AbstractMathTransform.html#getParameterDescriptors()">get­Parameter­Descriptors</a>, <a href="AbstractMathTransform.html#getSourceDimensions()">get­Source­Dimensions</a>, <a href="AbstractMathTransform.html#getTargetDimensions()">get­Target­Dimensions</a>, <a href="AbstractMathTransform.html#hashCode()">hash­Code</a>, <a href="AbstractMathTransform.html#inverse()">inverse</a>, <a href="AbstractMathTransform.html#isIdentity()">is­Identity</a>, <a href="AbstractMathTransform.html#transform(double%5B%5D,int,double%5B%5D,int,boolean)">transform</a>, <a href="AbstractMathTransform.html#transform(double%5B%5D,int,double%5B%5D,int,int)">transform</a>, <a href="AbstractMathTransform.html#transform(double%5B%5D,int,float%5B%5D,int,int)">transform</a>, <a href="AbstractMathTransform.html#transform(float%5B%5D,int,double%5B%5D,int,int)">transform</a>, <a href="AbstractMathTransform.html#transform(float%5B%5D,int,float%5B%5D,int,int)">transform</a>, <a href="AbstractMathTransform.html#transform(org.opengis.geometry.DirectPosition,org.opengis.geometry.DirectPosition)">transform</a>, <a href="AbstractMathTransform.html#tryConcatenate(boolean,org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransformFactory)">try­Concatenate</a></code></li>
</ul>
<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">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a id="getParameterValues()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParameterValues</h4>
<pre class="methodSignature"><a href="../../../util/Debug.html" title="annotation in org.apache.sis.util">@Debug</a>
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 internal parameter values of this <code>Datum­Shift­Transform</code> instance (ignoring context).
 The parameters returned by this method do not necessarily describe the whole datum shift process,
 because <code>Datum­Shift­Transform</code> instances are often preceeded and followed by linear conversions.
 It may be conversions between degrees and radians units, or conversions from geodetic coordinates to grid indices.

 <div class="note"><b>Example:</b>
   The chain of transforms of an <a href="InterpolatedGeocentricTransform.html" title="class in org.apache.sis.referencing.operation.transform"><code>Interpolated­Geocentric­Transform</code></a> is:
   <div class="horizontal-flow" style="align-items:center">
     <div>    <math display="block" alttext="MathML capable browser required">
      <mfenced open="[" close="]">
        <mtable>
          <mtr>
            <mtd><mi>π</mi><mo>/</mo><mn>180</mn></mtd>
            <mtd><mn>0</mn></mtd>
            <mtd><mo>-</mo><msub><mi>λ</mi><mn>0</mn></msub> <mo>⋅</mo> <mo>(</mo><mi>π</mi><mo>/</mo><mn>180</mn><mo>)</mo></mtd>
          </mtr>
          <mtr>
            <mtd><mn>0</mn></mtd>
            <mtd><mi>π</mi><mo>/</mo><mn>180</mn></mtd>
            <mtd><mn>0</mn></mtd>
          </mtr>
          <mtr>
            <mtd><mn>0</mn></mtd>
            <mtd><mn>0</mn></mtd>
            <mtd><mn>1</mn></mtd>
          </mtr>
        </mtable>
      </mfenced>
    </math>




</div>
     <div>→</div>
     <div><ol style="padding-left: 15px">
       <li>Geographic to geocentric conversion</li>
       <li>Geocentric interpolation</li>
       <li>Geocentric to geographic conversion</li>
     </ol></div>
     <div>→</div>
     <div>    <math display="block" alttext="MathML capable browser required">
      <mfenced open="[" close="]">
        <mtable>
          <mtr>
            <mtd><mi>180</mi><mo>/</mo><mn>π</mn></mtd>
            <mtd><mn>0</mn></mtd>
            <mtd><msub><mi>λ</mi><mn>0</mn></msub></mtd>
          </mtr>
          <mtr>
            <mtd><mn>0</mn></mtd>
            <mtd><mi>180</mi><mo>/</mo><mn>π</mn></mtd>
            <mtd><mn>0</mn></mtd>
          </mtr>
          <mtr>
            <mtd><mn>0</mn></mtd>
            <mtd><mn>0</mn></mtd>
            <mtd><mn>1</mn></mtd>
          </mtr>
        </mtable>
      </mfenced>
    </math>




</div>
   </div>
 </div>

 This method returns the parameters for the part in the middle of above example.
 The content of this part is highly implementation-dependent and used mostly for
 <a href="../../../io/wkt/Convention.html#INTERNAL">debugging purposes</a>.
 The parameters that describe the process as a whole are rather given 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="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="AbstractMathTransform.html#getParameterValues()">get­Parameter­Values</a></code>&nbsp;in class&nbsp;<code><a href="AbstractMathTransform.html" title="class in org.apache.sis.referencing.operation.transform">Abstract­Math­Transform</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the internal parameter values for this transform.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="AbstractMathTransform.html#getContextualParameters()"><code>Abstract­Math­Transform​.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 used for creating the complete transformation. Those parameters describe a sequence
 of <cite>normalize</cite> → <code>this</code> → <cite>denormalize</cite> transforms, <strong>not</strong>
 including <a href="../../cs/CoordinateSystems.html#swapAndScaleAxes(org.opengis.referencing.cs.CoordinateSystem,org.opengis.referencing.cs.CoordinateSystem)">axis swapping</a>.
 Those parameters are used for formatting <cite>Well Known Text</cite> (WKT) and error messages.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="AbstractMathTransform.html#getContextualParameters()">get­Contextual­Parameters</a></code>&nbsp;in class&nbsp;<code><a href="AbstractMathTransform.html" title="class in org.apache.sis.referencing.operation.transform">Abstract­Math­Transform</a></code></dd>
<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.</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="AbstractMathTransform.html#hashCode()"><code>Abstract­Math­Transform​.hash­Code()</code></a> when first needed.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="AbstractMathTransform.html#computeHashCode()">compute­Hash­Code</a></code>&nbsp;in class&nbsp;<code><a href="AbstractMathTransform.html" title="class in org.apache.sis.referencing.operation.transform">Abstract­Math­Transform</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="equals(java.lang.Object,org.apache.sis.util.ComparisonMode)">
<!--   -->
</a>
<ul class="blockListLast">
<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.</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="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="AbstractMathTransform.html#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)">equals</a></code>&nbsp;in class&nbsp;<code><a href="AbstractMathTransform.html" title="class in org.apache.sis.referencing.operation.transform">Abstract­Math­Transform</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>
</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/DatumShiftTransform.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>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2010&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>
