blob: b07e7afe97868c7be3e0ec2ff13ee43f168060c3 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) on Thu Oct 05 19:54:57 CEST 2023 -->
<title>org.apache.sis.geometry (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.geometry">
<meta name="generator" content="javadoc/PackageWriterImpl">
<meta name="keywords" content="org.apache.sis.geometry package">
<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="package-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 class="nav-bar-cell1-rev">Package</li>
<li>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#package">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Package:</p>
<ul>
<li><a href="#package-description">Description</a></li>
<li>Related Packages</li>
<li><a href="#class-summary">Classes and Interfaces</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Package:&nbsp;</li>
<li><a href="#package-description">Description</a>&nbsp;|&nbsp;</li>
<li>Related Packages&nbsp;|&nbsp;</li>
<li><a href="#class-summary">Classes and Interfaces</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">
<div class="header">
<div class="sub-title"><span class="module-label-in-package">Module</span>&nbsp;<a href="../../../../module-summary.html">org.apache.sis.referencing</a></div>
<h1 title="Package org.apache.sis.geometry" class="title">Package org.apache.sis.geometry</h1>
</div>
<hr>
<div class="package-signature">package <span class="element-name">org.apache.sis.geometry</span></div>
<section class="package-description" id="package-description">
<div class="block">Basic geometric objects (envelopes and direct positions). Every geometry objects are associated
with a <a href="../referencing/crs/AbstractCRS.html" title="class in org.apache.sis.referencing.crs">Coordinate Reference System</a>,
which may have an arbitrary number of dimensions. However, a few specialized classes restrict
the CRS to a fixed number of dimensions only. The table below summarizes the most common
objects, and list the Java2D classes that are conceptually equivalent.
<table class="sis">
<caption>Java2D and geometry equivalences</caption>
<tr>
<th>Purpose</th>
<th>Any dimension</th>
<th>One dimension</th>
<th>Two dimensions</th>
<th>Java2D equivalence</th>
</tr><tr>
<td>A point in a multi-dimensional space</td>
<td><a href="GeneralDirectPosition.html" title="class in org.apache.sis.geometry"><code>GeneralDirectPosition</code></a></td>
<td><a href="DirectPosition1D.html" title="class in org.apache.sis.geometry"><code>DirectPosition1D</code></a></td>
<td><a href="DirectPosition2D.html" title="class in org.apache.sis.geometry"><code>DirectPosition2D</code></a></td>
<td><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/geom/Point2D.html" title="class or interface in java.awt.geom" class="external-link"><code>Point2D</code></a></td>
</tr><tr>
<td>A box in a multi-dimensional space</td>
<td><a href="GeneralEnvelope.html" title="class in org.apache.sis.geometry"><code>GeneralEnvelope</code></a></td>
<td></td>
<td><a href="Envelope2D.html" title="class in org.apache.sis.geometry"><code>Envelope2D</code></a></td>
<td><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/geom/Rectangle2D.html" title="class or interface in java.awt.geom" class="external-link"><code>Rectangle2D</code></a></td>
</tr>
</table>
<h2 id="java2d-dependency-heading">Java2D dependency</h2>
All classes having a name that ends with "2D" are designed for inter-operability with Java2D.
All other classes have no dependency to Java2D.
This clear separation aims to make easier to use Apache SIS on platforms that do not support Java2D
(for example Android) or to avoid loading Java2D classes when only JavaFX is desired.
<h2 id="envelopes-crossing-the-anti-meridian-of-a-geographic-crs-heading">Envelopes crossing the anti-meridian of a Geographic CRS</h2>
The Web Coverage Service (WCS) 1.1 specification uses an extended interpretation
of the bounding box definition. In a WCS 1.1 data structure, the
<a href="AbstractEnvelope.html#getLowerCorner()">lower corner</a>
defines the edges region in the directions of <em>decreasing</em> coordinate values in the
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/geometry/Envelope.html#getCoordinateReferenceSystem()" title="class or interface in org.opengis.geometry" class="external-link">envelope CRS</a>,
while the <a href="AbstractEnvelope.html#getUpperCorner()">upper corner</a>
defines the edges region in the directions of <em>increasing</em> coordinate values.
Those lower and upper corners are usually the algebraic
<a href="AbstractEnvelope.html#getMinimum(int)">minimum</a> and
<a href="AbstractEnvelope.html#getMaximum(int)">maximum</a> coordinates respectively,
but not always. For example, an envelope crossing the anti-meridian could have a lower corner
longitude greater than the upper corner longitude, like the red box below (the green box is the
usual case):
<div style="text-align:center">
<img src="doc-files/AntiMeridian.png" alt="Envelope spannning the anti-meridian">
</div>
In SIS, every envelopes defined in this package support the extended bounding box interpretation:
for any dimension, coordinate values such that <var>upper</var> &lt; <var>lower</var> are handled
in a special way. This handling is slightly different for two groups of methods:
<ul>
<li>In calculation of envelopes spans and median positions (centers) — handled specially only
on axes having the <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/cs/RangeMeaning.html#WRAPAROUND" title="class or interface in org.opengis.referencing.cs" class="external-link"><code>WRAPAROUND</code></a>
range meaning.</li>
<li>When checking for containment, intersections or unions — can be handled specially for
any axis, in which case the envelope represents an <em>exclusion</em> area instead
than an inclusion area.</li>
</ul></div>
<dl class="notes">
<dt>Since:</dt>
<dd>0.3</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../org.apache.sis.util/org/apache/sis/setup/GeometryLibrary.html" title="enum class in org.apache.sis.setup"><code>Geometry­Library</code></a></li>
</ul>
</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<li>
<div id="class-summary">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button><button id="class-summary-tab5" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab5', 2)" class="table-tab">Exception Classes</button></div>
<div id="class-summary.tabpanel" role="tabpanel">
<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AbstractDirectPosition.html" title="class in org.apache.sis.geometry">AbstractDirectPosition</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Default implementations of some <code>Direct­Position</code> methods, leaving the data storage to subclasses.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="AbstractEnvelope.html" title="class in org.apache.sis.geometry">AbstractEnvelope</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Default implementations of most <code>Envelope</code> methods, leaving the data storage to subclasses.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CoordinateFormat.html" title="class in org.apache.sis.geometry">CoordinateFormat</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Formats spatiotemporal coordinates using number, angle and date formats inferred from the coordinate system.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="DirectPosition1D.html" title="class in org.apache.sis.geometry">DirectPosition1D</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">A one-dimensional position within some coordinate reference system.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="DirectPosition2D.html" title="class in org.apache.sis.geometry">DirectPosition2D</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">A two-dimensional position on top of Java2D point.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="Envelope2D.html" title="class in org.apache.sis.geometry">Envelope2D</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">A two-dimensional envelope on top of Java2D rectangle.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="Envelopes.html" title="class in org.apache.sis.geometry">Envelopes</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Transforms envelopes to new Coordinate Reference Systems, and miscellaneous utilities.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="GeneralDirectPosition.html" title="class in org.apache.sis.geometry">GeneralDirectPosition</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">A mutable <code>Direct­Position</code> (the coordinates of a position) of arbitrary dimension.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="GeneralEnvelope.html" title="class in org.apache.sis.geometry">GeneralEnvelope</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">A mutable <code>Envelope</code> (a minimum bounding box or rectangle) of arbitrary dimension.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ImmutableEnvelope.html" title="class in org.apache.sis.geometry">ImmutableEnvelope</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">An immutable <code>Envelope</code> (a minimum bounding box or rectangle) of arbitrary dimension.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab5"><a href="MismatchedReferenceSystemException.html" title="class in org.apache.sis.geometry">MismatchedReferenceSystemException</a></div>
<div class="col-last even-row-color class-summary class-summary-tab5">
<div class="block">Indicates that an object cannot be constructed because of a mismatch in the
<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/ReferenceSystem.html" title="class or interface in org.opengis.referencing" class="external-link">reference systems</a> of
geometric components.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="Shapes2D.html" title="class in org.apache.sis.geometry">Shapes2D</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Utility methods working on Java2D shapes.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab5"><a href="UnmodifiableGeometryException.html" title="class in org.apache.sis.geometry">UnmodifiableGeometryException</a></div>
<div class="col-last even-row-color class-summary class-summary-tab5">
<div class="block">Indicates that an operation is not allowed on a geometry object
because it is unmodifiable.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="WraparoundAdjustment.html" title="class in org.apache.sis.geometry">WraparoundAdjustment</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">An envelope or position converter making them more compatible with a given domain of validity.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab3"><a href="WraparoundMethod.html" title="enum class in org.apache.sis.geometry">WraparoundMethod</a></div>
<div class="col-last even-row-color class-summary class-summary-tab3">
<div class="block">The strategy to use for representing a region crossing the anti-meridian or other wraparound limit.</div>
</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>