blob: 3447a7a623a79f276560ed5a482ddf23646e4408 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) on Thu Oct 05 19:54:57 CEST 2023 -->
<title>BursaWolfParameters (Apache SIS 1.4 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2023-10-05">
<meta name="description" content="declaration: module: org.apache.sis.referencing, package: org.apache.sis.referencing.datum, class: BursaWolfParameters">
<meta name="generator" content="javadoc/ClassWriterImpl">
<meta name="keywords" content="org.apache.sis.referencing.datum.BursaWolfParameters class">
<meta name="keywords" content="tX">
<meta name="keywords" content="tY">
<meta name="keywords" content="tZ">
<meta name="keywords" content="rX">
<meta name="keywords" content="rY">
<meta name="keywords" content="rZ">
<meta name="keywords" content="dS">
<meta name="keywords" content="getTargetDatum()">
<meta name="keywords" content="getValues()">
<meta name="keywords" content="setValues()">
<meta name="keywords" content="isIdentity()">
<meta name="keywords" content="isTranslation()">
<meta name="keywords" content="reverseRotation()">
<meta name="keywords" content="invert()">
<meta name="keywords" content="getPositionVectorTransformation()">
<meta name="keywords" content="setPositionVectorTransformation()">
<meta name="keywords" content="getDomainOfValidity()">
<meta name="keywords" content="clone()">
<meta name="keywords" content="equals()">
<meta name="keywords" content="hashCode()">
<meta name="keywords" content="formatTo()">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../sis.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li><a href="#field-summary">Field</a></li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li><a href="#field-detail">Field</a></li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../../module-summary.html">org.apache.sis.referencing</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.referencing.datum</a></div>
<h1 title="Class BursaWolfParameters" class="title">Class BursaWolfParameters</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
<div class="inheritance"><a href="../../io/wkt/FormattableObject.html" title="class in org.apache.sis.io.wkt">FormattableObject</a>
<div class="inheritance">BursaWolfParameters</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Cloneable.html" title="class or interface in java.lang" class="external-link">Cloneable</a></code></dd>
</dl>
<dl class="notes">
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="TimeDependentBWP.html" title="class in org.apache.sis.referencing.datum">Time­Dependent­BWP</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">BursaWolfParameters</span>
<span class="extends-implements">extends <a href="../../io/wkt/FormattableObject.html" title="class in org.apache.sis.io.wkt">FormattableObject</a>
implements <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Cloneable.html" title="class or interface in java.lang" class="external-link">Cloneable</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
<div class="block">Parameters for a geographic transformation between two datum having the same prime meridian.
Bursa-Wolf parameters are also known as <cite>Helmert transformation parameters</cite>.
For an explanation of their purpose, see the <cite>Bursa-Wolf parameters</cite> section
of <a href="DefaultGeodeticDatum.html" title="class in org.apache.sis.referencing.datum"><code>Default­Geodetic­Datum</code></a> class javadoc.
<p>The Bursa-Wolf parameters shall be applied to geocentric coordinates,
where the <var>X</var> axis points towards the Prime Meridian (usually Greenwich),
the <var>Y</var> axis points East, and the <var>Z</var> axis points North.</p>
<div class="note"><b>Note:</b>
The upper case letters are intentional. By convention, (<var>X</var>, <var>Y</var>, <var>Z</var>)
stand for <cite>geocentric</cite> coordinates while (<var>x</var>, <var>y</var>, <var>z</var>)
stand for <cite>projected</cite> coordinates.</div>
The "Bursa-Wolf" formula is expressed with 7 parameters, listed in the table below.
The <cite>code</cite>, <cite>name</cite> and <cite>abbreviation</cite> columns list EPSG identifiers,
while the <cite>legacy</cite> column lists the identifiers used in the legacy OGC 01-009 specification
(still used in some <cite>Well Known Texts</cite>).
<div class="horizontal-flow">
<div><table class="sis">
<caption>Parameters defined by EPSG</caption>
<tr><th>Code</th> <th>Name</th> <th>Abbr.</th> <th>Legacy</th></tr>
<tr><td>8605</td> <td>X-axis translation</td> <td><a href="#tX"><code>tX</code></a></td> <td><code>dx</code></td></tr>
<tr><td>8606</td> <td>Y-axis translation</td> <td><a href="#tY"><code>tY</code></a></td> <td><code>dy</code></td></tr>
<tr><td>8607</td> <td>Z-axis translation</td> <td><a href="#tZ"><code>tZ</code></a></td> <td><code>dz</code></td></tr>
<tr><td>8608</td> <td>X-axis rotation</td> <td><a href="#rX"><code>rX</code></a></td> <td><code>ex</code></td></tr>
<tr><td>8609</td> <td>Y-axis rotation</td> <td><a href="#rY"><code>rY</code></a></td> <td><code>ey</code></td></tr>
<tr><td>8610</td> <td>Z-axis rotation</td> <td><a href="#rZ"><code>rZ</code></a></td> <td><code>ez</code></td></tr>
<tr><td>8611</td> <td>Scale difference</td> <td><a href="#dS"><code>dS</code></a></td> <td><code>ppm</code></td></tr>
</table></div>
<div><p><b>Geocentric coordinates transformation</b></p>
<p>from (<var>X</var><sub>s</sub>, <var>Y</var><sub>s</sub>, <var>Z</var><sub>s</sub>)
to (<var>X</var><sub>t</sub>, <var>Y</var><sub>t</sub>, <var>Z</var><sub>t</sub>)
<br><span style="font-size:small">(ignoring unit conversions)</span></p>
<p> <math display="block" alttext="MathML capable browser required">
<mrow>
<mo>[</mo>
<mtable>
<mtr><mtd><msub><mi>X</mi><mi>t</mi></msub></mtd></mtr>
<mtr><mtd><msub><mi>Y</mi><mi>t</mi></msub></mtd></mtr>
<mtr><mtd><msub><mi>Z</mi><mi>t</mi></msub></mtd></mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>=</mo>
<mo>(</mo><mn>1</mn><mo>+</mo><mi>dS</mi><mo>)</mo>
<mo></mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd><mn>1</mn></mtd>
<mtd><mo>-</mo><msub><mi>r</mi><mi>z</mi></msub></mtd>
<mtd><mo>+</mo><msub><mi>r</mi><mi>y</mi></msub></mtd>
</mtr>
<mtr>
<mtd><mo>+</mo><msub><mi>r</mi><mi>z</mi></msub></mtd>
<mtd><mn>1</mn></mtd>
<mtd><mo>-</mo><msub><mi>r</mi><mi>x</mi></msub></mtd>
</mtr>
<mtr>
<mtd><mo>-</mo><msub><mi>r</mi><mi>y</mi></msub></mtd>
<mtd><mo>+</mo><msub><mi>r</mi><mi>x</mi></msub></mtd>
<mtd><mn>1</mn></mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>×</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr><mtd><msub><mi>X</mi><mi>s</mi></msub></mtd></mtr>
<mtr><mtd><msub><mi>Y</mi><mi>s</mi></msub></mtd></mtr>
<mtr><mtd><msub><mi>Z</mi><mi>s</mi></msub></mtd></mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>+</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr><mtd><msub><mi>t</mi><mi>x</mi></msub></mtd></mtr>
<mtr><mtd><msub><mi>t</mi><mi>y</mi></msub></mtd></mtr>
<mtr><mtd><msub><mi>t</mi><mi>z</mi></msub></mtd></mtr>
</mtable>
<mo>]</mo>
</mrow>
</math>
</p>
</div></div>
The numerical fields in this <code>Bursa­Wolf­Parameters</code> class use the EPSG abbreviations
with 4 additional constraints compared to the EPSG definitions:
<ul>
<li>Unit of scale difference (<a href="#dS"><code>d­S</code></a>) is fixed to <em>parts per million</em>.</li>
<li>Unit of translation terms (<a href="#tX"><code>t­X</code></a>, <a href="#tY"><code>t­Y</code></a>, <a href="#tZ"><code>t­Z</code></a>) is fixed to <em>metres</em>.</li>
<li>Unit of rotation terms (<a href="#rX"><code>r­X</code></a>, <a href="#rY"><code>r­Y</code></a>, <a href="#rZ"><code>r­Z</code></a>) is fixed to <em>arc-seconds</em>.</li>
<li>Sign of rotation terms is fixed to the <em>Position Vector</em> convention (EPSG operation method 9606).
This is the opposite sign than the <cite>Coordinate Frame Rotation</cite> (EPSG operation method 9607).
The Position Vector convention is used by IAG and recommended by ISO 19111.</li>
</ul>
<h2 id="source-and-target-geodetic-datum-heading">Source and target geodetic datum</h2>
The <var>source datum</var> in above coordinates transformation is the <a href="DefaultGeodeticDatum.html" title="class in org.apache.sis.referencing.datum"><code>Default­Geodetic­Datum</code></a> instance
that contain this <code>Bursa­Wolf­Parameters</code>. It can be any datum, including datum that are valid only locally.
The <var><a href="#getTargetDatum()">target datum</a></var> is specified at construction time and is often,
but not necessarily, the <cite>World Geodetic System 1984</cite> (WGS 84) datum.
<p>If the source and target datum does not have the same <a href="DefaultGeodeticDatum.html#getPrimeMeridian()">prime meridian</a>, then it is user's responsibility to apply longitude rotation before to use the Bursa-Wolf
parameters.</p>
<h2 id="when-bursa-wolf-parameters-are-used-heading">When Bursa-Wolf parameters are used</h2>
<code>Bursa­Wolf­Parameters</code> are used in three contexts:
<ol>
<li>Created as a step while creating a <a href="../operation/AbstractCoordinateOperation.html" title="class in org.apache.sis.referencing.operation">coordinate operation</a> from the EPSG database.</li>
<li>Associated to a <a href="DefaultGeodeticDatum.html" title="class in org.apache.sis.referencing.datum"><code>Default­Geodetic­Datum</code></a> with the WGS 84 <a href="#getTargetDatum()">target datum</a> for
providing the parameter values to display in the <code>TOWGS84[…]</code> element of <cite>Well Known Text</cite>
(WKT) version 1. Note that WKT version 2 does not have <code>TOWGS84[…]</code> element anymore.</li>
<li>Specified at <code>Default­Geodetic­Datum</code> construction time for arbitrary target datum.
Apache SIS will ignore those Bursa-Wolf parameters, except as a fallback if no parameters
can be found in the EPSG database for a given pair of source and target CRS.</li>
</ol>
In EPSG terminology, Apache SIS gives precedence to the <cite>late-binding</cite> approach
(case 1 above) over the <cite>early-binding</cite> approach (case 3 above).</div>
<dl class="notes">
<dt>Since:</dt>
<dd>0.4</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="DefaultGeodeticDatum.html#getBursaWolfParameters()"><code>Default­Geodetic­Datum​.get­Bursa­Wolf­Parameters()</code></a></li>
<li><a href="https://en.wikipedia.org/wiki/Helmert_transformation">Wikipedia: Helmert transformation</a></li>
<li><a href="../../../../../../serialized-form.html#org.apache.sis.referencing.datum.BursaWolfParameters">Serialized Form</a></li>
</ul>
</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>double</code></div>
<div class="col-second even-row-color"><code><a href="#dS" class="member-name-link">d­S</a></code></div>
<div class="col-last even-row-color">
<div class="block">The scale difference in parts per million (EPSG:8611).</div>
</div>
<div class="col-first odd-row-color"><code>double</code></div>
<div class="col-second odd-row-color"><code><a href="#rX" class="member-name-link">r­X</a></code></div>
<div class="col-last odd-row-color">
<div class="block">X-axis rotation in arc-seconds (EPSG:8608), sign following the <cite>Position Vector</cite> convention.</div>
</div>
<div class="col-first even-row-color"><code>double</code></div>
<div class="col-second even-row-color"><code><a href="#rY" class="member-name-link">r­Y</a></code></div>
<div class="col-last even-row-color">
<div class="block">Y-axis rotation in arc-seconds (EPSG:8609), sign following the <cite>Position Vector</cite> convention.</div>
</div>
<div class="col-first odd-row-color"><code>double</code></div>
<div class="col-second odd-row-color"><code><a href="#rZ" class="member-name-link">r­Z</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Z-axis rotation in arc-seconds (EPSG:8610), sign following the <cite>Position Vector</cite> convention.</div>
</div>
<div class="col-first even-row-color"><code>double</code></div>
<div class="col-second even-row-color"><code><a href="#tX" class="member-name-link">t­X</a></code></div>
<div class="col-last even-row-color">
<div class="block">X-axis translation in metres (EPSG:8605).</div>
</div>
<div class="col-first odd-row-color"><code>double</code></div>
<div class="col-second odd-row-color"><code><a href="#tY" class="member-name-link">t­Y</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Y-axis translation in metres (EPSG:8606).</div>
</div>
<div class="col-first even-row-color"><code>double</code></div>
<div class="col-second even-row-color"><code><a href="#tZ" class="member-name-link">t­Z</a></code></div>
<div class="col-last even-row-color">
<div class="block">Z-axis translation in metres (EPSG:8607).</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.opengis.referencing.datum.GeodeticDatum,org.opengis.metadata.extent.Extent)" class="member-name-link">Bursa­Wolf­Parameters</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/datum/GeodeticDatum.html" title="class or interface in org.opengis.referencing.datum" class="external-link">Geodetic­Datum</a>&nbsp;target­Datum,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/Extent.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Extent</a>&nbsp;domain­Of­Validity)</code></div>
<div class="col-last even-row-color">
<div class="block">Creates a new instance for the given target datum and domain of validity.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="BursaWolfParameters.html" title="class in org.apache.sis.referencing.datum">Bursa­Wolf­Parameters</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#clone()" class="member-name-link">clone</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 a copy of this object.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;object)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Compares the specified object with this object for equality.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#formatTo(org.apache.sis.io.wkt.Formatter)" class="member-name-link">format­To</a><wbr>(<a href="../../io/wkt/Formatter.html" title="class in org.apache.sis.io.wkt">Formatter</a>&nbsp;formatter)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Formats this object as a <cite>Well Known Text</cite> <code>To­WGS84[…]</code> element.</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/metadata/extent/Extent.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Extent</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDomainOfValidity()" class="member-name-link">get­Domain­Of­Validity</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the region or timeframe in which a coordinate transformation based on those Bursa-Wolf parameters is
valid, or <code>null</code> if unspecified.</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/Matrix.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Matrix</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPositionVectorTransformation(java.util.Date)" class="member-name-link">get­Position­Vector­Transformation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Date.html" title="class or interface in java.util" class="external-link">Date</a>&nbsp;time)</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 position vector transformation (geocentric domain) as an affine transform.</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/datum/GeodeticDatum.html" title="class or interface in org.opengis.referencing.datum" class="external-link">Geodetic­Datum</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTargetDatum()" class="member-name-link">get­Target­Datum</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the target datum for this set of parameters, or <code>null</code> if unknown.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>double[]</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getValues()" class="member-name-link">get­Values</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 parameter values.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hash­Code</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a hash value for this object.</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="#invert()" class="member-name-link">invert</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Inverts in-place the transformation by inverting the sign of all numerical parameters.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isIdentity()" class="member-name-link">is­Identity</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns <code>true</code> if a transformation built from this set of parameters would perform no operation.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isTranslation()" class="member-name-link">is­Translation</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 <code>true</code> if a transformation built from this set of parameters would perform only a translation.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#reverseRotation()" class="member-name-link">reverse­Rotation</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Inverts in-place the sign of rotation terms (<a href="#rX"><code>r­X</code></a>, <a href="#rY"><code>r­Y</code></a>, <a href="#rZ"><code>r­Z</code></a>).</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="#setPositionVectorTransformation(org.opengis.referencing.operation.Matrix,double)" class="member-name-link">set­Position­Vector­Transformation</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,
double&nbsp;tolerance)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sets all Bursa-Wolf parameters from the given <cite>Position Vector transformation</cite> matrix.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setValues(double...)" class="member-name-link">set­Values</a><wbr>(double...&nbsp;elements)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sets the parameters to the given values.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-FormattableObject">Methods inherited from class&nbsp;<a href="../../io/wkt/FormattableObject.html" title="class in org.apache.sis.io.wkt">FormattableObject</a></h3>
<code><a href="../../io/wkt/FormattableObject.html#print()">print</a>, <a href="../../io/wkt/FormattableObject.html#toString()">to­String</a>, <a href="../../io/wkt/FormattableObject.html#toString(org.apache.sis.io.wkt.Convention)">to­String</a>, <a href="../../io/wkt/FormattableObject.html#toWKT()">to­WKT</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">get­Class</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notify­All</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="tX">
<h3>tX</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">tX</span></div>
<div class="block">X-axis translation in metres (EPSG:8605).
The legacy OGC parameter name is <code>"dx"</code>.</div>
</section>
</li>
<li>
<section class="detail" id="tY">
<h3>tY</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">tY</span></div>
<div class="block">Y-axis translation in metres (EPSG:8606).
The legacy OGC parameter name is <code>"dy"</code>.</div>
</section>
</li>
<li>
<section class="detail" id="tZ">
<h3>tZ</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">tZ</span></div>
<div class="block">Z-axis translation in metres (EPSG:8607).
The legacy OGC parameter name is <code>"dz"</code>.</div>
</section>
</li>
<li>
<section class="detail" id="rX">
<h3>rX</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">rX</span></div>
<div class="block">X-axis rotation in arc-seconds (EPSG:8608), sign following the <cite>Position Vector</cite> convention.
The legacy OGC parameter name is <code>"ex"</code>.</div>
</section>
</li>
<li>
<section class="detail" id="rY">
<h3>rY</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">rY</span></div>
<div class="block">Y-axis rotation in arc-seconds (EPSG:8609), sign following the <cite>Position Vector</cite> convention.
The legacy OGC parameter name is <code>"ey"</code>.</div>
</section>
</li>
<li>
<section class="detail" id="rZ">
<h3>rZ</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">rZ</span></div>
<div class="block">Z-axis rotation in arc-seconds (EPSG:8610), sign following the <cite>Position Vector</cite> convention.
The legacy OGC parameter name is <code>"ez"</code>.</div>
</section>
</li>
<li>
<section class="detail" id="dS">
<h3>dS</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">dS</span></div>
<div class="block">The scale difference in parts per million (EPSG:8611).
The legacy OGC parameter name is <code>"ppm"</code>.
<h4 id="example-heading">Example</h4>
If a distance of 100 km in the source coordinate reference system translates into a distance of 100.001 km
in the target coordinate reference system, the scale difference is 1 ppm (the ratio being 1.000001).</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(org.opengis.referencing.datum.GeodeticDatum,org.opengis.metadata.extent.Extent)">
<h3>BursaWolfParameters</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">BursaWolfParameters</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/datum/GeodeticDatum.html" title="class or interface in org.opengis.referencing.datum" class="external-link">GeodeticDatum</a>&nbsp;targetDatum,
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/Extent.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Extent</a>&nbsp;domainOfValidity)</span></div>
<div class="block">Creates a new instance for the given target datum and domain of validity.
All numerical parameters are initialized to 0, which correspond to an identity transform.
Callers can assign numerical values to the public fields of interest after construction.
For example, many coordinate transformations will provide values only for the translation
terms (<a href="#tX"><code>t­X</code></a>, <a href="#tY"><code>t­Y</code></a>, <a href="#tZ"><code>t­Z</code></a>).
<p>Alternatively, numerical fields can also be initialized by a call to
<a href="#setPositionVectorTransformation(org.opengis.referencing.operation.Matrix,double)"><code>set­Position­Vector­Transformation(Matrix, double)</code></a>.</p></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>target­Datum</code> - the target datum (usually WGS 84) for this set of parameters, or <code>null</code> if unknown.</dd>
<dd><code>domain­Of­Validity</code> - area or region in which a coordinate transformation based on those Bursa-Wolf parameters
is valid, or <code>null</code> if unspecified.</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="getTargetDatum()">
<h3>getTargetDatum</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/datum/GeodeticDatum.html" title="class or interface in org.opengis.referencing.datum" class="external-link">GeodeticDatum</a></span>&nbsp;<span class="element-name">getTargetDatum</span>()</div>
<div class="block">Returns the target datum for this set of parameters, or <code>null</code> if unknown.
This is usually the WGS 84 datum, but other targets are allowed.
<p>The source datum is the <a href="DefaultGeodeticDatum.html" title="class in org.apache.sis.referencing.datum"><code>Default­Geodetic­Datum</code></a> that contain this <code>Bursa­Wolf­Parameters</code>
instance.</p></div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the target datum for this set of parameters, or <code>null</code> if unknown.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getValues()">
<h3>getValues</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double[]</span>&nbsp;<span class="element-name">getValues</span>()</div>
<div class="block">Returns the parameter values. The length of the returned array depends on the values:
<ul>
<li>If this instance is an <a href="TimeDependentBWP.html" title="class in org.apache.sis.referencing.datum"><code>Time­Dependent­BWP</code></a>, then the array length will be 14.</li>
<li>Otherwise if this instance contains a non-zero <a href="#dS"><code>d­S</code></a> value, then the array length will be 7 with
<a href="#tX"><code>t­X</code></a>, <a href="#tY"><code>t­Y</code></a>, <a href="#tZ"><code>t­Z</code></a>, <a href="#rX"><code>r­X</code></a>, <a href="#rY"><code>r­Y</code></a>, <a href="#rZ"><code>r­Z</code></a> and <a href="#dS"><code>d­S</code></a> values
in that order.</li>
<li>Otherwise if this instance contains non-zero rotation terms,
then this method returns the first 6 of the above-cited values.</li>
<li>Otherwise (i.e. this instance <a href="#isTranslation()">is a translation</a>),
this method returns only the first 3 of the above-cited values.</li>
</ul>
<h4 id="compatibility-note-heading">Compatibility note</h4>
The rules about the arrays of length 3, 6 or 7 are derived from the <cite>Well Known Text</cite> (WKT)
version 1 specification. The rule about the array of length 14 is an extension.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the parameter values as an array of length 3, 6, 7 or 14.</dd>
<dt>Since:</dt>
<dd>0.6</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setValues(double...)">
<h3>setValues</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setValues</span><wbr><span class="parameters">(double...&nbsp;elements)</span></div>
<div class="block">Sets the parameters to the given values. The given array can have any length. The first array elements will be
assigned to the <a href="#tX"><code>t­X</code></a>, <a href="#tY"><code>t­Y</code></a>, <a href="#tZ"><code>t­Z</code></a>, <a href="#rX"><code>r­X</code></a>, <a href="#rY"><code>r­Y</code></a>, <a href="#rZ"><code>r­Z</code></a> and <a href="#dS"><code>d­S</code></a>
fields in that order.
<ul>
<li>If the length of the given array is not sufficient for assigning a value to every fields,
then the remaining fields are left unchanged (they are <strong>not</strong> reset to zero,
but this is not a problem if this <code>Bursa­Wolf­Parameters</code> is a new instance).</li>
<li>If the length of the given array is greater than necessary, then extra elements are ignored by this base
class. Note however that those extra elements may be used by subclasses like <a href="TimeDependentBWP.html" title="class in org.apache.sis.referencing.datum"><code>Time­Dependent­BWP</code></a>.</li>
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>elements</code> - the new parameter values, as an array of any length.</dd>
<dt>Since:</dt>
<dd>0.6</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isIdentity()">
<h3>isIdentity</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isIdentity</span>()</div>
<div class="block">Returns <code>true</code> if a transformation built from this set of parameters would perform no operation.
This is true when the value of all parameters is zero.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd><code>true</code> if the parameters describe no operation.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isTranslation()">
<h3>isTranslation</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isTranslation</span>()</div>
<div class="block">Returns <code>true</code> if a transformation built from this set of parameters would perform only a translation.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd><code>true</code> if the parameters describe a translation only.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="reverseRotation()">
<h3>reverseRotation</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">reverseRotation</span>()</div>
<div class="block">Inverts in-place the sign of rotation terms (<a href="#rX"><code>r­X</code></a>, <a href="#rY"><code>r­Y</code></a>, <a href="#rZ"><code>r­Z</code></a>).
This method can be invoked for converting a <cite>Coordinate Frame Rotation</cite> transformation
(EPSG operation method 9607) to a <em>Position Vector</em> transformation (EPSG operation method 9606).
The latter convention is used by IAG and recommended by ISO 19111.</div>
</section>
</li>
<li>
<section class="detail" id="invert()">
<h3>invert</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">invert</span>()</div>
<div class="block">Inverts in-place the transformation by inverting the sign of all numerical parameters.
The <a href="#getPositionVectorTransformation(java.util.Date)">position vector transformation</a> matrix
created from inverted Bursa-Wolf parameters will be <strong>approximately</strong> equals
to the <a href="../operation/matrix/MatrixSIS.html#inverse()">inverse</a>
of the matrix created from the original parameters. The equality holds approximately only
because the parameter values are very small (parts per millions and arc-seconds).</div>
</section>
</li>
<li>
<section class="detail" id="getPositionVectorTransformation(java.util.Date)">
<h3>getPositionVectorTransformation</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/Matrix.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Matrix</a></span>&nbsp;<span class="element-name">getPositionVectorTransformation</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Date.html" title="class or interface in java.util" class="external-link">Date</a>&nbsp;time)</span></div>
<div class="block">Returns the position vector transformation (geocentric domain) as an affine transform.
For transformations that do not depend on time, the formula is as below where <code>R</code>
is a conversion factor from arc-seconds to radians:
<blockquote><pre> R = toRadians(1″)
S = 1 + <a href="#dS">dS</a>/1000000
┌ ┐ ┌ ┐ ┌ ┐
│ X' │ │ S -<a href="#rZ">rZ</a>*RS +<a href="#rY">rY</a>*RS <a href="#tX">tX</a> │ │ X │
│ Y' │ = │ +<a href="#rZ">rZ</a>*RS S -<a href="#rX">rX</a>*RS <a href="#tY">tY</a> │ │ Y │
│ Z' │ │ -<a href="#rY">rY</a>*RS +<a href="#rX">rX</a>*RS S <a href="#tZ">tZ</a> │ │ Z │
│ 1 │ │ 0 0 0 1 │ │ 1 │
└ ┘ └ ┘ └ ┘</pre></blockquote>
This affine transform can be applied on <strong>geocentric</strong> coordinates.
This is identified as operation method 1033 in the EPSG database.
Those geocentric coordinates are typically converted from geographic coordinates
in the region or timeframe given by <a href="#getDomainOfValidity()"><code>get­Domain­Of­Validity()</code></a>.
<p>If the source datum and the <a href="#getTargetDatum()">target datum</a> do not use the same
<a href="DefaultGeodeticDatum.html#getPrimeMeridian()">prime meridian</a>, then it is caller's responsibility
to apply longitude rotation before to use the matrix returned by this method.</p>
<h4 id="time-dependent-transformation-heading">Time-dependent transformation</h4>
Some transformations use parameters that vary with time (e.g. operation method EPSG:1053).
Users can optionally specify a date for which the transformation is desired.
For transformations that do not depends on time, this date is ignored and can be null.
For time-dependent transformations, <code>null</code> values default to the transformation's
<a href="TimeDependentBWP.html#getTimeReference()">reference time</a>.
<h4 id="inverse-transformation-heading">Inverse transformation</h4>
The inverse transformation can be approximated by reversing the sign of the 7 parameters before to use them
in the above matrix. This is often considered sufficient since <cite>position vector transformations</cite>
are themselves approximations. However, Apache SIS will rather use
<a href="../operation/matrix/MatrixSIS.html#inverse()"><code>Matrix­SIS​.inverse()</code></a> in order to increase the chances
that concatenation of transformations <var>A</var><var>B</var> followed by <var>B</var><var>A</var>
gives back the identity transform.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>time</code> - date for which the transformation is desired, or <code>null</code> for the transformation's reference time.</dd>
<dt>Returns:</dt>
<dd>an affine transform in geocentric space created from this Bursa-Wolf parameters and the given time.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="DefaultGeodeticDatum.html#getPositionVectorTransformation(org.opengis.referencing.datum.GeodeticDatum,org.opengis.metadata.extent.Extent)"><code>Default­Geodetic­Datum​.get­Position­Vector­Transformation(Geodetic­Datum, Extent)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setPositionVectorTransformation(org.opengis.referencing.operation.Matrix,double)">
<h3>setPositionVectorTransformation</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setPositionVectorTransformation</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,
double&nbsp;tolerance)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></span></div>
<div class="block">Sets all Bursa-Wolf parameters from the given <cite>Position Vector transformation</cite> matrix.
The matrix shall comply to the following constraints:
<ul>
<li>The matrix shall be <a href="../operation/matrix/MatrixSIS.html#isAffine()">affine</a>.</li>
<li>The sub-matrix defined by <code>matrix</code> without the last row and last column shall be
<a href="https://en.wikipedia.org/wiki/Skew-symmetric_matrix">skew-symmetric</a> (a.k.a. antisymmetric).</li>
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>matrix</code> - the matrix from which to get Bursa-Wolf parameters.</dd>
<dd><code>tolerance</code> - the tolerance error for the skew-symmetric matrix test, in units of PPM or arc-seconds (e.g. 1E-8).</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">Illegal­Argument­Exception</a></code> - if the specified matrix does not met the conditions.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="#getPositionVectorTransformation(java.util.Date)"><code>get­Position­Vector­Transformation(Date)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getDomainOfValidity()">
<h3>getDomainOfValidity</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/metadata/extent/Extent.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Extent</a></span>&nbsp;<span class="element-name">getDomainOfValidity</span>()</div>
<div class="block">Returns the region or timeframe in which a coordinate transformation based on those Bursa-Wolf parameters is
valid, or <code>null</code> if unspecified. If an extent was specified at construction time, then that extent is
returned. Otherwise the datum domain of validity (which may be <code>null</code>) is returned.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>area or region or timeframe in which the coordinate transformation is valid, or <code>null</code>.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../org.apache.sis.metadata/org/apache/sis/metadata/iso/extent/DefaultExtent.html" title="class in org.apache.sis.metadata.iso.extent"><code>Default­Extent</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="clone()">
<h3>clone</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="BursaWolfParameters.html" title="class in org.apache.sis.referencing.datum">BursaWolfParameters</a></span>&nbsp;<span class="element-name">clone</span>()</div>
<div class="block">Returns a copy of this object.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
<dt>Returns:</dt>
<dd>a copy of all parameters.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="equals(java.lang.Object)">
<h3>equals</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;object)</span></div>
<div class="block">Compares the specified object with this object for equality.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
<dt>Parameters:</dt>
<dd><code>object</code> - the object to compare with the parameters.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if the given object is equal to this <code>Bursa­Wolf­Parameters</code>.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="hashCode()">
<h3>hashCode</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
<div class="block">Returns a hash value for this object.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hash­Code</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
<dt>Returns:</dt>
<dd>the hash code value. This value does not need to be the same in past or future versions of this class.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="formatTo(org.apache.sis.io.wkt.Formatter)">
<h3>formatTo</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">formatTo</span><wbr><span class="parameters">(<a href="../../io/wkt/Formatter.html" title="class in org.apache.sis.io.wkt">Formatter</a>&nbsp;formatter)</span></div>
<div class="block">Formats this object as a <cite>Well Known Text</cite> <code>To­WGS84[…]</code> element.
The WKT contains the parameters in <var>translation</var>, <var>rotation</var>, <var>scale</var> order,
like below:
<blockquote><code>TOWGS84[<a href="#tX">t­X</a>, <a href="#tY">t­Y</a>, <a href="#tZ">t­Z</a>, <a href="#rX">r­X</a>,
<a href="#rY">r­Y</a>, <a href="#rZ">r­Z</a>, <a href="#dS">d­S</a>]</code></blockquote>
The element name is <code>"To­WGS84"</code> in the common case where the <a href="#getTargetDatum()">target datum</a>
is WGS 84. For other targets, the element name will be derived from the datum name.
<h4 id="compatibility-note-heading1">Compatibility note</h4>
<code>TOWGS84</code> is defined in the WKT 1 specification only.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../io/wkt/FormattableObject.html#formatTo(org.apache.sis.io.wkt.Formatter)">format­To</a></code>&nbsp;in class&nbsp;<code><a href="../../io/wkt/FormattableObject.html" title="class in org.apache.sis.io.wkt">Formattable­Object</a></code></dd>
<dt>Parameters:</dt>
<dd><code>formatter</code> - The formatter where to format the inner content of this WKT element.</dd>
<dt>Returns:</dt>
<dd>Usually <code>"To­WGS84"</code>.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../io/wkt/FormattableObject.html#toWKT()"><code>Formattable­Object​.to­WKT()</code></a></li>
<li><a href="../../io/wkt/FormattableObject.html#toString()"><code>Formattable­Object​.to­String()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>