blob: bd56a1e00603e6d9a4e0dc5aba7f9610894a0485 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) on Thu Oct 05 19:54:57 CEST 2023 -->
<title>TransformSeparator (Apache SIS 1.4 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2023-10-05">
<meta name="description" content="declaration: module: org.apache.sis.referencing, package: org.apache.sis.referencing.operation.transform, class: TransformSeparator">
<meta name="generator" content="javadoc/ClassWriterImpl">
<meta name="keywords" content="org.apache.sis.referencing.operation.transform.TransformSeparator class">
<meta name="keywords" content="transform">
<meta name="keywords" content="sourceDimensions">
<meta name="keywords" content="targetDimensions">
<meta name="keywords" content="clear()">
<meta name="keywords" content="addSourceDimensions()">
<meta name="keywords" content="addSourceDimensionRange()">
<meta name="keywords" content="getSourceDimensions()">
<meta name="keywords" content="addTargetDimensions()">
<meta name="keywords" content="addTargetDimensionRange()">
<meta name="keywords" content="getTargetDimensions()">
<meta name="keywords" content="isSourceExpandable()">
<meta name="keywords" content="setSourceExpandable()">
<meta name="keywords" content="separate()">
<meta name="keywords" content="filterSourceDimensions()">
<meta name="keywords" content="filterTargetDimensions()">
<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../../sis.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../index.html">Overview</a></li>
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li><a href="#field-summary">Field</a></li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li><a href="#field-detail">Field</a></li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../../../module-summary.html">org.apache.sis.referencing</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.referencing.operation.transform</a></div>
<h1 title="Class TransformSeparator" class="title">Class TransformSeparator</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
<div class="inheritance">TransformSeparator</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">TransformSeparator</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Extracts a sub-transform from a given <code>Math­Transform</code> and source or target dimension indices.
Given an arbitrary <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Math­Transform</code></a>, this class tries to return a new math transform that operates
only on a given set of source or target dimensions.
<h2 id="example-heading">Example</h2>
If the supplied <code>transform</code> has (<var>x</var>,<var>y</var>,<var>z</var>) inputs
and (<var>λ</var>,<var>φ</var>,<var>h</var>) outputs, then the following code:
<div class="snippet-container"><button class="copy snippet-copy" aria-label="Copy snippet" onclick="copySnippet(this)"><span data-copied="Copied!">Copy</span><img src="../../../../../../../copy.svg" alt="Copy snippet"></button>
<pre class="snippet"><code class="language-java">TransformSeparator s = new TransformSeparator(theTransform);
s.addSourceDimensionRange(0, 2);
MathTransform mt = s.separate();
</code></pre>
</div>
will return a transform with (<var>x</var>,<var>y</var>) inputs and (probably) (<var>λ</var>,<var>φ</var>) outputs.
The output dimensions can be verified with a call to <a href="#getTargetDimensions()"><code>get­Target­Dimensions()</code></a>.</div>
<dl class="notes">
<dt>Since:</dt>
<dd>0.7</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>protected int[]</code></div>
<div class="col-second even-row-color"><code><a href="#sourceDimensions" class="member-name-link">source­Dimensions</a></code></div>
<div class="col-last even-row-color">
<div class="block">Indices of transform input dimensions to keep, or <code>null</code> if not yet defined.</div>
</div>
<div class="col-first odd-row-color"><code>protected int[]</code></div>
<div class="col-second odd-row-color"><code><a href="#targetDimensions" class="member-name-link">target­Dimensions</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Indices of transform output dimensions to keep, or <code>null</code> if not yet defined.</div>
</div>
<div class="col-first even-row-color"><code>protected final <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Math­Transform</a></code></div>
<div class="col-second even-row-color"><code><a href="#transform" class="member-name-link">transform</a></code></div>
<div class="col-last even-row-color">
<div class="block">The transform to separate.</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.opengis.referencing.operation.MathTransform)" class="member-name-link">Transform­Separator</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Math­Transform</a>&nbsp;transform)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a separator for the given transform.</div>
</div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransformFactory)" class="member-name-link">Transform­Separator</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Math­Transform</a>&nbsp;transform,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransformFactory.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Math­Transform­Factory</a>&nbsp;factory)</code></div>
<div class="col-last odd-row-color">
<div class="block">Constructs a separator for the given transform and using the given factory.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addSourceDimensionRange(int,int)" class="member-name-link">add­Source­Dimension­Range</a><wbr>(int&nbsp;lower,
int&nbsp;upper)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Adds a range of input dimensions to keep in the separated transform.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addSourceDimensions(int...)" class="member-name-link">add­Source­Dimensions</a><wbr>(int...&nbsp;dimensions)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Adds input dimensions to keep in the separated transform.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addTargetDimensionRange(int,int)" class="member-name-link">add­Target­Dimension­Range</a><wbr>(int&nbsp;lower,
int&nbsp;upper)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Adds a range of output dimensions to keep in the separated transform.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addTargetDimensions(int...)" class="member-name-link">add­Target­Dimensions</a><wbr>(int...&nbsp;dimensions)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Adds output dimensions to keep in the separated transform.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#clear()" class="member-name-link">clear</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Resets this transform separator in the same state than after construction.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Math­Transform</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#filterSourceDimensions(org.opengis.referencing.operation.MathTransform,int%5B%5D)" class="member-name-link">filter­Source­Dimensions</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Math­Transform</a>&nbsp;step,
int[]&nbsp;dimensions)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Creates a transform for the same mathematic than the given <code>step</code>
but expecting only the given dimensions as inputs.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Math­Transform</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#filterTargetDimensions(org.opengis.referencing.operation.MathTransform,int%5B%5D)" class="member-name-link">filter­Target­Dimensions</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Math­Transform</a>&nbsp;step,
int[]&nbsp;dimensions)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Creates a transform for the same mathematic than the given <code>step</code>
but producing only the given dimensions as outputs.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int[]</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSourceDimensions()" class="member-name-link">get­Source­Dimensions</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the input dimensions to keep or kept in the separated transform.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int[]</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTargetDimensions()" class="member-name-link">get­Target­Dimensions</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the output dimensions to keep or kept in the separated transform.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isSourceExpandable()" class="member-name-link">is­Source­Expandable</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns whether <code>separate()</code> is allowed to expand the list of source dimensions.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Math­Transform</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#separate()" class="member-name-link">separate</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Separates the math transform specified at construction time for given dimension indices.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setSourceExpandable(boolean)" class="member-name-link">set­Source­Expandable</a><wbr>(boolean&nbsp;enabled)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sets whether <code>separate()</code> is allowed to expand the list of source dimensions.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">get­Class</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hash­Code</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notify­All</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">to­String</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="transform">
<h3>transform</h3>
<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">MathTransform</a></span>&nbsp;<span class="element-name">transform</span></div>
<div class="block">The transform to separate.</div>
</section>
</li>
<li>
<section class="detail" id="sourceDimensions">
<h3>sourceDimensions</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">int[]</span>&nbsp;<span class="element-name">sourceDimensions</span></div>
<div class="block">Indices of transform input dimensions to keep, or <code>null</code> if not yet defined.
If non-null, the indices in the array must be sorted in strictly increasing order.
This sequence can contain any integers in the range 0 inclusive to
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html#getSourceDimensions()" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Math­Transform​.get­Source­Dimensions()</code></a> exclusive.
<p>Values in this array should never be modified. For adding, removing or editing indices,
new arrays should be created and assigned to this field. This approach makes easier to keep snapshots
of indices arrays at various stages during the process of separating a <code>Math­Transform</code>.</p></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="#getSourceDimensions()"><code>get­Source­Dimensions()</code></a></li>
<li><a href="#addSourceDimensions(int...)"><code>add­Source­Dimensions(int...)</code></a></li>
<li><a href="#addSourceDimensionRange(int,int)"><code>add­Source­Dimension­Range(int, int)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="targetDimensions">
<h3>targetDimensions</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">int[]</span>&nbsp;<span class="element-name">targetDimensions</span></div>
<div class="block">Indices of transform output dimensions to keep, or <code>null</code> if not yet defined.
If non-null, the indices in the array must be sorted in strictly increasing order.
This sequence can contain any integers in the range 0 inclusive to
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html#getTargetDimensions()" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Math­Transform​.get­Target­Dimensions()</code></a> exclusive.
<p>Values in this array should never be modified. For adding, removing or editing indices,
new arrays should be created and assigned to this field. This approach makes easier to keep snapshots
of indices arrays at various stages during the process of separating a <code>Math­Transform</code>.</p></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="#getTargetDimensions()"><code>get­Target­Dimensions()</code></a></li>
<li><a href="#addTargetDimensions(int...)"><code>add­Target­Dimensions(int...)</code></a></li>
<li><a href="#addTargetDimensionRange(int,int)"><code>add­Target­Dimension­Range(int, int)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(org.opengis.referencing.operation.MathTransform)">
<h3>TransformSeparator</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">TransformSeparator</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">MathTransform</a>&nbsp;transform)</span></div>
<div class="block">Constructs a separator for the given transform.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>transform</code> - the transform to separate.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransformFactory)">
<h3>TransformSeparator</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">TransformSeparator</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">MathTransform</a>&nbsp;transform,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransformFactory.html" title="class or interface in org.opengis.referencing.operation" class="external-link">MathTransformFactory</a>&nbsp;factory)</span></div>
<div class="block">Constructs a separator for the given transform and using the given factory.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>transform</code> - the transform to separate.</dd>
<dd><code>factory</code> - the factory to use for creating new math transforms, or <code>null</code> if none.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="clear()">
<h3>clear</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">clear</span>()</div>
<div class="block">Resets this transform separator in the same state than after construction. This method clears any
<a href="#getSourceDimensions()">source</a> and <a href="#getTargetDimensions()">target dimensions</a>
settings and disables <a href="#isSourceExpandable()">source expansion</a>.
This method can be invoked when the same <code>Math­Transform</code> needs to be separated in more than one part,
for example an horizontal and a vertical component.</div>
</section>
</li>
<li>
<section class="detail" id="addSourceDimensions(int...)">
<h3>addSourceDimensions</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addSourceDimensions</span><wbr><span class="parameters">(int...&nbsp;dimensions)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></span></div>
<div class="block">Adds input dimensions to keep in the separated transform.
The given values are <em>source</em> dimension indices of the transform given to the constructor.
<p>Constraints:</p>
<ul>
<li>All numbers shall be in the range 0 inclusive to <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html#getSourceDimensions()" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Math­Transform​.get­Source­Dimensions()</code></a> exclusive.</li>
<li>The <code>dimensions</code> values shall be in strictly increasing order.</li>
<li>The <code>dimensions</code> values shall be greater than all values specified by all previous calls
of this method since construction or since the last call to <a href="#clear()"><code>clear()</code></a>.</li>
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>dimensions</code> - a sequence of source dimensions to keep, in strictly increasing order.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">Illegal­Argument­Exception</a></code> - if <code>dimensions</code> contains negative values
or if values are not in a strictly increasing order.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="addSourceDimensionRange(int,int)">
<h3>addSourceDimensionRange</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addSourceDimensionRange</span><wbr><span class="parameters">(int&nbsp;lower,
int&nbsp;upper)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></span></div>
<div class="block">Adds a range of input dimensions to keep in the separated transform.
The <code>lower</code> and <code>upper</code> values define a range of <em>source</em> dimension indices
of the transform given to the constructor.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>lower</code> - the lower dimension, inclusive. Shall not be smaller than 0.</dd>
<dd><code>upper</code> - the upper dimension, exclusive. Shall be smaller than <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html#getSourceDimensions()" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Math­Transform​.get­Source­Dimensions()</code></a>.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">Illegal­Argument­Exception</a></code> - if <code>lower</code> or <code>upper</code> are out of bounds.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getSourceDimensions()">
<h3>getSourceDimensions</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int[]</span>&nbsp;<span class="element-name">getSourceDimensions</span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></span></div>
<div class="block">Returns the input dimensions to keep or kept in the separated transform.
This method performs the first applicable action in the following list:
<ol class="verbose">
<li>Source dimensions have been explicitly set by at least one call to <a href="#addSourceDimensions(int...)"><code>add­Source­Dimensions(int...)</code></a>
or <a href="#addSourceDimensionRange(int,int)"><code>add­Source­Dimension­Range(int, int)</code></a> since construction or since last call to <a href="#clear()"><code>clear()</code></a>.
In such case, this method returns all specified source dimensions.</li>
<li>No source dimensions were set but <a href="#separate()"><code>separate()</code></a> has been invoked.
In such case, this method returns the sequence of source dimensions that <code>separate()</code> chooses to retain.
It may be all source dimensions of the transform given at construction time, but not necessarily.</li>
<li>Otherwise an exception is thrown.</li>
</ol>
If source dimensions have not been set explicitly, <code>Transform­Separator</code> tries to reduce
the set of source dimensions to the smallest set required for computing the target dimensions.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the input dimension as a sequence of strictly increasing values.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">Illegal­State­Exception</a></code> - if input dimensions have not been set and
<a href="#separate()"><code>separate()</code></a> has not yet been invoked.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="addTargetDimensions(int...)">
<h3>addTargetDimensions</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addTargetDimensions</span><wbr><span class="parameters">(int...&nbsp;dimensions)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></span></div>
<div class="block">Adds output dimensions to keep in the separated transform.
The given values are <em>target</em> dimension indices of the transform given to the constructor.
<p>Constraints:</p>
<ul>
<li>All numbers shall be in the range 0 inclusive to <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html#getTargetDimensions()" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Math­Transform​.get­Target­Dimensions()</code></a> exclusive.</li>
<li>The <code>dimensions</code> values shall be in strictly increasing order.</li>
<li>The <code>dimensions</code> values shall be greater than all values specified by all previous calls
of this method since construction or since the last call to <a href="#clear()"><code>clear()</code></a>.</li>
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>dimensions</code> - a sequence of target dimensions to keep, in strictly increasing order.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">Illegal­Argument­Exception</a></code> - if <code>dimensions</code> contains negative values
or if values are not in a strictly increasing order.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="addTargetDimensionRange(int,int)">
<h3>addTargetDimensionRange</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addTargetDimensionRange</span><wbr><span class="parameters">(int&nbsp;lower,
int&nbsp;upper)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></span></div>
<div class="block">Adds a range of output dimensions to keep in the separated transform.
The <code>lower</code> and <code>upper</code> values define a range of <em>target</em> dimension indices
of the transform given to the constructor.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>lower</code> - the lower dimension, inclusive. Shall not be smaller than 0.</dd>
<dd><code>upper</code> - the upper dimension, exclusive. Shall be smaller than <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html#getTargetDimensions()" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Math­Transform​.get­Target­Dimensions()</code></a>.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">Illegal­Argument­Exception</a></code> - if <code>lower</code> or <code>upper</code> are out of bounds.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getTargetDimensions()">
<h3>getTargetDimensions</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int[]</span>&nbsp;<span class="element-name">getTargetDimensions</span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">IllegalStateException</a></span></div>
<div class="block">Returns the output dimensions to keep or kept in the separated transform.
This method performs the first applicable action in the following list:
<ol class="verbose">
<li>Target dimensions have been explicitly set by at least one call to <a href="#addTargetDimensions(int...)"><code>add­Target­Dimensions(int...)</code></a>
or <a href="#addTargetDimensionRange(int,int)"><code>add­Target­Dimension­Range(int, int)</code></a> since construction or since last call to <a href="#clear()"><code>clear()</code></a>.
In such case, this method returns all specified target dimensions.</li>
<li>No target dimensions were set but <a href="#separate()"><code>separate()</code></a> has been invoked.
In such case, the target dimensions are inferred automatically from the <a href="#getSourceDimensions()">source dimensions</a> and the transform.</li>
<li>Otherwise an exception is thrown.</li>
</ol></div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the output dimension as a sequence of strictly increasing values.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="external-link">Illegal­State­Exception</a></code> - if output dimensions have not been set and
<a href="#separate()"><code>separate()</code></a> has not yet been invoked.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isSourceExpandable()">
<h3>isSourceExpandable</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isSourceExpandable</span>()</div>
<div class="block">Returns whether <code>separate()</code> is allowed to expand the list of source dimensions.
The default value is <code>false</code>, which means that <a href="#separate()"><code>separate()</code></a> either returns
a <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Math­Transform</code></a> having exactly the requested <a href="#getSourceDimensions()">source dimensions</a>, or throws a <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/FactoryException.html" title="class or interface in org.opengis.util" class="external-link"><code>Factory­Exception</code></a>.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>whether <code>separate()</code> is allowed to add new source dimensions
instead of throwing a <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/FactoryException.html" title="class or interface in org.opengis.util" class="external-link"><code>Factory­Exception</code></a>.</dd>
<dt>Since:</dt>
<dd>1.1</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setSourceExpandable(boolean)">
<h3>setSourceExpandable</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setSourceExpandable</span><wbr><span class="parameters">(boolean&nbsp;enabled)</span></div>
<div class="block">Sets whether <code>separate()</code> is allowed to expand the list of source dimensions.
The default value is <code>false</code>, which means that <code>separate()</code> will throw a <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/FactoryException.html" title="class or interface in org.opengis.util" class="external-link"><code>Factory­Exception</code></a>
if some <a href="#getTargetDimensions()">target dimensions</a> cannot be computed without inputs that are not
in the list of <a href="#getSourceDimensions()">source dimensions</a>. If this flag is set to <code>true</code>,
then <a href="#separate()"><code>separate()</code></a> will be allowed to augment the list of source dimensions with any inputs that are
essential for producing all requested outputs.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>enabled</code> - whether to allow source dimensions expansion.</dd>
<dt>Since:</dt>
<dd>1.1</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="separate()">
<h3>separate</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">MathTransform</a></span>&nbsp;<span class="element-name">separate</span>()
throws <span class="exceptions"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/FactoryException.html" title="class or interface in org.opengis.util" class="external-link">FactoryException</a></span></div>
<div class="block">Separates the math transform specified at construction time for given dimension indices.
This method creates a math transform that use only the <a href="#addSourceDimensions(int...)">specified
source dimensions</a> and return only the <a href="#addTargetDimensions(int...)">specified target dimensions</a>.
If the source or target dimensions were not specified, then they will be inferred as below:
<ul class="verbose">
<li>If source dimensions were unspecified, then the returned transform will keep only the source dimensions
needed for computing the specified target dimensions. If all source dimensions need to be kept,
then they should be <a href="#addSourceDimensionRange(int,int)">specified explicitly</a>.</li>
<li>If target dimensions were unspecified, then the returned transform will expect only the specified
source dimensions as inputs, and the target dimensions will be inferred automatically.</li>
<li>If neither source and target positions were specified, then the returned transform will have the same
set of target dimensions, but only the set of source dimensions required for computing those targets.
In other words, this method drops unused source dimensions.</li>
</ul>
The source and target dimensions actually used can be queried by calls to <a href="#getSourceDimensions()"><code>get­Source­Dimensions()</code></a>
or <a href="#getTargetDimensions()"><code>get­Target­Dimensions()</code></a> after this <code>separate()</code> method.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the separated math transform.</dd>
<dt>Throws:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/FactoryException.html" title="class or interface in org.opengis.util" class="external-link">Factory­Exception</a></code> - if the transform cannot be separated.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="filterSourceDimensions(org.opengis.referencing.operation.MathTransform,int[])">
<h3>filterSourceDimensions</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">MathTransform</a></span>&nbsp;<span class="element-name">filterSourceDimensions</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">MathTransform</a>&nbsp;step,
int[]&nbsp;dimensions)</span>
throws <span class="exceptions"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/FactoryException.html" title="class or interface in org.opengis.util" class="external-link">FactoryException</a></span></div>
<div class="block">Creates a transform for the same mathematic than the given <code>step</code>
but expecting only the given dimensions as inputs.
This method is invoked by <a href="#separate()"><code>separate()</code></a> when user-specified source dimensions need to be taken in account.
The given <code>step</code> and <code>dimensions</code> are typically the values of
<a href="#transform"><code>transform</code></a> and <a href="#sourceDimensions"><code>source­Dimensions</code></a> fields respectively, but not necessarily.
In particular those arguments will differ when this method is invoked recursively for processing
concatenated or <a href="PassThroughTransform.html#getSubTransform()">sub-transforms</a>.
<p>Subclasses can override this method if they need to handle some <code>Math­Transform</code> implementations
in a special way. However, all implementations of this method shall obey to the following contract:</p>
<ul class="verbose">
<li><a href="#sourceDimensions"><code>source­Dimensions</code></a> and <a href="#targetDimensions"><code>target­Dimensions</code></a> should not be assumed accurate
since they may be temporarily outdated or modified during recursive calls to this method.</li>
<li><a href="#sourceDimensions"><code>source­Dimensions</code></a> should not be modified by this method.</li>
<li><a href="#targetDimensions"><code>target­Dimensions</code></a> <strong>must</strong> be <em>overwritten</em> (not updated) by this method to the
sequence of all target dimensions of <code>step</code> that are also target dimensions of the returned transform.
The indices shall be in strictly increasing order from 0 inclusive to
<code>step​.get­Target­Dimensions()</code> exclusive.</li>
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>step</code> - the transform for which to retain only a subset of the source dimensions.</dd>
<dd><code>dimensions</code> - indices of the source dimensions of <code>step</code> to retain.</dd>
<dt>Returns:</dt>
<dd>a transform expecting only the given source dimensions.</dd>
<dt>Throws:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/FactoryException.html" title="class or interface in org.opengis.util" class="external-link">Factory­Exception</a></code> - if the given transform is not separable.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="filterTargetDimensions(org.opengis.referencing.operation.MathTransform,int[])">
<h3>filterTargetDimensions</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">MathTransform</a></span>&nbsp;<span class="element-name">filterTargetDimensions</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransform.html" title="class or interface in org.opengis.referencing.operation" class="external-link">MathTransform</a>&nbsp;step,
int[]&nbsp;dimensions)</span>
throws <span class="exceptions"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/FactoryException.html" title="class or interface in org.opengis.util" class="external-link">FactoryException</a></span></div>
<div class="block">Creates a transform for the same mathematic than the given <code>step</code>
but producing only the given dimensions as outputs.
This method is invoked by <a href="#separate()"><code>separate()</code></a> when user-specified target dimensions need to be taken in account.
The given <code>step</code> and <code>dimensions</code> are typically the values of
<a href="#transform"><code>transform</code></a> and <a href="#targetDimensions"><code>target­Dimensions</code></a> fields respectively, but not necessarily.
<p>Subclasses can override this method if they need to handle some <code>Math­Transform</code> implementations
in a special way. However, all implementations of this method shall obey to the following contract:</p>
<ul>
<li><a href="#sourceDimensions"><code>source­Dimensions</code></a> and <a href="#targetDimensions"><code>target­Dimensions</code></a> should not be assumed accurate.</li>
<li><a href="#sourceDimensions"><code>source­Dimensions</code></a> should not be modified by this method.</li>
<li><a href="#targetDimensions"><code>target­Dimensions</code></a> should not be modified by this method.</li>
</ul>
The number and nature of inputs stay unchanged. For example if the supplied <code>transform</code>
has (<var>longitude</var>, <var>latitude</var>, <var>height</var>) outputs, then a filtered
transform may keep only the (<var>longitude</var>, <var>latitude</var>) part for the same inputs.
In most cases, the filtered transform is non-invertible since it looses information.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>step</code> - the transform for which to retain only a subset of the target dimensions.</dd>
<dd><code>dimensions</code> - indices of the target dimensions of <code>step</code> to retain.</dd>
<dt>Returns:</dt>
<dd>a transform producing only the given target dimensions.</dd>
<dt>Throws:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/FactoryException.html" title="class or interface in org.opengis.util" class="external-link">Factory­Exception</a></code> - if the given transform is not separable.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>