blob: f50249da22a1e9457562b89aea9c4f25d0a13709 [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>MathTransforms (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.MathTransforms class">
<meta name="keywords" content="identity()">
<meta name="keywords" content="uniformTranslation()">
<meta name="keywords" content="translation()">
<meta name="keywords" content="scale()">
<meta name="keywords" content="linear()">
<meta name="keywords" content="interpolate()">
<meta name="keywords" content="specialize()">
<meta name="keywords" content="passThrough()">
<meta name="keywords" content="compound()">
<meta name="keywords" content="concatenate()">
<meta name="keywords" content="getSteps()">
<meta name="keywords" content="getMatrix()">
<meta name="keywords" content="derivativeAndTransform()">
<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="MathTransforms (Apache SIS 1.0 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":9,"i20":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static 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/MathTransforms.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.referencing.operation.transform</a></div>
<h2 title="Class MathTransforms" class="title">Class MathTransforms</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../util/Static.html" title="class in org.apache.sis.util">Static</a></li>
<li>
<ul class="inheritance">
<li>MathTransforms</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public final class <span class="typeNameLabel">MathTransforms</span>
extends <a href="../../../util/Static.html" title="class in org.apache.sis.util">Static</a></pre>
<div class="block">Utility methods creating or working on <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> instances.
This class centralizes in one place some of the most commonly used functions this package.
The <code>Math­Transforms</code> class provides the following services:
<ul>
<li>Create various SIS implementations of <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>.</li>
<li>Perform non-standard operations on arbitrary instances.</li>
</ul>
The factory static methods are provided as convenient alternatives to the GeoAPI <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"><code>Math­Transform­Factory</code></a>
interface. However users seeking for more implementation neutrality are encouraged to limit themselves to the
GeoAPI factory interfaces instead.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><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"><code>Math­Transform­Factory</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">
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/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="#compound(org.opengis.referencing.operation.MathTransform...)">compound</a></span>&#8203;(<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;components)</code></th>
<td class="colLast">
<div class="block">Puts together a list of independent math transforms, each of them operating on a subset of coordinate values.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#concatenate(org.opengis.referencing.operation.MathTransform1D,org.opengis.referencing.operation.MathTransform1D)">concatenate</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a>&nbsp;tr1,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a>&nbsp;tr2)</code></th>
<td class="colLast">
<div class="block">Concatenates the given one-dimensional transforms.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#concatenate(org.opengis.referencing.operation.MathTransform1D,org.opengis.referencing.operation.MathTransform1D,org.opengis.referencing.operation.MathTransform1D)">concatenate</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a>&nbsp;tr1,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a>&nbsp;tr2,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a>&nbsp;tr3)</code></th>
<td class="colLast">
<div class="block">Concatenates the three given one-dimensional transforms.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform2D</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#concatenate(org.opengis.referencing.operation.MathTransform2D,org.opengis.referencing.operation.MathTransform2D)">concatenate</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform2D</a>&nbsp;tr1,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform2D</a>&nbsp;tr2)</code></th>
<td class="colLast">
<div class="block">Concatenates the given two-dimensional transforms.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform2D</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#concatenate(org.opengis.referencing.operation.MathTransform2D,org.opengis.referencing.operation.MathTransform2D,org.opengis.referencing.operation.MathTransform2D)">concatenate</a></span>&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform2D</a>&nbsp;tr1,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform2D</a>&nbsp;tr2,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform2D</a>&nbsp;tr3)</code></th>
<td class="colLast">
<div class="block">Concatenates the three given two-dimensional transforms.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/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="#concatenate(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)">concatenate</a></span>&#8203;(<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;tr1,
<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;tr2)</code></th>
<td class="colLast">
<div class="block">Concatenates the two given transforms.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/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="#concatenate(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)">concatenate</a></span>&#8203;(<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;tr1,
<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;tr2,
<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;tr3)</code></th>
<td class="colLast">
<div class="block">Concatenates the three given transforms.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/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="#derivativeAndTransform(org.opengis.referencing.operation.MathTransform,double%5B%5D,int,double%5B%5D,int)">derivativeAndTransform</a></span>&#8203;(<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;transform,
double[]&nbsp;srcPts,
int&nbsp;srcOff,
double[]&nbsp;dstPts,
int&nbsp;dstOff)</code></th>
<td class="colLast">
<div class="block">A buckle method for calculating derivative and coordinate transformation in a single step.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/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="#getMatrix(org.opengis.referencing.operation.MathTransform)">getMatrix</a></span>&#8203;(<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;transform)</code></th>
<td class="colLast">
<div class="block">If the given transform is linear, returns its coefficients as a matrix.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/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="#getMatrix(org.opengis.referencing.operation.MathTransform,org.opengis.geometry.DirectPosition)">getMatrix</a></span>&#8203;(<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;transform,
<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;position)</code></th>
<td class="colLast">
<div class="block">Returns the coefficients of an affine transform in the vicinity of the given position.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSteps(org.opengis.referencing.operation.MathTransform)">getSteps</a></span>&#8203;(<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;transform)</code></th>
<td class="colLast">
<div class="block">Returns all single components of the given (potentially concatenated) transform.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static <a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#identity(int)">identity</a></span>&#8203;(int&nbsp;dimension)</code></th>
<td class="colLast">
<div class="block">Returns an identity transform of the specified dimension.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#interpolate(double%5B%5D,double%5B%5D)">interpolate</a></span>&#8203;(double[]&nbsp;preimage,
double[]&nbsp;values)</code></th>
<td class="colLast">
<div class="block">Creates a transform for the <i>y=f(x)</i> function where <var>y</var> are computed by a linear interpolation.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>static <a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#linear(double,double)">linear</a></span>&#8203;(double&nbsp;scale,
double&nbsp;offset)</code></th>
<td class="colLast">
<div class="block">Creates a one-dimensional affine transform for the given coefficients.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>static <a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#linear(org.opengis.referencing.operation.MathTransform,org.opengis.geometry.DirectPosition)">linear</a></span>&#8203;(<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;transform,
<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;position)</code></th>
<td class="colLast">
<div class="block">Returns a linear (usually affine) transform which approximates the given transform in the vicinity of the given position.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>static <a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#linear(org.opengis.referencing.operation.Matrix)">linear</a></span>&#8203;(<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;matrix)</code></th>
<td class="colLast">
<div class="block">Creates an arbitrary linear transform from the specified matrix.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>static <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="#passThrough(int,org.opengis.referencing.operation.MathTransform,int)">passThrough</a></span>&#8203;(int&nbsp;firstAffectedCoordinate,
<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;subTransform,
int&nbsp;numTrailingCoordinates)</code></th>
<td class="colLast">
<div class="block">Creates a transform which passes through a subset of coordinates to another transform.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>static <a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#scale(double...)">scale</a></span>&#8203;(double...&nbsp;factors)</code></th>
<td class="colLast">
<div class="block">Creates an affine transform which applies the given scale.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>static <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/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="#specialize(org.opengis.referencing.operation.MathTransform,java.util.Map)">specialize</a></span>&#8203;(<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;global,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util" class="externalLink">Map</a>&lt;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/Envelope.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink">Envelope</a>,&#8203;<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>&gt;&nbsp;specializations)</code></th>
<td class="colLast">
<div class="block">Creates a transform defined as one transform applied globally except in sub-areas where more accurate
transforms are available.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>static <a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#translation(double...)">translation</a></span>&#8203;(double...&nbsp;vector)</code></th>
<td class="colLast">
<div class="block">Creates an affine transform which applies the given translation.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>static <a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#uniformTranslation(int,double)">uniformTranslation</a></span>&#8203;(int&nbsp;dimension,
double&nbsp;offset)</code></th>
<td class="colLast">
<div class="block">Creates an affine transform which applies the same translation for all dimensions.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">get­Class</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hash­Code</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notify­All</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">to­String</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="identity(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>identity</h4>
<pre class="methodSignature">public static&nbsp;<a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a>&nbsp;identity&#8203;(int&nbsp;dimension)</pre>
<div class="block">Returns an identity transform of the specified dimension.
<p>Special cases:</p>
<ul>
<li>If <code>dimension == 1</code>, then the returned transform implements <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink"><code>Math­Transform1D</code></a>.</li>
<li>If <code>dimension == 2</code>, then the returned transform implements <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink"><code>Math­Transform2D</code></a>.</li>
</ul></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dimension</code> - number of dimensions of the transform to be returned.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an identity transform of the specified dimension.</dd>
</dl>
</li>
</ul>
<a id="uniformTranslation(int,double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>uniformTranslation</h4>
<pre class="methodSignature">public static&nbsp;<a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a>&nbsp;uniformTranslation&#8203;(int&nbsp;dimension,
double&nbsp;offset)</pre>
<div class="block">Creates an affine transform which applies the same translation for all dimensions.
For each dimension, input values <var>x</var> are converted into output values <var>y</var>
using the following equation:
<blockquote><var>y</var> = <var>x</var> + <code>offset</code></blockquote></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dimension</code> - number of input and output dimensions.</dd>
<dd><code>offset</code> - the <code>offset</code> term in the linear equation.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an affine transform applying the specified translation.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a id="translation(double...)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>translation</h4>
<pre class="methodSignature">public static&nbsp;<a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a>&nbsp;translation&#8203;(double...&nbsp;vector)</pre>
<div class="block">Creates an affine transform which applies the given translation.
The source and target dimensions of the transform are the length of the given vector.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>vector</code> - the translation vector.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an affine transform applying the specified translation.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a id="scale(double...)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>scale</h4>
<pre class="methodSignature">public static&nbsp;<a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a>&nbsp;scale&#8203;(double...&nbsp;factors)</pre>
<div class="block">Creates an affine transform which applies the given scale.
The source and target dimensions of the transform are the length of the given vector.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factors</code> - the scale factors.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an affine transform applying the specified scales.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a id="linear(double,double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>linear</h4>
<pre class="methodSignature">public static&nbsp;<a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a>&nbsp;linear&#8203;(double&nbsp;scale,
double&nbsp;offset)</pre>
<div class="block">Creates a one-dimensional affine transform for the given coefficients.
Input values <var>x</var> will be converted into output values <var>y</var> using the following equation:
<blockquote><var>y</var>  =  <var>x</var><code>scale</code> + <code>offset</code></blockquote></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>scale</code> - the <code>scale</code> term in the linear equation.</dd>
<dd><code>offset</code> - the <code>offset</code> term in the linear equation.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the linear transform for the given scale and offset.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../measure/Units.html#converter(java.lang.Number,java.lang.Number)"><code>Units​.converter(Number, Number)</code></a></dd>
</dl>
</li>
</ul>
<a id="linear(org.opengis.referencing.operation.Matrix)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>linear</h4>
<pre class="methodSignature">public static&nbsp;<a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a>&nbsp;linear&#8203;(<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;matrix)</pre>
<div class="block">Creates an arbitrary linear transform from the specified matrix. Usually the matrix
<a href="../matrix/MatrixSIS.html#isAffine()">is affine</a>,
but this is not mandatory. Non-affine matrix will define a projective transform.
<p>If the transform input dimension is <code>M</code>, and output dimension is <code>N</code>,
then the given matrix shall have size <code>[N+1][M+1]</code>.
The +1 in the matrix dimensions allows the matrix to do a shift, as well as a rotation.
The <code>[M][j]</code> element of the matrix will be the <var>j</var>'th coordinate of the moved origin.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>matrix</code> - the matrix used to define the linear transform.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the linear (usually affine) transform.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#getMatrix(org.opengis.referencing.operation.MathTransform)"><code>get­Matrix(Math­Transform)</code></a>,
<a href="DefaultMathTransformFactory.html#createAffineTransform(org.opengis.referencing.operation.Matrix)"><code>Default­Math­Transform­Factory​.create­Affine­Transform(Matrix)</code></a></dd>
</dl>
</li>
</ul>
<a id="linear(org.opengis.referencing.operation.MathTransform,org.opengis.geometry.DirectPosition)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>linear</h4>
<pre class="methodSignature">public static&nbsp;<a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a>&nbsp;linear&#8203;(<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;transform,
<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;position)
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">Returns a linear (usually affine) transform which approximates the given transform in the vicinity of the given position.
If the given transform is already an instance of <a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform"><code>Linear­Transform</code></a>, then it is returned as-is.
Otherwise an approximation for the given position is created using the
<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">transform derivative</a> at that position.
<p><b>Invariant:</b> transforming the given <code>position</code> using the given <code>transform</code> produces the same result
(ignoring rounding error) than transforming the same <code>position</code> using the returned transform. This invariant holds
only for that particular position; the transformation of any other positions may produce different results.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>transform</code> - the transform to approximate by an affine transform.</dd>
<dd><code>position</code> - position in source CRS around which to get the an affine transform approximation.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a transform approximating the given transform around the given position.</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 an error occurred while transforming the given position
or computing the derivative at that position.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#getMatrix(org.opengis.referencing.operation.MathTransform,org.opengis.geometry.DirectPosition)"><code>get­Matrix(Math­Transform, Direct­Position)</code></a></dd>
</dl>
</li>
</ul>
<a id="interpolate(double[],double[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>interpolate</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a>&nbsp;interpolate&#8203;(double[]&nbsp;preimage,
double[]&nbsp;values)</pre>
<div class="block">Creates a transform for the <i>y=f(x)</i> function where <var>y</var> are computed by a linear interpolation.
Both <code>preimage</code> (the <var>x</var>) and <code>values</code> (the <var>y</var>) arguments can be null:
<ul>
<li>If both <code>preimage</code> and <code>values</code> arrays are non-null, then they must have the same length.</li>
<li>If both <code>preimage</code> and <code>values</code> arrays are null, then this method returns the identity transform.</li>
<li>If only <code>preimage</code> is null, then the <var>x</var> values are taken as {0, 1, 2, …, <code>values​.length</code> - 1}.</li>
<li>If only <code>values</code> is null, then the <var>y</var> values are taken as {0, 1, 2, …, <code>preimage​.length</code> - 1}.</li>
</ul>
All <code>preimage</code> elements shall be real numbers (not NaN) sorted in increasing or decreasing order.
Elements in the <code>values</code> array do not need to be ordered, but the returned transform will be invertible
only if all values are real numbers sorted in increasing or decreasing order.
Furthermore the returned transform is affine (i.e. implement the <a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform"><code>Linear­Transform</code></a> interface)
if the interval between each <code>preimage</code> and <code>values</code> element is constant.
<p>The current implementation uses linear interpolation. This may be changed in a future SIS version.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>preimage</code> - the input values (<var>x</var>) in the function domain, or <code>null</code>.</dd>
<dd><code>values</code> - the output values (<var>y</var>) in the function range, or <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <i>y=f(x)</i> function.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.7</dd>
</dl>
</li>
</ul>
<a id="specialize(org.opengis.referencing.operation.MathTransform,java.util.Map)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>specialize</h4>
<pre class="methodSignature">public static&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;specialize&#8203;(<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;global,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util" class="externalLink">Map</a>&lt;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/Envelope.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink">Envelope</a>,&#8203;<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>&gt;&nbsp;specializations)</pre>
<div class="block">Creates a transform defined as one transform applied globally except in sub-areas where more accurate
transforms are available. Such constructs appear in some datum shift files. The result of transforming
a point by the returned <code>Math­Transform</code> is as if iterating over all given <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/geometry/Envelope.html?is-external=true" title="class or interface in org.opengis.geometry" class="externalLink"><code>Envelope</code></a>s in
no particular order, find the smallest one containing the point to transform (envelope border considered
inclusive), then use the associated <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> for transforming the point.
If the point is not found in any envelope, then the global transform is applied.
<p>The following constraints apply:</p>
<ul>
<li>The global transform must be a reasonable approximation of the specialized transforms
(this is required for calculating the inverse transform).</li>
<li>All transforms in the <code>specializations</code> map must have the same number of source and target
dimensions than the <code>global</code> transform.</li>
<li>All envelopes in the <code>specializations</code> map must have the same number of dimensions
than the global transform <em>source</em> dimensions.</li>
<li>In current implementation, each envelope must either be fully included in another envelope,
or not overlap any other envelope.</li>
</ul></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>global</code> - the transform to use globally where there is no suitable specialization.</dd>
<dd><code>specializations</code> - more accurate transforms available in some sub-areas.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a transform applying the given global transform except in sub-areas where specializations are available.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang" class="externalLink">Illegal­Argument­Exception</a></code> - if a constraint is not met.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a id="passThrough(int,org.opengis.referencing.operation.MathTransform,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>passThrough</h4>
<pre class="methodSignature">public static&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;passThrough&#8203;(int&nbsp;firstAffectedCoordinate,
<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;subTransform,
int&nbsp;numTrailingCoordinates)</pre>
<div class="block">Creates a transform which passes through a subset of coordinates to another transform.
This method returns a transform having the following dimensions:
<blockquote><pre>Source: firstAffectedCoordinate + subTransform.<b>getSourceDimensions</b>() + numTrailingCoordinates
Target: firstAffectedCoordinate + subTransform.<b>getTargetDimensions</b>() + numTrailingCoordinates</pre></blockquote>
Affected coordinates will range from <code>first­Affected­Coordinate</code> inclusive to
<code>dim­Target - num­Trailing­Coordinates</code> exclusive.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>first­Affected­Coordinate</code> - index of the first affected coordinate.</dd>
<dd><code>sub­Transform</code> - the sub-transform to apply on modified coordinates.</dd>
<dd><code>num­Trailing­Coordinates</code> - number of trailing coordinates to pass through.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a pass-through transform, potentially as a <a href="PassThroughTransform.html" title="class in org.apache.sis.referencing.operation.transform"><code>Pass­Through­Transform</code></a> instance but not necessarily.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
<a id="compound(org.opengis.referencing.operation.MathTransform...)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>compound</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform</a>&nbsp;compound&#8203;(<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;components)</pre>
<div class="block">Puts together a list of independent math transforms, each of them operating on a subset of coordinate values.
This method is often used for defining 4-dimensional (<var>x</var>,<var>y</var>,<var>z</var>,<var>t</var>)
transform as an aggregation of 3 simpler transforms operating on (<var>x</var>,<var>y</var>), (<var>z</var>)
and (<var>t</var>) values respectively.
<p>Invariants:</p>
<ul>
<li>The <a href="AbstractMathTransform.html#getSourceDimensions()">source dimensions</a> of the returned transform
is equals to the sum of the source dimensions of all given transforms.</li>
<li>The <a href="AbstractMathTransform.html#getTargetDimensions()">target dimensions</a> of the returned transform
is equals to the sum of the target dimensions of all given transforms.</li>
</ul></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>components</code> - the transforms to aggregate in a single transform, in the given order.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the aggregation of all given transforms, or <code>null</code> if the given <code>components</code> array was empty.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.6</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="PassThroughTransform.html" title="class in org.apache.sis.referencing.operation.transform"><code>Pass­Through­Transform</code></a>,
<a href="../../CRS.html#compound(org.opengis.referencing.crs.CoordinateReferenceSystem...)"><code>CRS​.compound(Coordinate­Reference­System...)</code></a>,
<a href="../../../geometry/Envelopes.html#compound(org.opengis.geometry.Envelope...)"><code>Envelopes​.compound(Envelope...)</code></a></dd>
</dl>
</li>
</ul>
<a id="concatenate(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>concatenate</h4>
<pre class="methodSignature">public static&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;concatenate&#8203;(<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;tr1,
<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;tr2)
throws <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">MismatchedDimensionException</a></pre>
<div class="block">Concatenates the two given transforms. The returned transform will implement
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink"><code>Math­Transform1D</code></a> or <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink"><code>Math­Transform2D</code></a> if the dimensions of the
concatenated transform are equal to 1 or 2 respectively.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>tr1</code> - the first math transform.</dd>
<dd><code>tr2</code> - the second math transform.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the concatenated transform.</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 the output dimension of the first transform
does not match the input dimension of the second transform.</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="concatenate(org.opengis.referencing.operation.MathTransform1D,org.opengis.referencing.operation.MathTransform1D)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>concatenate</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a>&nbsp;concatenate&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a>&nbsp;tr1,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a>&nbsp;tr2)
throws <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">MismatchedDimensionException</a></pre>
<div class="block">Concatenates the given one-dimensional transforms. This is a convenience methods
delegating to <a href="#concatenate(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)"><code>concatenate(Math­Transform, Math­Transform)</code></a> and casting the
result to a <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink"><code>Math­Transform1D</code></a> instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>tr1</code> - the first math transform.</dd>
<dd><code>tr2</code> - the second math transform.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the concatenated transform.</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 the output dimension of the first transform
does not match the input dimension of the second transform.</dd>
</dl>
</li>
</ul>
<a id="concatenate(org.opengis.referencing.operation.MathTransform2D,org.opengis.referencing.operation.MathTransform2D)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>concatenate</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform2D</a>&nbsp;concatenate&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform2D</a>&nbsp;tr1,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform2D</a>&nbsp;tr2)
throws <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">MismatchedDimensionException</a></pre>
<div class="block">Concatenates the given two-dimensional transforms. This is a convenience methods
delegating to <a href="#concatenate(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)"><code>concatenate(Math­Transform, Math­Transform)</code></a> and casting the
result to a <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink"><code>Math­Transform2D</code></a> instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>tr1</code> - the first math transform.</dd>
<dd><code>tr2</code> - the second math transform.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the concatenated transform.</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 the output dimension of the first transform
does not match the input dimension of the second transform.</dd>
</dl>
</li>
</ul>
<a id="concatenate(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>concatenate</h4>
<pre class="methodSignature">public static&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;concatenate&#8203;(<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;tr1,
<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;tr2,
<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;tr3)
throws <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">MismatchedDimensionException</a></pre>
<div class="block">Concatenates the three given transforms. This is a convenience methods doing its job
as two consecutive concatenations.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>tr1</code> - the first math transform.</dd>
<dd><code>tr2</code> - the second math transform.</dd>
<dd><code>tr3</code> - the third math transform.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the concatenated transform.</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 the output dimension of a transform
does not match the input dimension of next transform.</dd>
</dl>
</li>
</ul>
<a id="concatenate(org.opengis.referencing.operation.MathTransform1D,org.opengis.referencing.operation.MathTransform1D,org.opengis.referencing.operation.MathTransform1D)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>concatenate</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a>&nbsp;concatenate&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a>&nbsp;tr1,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a>&nbsp;tr2,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform1D</a>&nbsp;tr3)
throws <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">MismatchedDimensionException</a></pre>
<div class="block">Concatenates the three given one-dimensional transforms. This is a convenience methods
delegating to <a href="#concatenate(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)"><code>concatenate(Math­Transform, Math­Transform, Math­Transform)</code></a> and
casting the result to a <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink"><code>Math­Transform1D</code></a> instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>tr1</code> - the first math transform.</dd>
<dd><code>tr2</code> - the second math transform.</dd>
<dd><code>tr3</code> - the third math transform.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the concatenated transform.</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 the output dimension of a transform
does not match the input dimension of next transform.</dd>
</dl>
</li>
</ul>
<a id="concatenate(org.opengis.referencing.operation.MathTransform2D,org.opengis.referencing.operation.MathTransform2D,org.opengis.referencing.operation.MathTransform2D)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>concatenate</h4>
<pre class="methodSignature">public static&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform2D</a>&nbsp;concatenate&#8203;(<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform2D</a>&nbsp;tr1,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform2D</a>&nbsp;tr2,
<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform2D</a>&nbsp;tr3)
throws <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">MismatchedDimensionException</a></pre>
<div class="block">Concatenates the three given two-dimensional transforms. This is a convenience methods
delegating to <a href="#concatenate(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)"><code>concatenate(Math­Transform, Math­Transform, Math­Transform)</code></a> and
casting the result to a <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink"><code>Math­Transform2D</code></a> instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>tr1</code> - the first math transform.</dd>
<dd><code>tr2</code> - the second math transform.</dd>
<dd><code>tr3</code> - the third math transform.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the concatenated transform.</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 the output dimension of a transform
does not match the input dimension of next transform.</dd>
</dl>
</li>
</ul>
<a id="getSteps(org.opengis.referencing.operation.MathTransform)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSteps</h4>
<pre class="methodSignature">public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform</a>&gt;&nbsp;getSteps&#8203;(<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;transform)</pre>
<div class="block">Returns all single components of the given (potentially concatenated) transform.
This method makes the following choice:
<ul>
<li>If <code>transform</code> is <code>null</code>, returns an empty list.</li>
<li>Otherwise if <code>transform</code> is the result of a call to a <code>concatenate(…)</code> method,
returns all components. All nested concatenated transforms (if any) will be flattened.</li>
<li>Otherwise returns the given transform in a list of size 1.</li>
</ul></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>transform</code> - the transform for which to get the components, or <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>all single math transforms performed by this concatenated transform.</dd>
</dl>
</li>
</ul>
<a id="getMatrix(org.opengis.referencing.operation.MathTransform)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMatrix</h4>
<pre class="methodSignature">public static&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;getMatrix&#8203;(<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;transform)</pre>
<div class="block">If the given transform is linear, returns its coefficients as a matrix.
More specifically:
<ul>
<li>If the given transform is an instance of <a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform"><code>Linear­Transform</code></a>,
returns <a href="LinearTransform.html#getMatrix()"><code>Linear­Transform​.get­Matrix()</code></a>.</li>
<li>Otherwise if the given transform is an instance of <a href="https://docs.oracle.com/javase/8/docs/api/java/awt/geom/AffineTransform.html?is-external=true" title="class or interface in java.awt.geom" class="externalLink"><code>Affine­Transform</code></a>,
returns its coefficients in a <a href="../matrix/Matrix3.html" title="class in org.apache.sis.referencing.operation.matrix"><code>Matrix3</code></a> instance.</li>
<li>Otherwise returns <code>null</code>.</li>
</ul></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>transform</code> - the transform for which to get the matrix, or <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the matrix of the given transform, or <code>null</code> if none.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#linear(org.opengis.referencing.operation.Matrix)"><code>linear(Matrix)</code></a>,
<a href="LinearTransform.html#getMatrix()"><code>Linear­Transform​.get­Matrix()</code></a></dd>
</dl>
</li>
</ul>
<a id="getMatrix(org.opengis.referencing.operation.MathTransform,org.opengis.geometry.DirectPosition)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMatrix</h4>
<pre class="methodSignature">public static&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;getMatrix&#8203;(<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;transform,
<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;position)
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">Returns the coefficients of an affine transform in the vicinity of the given position.
If the given transform is linear, then this method produces a result identical to <a href="#getMatrix(org.opengis.referencing.operation.MathTransform)"><code>get­Matrix(Math­Transform)</code></a>.
Otherwise the returned matrix can be used for <a href="#linear(org.opengis.referencing.operation.Matrix)">building a linear transform</a> which can be
used as an approximation of the given transform for short distances around the given position.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>transform</code> - the transform to approximate by an affine transform.</dd>
<dd><code>position</code> - position in source CRS around which to get the coefficients of an affine transform approximation.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the matrix of the given transform around the given position.</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 an error occurred while transforming the given position or computing the derivative at
that position.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#linear(org.opengis.referencing.operation.MathTransform,org.opengis.geometry.DirectPosition)"><code>linear(Math­Transform, Direct­Position)</code></a></dd>
</dl>
</li>
</ul>
<a id="derivativeAndTransform(org.opengis.referencing.operation.MathTransform,double[],int,double[],int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>derivativeAndTransform</h4>
<pre class="methodSignature">public static&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;derivativeAndTransform&#8203;(<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;transform,
double[]&nbsp;srcPts,
int&nbsp;srcOff,
double[]&nbsp;dstPts,
int&nbsp;dstOff)
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">A buckle method for calculating derivative and coordinate transformation in a single step.
The transform result is stored in the given destination array, and the derivative matrix
is returned. Invoking this method is equivalent to the following code, except that it may
execute faster with some <code>Math­Transform</code> implementations:
<blockquote><pre>DirectPosition ptSrc = ...;
DirectPosition ptDst = ...;
Matrix matrixDst = <b>derivative</b>(ptSrc);
ptDst = <b>transform</b>(ptSrc, ptDst);</pre></blockquote></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>transform</code> - the transform to use.</dd>
<dd><code>src­Pts</code> - the array containing the source coordinate.</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.</dd>
<dd><code>dst­Off</code> - the offset to the location of the transformed point that is stored in the destination array.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the matrix of the transform derivative at the given source position.</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't be transformed or if a problem occurred
while calculating the derivative.</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/MathTransforms.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2010&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>