blob: a7631ca4293e0c1b664a35e306960149dd400503 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (19) -->
<title>DefaultMathTransformFactory (Apache SIS 1.3 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.sis.referencing.operation.transform, class: DefaultMathTransformFactory">
<meta name="generator" content="javadoc/ClassWriterImpl">
<meta name="keywords" content="org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory class">
<meta name="keywords" content="caching()">
<meta name="keywords" content="getAvailableMethods()">
<meta name="keywords" content="getOperationMethod()">
<meta name="keywords" content="getDefaultParameters()">
<meta name="keywords" content="createParameterizedTransform()">
<meta name="keywords" content="swapAndScaleAxes()">
<meta name="keywords" content="createBaseToDerived()">
<meta name="keywords" content="createCoordinateSystemChange()">
<meta name="keywords" content="createAffineTransform()">
<meta name="keywords" content="createConcatenatedTransform()">
<meta name="keywords" content="createPassThroughTransform()">
<meta name="keywords" content="createFromXML()">
<meta name="keywords" content="createFromWKT()">
<meta name="keywords" content="getLastMethodUsed()">
<meta name="keywords" content="reload()">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../sis.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/DefaultMathTransformFactory.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li><a href="#nested-class-summary">Nested</a></li>
<li>Field</li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.referencing.operation.transform</a></div>
<h1 title="Class DefaultMathTransformFactory" class="title">Class DefaultMathTransformFactory</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
<div class="inheritance"><a href="../../../util/iso/AbstractFactory.html" title="class in org.apache.sis.util.iso">AbstractFactory</a>
<div class="inheritance">DefaultMathTransformFactory</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="../../../io/wkt/Parser.html" title="interface in org.apache.sis.io.wkt">Parser</a></code>, <code><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></code>, <code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/Factory.html" title="class or interface in org.opengis.util" class="external-link">Factory</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DefaultMathTransformFactory</span>
<span class="extends-implements">extends <a href="../../../util/iso/AbstractFactory.html" title="class in org.apache.sis.util.iso">AbstractFactory</a>
implements <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>, <a href="../../../io/wkt/Parser.html" title="interface in org.apache.sis.io.wkt">Parser</a></span></div>
<div class="block">Low level factory for creating <a href="AbstractMathTransform.html" title="class in org.apache.sis.referencing.operation.transform">math transforms</a>.
The objects created by this factory do not know what the source and target coordinate systems mean.
Because of this low semantic value, high level GIS applications usually do not need to use this factory directly.
They can use the static convenience methods in the <a href="../../CRS.html" title="class in org.apache.sis.referencing"><code>CRS</code></a>
or <a href="MathTransforms.html" title="class in org.apache.sis.referencing.operation.transform"><code>Math­Transforms</code></a> classes instead.
<h2>Standard parameters</h2>
<code>Math­Transform</code> instances are created from <a href="../../../parameter/DefaultParameterValueGroup.html" title="class in org.apache.sis.parameter">parameter values</a>.
The parameters expected by each operation available in a default Apache SIS installation is
<a href="https://sis.apache.org/tables/CoordinateOperationMethods.html">listed here</a>.
The set of parameters varies for each operation or projection, but the following can be considered typical:
<ul>
<li>A <cite>semi-major</cite> and <cite>semi-minor</cite> axis length in metres.</li>
<li>A <cite>central meridian</cite> and <cite>latitude of origin</cite> in decimal degrees.</li>
<li>A <cite>scale factor</cite>, which default to 1.</li>
<li>A <cite>false easting</cite> and <cite>false northing</cite> in metres, which default to 0.</li>
</ul>
<p>Each descriptor has many aliases, and those aliases may vary between different projections.
For example, the <cite>false easting</cite> parameter is usually called <code>"false_easting"</code>
by OGC, while EPSG uses various names like <cite>"False easting"</cite> or <cite>"Easting at
false origin"</cite>.</p>
<h2>Dynamic parameters</h2>
A few non-standard parameters are defined for compatibility reasons,
but delegates their work to standard parameters. Those dynamic parameters are not listed in the
<a href="../../../parameter/DefaultParameterValueGroup.html#values()">parameter values</a>.
Dynamic parameters are:
<ul>
<li><code>"earth_radius"</code>, which copy its value to the <code>"semi_major"</code> and
<code>"semi_minor"</code> parameter values.</li>
<li><code>"inverse_flattening"</code>, which compute the <code>"semi_minor"</code> value from
the <code>"semi_major"</code> parameter value.</li>
<li><code>"standard_parallel"</code> expecting an array of type <code>double[]</code>, which copy
its elements to the <code>"standard_parallel_1"</code> and <code>"standard_parallel_2"</code>
parameter scalar values.</li>
</ul>
<p>The main purpose of those dynamic parameters is to support some less commonly used conventions
without duplicating the most commonly used conventions. The alternative ways are used in netCDF
files for example, which often use spherical models instead of ellipsoidal ones.</p>
<h2><a id="Obligation">Mandatory and optional parameters</a></h2>
Parameters are flagged as either <cite>mandatory</cite> or <cite>optional</cite>.
A parameter may be mandatory and still have a default value. In the context of this package, "mandatory"
means that the parameter is an essential part of the projection defined by standards.
Such mandatory parameters will always appears in any <cite>Well Known Text</cite> (WKT) formatting,
even if not explicitly set by the user. For example, the central meridian is typically a mandatory
parameter with a default value of 0° (the Greenwich meridian).
<p>Optional parameters, on the other hand, are often non-standard extensions.
They will appear in WKT formatting only if the user defined explicitly a value which is different than the
default value.</p>
<h2>Operation methods discovery</h2>
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Operation­Method</code></a> describes all the parameters expected for instantiating a particular kind of
math transform. The set of operation methods known to this factory can be obtained in two ways:
<ul>
<li><a href="#%3Cinit%3E(java.lang.Iterable)">specified explicitly at construction time</a>, or</li>
<li><a href="#%3Cinit%3E()">discovered by scanning the classpath</a>.</li>
</ul>
The default way is to scan the classpath. See <a href="MathTransformProvider.html" title="interface in org.apache.sis.referencing.operation.transform"><code>Math­Transform­Provider</code></a> for indications about how to add
custom coordinate operation methods in a default Apache SIS installation.
<h2>Thread safety</h2>
This class is safe for multi-thread usage if all referenced <code>Operation­Method</code> instances are thread-safe.
There is typically only one <code>Math­Transform­Factory</code> instance for the whole application.</div>
<dl class="notes">
<dt>Since:</dt>
<dd>0.6</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="MathTransformProvider.html" title="interface in org.apache.sis.referencing.operation.transform"><code>Math­Transform­Provider</code></a></li>
<li><a href="AbstractMathTransform.html" title="class in org.apache.sis.referencing.operation.transform"><code>Abstract­Math­Transform</code></a></li>
</ul>
</dd>
<p><font size="-1">Defined in the <code>sis-referencing</code> module</font></p>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="caption"><span>Nested Classes</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">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="DefaultMathTransformFactory.Context.html" class="type-name-link" title="class in org.apache.sis.referencing.operation.transform">Default­Math­Transform­Factory​.Context</a></code></div>
<div class="col-last even-row-color">
<div class="block">Source and target coordinate systems for which a new parameterized transform is going to be used.</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()" class="member-name-link">Default­Math­Transform­Factory</a>()</code></div>
<div class="col-last even-row-color">
<div class="block">Creates a new factory which will discover operation methods with a <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/ServiceLoader.html" title="class or interface in java.util" class="external-link"><code>Service­Loader</code></a>.</div>
</div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.lang.Iterable)" class="member-name-link">Default­Math­Transform­Factory</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Operation­Method</a>&gt;&nbsp;methods)</code></div>
<div class="col-last odd-row-color">
<div class="block">Creates a new factory which will use the given operation methods.</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><button id="method-summary-table-tab6" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab6', 3)" class="table-tab">Deprecated 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><a href="DefaultMathTransformFactory.html" title="class in org.apache.sis.referencing.operation.transform">Default­Math­Transform­Factory</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#caching(boolean)" class="member-name-link">caching</a><wbr>(boolean&nbsp;enabled)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a factory for the same transforms than this factory, but with caching potentially disabled.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/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="#createAffineTransform(org.opengis.referencing.operation.Matrix)" class="member-name-link">create­Affine­Transform</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Matrix.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Matrix</a>&nbsp;matrix)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Creates an affine transform from a matrix.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><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 method-summary-table-tab6"><code><a href="#createBaseToDerived(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.parameter.ParameterValueGroup,org.opengis.referencing.cs.CoordinateSystem)" class="member-name-link">create­Base­To­Derived</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link">Coordinate­Reference­System</a>&nbsp;base­CRS,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterValueGroup.html" title="class or interface in org.opengis.parameter" class="external-link">Parameter­Value­Group</a>&nbsp;parameters,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/cs/CoordinateSystem.html" title="class or interface in org.opengis.referencing.cs" class="external-link">Coordinate­System</a>&nbsp;derived­CS)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Replaced by <a href="#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup,org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory.Context)"><code>create­Parameterized­Transform(Parameter­Value­Group, Context)</code></a>.</div>
</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/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="#createConcatenatedTransform(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)" class="member-name-link">create­Concatenated­Transform</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;tr1,
<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;tr2)</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 by concatenating two existing transforms.</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="#createCoordinateSystemChange(org.opengis.referencing.cs.CoordinateSystem,org.opengis.referencing.cs.CoordinateSystem,org.opengis.referencing.datum.Ellipsoid)" class="member-name-link">create­Coordinate­System­Change</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/cs/CoordinateSystem.html" title="class or interface in org.opengis.referencing.cs" class="external-link">Coordinate­System</a>&nbsp;source,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/cs/CoordinateSystem.html" title="class or interface in org.opengis.referencing.cs" class="external-link">Coordinate­System</a>&nbsp;target,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/datum/Ellipsoid.html" title="class or interface in org.opengis.referencing.datum" class="external-link">Ellipsoid</a>&nbsp;ellipsoid)</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 math transform that represent a change of coordinate system.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/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="#createFromWKT(java.lang.String)" class="member-name-link">create­From­WKT</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;text)</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 math transform object from a
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/doc-files/WKT.html"><cite>Well
Known Text</cite> (WKT)</a>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><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 method-summary-table-tab6"><code><a href="#createFromXML(java.lang.String)" class="member-name-link">create­From­XML</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;xml)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><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 odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup)" class="member-name-link">create­Parameterized­Transform</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterValueGroup.html" title="class or interface in org.opengis.parameter" class="external-link">Parameter­Value­Group</a>&nbsp;parameters)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Replaced by <a href="#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup,org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory.Context)"><code>create­Parameterized­Transform(Parameter­Value­Group, Context)</code></a>
where the <code>Context</code> argument can be null.</div>
</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="#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup,org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory.Context)" class="member-name-link">create­Parameterized­Transform</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterValueGroup.html" title="class or interface in org.opengis.parameter" class="external-link">Parameter­Value­Group</a>&nbsp;parameters,
<a href="DefaultMathTransformFactory.Context.html" title="class in org.apache.sis.referencing.operation.transform">Default­Math­Transform­Factory​.Context</a>&nbsp;context)</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 from a group of parameters.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/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="#createPassThroughTransform(int,org.opengis.referencing.operation.MathTransform,int)" class="member-name-link">create­Pass­Through­Transform</a><wbr>(int&nbsp;first­Affected­Coordinate,
<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;sub­Transform,
int&nbsp;num­Trailing­Coordinates)</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 which passes through a subset of coordinates to another transform.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Operation­Method</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAvailableMethods(java.lang.Class)" class="member-name-link">get­Available­Methods</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Single­Operation</a>&gt;&nbsp;type)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a set of available methods for coordinate operations of the given type.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterValueGroup.html" title="class or interface in org.opengis.parameter" class="external-link">Parameter­Value­Group</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDefaultParameters(java.lang.String)" class="member-name-link">get­Default­Parameters</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;method)</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 default parameter values for a math transform using the given operation method.</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/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Operation­Method</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getLastMethodUsed()" class="member-name-link">get­Last­Method­Used</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 operation method used by the latest call to a <code>create(…)</code> constructor
in the currently running thread.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Operation­Method</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperationMethod(java.lang.String)" class="member-name-link">get­Operation­Method</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;identifier)</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 operation method for the specified name or identifier.</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="#reload()" class="member-name-link">reload</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Notifies this factory that the elements provided by the <code>Iterable&lt;Operation­Method&gt;</code> may have changed.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/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="#swapAndScaleAxes(org.opengis.referencing.operation.MathTransform,org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory.Context)" class="member-name-link">swap­And­Scale­Axes</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;parameterized,
<a href="DefaultMathTransformFactory.Context.html" title="class in org.apache.sis.referencing.operation.transform">Default­Math­Transform­Factory​.Context</a>&nbsp;context)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Given a transform between normalized spaces,
creates a transform taking in account axis directions, units of measurement and longitude rotation.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-AbstractFactory">Methods inherited from class&nbsp;<a href="../../../util/iso/AbstractFactory.html" title="class in org.apache.sis.util.iso">AbstractFactory</a></h3>
<code><a href="../../../util/iso/AbstractFactory.html#getVendor()">get­Vendor</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#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/16/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">get­Class</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hash­Code</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notify­All</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">to­String</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-Factory">Methods inherited from interface&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/Factory.html" title="class or interface in org.opengis.util" class="external-link">Factory</a></h3>
<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/Factory.html#getVendor()" title="class or interface in org.opengis.util" class="external-link">get­Vendor</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>DefaultMathTransformFactory</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DefaultMathTransformFactory</span>()</div>
<div class="block">Creates a new factory which will discover operation methods with a <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/ServiceLoader.html" title="class or interface in java.util" class="external-link"><code>Service­Loader</code></a>.
The <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Operation­Method</code></a> implementations shall be listed in the following file:
<blockquote><pre>META-INF/services/org.opengis.referencing.operation.OperationMethod</pre></blockquote>
<code>Default­Math­Transform­Factory</code> parses the above-cited files in all JAR files in order to find all available
operation methods. By default, only operation methods that implement the <a href="MathTransformProvider.html" title="interface in org.apache.sis.referencing.operation.transform"><code>Math­Transform­Provider</code></a> interface
can be used by the <code>create(…)</code> methods in this class.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#reload()"><code>reload()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(java.lang.Iterable)">
<h3>DefaultMathTransformFactory</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DefaultMathTransformFactory</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link">OperationMethod</a>&gt;&nbsp;methods)</span></div>
<div class="block">Creates a new factory which will use the given operation methods. The given iterable is stored by reference —
its content is <strong>not</strong> copied — in order to allow deferred <code>Operation­Method</code> constructions.
Note that by default, only operation methods that implement the <a href="MathTransformProvider.html" title="interface in org.apache.sis.referencing.operation.transform"><code>Math­Transform­Provider</code></a> interface can be
used by the <code>create(…)</code> methods in this class.
<h4>Requirements</h4>
<ul>
<li>The given iterable should not contain duplicated elements.</li>
<li>The given iterable shall be stable: all elements returned by the first iteration must also be
returned by any subsequent iterations, unless <a href="#reload()"><code>reload()</code></a> has been invoked.</li>
<li><code>Operation­Method</code> instances should also implement <a href="MathTransformProvider.html" title="interface in org.apache.sis.referencing.operation.transform"><code>Math­Transform­Provider</code></a>.</li>
<li>All <code>Operation­Method</code> instances shall be thread-safe.</li>
<li>The <code>Iterable</code> itself does not need to be thread-safe since all usages will be synchronized as below:
<blockquote><pre><font color="green">synchronized</font> (methods) {
<font color="green">for</font> (OperationMethod method : methods) {
<i><font color="gray">// Use the method here.</font></i>
}
}</pre></blockquote>
</li>
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>methods</code> - the operation methods to use, stored by reference (not copied).</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="caching(boolean)">
<h3>caching</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="DefaultMathTransformFactory.html" title="class in org.apache.sis.referencing.operation.transform">DefaultMathTransformFactory</a></span>&nbsp;<span class="element-name">caching</span><wbr><span class="parameters">(boolean&nbsp;enabled)</span></div>
<div class="block">Returns a factory for the same transforms than this factory, but with caching potentially disabled.
By default, <code>Default­Math­Transform­Factory</code> caches the <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> instances for sharing
existing instances when transforms are created many times with the same set of parameters.
However, this caching may be unnecessarily costly when the transforms to create are known to be short lived.
This method allows to get a factory better suited for short-lived objects.
<p>This method does not modify the state of this factory. Instead, different factory instances for the
different caching policy are returned.</p></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>enabled</code> - whether caching should be enabled.</dd>
<dt>Returns:</dt>
<dd>a factory for the given caching policy.</dd>
<dt>Since:</dt>
<dd>1.1</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getAvailableMethods(java.lang.Class)">
<h3>getAvailableMethods</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link">OperationMethod</a>&gt;</span>&nbsp;<span class="element-name">getAvailableMethods</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html" title="class or interface in org.opengis.referencing.operation" class="external-link">SingleOperation</a>&gt;&nbsp;type)</span></div>
<div class="block">Returns a set of available methods for coordinate operations of the given type.
The <code>type</code> argument can be used for filtering the kind of operations described by the returned
<code>Operation­Method</code>s. The argument is usually (but not restricted to) one of the following types:
<ul>
<li><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Transformation.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Transformation</code></a>
for coordinate operations described by empirically derived parameters.</li>
<li><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Conversion.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Conversion</code></a>
for coordinate operations described by definitions.</li>
<li><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Projection.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Projection</code></a>
for conversions from geodetic latitudes and longitudes to plane (map) coordinates.</li>
<li><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html" title="class or interface in org.opengis.referencing.operation" class="external-link"><code>Single­Operation</code></a> for all coordinate operations.</li>
</ul>
The returned set may conservatively contain more <code>Operation­Method</code> elements than requested
if this <code>Math­Transform­Factory</code> does not support filtering by the given type.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransformFactory.html#getAvailableMethods(java.lang.Class)" title="class or interface in org.opengis.referencing.operation" class="external-link">get­Available­Methods</a></code>&nbsp;in interface&nbsp;<code><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></code></dd>
<dt>Parameters:</dt>
<dd><code>type</code> - <code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Single­Operation</a>.class</code> for fetching all operation methods,
<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Projection.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Projection</a>.class</code> for
fetching only map projection methods, <i>etc</i>.</dd>
<dt>Returns:</dt>
<dd>methods available in this factory for coordinate operations of the given type.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="#getDefaultParameters(java.lang.String)"><code>get­Default­Parameters(String)</code></a></li>
<li><a href="#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup,org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory.Context)"><code>create­Parameterized­Transform(Parameter­Value­Group, Context)</code></a></li>
<li><a href="../DefaultOperationMethod.html#getOperationType()"><code>Default­Operation­Method​.get­Operation­Type()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getOperationMethod(java.lang.String)">
<h3>getOperationMethod</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link">OperationMethod</a></span>&nbsp;<span class="element-name">getOperationMethod</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;identifier)</span>
throws <span class="exceptions"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/NoSuchIdentifierException.html" title="class or interface in org.opengis.util" class="external-link">NoSuchIdentifierException</a></span></div>
<div class="block">Returns the operation method for the specified name or identifier. The given argument shall be either
a method <a href="../../AbstractIdentifiedObject.html#getName()">name</a> (e.g. <cite>"Transverse Mercator"</cite>)
or one of its <a href="../../AbstractIdentifiedObject.html#getIdentifiers()">identifiers</a> (e.g. <code>"EPSG:9807"</code>).
<p>The search is case-insensitive. Comparisons against method names can be
<a href="../../AbstractIdentifiedObject.html#isHeuristicMatchForName(java.lang.String)">heuristic</a>.</p>
<p>If more than one method match the given identifier, then the first (according iteration order)
non-<a href="../../../util/Deprecable.html#isDeprecated()">deprecated</a> matching method is returned.
If all matching methods are deprecated, the first one is returned.</p></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>identifier</code> - the name or identifier of the operation method to search.</dd>
<dt>Returns:</dt>
<dd>the coordinate operation method for the given name or identifier.</dd>
<dt>Throws:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/NoSuchIdentifierException.html" title="class or interface in org.opengis.util" class="external-link">No­Such­Identifier­Exception</a></code> - if there is no operation method registered for the specified identifier.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="../DefaultCoordinateOperationFactory.html#getOperationMethod(java.lang.String)"><code>Default­Coordinate­Operation­Factory​.get­Operation­Method(String)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getDefaultParameters(java.lang.String)">
<h3>getDefaultParameters</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterValueGroup.html" title="class or interface in org.opengis.parameter" class="external-link">ParameterValueGroup</a></span>&nbsp;<span class="element-name">getDefaultParameters</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;method)</span>
throws <span class="exceptions"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/NoSuchIdentifierException.html" title="class or interface in org.opengis.util" class="external-link">NoSuchIdentifierException</a></span></div>
<div class="block">Returns the default parameter values for a math transform using the given operation method.
The <code>method</code> argument is the name of any <code>Operation­Method</code> instance returned by
<code><a href="#getAvailableMethods(java.lang.Class)"><code>get­Available­Methods</code></a>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/SingleOperation.html" title="class or interface in org.opengis.referencing.operation" class="external-link">SingleOperation</a>.class)</code>.
Valid names are <a href="https://sis.apache.org/tables/CoordinateOperationMethods.html">listed here</a>.
<p>This function creates new parameter instances at every call.
Parameters are intended to be modified by the user before to be given to the
<a href="#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup)"><code>create­Parameterized­Transform(…)</code></a> method.</p></div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransformFactory.html#getDefaultParameters(java.lang.String)" title="class or interface in org.opengis.referencing.operation" class="external-link">get­Default­Parameters</a></code>&nbsp;in interface&nbsp;<code><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></code></dd>
<dt>Parameters:</dt>
<dd><code>method</code> - the case insensitive name of the coordinate operation method to search for.</dd>
<dt>Returns:</dt>
<dd>a new group of parameter values for the <code>Operation­Method</code> identified by the given name.</dd>
<dt>Throws:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/NoSuchIdentifierException.html" title="class or interface in org.opengis.util" class="external-link">No­Such­Identifier­Exception</a></code> - if there is no method registered for the given name or identifier.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="#getAvailableMethods(java.lang.Class)"><code>get­Available­Methods(Class)</code></a></li>
<li><a href="#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup,org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory.Context)"><code>create­Parameterized­Transform(Parameter­Value­Group, Context)</code></a></li>
<li><a href="AbstractMathTransform.html#getParameterValues()"><code>Abstract­Math­Transform​.get­Parameter­Values()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createParameterizedTransform(org.opengis.parameter.ParameterValueGroup)">
<h3>createParameterizedTransform</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><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">createParameterizedTransform</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterValueGroup.html" title="class or interface in org.opengis.parameter" class="external-link">ParameterValueGroup</a>&nbsp;parameters)</span>
throws <span class="exceptions"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/NoSuchIdentifierException.html" title="class or interface in org.opengis.util" class="external-link">NoSuchIdentifierException</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">FactoryException</a></span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Replaced by <a href="#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup,org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory.Context)"><code>create­Parameterized­Transform(Parameter­Value­Group, Context)</code></a>
where the <code>Context</code> argument can be null.</div>
</div>
<div class="block">Creates a transform from a group of parameters.
The set of expected parameters varies for each operation.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransformFactory.html#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup)" title="class or interface in org.opengis.referencing.operation" class="external-link">create­Parameterized­Transform</a></code>&nbsp;in interface&nbsp;<code><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></code></dd>
<dt>Parameters:</dt>
<dd><code>parameters</code> - the parameter values. The <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#getName()" title="class or interface in org.opengis.referencing" class="external-link">parameter group name</a>
shall be the name of the desired <a href="../DefaultOperationMethod.html" title="class in org.apache.sis.referencing.operation">operation method</a>.</dd>
<dt>Returns:</dt>
<dd>the transform created from the given parameters.</dd>
<dt>Throws:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/NoSuchIdentifierException.html" title="class or interface in org.opengis.util" class="external-link">No­Such­Identifier­Exception</a></code> - if there is no method for the given parameter group name.</dd>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/FactoryException.html" title="class or interface in org.opengis.util" class="external-link">Factory­Exception</a></code> - if the object creation failed. This exception is thrown
if some required parameter has not been supplied, or has illegal value.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createParameterizedTransform(org.opengis.parameter.ParameterValueGroup,org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory.Context)">
<h3>createParameterizedTransform</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">createParameterizedTransform</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterValueGroup.html" title="class or interface in org.opengis.parameter" class="external-link">ParameterValueGroup</a>&nbsp;parameters,
<a href="DefaultMathTransformFactory.Context.html" title="class in org.apache.sis.referencing.operation.transform">DefaultMathTransformFactory.Context</a>&nbsp;context)</span>
throws <span class="exceptions"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/NoSuchIdentifierException.html" title="class or interface in org.opengis.util" class="external-link">NoSuchIdentifierException</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">FactoryException</a></span></div>
<div class="block">Creates a transform from a group of parameters.
The set of expected parameters varies for each operation.
The easiest way to provide parameter values is to get an initially empty group for the desired
operation by calling <a href="#getDefaultParameters(java.lang.String)"><code>get­Default­Parameters(String)</code></a>, then to fill the parameter values.
Example:
<blockquote><pre>ParameterValueGroup group = factory.<b>getDefaultParameters</b>(<font color="orangered">"Transverse_Mercator"</font>);
group.<b>parameter</b>(<font color="orangered">"semi_major"</font>).<b>setValue</b>(6378137.000);
group.<b>parameter</b>(<font color="orangered">"semi_minor"</font>).<b>setValue</b>(6356752.314);
MathTransform mt = factory.<b>createParameterizedTransform</b>(group, <font color="green">null</font>);</pre></blockquote>
Sometimes the <code>"semi_major"</code> and <code>"semi_minor"</code> parameter values are not explicitly provided,
but rather inferred from the <a href="../../datum/DefaultGeodeticDatum.html" title="class in org.apache.sis.referencing.datum">geodetic
datum</a> of the source Coordinate Reference System. If the given <code>context</code> argument is non-null,
then this method will use those contextual information for:
<ol>
<li>Inferring the <code>"semi_major"</code>, <code>"semi_minor"</code>, <code>"src_semi_major"</code>,
<code>"src_semi_minor"</code>, <code>"tgt_semi_major"</code> or <code>"tgt_semi_minor"</code> parameter values
from the <a href="../../datum/DefaultEllipsoid.html" title="class in org.apache.sis.referencing.datum">ellipsoids</a> associated to
the source or target CRS, if those parameters are not explicitly given and if they are relevant
for the coordinate operation method.</li>
<li><a href="#createConcatenatedTransform(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)">Concatenating</a> the parameterized transform
with any other transforms required for performing units changes and coordinates swapping.</li>
</ol>
The complete group of parameters, including <code>"semi_major"</code>, <code>"semi_minor"</code> or other calculated values,
can be obtained by a call to <a href="DefaultMathTransformFactory.Context.html#getCompletedParameters()"><code>Default­Math­Transform­Factory​.Context​.get­Completed­Parameters()</code></a> after <code>create­Parameterized­Transform(…)</code>
returned. Note that the completed parameters may only have additional parameters compared to the given parameter
group; existing parameter values should not be modified.
<p>The <code>Operation­Method</code> instance used by this constructor can be obtained by a call to
<a href="#getLastMethodUsed()"><code>get­Last­Method­Used()</code></a>.</p></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>parameters</code> - the parameter values. The <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/IdentifiedObject.html#getName()" title="class or interface in org.opengis.referencing" class="external-link">parameter group name</a>
shall be the name of the desired <a href="../DefaultOperationMethod.html" title="class in org.apache.sis.referencing.operation">operation method</a>.</dd>
<dd><code>context</code> - information about the context (for example source and target coordinate systems)
in which the new transform is going to be used, or <code>null</code> if none.</dd>
<dt>Returns:</dt>
<dd>the transform created from the given parameters.</dd>
<dt>Throws:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/NoSuchIdentifierException.html" title="class or interface in org.opengis.util" class="external-link">No­Such­Identifier­Exception</a></code> - if there is no method for the given parameter group name.</dd>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/FactoryException.html" title="class or interface in org.opengis.util" class="external-link">Factory­Exception</a></code> - if the object creation failed. This exception is thrown
if some required parameter has not been supplied, or has illegal value.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="#getDefaultParameters(java.lang.String)"><code>get­Default­Parameters(String)</code></a></li>
<li><a href="#getAvailableMethods(java.lang.Class)"><code>get­Available­Methods(Class)</code></a></li>
<li><a href="#getLastMethodUsed()"><code>get­Last­Method­Used()</code></a></li>
<li><a href="../../../parameter/ParameterBuilder.html#createGroupForMapProjection(org.opengis.parameter.ParameterDescriptor...)"><code>Parameter­Builder​.create­Group­For­Map­Projection(Parameter­Descriptor...)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="swapAndScaleAxes(org.opengis.referencing.operation.MathTransform,org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory.Context)">
<h3>swapAndScaleAxes</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">swapAndScaleAxes</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;parameterized,
<a href="DefaultMathTransformFactory.Context.html" title="class in org.apache.sis.referencing.operation.transform">DefaultMathTransformFactory.Context</a>&nbsp;context)</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">Given a transform between normalized spaces,
creates a transform taking in account axis directions, units of measurement and longitude rotation.
This method <a href="#createConcatenatedTransform(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)">concatenates</a> the given parameterized transform
with any other transform required for performing units changes and coordinates swapping.
<p>The given <code>parameterized</code> transform shall expect
<a href="../../cs/AxesConvention.html#NORMALIZED">normalized</a> input coordinates and
produce normalized output coordinates. See <a href="../../cs/AxesConvention.html" title="enum class in org.apache.sis.referencing.cs"><code>Axes­Convention</code></a> for more
information about what Apache SIS means by "normalized".</p>
<div class="note"><b>Example:</b>
The most typical examples of transforms with normalized inputs/outputs are normalized
map projections expecting (<cite>longitude</cite>, <cite>latitude</cite>) inputs in degrees
and calculating (<cite>x</cite>, <cite>y</cite>) coordinates in metres,
both of them with (<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/cs/AxisDirection.html#EAST" title="class or interface in org.opengis.referencing.cs" class="external-link">East</a>,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/cs/AxisDirection.html#NORTH" title="class or interface in org.opengis.referencing.cs" class="external-link">North</a>) axis orientations.</div>
<h4>Controlling the normalization process</h4>
Users who need a different normalized space than the default one way find more convenient to
override the <a href="DefaultMathTransformFactory.Context.html#getMatrix(org.apache.sis.referencing.operation.transform.ContextualParameters.MatrixRole)"><code>Context​.get­Matrix(Contextual­Parameters​.Matrix­Role)</code></a> method.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>parameterized</code> - a transform for normalized input and output coordinates.</dd>
<dd><code>context</code> - source and target coordinate systems in which the transform is going to be used.</dd>
<dt>Returns:</dt>
<dd>a transform taking in account unit conversions and axis swapping.</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 object creation failed.</dd>
<dt>Since:</dt>
<dd>0.7</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="../../cs/AxesConvention.html#NORMALIZED"><code>Axes­Convention​.NORMALIZED</code></a></li>
<li><a href="../DefaultConversion.html#%3Cinit%3E(java.util.Map,org.opengis.referencing.operation.OperationMethod,org.opengis.referencing.operation.MathTransform,org.opengis.parameter.ParameterValueGroup)"><code>Default­Conversion(Map, Operation­Method, Math­Transform, Parameter­Value­Group)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createBaseToDerived(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.parameter.ParameterValueGroup,org.opengis.referencing.cs.CoordinateSystem)">
<h3>createBaseToDerived</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><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">createBaseToDerived</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link">CoordinateReferenceSystem</a>&nbsp;baseCRS,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/parameter/ParameterValueGroup.html" title="class or interface in org.opengis.parameter" class="external-link">ParameterValueGroup</a>&nbsp;parameters,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/cs/CoordinateSystem.html" title="class or interface in org.opengis.referencing.cs" class="external-link">CoordinateSystem</a>&nbsp;derivedCS)</span>
throws <span class="exceptions"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/NoSuchIdentifierException.html" title="class or interface in org.opengis.util" class="external-link">NoSuchIdentifierException</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">FactoryException</a></span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Replaced by <a href="#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup,org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory.Context)"><code>create­Parameterized­Transform(Parameter­Value­Group, Context)</code></a>.</div>
</div>
<div class="block">Creates a transform from a base CRS to a derived CS using the given parameters.
If this method needs to set the values of <code>"semi_major"</code> and <code>"semi_minor"</code> parameters,
then it sets those values directly on the given <code>parameters</code> instance – not on a clone – for
allowing the caller to get back the complete parameter values.
However, this method only fills missing values, it never modify existing values.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransformFactory.html#createBaseToDerived(org.opengis.referencing.crs.CoordinateReferenceSystem,org.opengis.parameter.ParameterValueGroup,org.opengis.referencing.cs.CoordinateSystem)" title="class or interface in org.opengis.referencing.operation" class="external-link">create­Base­To­Derived</a></code>&nbsp;in interface&nbsp;<code><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></code></dd>
<dt>Parameters:</dt>
<dd><code>base­CRS</code> - the source coordinate reference system.</dd>
<dd><code>parameters</code> - the parameter values for the transform.</dd>
<dd><code>derived­CS</code> - the target coordinate system.</dd>
<dt>Returns:</dt>
<dd>the parameterized transform from <code>base­CRS</code> to <code>derived­CS</code>,
including unit conversions and axis swapping.</dd>
<dt>Throws:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/NoSuchIdentifierException.html" title="class or interface in org.opengis.util" class="external-link">No­Such­Identifier­Exception</a></code> - if there is no transform registered for the coordinate operation method.</dd>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/FactoryException.html" title="class or interface in org.opengis.util" class="external-link">Factory­Exception</a></code> - if the object creation failed. This exception is thrown
if some required parameter has not been supplied, or has illegal value.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createCoordinateSystemChange(org.opengis.referencing.cs.CoordinateSystem,org.opengis.referencing.cs.CoordinateSystem,org.opengis.referencing.datum.Ellipsoid)">
<h3>createCoordinateSystemChange</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">createCoordinateSystemChange</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/cs/CoordinateSystem.html" title="class or interface in org.opengis.referencing.cs" class="external-link">CoordinateSystem</a>&nbsp;source,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/cs/CoordinateSystem.html" title="class or interface in org.opengis.referencing.cs" class="external-link">CoordinateSystem</a>&nbsp;target,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/datum/Ellipsoid.html" title="class or interface in org.opengis.referencing.datum" class="external-link">Ellipsoid</a>&nbsp;ellipsoid)</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 math transform that represent a change of coordinate system. If exactly one argument is
an <a href="../../cs/DefaultEllipsoidalCS.html" title="class in org.apache.sis.referencing.cs">ellipsoidal coordinate systems</a>,
then the <code>ellipsoid</code> argument is mandatory. In all other cases (including the case where both
coordinate systems are ellipsoidal), the ellipsoid argument is ignored and can be <code>null</code>.
<div class="note"><b>Design note:</b>
this method does not accept separated ellipsoid arguments for <code>source</code> and <code>target</code> because
this method should not be used for datum shifts. If the two given coordinate systems are ellipsoidal,
then they are assumed to use the same ellipsoid. If different ellipsoids are desired, then a
<a href="#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup)">parameterized transform</a> like <cite>"Molodensky"</cite>,
<cite>"Geocentric translations"</cite>, <cite>"Coordinate Frame Rotation"</cite> or
<cite>"Position Vector transformation"</cite> should be used instead.</div></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>source</code> - the source coordinate system.</dd>
<dd><code>target</code> - the target coordinate system.</dd>
<dd><code>ellipsoid</code> - the ellipsoid of <code>Ellipsoidal­CS</code>, or <code>null</code> if none.</dd>
<dt>Returns:</dt>
<dd>a conversion from the given source to the given target coordinate system.</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 conversion cannot be created.</dd>
<dt>Since:</dt>
<dd>0.8</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createAffineTransform(org.opengis.referencing.operation.Matrix)">
<h3>createAffineTransform</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">createAffineTransform</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Matrix.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Matrix</a>&nbsp;matrix)</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 an affine transform from a matrix. If the transform input dimension is <code>M</code>,
and output dimension is <code>N</code>, then the matrix will 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 j'th coordinate of the moved origin. The
<code>[i][N]</code> element of the matrix will be 0 for <var>i</var> less than <code>M</code>, and 1
for <var>i</var> equals <code>M</code>.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransformFactory.html#createAffineTransform(org.opengis.referencing.operation.Matrix)" title="class or interface in org.opengis.referencing.operation" class="external-link">create­Affine­Transform</a></code>&nbsp;in interface&nbsp;<code><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></code></dd>
<dt>Parameters:</dt>
<dd><code>matrix</code> - the matrix used to define the affine transform.</dd>
<dt>Returns:</dt>
<dd>the affine 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 object creation failed.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="MathTransforms.html#linear(org.opengis.referencing.operation.Matrix)"><code>Math­Transforms​.linear(Matrix)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createConcatenatedTransform(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)">
<h3>createConcatenatedTransform</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">createConcatenatedTransform</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;tr1,
<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;tr2)</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 by concatenating two existing transforms.
A concatenated transform acts in the same way as applying two transforms, one after the other.
<p>The dimension of the output space of the first transform must match the dimension of the input space
in the second transform. In order to concatenate more than two transforms, use this constructor repeatedly.</p></div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransformFactory.html#createConcatenatedTransform(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)" title="class or interface in org.opengis.referencing.operation" class="external-link">create­Concatenated­Transform</a></code>&nbsp;in interface&nbsp;<code><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></code></dd>
<dt>Parameters:</dt>
<dd><code>tr1</code> - the first transform to apply to points.</dd>
<dd><code>tr2</code> - the second transform to apply to points.</dd>
<dt>Returns:</dt>
<dd>the concatenated 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 object creation failed.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="MathTransforms.html#concatenate(org.opengis.referencing.operation.MathTransform,org.opengis.referencing.operation.MathTransform)"><code>Math­Transforms​.concatenate(Math­Transform, Math­Transform)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createPassThroughTransform(int,org.opengis.referencing.operation.MathTransform,int)">
<h3>createPassThroughTransform</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">createPassThroughTransform</span><wbr><span class="parameters">(int&nbsp;firstAffectedCoordinate,
<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;subTransform,
int&nbsp;numTrailingCoordinates)</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 which passes through a subset of coordinates to another transform.
This allows transforms to operate on a subset of coordinates.
<div class="note"><b>Example:</b>
Giving (<var>latitude</var>, <var>longitude</var>, <var>height</var>) coordinates,
a pass through transform can convert the height values from meters to feet without
affecting the (<var>latitude</var>, <var>longitude</var>) values.</div>
The resulting transform will have the following dimensions:
<blockquote><pre>Source: firstAffectedCoordinate + subTransform.<b>getSourceDimensions</b>() + numTrailingCoordinates
Target: firstAffectedCoordinate + subTransform.<b>getTargetDimensions</b>() + numTrailingCoordinates</pre></blockquote></div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransformFactory.html#createPassThroughTransform(int,org.opengis.referencing.operation.MathTransform,int)" title="class or interface in org.opengis.referencing.operation" class="external-link">create­Pass­Through­Transform</a></code>&nbsp;in interface&nbsp;<code><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></code></dd>
<dt>Parameters:</dt>
<dd><code>first­Affected­Coordinate</code> - the lowest index of the affected coordinates.</dd>
<dd><code>sub­Transform</code> - transform to use for affected coordinates.</dd>
<dd><code>num­Trailing­Coordinates</code> - number of trailing coordinates to pass through. Affected coordinates will range
from <code>first­Affected­Coordinate</code> inclusive to <code>dim­Target-num­Trailing­Coordinates</code> exclusive.</dd>
<dt>Returns:</dt>
<dd>a pass through 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 object creation failed.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createFromXML(java.lang.String)">
<h3>createFromXML</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><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">createFromXML</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;xml)</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="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
<div class="block">There is no XML format for math transforms.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransformFactory.html#createFromXML(java.lang.String)" title="class or interface in org.opengis.referencing.operation" class="external-link">create­From­XML</a></code>&nbsp;in interface&nbsp;<code><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></code></dd>
<dt>Parameters:</dt>
<dd><code>xml</code> - math transform encoded in XML format.</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 object creation failed.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createFromWKT(java.lang.String)">
<h3>createFromWKT</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">createFromWKT</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;text)</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 math transform object from a
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/doc-files/WKT.html"><cite>Well
Known Text</cite> (WKT)</a>.
If the given text contains non-fatal anomalies (unknown or unsupported WKT elements,
inconsistent unit definitions, <i>etc.</i>), warnings may be reported in a
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.logging/java/util/logging/Logger.html" title="class or interface in java.util.logging" class="external-link">logger</a> named <code>"org​.apache​.sis​.io​.wkt"</code>.
<p>Note that the WKT format is not always lossless. A <code>Math­Transform</code> recreated from WKT may be
non-invertible even if the original transform was invertible. For example if an "Affine" operation is
defined by a non-square matrix, Apache SIS implementation sometimes has "hidden" information about the
inverse matrix but those information are lost at WKT formatting time. A similar "hidden" information
lost may also happen with <a href="WraparoundTransform.html" title="class in org.apache.sis.referencing.operation.transform"><code>Wraparound­Transform</code></a>, also making that transform non-invertible.</p></div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransformFactory.html#createFromWKT(java.lang.String)" title="class or interface in org.opengis.referencing.operation" class="external-link">create­From­WKT</a></code>&nbsp;in interface&nbsp;<code><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></code></dd>
<dt>Specified by:</dt>
<dd><code><a href="../../../io/wkt/Parser.html#createFromWKT(java.lang.String)">create­From­WKT</a></code>&nbsp;in interface&nbsp;<code><a href="../../../io/wkt/Parser.html" title="interface in org.apache.sis.io.wkt">Parser</a></code></dd>
<dt>Parameters:</dt>
<dd><code>text</code> - math transform encoded in Well-Known Text format.</dd>
<dt>Returns:</dt>
<dd>the math transform (never <code>null</code>).</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 Well-Known Text cannot be parsed,
or if the math transform creation failed from some other reason.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getLastMethodUsed()">
<h3>getLastMethodUsed</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/OperationMethod.html" title="class or interface in org.opengis.referencing.operation" class="external-link">OperationMethod</a></span>&nbsp;<span class="element-name">getLastMethodUsed</span>()</div>
<div class="block">Returns the operation method used by the latest call to a <code>create(…)</code> constructor
in the currently running thread. Returns <code>null</code> if not applicable.
<p>Invoking <code>get­Last­Method­Used()</code> can be useful after a call to
<a href="#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup)"><code>create­Parameterized­Transform(…)</code></a>.</p></div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/MathTransformFactory.html#getLastMethodUsed()" title="class or interface in org.opengis.referencing.operation" class="external-link">get­Last­Method­Used</a></code>&nbsp;in interface&nbsp;<code><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></code></dd>
<dt>Returns:</dt>
<dd>the last method used by a <code>create(…)</code> constructor, or <code>null</code> if unknown of unsupported.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="#createParameterizedTransform(org.opengis.parameter.ParameterValueGroup,org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory.Context)"><code>create­Parameterized­Transform(Parameter­Value­Group, Context)</code></a></li>
<li><a href="DefaultMathTransformFactory.Context.html#getMethodUsed()"><code>Default­Math­Transform­Factory​.Context​.get­Method­Used()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="reload()">
<h3>reload</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">reload</span>()</div>
<div class="block">Notifies this factory that the elements provided by the <code>Iterable&lt;Operation­Method&gt;</code> may have changed.
This method performs the following steps:
<ul>
<li>Clears all caches.</li>
<li>If the <code>Iterable</code> given at construction time is an instance of <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/ServiceLoader.html" title="class or interface in java.util" class="external-link"><code>Service­Loader</code></a>,
invokes its <code>reload()</code> method.</li>
</ul>
This method is useful to sophisticated applications which dynamically make new plug-ins available at runtime,
for example following changes of the application classpath.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="#%3Cinit%3E(java.lang.Iterable)"><code>Default­Math­Transform­Factory(Iterable)</code></a></li>
<li><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/ServiceLoader.html#reload()" title="class or interface in java.util" class="external-link"><code>Service­Loader​.reload()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2010&#x2013;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>