blob: a700df4a2ee4d4880ade90f1899b7db97247729f [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) on Thu Oct 05 19:54:57 CEST 2023 -->
<title>DefaultGeographicBoundingBox (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.metadata, package: org.apache.sis.metadata.iso.extent, class: DefaultGeographicBoundingBox">
<meta name="generator" content="javadoc/ClassWriterImpl">
<meta name="keywords" content="org.apache.sis.metadata.iso.extent.DefaultGeographicBoundingBox class">
<meta name="keywords" content="castOrCopy()">
<meta name="keywords" content="getWestBoundLongitude()">
<meta name="keywords" content="setWestBoundLongitude()">
<meta name="keywords" content="getEastBoundLongitude()">
<meta name="keywords" content="setEastBoundLongitude()">
<meta name="keywords" content="getSouthBoundLatitude()">
<meta name="keywords" content="setSouthBoundLatitude()">
<meta name="keywords" content="getNorthBoundLatitude()">
<meta name="keywords" content="setNorthBoundLatitude()">
<meta name="keywords" content="setBounds()">
<meta name="keywords" content="add()">
<meta name="keywords" content="intersect()">
<meta name="keywords" content="isEmpty()">
<meta name="keywords" content="equals()">
<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><a href="#nested-class-summary">Nested</a></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>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><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>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="module-label-in-type">Module</span>&nbsp;<a href="../../../../../../module-summary.html">org.apache.sis.metadata</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.metadata.iso.extent</a></div>
<h1 title="Class DefaultGeographicBoundingBox" class="title">Class DefaultGeographicBoundingBox</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="../../AbstractMetadata.html" title="class in org.apache.sis.metadata">AbstractMetadata</a>
<div class="inheritance"><a href="../../ModifiableMetadata.html" title="class in org.apache.sis.metadata">ModifiableMetadata</a>
<div class="inheritance"><a href="../ISOMetadata.html" title="class in org.apache.sis.metadata.iso">ISOMetadata</a>
<div class="inheritance"><a href="AbstractGeographicExtent.html" title="class in org.apache.sis.metadata.iso.extent">AbstractGeographicExtent</a>
<div class="inheritance">DefaultGeographicBoundingBox</div>
</div>
</div>
</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="../../../../../../../org.apache.sis.util/org/apache/sis/util/Emptiable.html" title="interface in org.apache.sis.util">Emptiable</a></code>, <code><a href="../../../../../../../org.apache.sis.util/org/apache/sis/util/LenientComparable.html" title="interface in org.apache.sis.util">Lenient­Comparable</a></code>, <code><a href="../../../xml/IdentifiedObject.html" title="interface in org.apache.sis.xml">Identified­Object</a></code>, <code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Geographic­Bounding­Box</a></code>, <code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicExtent.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Geographic­Extent</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DefaultGeographicBoundingBox</span>
<span class="extends-implements">extends <a href="AbstractGeographicExtent.html" title="class in org.apache.sis.metadata.iso.extent">AbstractGeographicExtent</a>
implements <a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">GeographicBoundingBox</a></span></div>
<div class="block">Geographic position of the dataset. This is only an approximate so specifying the coordinate
reference system is unnecessary. The CRS shall be geographic with Greenwich prime meridian,
but the datum doesn't need to be WGS84.
<p>The following properties are mandatory in a well-formed metadata according ISO 19115:</p>
<div class="preformat"><code>EX_Geographic­Bounding­Box</code>
<code>  ├─west­Bound­Longitude……</code> The western-most coordinate of the limit of the dataset extent.
<code>  ├─east­Bound­Longitude……</code> The eastern-most coordinate of the limit of the dataset extent.
<code>  ├─south­Bound­Latitude……</code> The southern-most coordinate of the limit of the dataset extent.
<code>  └─north­Bound­Latitude……</code> The northern-most, coordinate of the limit of the dataset extent.</div>
In addition to the standard properties, SIS provides the following methods:
<ul>
<li><a href="#setBounds(double,double,double,double)"><code>set­Bounds(double, double, double, double)</code></a> for setting the extent from (λ,φ) values.</li>
<li><a href="#setBounds(org.opengis.geometry.Envelope)"><code>set­Bounds(Envelope)</code></a> for setting the extent from the given envelope.</li>
<li><a href="#setBounds(org.opengis.metadata.extent.GeographicBoundingBox)"><code>set­Bounds(Geographic­Bounding­Box)</code></a> for setting the extent from another bounding box.</li>
<li><a href="#add(org.opengis.metadata.extent.GeographicBoundingBox)"><code>add(Geographic­Bounding­Box)</code></a> for expanding this extent to include another bounding box.</li>
<li><a href="#intersect(org.opengis.metadata.extent.GeographicBoundingBox)"><code>intersect(Geographic­Bounding­Box)</code></a> for the intersection between the two bounding boxes.</li>
</ul>
<h2 id="validation-and-normalization-heading">Validation and normalization</h2>
All constructors and setter methods in this class perform the following argument validation or normalization:
<ul>
<li>If the <a href="#getSouthBoundLatitude()">south bound latitude</a> is greater than the
<a href="#getNorthBoundLatitude()">north bound latitude</a>, then an exception is thrown.</li>
<li>If any latitude is set to a value outside the
[<a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/Latitude.html#MIN_VALUE">-90</a><a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/Latitude.html#MAX_VALUE">90</a>]° range,
then that latitude will be clamped.</li>
<li>If any longitude is set to a value outside the
[<a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/Longitude.html#MIN_VALUE">-180</a><a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/Longitude.html#MAX_VALUE">180</a>]° range,
then a multiple of 360° will be added or subtracted to that longitude in order to bring
it back inside the range.</li>
</ul>
If the <a href="#getWestBoundLongitude()">west bound longitude</a> is greater than the
<a href="#getEastBoundLongitude()">east bound longitude</a>, then the box spans the anti-meridian.
See <a href="../../../../../../../org.apache.sis.referencing/org/apache/sis/geometry/GeneralEnvelope.html" title="class in org.apache.sis.geometry">GeneralEnvelope</a> for more information about crossing the anti-meridian.
<h2 id="relationship-with-envelope-classes-heading">Relationship with Envelope classes</h2>
The <a href="../../../../../../../org.apache.sis.referencing/org/apache/sis/geometry/package-summary.html"><code>org​.apache​.sis​.geometry</code></a> package provides various <code>Envelope</code> classes serving a similar purpose.
The main difference is that envelopes can be expressed in any <a href="../../../../../../../org.apache.sis.referencing/org/apache/sis/referencing/crs/AbstractCRS.html" title="class in org.apache.sis.referencing.crs">Coordinate Reference System</a> (for example using any map projection), may have any number of dimensions, axes may have
any <a href="../../../../../../../org.apache.sis.referencing/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.html#getDirection()">direction</a> (some maps are south-oriented)
and may use any units of measurement. By contrast, geographic bounding box are restricted to two-dimensional
geographic CRS with latitude and longitude in decimal degrees, inside the [-90 … +90]° and [-180 … +180]° range
respectively, increasing toward north and east respectively, and longitude measured from the <cite>international
reference meridian</cite> (Greenwich on Earth). However, <code>Geographic­Bounding­Box</code> said nothing about the
<a href="../../../../../../../org.apache.sis.referencing/org/apache/sis/referencing/datum/DefaultGeodeticDatum.html" title="class in org.apache.sis.referencing.datum">geodetic datum</a>. Consequently, this bounding
box should be used only as a convenient way to give an <em>approximate</em> description of a location.
Users can assume a precision of about 0.01° for the latitude and longitude values in this class.
If more precision is desired, an <code>Envelope</code> should be considered instead.
<h2 id="limitations-heading">Limitations</h2>
<ul>
<li>Instances of this class are not synchronized for multi-threading.
Synchronization, if needed, is caller's responsibility.</li>
<li>Serialized objects of this class are not guaranteed to be compatible with future Apache SIS releases.
Serialization support is appropriate for short term storage or RMI between applications running the
same version of Apache SIS. For long term storage, use <a href="../../../xml/XML.html" title="class in org.apache.sis.xml"><code>XML</code></a> instead.</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.referencing/org/apache/sis/geometry/GeneralEnvelope.html" title="class in org.apache.sis.geometry"><code>General­Envelope</code></a></li>
<li><a href="../../../../../../../serialized-form.html#org.apache.sis.metadata.iso.extent.DefaultGeographicBoundingBox">Serialized Form</a></li>
</ul>
</dd>
</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="inherited-list">
<h2 id="nested-classes-inherited-from-class-org.apache.sis.metadata.ModifiableMetadata">Nested classes/interfaces inherited from class&nbsp;<a href="../../ModifiableMetadata.html" title="class in org.apache.sis.metadata">ModifiableMetadata</a></h2>
<code><a href="../../ModifiableMetadata.State.html" title="enum class in org.apache.sis.metadata">Modifiable­Metadata​.State</a></code></div>
</section>
</li>
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-ISOMetadata">Fields inherited from class&nbsp;<a href="../ISOMetadata.html" title="class in org.apache.sis.metadata.iso">ISOMetadata</a></h3>
<code><a href="../ISOMetadata.html#identifiers">identifiers</a></code></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­Geographic­Bounding­Box</a>()</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs an initially <a href="#isEmpty()">empty</a> geographic bounding box.</div>
</div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(double,double,double,double)" class="member-name-link">Default­Geographic­Bounding­Box</a><wbr>(double&nbsp;west­Bound­Longitude,
double&nbsp;east­Bound­Longitude,
double&nbsp;south­Bound­Latitude,
double&nbsp;north­Bound­Latitude)</code></div>
<div class="col-last odd-row-color">
<div class="block">Creates a geographic bounding box initialized to the specified values.</div>
</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.opengis.metadata.extent.GeographicBoundingBox)" class="member-name-link">Default­Geographic­Bounding­Box</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Geographic­Bounding­Box</a>&nbsp;object)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a new instance initialized with the values from the specified metadata object.</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-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#add(org.opengis.metadata.extent.GeographicBoundingBox)" class="member-name-link">add</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Geographic­Bounding­Box</a>&nbsp;box)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Adds a geographic bounding box to this box.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="DefaultGeographicBoundingBox.html" title="class in org.apache.sis.metadata.iso.extent">Default­Geographic­Bounding­Box</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#castOrCopy(org.opengis.metadata.extent.GeographicBoundingBox)" class="member-name-link">cast­Or­Copy</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Geographic­Bounding­Box</a>&nbsp;object)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns a SIS metadata implementation with the values of the given arbitrary implementation.</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="#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)" 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,
<a href="../../../../../../../org.apache.sis.util/org/apache/sis/util/ComparisonMode.html" title="enum class in org.apache.sis.util">Comparison­Mode</a>&nbsp;mode)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Compares this geographic bounding box with the specified object for equality.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>double</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getEastBoundLongitude()" class="member-name-link">get­East­Bound­Longitude</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 eastern-most coordinate of the limit of the dataset extent.</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="#getNorthBoundLatitude()" class="member-name-link">get­North­Bound­Latitude</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 northern-most, coordinate of the limit of the dataset extent.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>double</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSouthBoundLatitude()" class="member-name-link">get­South­Bound­Latitude</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 southern-most coordinate of the limit of the dataset extent.</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="#getWestBoundLongitude()" class="member-name-link">get­West­Bound­Longitude</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 western-most coordinate of the limit of the dataset extent.</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="#intersect(org.opengis.metadata.extent.GeographicBoundingBox)" class="member-name-link">intersect</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Geographic­Bounding­Box</a>&nbsp;box)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sets this bounding box to the intersection of this box with the specified one.</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="#isEmpty()" class="member-name-link">is­Empty</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 this metadata is empty.</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="#setBounds(double,double,double,double)" class="member-name-link">set­Bounds</a><wbr>(double&nbsp;west­Bound­Longitude,
double&nbsp;east­Bound­Longitude,
double&nbsp;south­Bound­Latitude,
double&nbsp;north­Bound­Latitude)</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 bounding box to the specified values.</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="#setBounds(org.opengis.geometry.Envelope)" class="member-name-link">set­Bounds</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/geometry/Envelope.html" title="class or interface in org.opengis.geometry" class="external-link">Envelope</a>&nbsp;envelope)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sets the bounding box to the specified envelope.</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="#setBounds(org.opengis.metadata.extent.GeographicBoundingBox)" class="member-name-link">set­Bounds</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Geographic­Bounding­Box</a>&nbsp;box)</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 bounding box to the same values than the specified box.</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="#setEastBoundLongitude(double)" class="member-name-link">set­East­Bound­Longitude</a><wbr>(double&nbsp;new­Value)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sets the eastern-most coordinate of the limit of the dataset extent.</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="#setNorthBoundLatitude(double)" class="member-name-link">set­North­Bound­Latitude</a><wbr>(double&nbsp;new­Value)</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 northern-most, coordinate of the limit of the dataset extent.</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="#setSouthBoundLatitude(double)" class="member-name-link">set­South­Bound­Latitude</a><wbr>(double&nbsp;new­Value)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sets the southern-most coordinate of the limit of the dataset extent.</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="#setWestBoundLongitude(double)" class="member-name-link">set­West­Bound­Longitude</a><wbr>(double&nbsp;new­Value)</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 western-most coordinate of the limit of the dataset extent.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-AbstractGeographicExtent">Methods inherited from class&nbsp;<a href="AbstractGeographicExtent.html" title="class in org.apache.sis.metadata.iso.extent">AbstractGeographicExtent</a></h3>
<code><a href="AbstractGeographicExtent.html#castOrCopy(org.opengis.metadata.extent.GeographicExtent)">cast­Or­Copy</a>, <a href="AbstractGeographicExtent.html#getInclusion()">get­Inclusion</a>, <a href="AbstractGeographicExtent.html#setInclusion(java.lang.Boolean)">set­Inclusion</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-ISOMetadata">Methods inherited from class&nbsp;<a href="../ISOMetadata.html" title="class in org.apache.sis.metadata.iso">ISOMetadata</a></h3>
<code><a href="../ISOMetadata.html#getIdentifier()">get­Identifier</a>, <a href="../ISOMetadata.html#getIdentifierMap()">get­Identifier­Map</a>, <a href="../ISOMetadata.html#getIdentifiers()">get­Identifiers</a>, <a href="../ISOMetadata.html#getStandard()">get­Standard</a>, <a href="../ISOMetadata.html#setIdentifier(org.opengis.metadata.Identifier)">set­Identifier</a>, <a href="../ISOMetadata.html#transitionTo(org.apache.sis.metadata.ModifiableMetadata.State)">transition­To</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-ModifiableMetadata">Methods inherited from class&nbsp;<a href="../../ModifiableMetadata.html" title="class in org.apache.sis.metadata">ModifiableMetadata</a></h3>
<code><a href="../../ModifiableMetadata.html#checkWritePermission(java.lang.Object)">check­Write­Permission</a>, <a href="../../ModifiableMetadata.html#collectionType(java.lang.Class)">collection­Type</a>, <a href="../../ModifiableMetadata.html#copyCollection(java.util.Collection,java.lang.Class)">copy­Collection</a>, <a href="../../ModifiableMetadata.html#copyList(java.util.Collection,java.lang.Class)">copy­List</a>, <a href="../../ModifiableMetadata.html#copyMap(java.util.Map,java.lang.Class)">copy­Map</a>, <a href="../../ModifiableMetadata.html#copySet(java.util.Collection,java.lang.Class)">copy­Set</a>, <a href="../../ModifiableMetadata.html#deepCopy(org.apache.sis.metadata.ModifiableMetadata.State)">deep­Copy</a>, <a href="../../ModifiableMetadata.html#nonNullCollection(java.util.Collection,java.lang.Class)">non­Null­Collection</a>, <a href="../../ModifiableMetadata.html#nonNullList(java.util.List,java.lang.Class)">non­Null­List</a>, <a href="../../ModifiableMetadata.html#nonNullMap(java.util.Map,java.lang.Class)">non­Null­Map</a>, <a href="../../ModifiableMetadata.html#nonNullSet(java.util.Set,java.lang.Class)">non­Null­Set</a>, <a href="../../ModifiableMetadata.html#singleton(E,java.lang.Class)">singleton</a>, <a href="../../ModifiableMetadata.html#state()">state</a>, <a href="../../ModifiableMetadata.html#writeCollection(java.util.Collection,java.util.Collection,java.lang.Class)">write­Collection</a>, <a href="../../ModifiableMetadata.html#writeList(java.util.Collection,java.util.List,java.lang.Class)">write­List</a>, <a href="../../ModifiableMetadata.html#writeMap(java.util.Map,java.util.Map,java.lang.Class)">write­Map</a>, <a href="../../ModifiableMetadata.html#writeSet(java.util.Collection,java.util.Set,java.lang.Class)">write­Set</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-AbstractMetadata">Methods inherited from class&nbsp;<a href="../../AbstractMetadata.html" title="class in org.apache.sis.metadata">AbstractMetadata</a></h3>
<code><a href="../../AbstractMetadata.html#asMap()">as­Map</a>, <a href="../../AbstractMetadata.html#asTreeTable()">as­Tree­Table</a>, <a href="../../AbstractMetadata.html#equals(java.lang.Object)">equals</a>, <a href="../../AbstractMetadata.html#getInterface()">get­Interface</a>, <a href="../../AbstractMetadata.html#hashCode()">hash­Code</a>, <a href="../../AbstractMetadata.html#prune()">prune</a>, <a href="../../AbstractMetadata.html#toString()">to­String</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#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#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>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-GeographicExtent">Methods inherited from interface&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicExtent.html" title="class or interface in org.opengis.metadata.extent" class="external-link">GeographicExtent</a></h3>
<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicExtent.html#getInclusion()" title="class or interface in org.opengis.metadata.extent" class="external-link">get­Inclusion</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>DefaultGeographicBoundingBox</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DefaultGeographicBoundingBox</span>()</div>
<div class="block">Constructs an initially <a href="#isEmpty()">empty</a> geographic bounding box.
All longitude and latitude values are initialized to <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link"><code>Double​.Na­N</code></a>.</div>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(double,double,double,double)">
<h3>DefaultGeographicBoundingBox</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DefaultGeographicBoundingBox</span><wbr><span class="parameters">(double&nbsp;westBoundLongitude,
double&nbsp;eastBoundLongitude,
double&nbsp;southBoundLatitude,
double&nbsp;northBoundLatitude)</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">Creates a geographic bounding box initialized to the specified values.
The <a href="AbstractGeographicExtent.html#getInclusion()">inclusion</a> property is set to <code>true</code>.
<p><strong>Caution:</strong> Arguments are expected in the same order than they appear
in the ISO 19115 specification. This is different than the order commonly found in the
Java2D world, which is rather (<var>x</var><sub>min</sub>, <var>y</var><sub>min</sub>,
<var>x</var><sub>max</sub>, <var>y</var><sub>max</sub>).</p></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>west­Bound­Longitude</code> - the minimal λ value.</dd>
<dd><code>east­Bound­Longitude</code> - the maximal λ value.</dd>
<dd><code>south­Bound­Latitude</code> - the minimal φ value.</dd>
<dd><code>north­Bound­Latitude</code> - the maximal φ value.</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 (<var>south bound</var> &gt; <var>north bound</var>).
Note that <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link">NaN</a> values are allowed.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="#setBounds(double,double,double,double)"><code>set­Bounds(double, double, double, double)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.opengis.metadata.extent.GeographicBoundingBox)">
<h3>DefaultGeographicBoundingBox</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DefaultGeographicBoundingBox</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">GeographicBoundingBox</a>&nbsp;object)</span></div>
<div class="block">Constructs a new instance initialized with the values from the specified metadata object.
This is a <em>shallow</em> copy constructor, because the other metadata contained in the
given object are not recursively copied.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>object</code> - the metadata to copy values from, or <code>null</code> if none.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="#castOrCopy(org.opengis.metadata.extent.GeographicBoundingBox)"><code>cast­Or­Copy(Geographic­Bounding­Box)</code></a></li>
<li><a href="#setBounds(org.opengis.metadata.extent.GeographicBoundingBox)"><code>set­Bounds(Geographic­Bounding­Box)</code></a></li>
</ul>
</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="castOrCopy(org.opengis.metadata.extent.GeographicBoundingBox)">
<h3>castOrCopy</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="DefaultGeographicBoundingBox.html" title="class in org.apache.sis.metadata.iso.extent">DefaultGeographicBoundingBox</a></span>&nbsp;<span class="element-name">castOrCopy</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">GeographicBoundingBox</a>&nbsp;object)</span></div>
<div class="block">Returns a SIS metadata implementation with the values of the given arbitrary implementation.
This method performs the first applicable action in the following choices:
<ul>
<li>If the given object is <code>null</code>, then this method returns <code>null</code>.</li>
<li>Otherwise if the given object is already an instance of
<code>Default­Geographic­Bounding­Box</code>, then it is returned unchanged.</li>
<li>Otherwise a new <code>Default­Geographic­Bounding­Box</code> instance is created using the
<a href="#%3Cinit%3E(org.opengis.metadata.extent.GeographicBoundingBox)">copy constructor</a> and returned.
Note that this is a <em>shallow</em> copy operation, because the other
metadata contained in the given object are not recursively copied.</li>
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>object</code> - the object to get as a SIS implementation, or <code>null</code> if none.</dd>
<dt>Returns:</dt>
<dd>a SIS implementation containing the values of the given object (may be the
given object itself), or <code>null</code> if the argument was null.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getWestBoundLongitude()">
<h3>getWestBoundLongitude</h3>
<div class="member-signature"><span class="annotations"><a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/ValueRange.html" title="annotation interface in org.apache.sis.measure">@ValueRange</a>(<a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/ValueRange.html#minimum()">minimum</a>=-180.0,
<a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/ValueRange.html#maximum()">maximum</a>=180.0)
</span><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">getWestBoundLongitude</span>()</div>
<div class="block">Returns the western-most coordinate of the limit of the dataset extent.
The value is expressed in longitude in decimal degrees (positive east).
<p>Note that the returned value is greater than the <a href="#getEastBoundLongitude()">east bound longitude</a> if this box is crossing the anti-meridian.</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/metadata/extent/GeographicBoundingBox.html#getWestBoundLongitude()" title="class or interface in org.opengis.metadata.extent" class="external-link">get­West­Bound­Longitude</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Geographic­Bounding­Box</a></code></dd>
<dt>Returns:</dt>
<dd>the western-most longitude between -180° and +180° inclusive,
or <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link">NaN</a> if undefined.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setWestBoundLongitude(double)">
<h3>setWestBoundLongitude</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setWestBoundLongitude</span><wbr><span class="parameters">(double&nbsp;newValue)</span></div>
<div class="block">Sets the western-most coordinate of the limit of the dataset extent.
The value is expressed in longitude in decimal degrees (positive east).
Values outside the [-180 … 180]° range are <a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/Longitude.html#normalize(double)">normalized</a>.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>new­Value</code> - the western-most longitude between -180° and +180° inclusive,
or <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link">NaN</a> to undefine.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getEastBoundLongitude()">
<h3>getEastBoundLongitude</h3>
<div class="member-signature"><span class="annotations"><a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/ValueRange.html" title="annotation interface in org.apache.sis.measure">@ValueRange</a>(<a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/ValueRange.html#minimum()">minimum</a>=-180.0,
<a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/ValueRange.html#maximum()">maximum</a>=180.0)
</span><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">getEastBoundLongitude</span>()</div>
<div class="block">Returns the eastern-most coordinate of the limit of the dataset extent.
The value is expressed in longitude in decimal degrees (positive east).
<p>Note that the returned value is smaller than the <a href="#getWestBoundLongitude()">west bound longitude</a> if this box is crossing the anti-meridian.</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/metadata/extent/GeographicBoundingBox.html#getEastBoundLongitude()" title="class or interface in org.opengis.metadata.extent" class="external-link">get­East­Bound­Longitude</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Geographic­Bounding­Box</a></code></dd>
<dt>Returns:</dt>
<dd>the eastern-most longitude between -180° and +180° inclusive,
or <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link">NaN</a> if undefined.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setEastBoundLongitude(double)">
<h3>setEastBoundLongitude</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setEastBoundLongitude</span><wbr><span class="parameters">(double&nbsp;newValue)</span></div>
<div class="block">Sets the eastern-most coordinate of the limit of the dataset extent.
The value is expressed in longitude in decimal degrees (positive east).
Values outside the [-180 … 180]° range are <a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/Longitude.html#normalize(double)">normalized</a>.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>new­Value</code> - the eastern-most longitude between -180° and +180° inclusive,
or <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link">NaN</a> to undefine.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getSouthBoundLatitude()">
<h3>getSouthBoundLatitude</h3>
<div class="member-signature"><span class="annotations"><a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/ValueRange.html" title="annotation interface in org.apache.sis.measure">@ValueRange</a>(<a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/ValueRange.html#minimum()">minimum</a>=-90.0,
<a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/ValueRange.html#maximum()">maximum</a>=90.0)
</span><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">getSouthBoundLatitude</span>()</div>
<div class="block">Returns the southern-most coordinate of the limit of the dataset extent.
The value is expressed in latitude in decimal degrees (positive north).</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html#getSouthBoundLatitude()" title="class or interface in org.opengis.metadata.extent" class="external-link">get­South­Bound­Latitude</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Geographic­Bounding­Box</a></code></dd>
<dt>Returns:</dt>
<dd>the southern-most latitude between -90° and +90° inclusive,
or <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link">NaN</a> if undefined.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setSouthBoundLatitude(double)">
<h3>setSouthBoundLatitude</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setSouthBoundLatitude</span><wbr><span class="parameters">(double&nbsp;newValue)</span></div>
<div class="block">Sets the southern-most coordinate of the limit of the dataset extent.
The value is expressed in latitude in decimal degrees (positive north).
Values outside the [-90 … 90]° range are <a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/Latitude.html#clamp(double)">clamped</a>.
If the result is greater than the <a href="#getNorthBoundLatitude()">north bound latitude</a>,
then the north bound is set to <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link"><code>Double​.Na­N</code></a>.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>new­Value</code> - the southern-most latitude between -90° and +90° inclusive,
or <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link">NaN</a> to undefine.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getNorthBoundLatitude()">
<h3>getNorthBoundLatitude</h3>
<div class="member-signature"><span class="annotations"><a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/ValueRange.html" title="annotation interface in org.apache.sis.measure">@ValueRange</a>(<a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/ValueRange.html#minimum()">minimum</a>=-90.0,
<a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/ValueRange.html#maximum()">maximum</a>=90.0)
</span><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">getNorthBoundLatitude</span>()</div>
<div class="block">Returns the northern-most, coordinate of the limit of the dataset extent.
The value is expressed in latitude in decimal degrees (positive north).</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html#getNorthBoundLatitude()" title="class or interface in org.opengis.metadata.extent" class="external-link">get­North­Bound­Latitude</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">Geographic­Bounding­Box</a></code></dd>
<dt>Returns:</dt>
<dd>the northern-most latitude between -90° and +90° inclusive,
or <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link">NaN</a> if undefined.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setNorthBoundLatitude(double)">
<h3>setNorthBoundLatitude</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setNorthBoundLatitude</span><wbr><span class="parameters">(double&nbsp;newValue)</span></div>
<div class="block">Sets the northern-most, coordinate of the limit of the dataset extent.
The value is expressed in latitude in decimal degrees (positive north).
Values outside the [-90 … 90]° range are <a href="../../../../../../../org.apache.sis.util/org/apache/sis/measure/Latitude.html#clamp(double)">clamped</a>.
If the result is smaller than the <a href="#getSouthBoundLatitude()">south bound latitude</a>,
then the south bound is set to <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link"><code>Double​.Na­N</code></a>.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>new­Value</code> - the northern-most latitude between -90° and +90° inclusive,
or <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link">NaN</a> to undefine.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setBounds(double,double,double,double)">
<h3>setBounds</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setBounds</span><wbr><span class="parameters">(double&nbsp;westBoundLongitude,
double&nbsp;eastBoundLongitude,
double&nbsp;southBoundLatitude,
double&nbsp;northBoundLatitude)</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 the bounding box to the specified values.
The <a href="AbstractGeographicExtent.html#getInclusion()">inclusion</a> property is left unchanged.
<p><strong>Caution:</strong> Arguments are expected in the same order than they appear
in the ISO 19115 specification. This is different than the order commonly found in the
Java2D world, which is rather (<var>x</var><sub>min</sub>, <var>y</var><sub>min</sub>,
<var>x</var><sub>max</sub>, <var>y</var><sub>max</sub>).</p></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>west­Bound­Longitude</code> - the minimal λ value.</dd>
<dd><code>east­Bound­Longitude</code> - the maximal λ value.</dd>
<dd><code>south­Bound­Latitude</code> - the minimal φ value.</dd>
<dd><code>north­Bound­Latitude</code> - the maximal φ value.</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 (<var>south bound</var> &gt; <var>north bound</var>).
Note that <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link">NaN</a> values are allowed.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setBounds(org.opengis.geometry.Envelope)">
<h3>setBounds</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setBounds</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/geometry/Envelope.html" title="class or interface in org.opengis.geometry" class="external-link">Envelope</a>&nbsp;envelope)</span>
throws <span class="exceptions"><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/TransformException.html" title="class or interface in org.opengis.referencing.operation" class="external-link">TransformException</a></span></div>
<div class="block">Sets the bounding box to the specified envelope. If the envelope contains a CRS,
then the bounding box may be projected to a geographic CRS.
Otherwise, the envelope is assumed already in appropriate CRS.
<p>When coordinate transformation is required, the target geographic CRS is not necessarily
<a href="../../../../../../../org.apache.sis.referencing/org/apache/sis/referencing/CommonCRS.html#WGS84">WGS84</a>. This method preserves the same
<a href="../../../../../../../org.apache.sis.referencing/org/apache/sis/referencing/datum/DefaultEllipsoid.html" title="class in org.apache.sis.referencing.datum">ellipsoid</a> than in the envelope
CRS when possible. This is because geographic bounding box are only approximated and the ISO
specification does not mandates a particular CRS, so we avoid transformations that are not
strictly necessary.</p>
<p><b>Note:</b> this method is available only if the referencing module is on the module path.</p></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>envelope</code> - the envelope to use for setting this geographic bounding box.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang" class="external-link">Unsupported­Operation­Exception</a></code> - if the referencing module is not on the module path.</dd>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/TransformException.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Transform­Exception</a></code> - if the envelope cannot be transformed to a geographic extent.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="DefaultExtent.html#addElements(org.opengis.geometry.Envelope)"><code>Default­Extent​.add­Elements(Envelope)</code></a></li>
<li><a href="DefaultVerticalExtent.html#setBounds(org.opengis.geometry.Envelope)"><code>Default­Vertical­Extent​.set­Bounds(Envelope)</code></a></li>
<li><a href="DefaultTemporalExtent.html#setBounds(org.opengis.geometry.Envelope)"><code>Default­Temporal­Extent​.set­Bounds(Envelope)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setBounds(org.opengis.metadata.extent.GeographicBoundingBox)">
<h3>setBounds</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setBounds</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">GeographicBoundingBox</a>&nbsp;box)</span></div>
<div class="block">Sets the bounding box to the same values than the specified box.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>box</code> - the geographic bounding box to use for setting the values of this box.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="add(org.opengis.metadata.extent.GeographicBoundingBox)">
<h3>add</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">add</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">GeographicBoundingBox</a>&nbsp;box)</span></div>
<div class="block">Adds a geographic bounding box to this box.
This method behavior depends on whether the bounding boxes encompass an area covered by the data
(<cite>inclusion</cite>) or an area where data is not present (<cite>exclusion</cite>):
<ul>
<li>If the <a href="AbstractGeographicExtent.html#getInclusion()">inclusion</a> status is the same for this box and the box to be added,
then the resulting bounding box is the union of the two boxes.</li>
<li>If the inclusion/exclusion status are opposite, then this method attempts to exclude some area
of the specified box from this box. The resulting bounding box is smaller if the exclusion can
be performed without ambiguity.</li>
</ul>
In both cases, if either this box or the specified box has <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link">NaN</a> bounds,
then the corresponding bounds of the result will bet set to NaN.
<h4 id="comparison-with-other-api-heading">Comparison with other API</h4>
This class is stricter about NaN values than other classes like <a href="../../../../../../../org.apache.sis.referencing/org/apache/sis/geometry/GeneralEnvelope.html" title="class in org.apache.sis.geometry"><code>General­Envelope</code></a>.
The reason is that computations on <code>Geographic­Bounding­Box</code> instances are rare (<code>Envelope</code> instances
are preferred for this purpose). Usually, <code>Geographic­Bounding­Box</code> values come directly from some metadata
structure. Consequently, NaN values in <code>Geographic­Bounding­Box</code> means <cite>"information is unknown"</cite>
more often than <cite>"not yet calculated"</cite>.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>box</code> - the geographic bounding box to add to this box.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../org.apache.sis.referencing/org/apache/sis/geometry/GeneralEnvelope.html#add(org.opengis.geometry.Envelope)"><code>General­Envelope​.add(Envelope)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="intersect(org.opengis.metadata.extent.GeographicBoundingBox)">
<h3>intersect</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">intersect</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/metadata/extent/GeographicBoundingBox.html" title="class or interface in org.opengis.metadata.extent" class="external-link">GeographicBoundingBox</a>&nbsp;box)</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 this bounding box to the intersection of this box with the specified one.
The <a href="AbstractGeographicExtent.html#getInclusion()">inclusion</a> status must be the same for both boxes.
<p>If there is no intersection between the two bounding boxes, then this method sets
both longitudes and/or both latitudes to <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link">NaN</a>. If either this
box or the specified box has NaN bounds, then the corresponding bounds of the
intersection result will bet set to NaN.</p></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>box</code> - the geographic bounding box to intersect with this box.</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 inclusion status is not the same for both boxes.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="Extents.html#intersection(org.opengis.metadata.extent.GeographicBoundingBox,org.opengis.metadata.extent.GeographicBoundingBox)"><code>Extents​.intersection(Geographic­Bounding­Box, Geographic­Bounding­Box)</code></a></li>
<li><a href="../../../../../../../org.apache.sis.referencing/org/apache/sis/geometry/GeneralEnvelope.html#intersect(org.opengis.geometry.Envelope)"><code>General­Envelope​.intersect(Envelope)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isEmpty()">
<h3>isEmpty</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isEmpty</span>()</div>
<div class="block">Returns <code>true</code> if this metadata is empty. This metadata is considered empty if
every bound values are <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Double.html#NaN" title="class or interface in java.lang" class="external-link">NaN</a>. Note that this is different than
the <cite>Java2D</cite> or <cite>envelope</cite> definition of "emptiness", since we
don't test if the area is greater than zero - this method is a metadata test, not a
geometric test.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../../../../../../org.apache.sis.util/org/apache/sis/util/Emptiable.html#isEmpty()">is­Empty</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../org.apache.sis.util/org/apache/sis/util/Emptiable.html" title="interface in org.apache.sis.util">Emptiable</a></code></dd>
<dt>Overrides:</dt>
<dd><code><a href="../../AbstractMetadata.html#isEmpty()">is­Empty</a></code>&nbsp;in class&nbsp;<code><a href="../../AbstractMetadata.html" title="class in org.apache.sis.metadata">Abstract­Metadata</a></code></dd>
<dt>Returns:</dt>
<dd><code>true</code> if this metadata does not define any bound value.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../org.apache.sis.referencing/org/apache/sis/geometry/AbstractEnvelope.html#isAllNaN()"><code>Abstract­Envelope​.is­All­Na­N()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="equals(java.lang.Object,org.apache.sis.util.ComparisonMode)">
<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,
<a href="../../../../../../../org.apache.sis.util/org/apache/sis/util/ComparisonMode.html" title="enum class in org.apache.sis.util">ComparisonMode</a>&nbsp;mode)</span></div>
<div class="block">Compares this geographic bounding box with the specified object for equality.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../../../../../../org.apache.sis.util/org/apache/sis/util/LenientComparable.html#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)">equals</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../org.apache.sis.util/org/apache/sis/util/LenientComparable.html" title="interface in org.apache.sis.util">Lenient­Comparable</a></code></dd>
<dt>Overrides:</dt>
<dd><code><a href="../../AbstractMetadata.html#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)">equals</a></code>&nbsp;in class&nbsp;<code><a href="../../AbstractMetadata.html" title="class in org.apache.sis.metadata">Abstract­Metadata</a></code></dd>
<dt>Parameters:</dt>
<dd><code>object</code> - the object to compare for equality.</dd>
<dd><code>mode</code> - the strictness level of the comparison.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if the given object is equal to this box.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="../../../../../../../org.apache.sis.util/org/apache/sis/util/Utilities.html#deepEquals(java.lang.Object,java.lang.Object,org.apache.sis.util.ComparisonMode)"><code>Utilities​.deep­Equals(Object, Object, Comparison­Mode)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>