blob: 99b3a0d309ea446788ccce1a1d96784c98417768 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (24) on Mon Sep 29 10:48:08 CEST 2025 -->
<title>BandedCoverage (Apache SIS 1.5 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="2025-09-29">
<meta name="description" content="declaration: module: org.apache.sis.feature, package: org.apache.sis.coverage, class: BandedCoverage">
<meta name="generator" content="javadoc/ClassWriter">
<meta name="keywords" content="org.apache.sis.coverage.BandedCoverage class">
<meta name="keywords" content="getCoordinateReferenceSystem()">
<meta name="keywords" content="getEnvelope()">
<meta name="keywords" content="getSampleDimensions()">
<meta name="keywords" content="evaluator()">
<link rel="stylesheet" type="text/css" href="../../../../../resource-files/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../resource-files/stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../resource-files/sis.css" title="Style">
<script type="text/javascript" src="../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><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>
<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 class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/BandedCoverage.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../new-list.html">New</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../search.html">Search</a></li>
<li><a href="../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../module-summary.html">org.apache.sis.feature</a></li>
<li><a href="package-summary.html">org.apache.sis.coverage</a></li>
<li><a href="BandedCoverage.html" class="current-selection">BandedCoverage</a></li>
</ol>
<div class="nav-list-search">
<input type="text" id="search-input" disabled placeholder="Search" aria-label="Search in documentation" autocomplete="off">
<input type="reset" id="reset-search" disabled value="Reset">
</div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;
<input type="text" class="filter-input" disabled placeholder="Filter" aria-label="Filter table of contents" autocomplete="off">
<input type="reset" class="reset-filter" disabled value="Reset">
</div>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span>&#10094;</button><button class="show-sidebar">&#10095;<span>&nbsp;Show sidebar</span></button>
<ol class="toc-list">
<li><a href="#" tabindex="0">Description</a>
<ol class="toc-list">
<li><a href="#comparison-with-iso-19123-heading" tabindex="0">Comparison with ISO 19123</a></li>
</ol>
</li>
<li><a href="#nested-class-summary" tabindex="0">Nested Class Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E()" tabindex="0">BandedCoverage()</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#getCoordinateReferenceSystem()" tabindex="0">getCoordinateReferenceSystem()</a></li>
<li><a href="#getEnvelope()" tabindex="0">getEnvelope()</a></li>
<li><a href="#getSampleDimensions()" tabindex="0">getSampleDimensions()</a></li>
<li><a href="#evaluator()" tabindex="0">evaluator()</a></li>
</ol>
</li>
</ol>
</nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class BandedCoverage" class="title">Class BandedCoverage</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
<div class="inheritance">BandedCoverage</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="grid/GridCoverage.html" title="class in org.apache.sis.coverage.grid">Grid­Coverage</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">BandedCoverage</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">A coverage where all sample values at a given location can be provided in an array of primitive type.
This class does not require sample values to be "physically" stored in different bands,
but it enforces similar constraints:
<ul>
<li>Sample values are represented by a primitive type, typically <code>byte</code>, <code>short</code> or <code>float</code>.</li>
<li>All sample dimensions (bands) use the same primitive type.</li>
<li>Sample dimensions (bands) are accessed by band index with the first band at index 0.</li>
</ul>
<h2 id="comparison-with-iso-19123-heading">Comparison with ISO 19123</h2>
By contrast an ISO <code>Coverage</code> does not restrict sample values to primitive types,
does not require all sample dimensions to use the same type,
and sample values are accessed by field names instead of band indices.
Said otherwise, an ISO <code>Coverage</code> can provide a complex structure (a <a href="https://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/util/Record.html" title="class or interface in org.opengis.util" class="external-link"><code>Record</code></a>)
at every location while this <code>Banded­Coverage</code> class provides only primitive arrays such as <code>float[]</code>.
The effect of above restrictions appears in <a href="#getSampleDimensions()"><code>get­Sample­Dimensions()</code></a> and
<a href="BandedCoverage.Evaluator.html#apply(org.opengis.geometry.DirectPosition)"><code>Banded­Coverage​.Evaluator​.apply(Direct­Position)</code></a> method signatures.</div>
<dl class="notes">
<dt>Since:</dt>
<dd>1.1</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="caption"><span>Nested Classes</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static interface&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="BandedCoverage.Evaluator.html" class="type-name-link" title="interface in org.apache.sis.coverage">Banded­Coverage​.Evaluator</a></code></div>
<div class="col-last even-row-color">
<div class="block">Computes or interpolates values of sample dimensions at given positions.</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 three-column-summary">
<div class="table-header col-first">Modifier</div>
<div class="table-header col-second">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>protected </code></div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Banded­Coverage</a>()</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a coverage.</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-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<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-tab3"><code>abstract <a href="BandedCoverage.Evaluator.html" title="interface in org.apache.sis.coverage">Banded­Coverage​.Evaluator</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#evaluator()" class="member-name-link">evaluator</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a new function for computing or interpolating sample values at given locations.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="https://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link">Coordinate­Reference­System</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getCoordinateReferenceSystem()" class="member-name-link">get­Coordinate­Reference­System</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the coordinate reference system to which the cells are referenced.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a><wbr>&lt;<a href="https://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>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getEnvelope()" class="member-name-link">get­Envelope</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the bounding box for the coverage domain in CRS coordinates.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><wbr>&lt;<a href="SampleDimension.html" title="class in org.apache.sis.coverage">Sample­Dimension</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getSampleDimensions()" class="member-name-link">get­Sample­Dimensions</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns information about the <i>range</i> of this coverage.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/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/25/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/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/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/25/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/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hash­Code</a>, <a href="https://docs.oracle.com/en/java/javase/25/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/25/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/25/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">to­String</a>, <a href="https://docs.oracle.com/en/java/javase/25/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/25/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/25/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">
<!-- ========= 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>BandedCoverage</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">BandedCoverage</span>()</div>
<div class="block">Constructs a coverage.</div>
</div>
</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="getCoordinateReferenceSystem()">
<h3>getCoordinateReferenceSystem</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="https://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/crs/CoordinateReferenceSystem.html" title="class or interface in org.opengis.referencing.crs" class="external-link">CoordinateReferenceSystem</a></span>&nbsp;<span class="element-name">getCoordinateReferenceSystem</span>()</div>
<div class="block">Returns the coordinate reference system to which the cells are referenced.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the coordinate reference system to which the cells are referenced.</dd>
<dt>Since:</dt>
<dd>1.2</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="getEnvelope()">
<h3>getEnvelope</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a>&lt;<a href="https://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>&gt;</span>&nbsp;<span class="element-name">getEnvelope</span>()</div>
<div class="block">Returns the bounding box for the coverage domain in CRS coordinates.
The envelope encompasses all cell surfaces, from the left border of leftmost cell
to the right border of the rightmost cell and similarly along other axes.
<p>For most common cases, the envelope should be present.
However, the return value may be empty in cases like:</p>
<ul>
<li>
Functional dataset: in case of a computed resource, the coverage could be potentially valid
in an infinite extent (repeating pattern, random numbers for tests, <i>etc.</i>).
</li><li>
Computational cost: if obtaining the overall envelope is too costly,
an implementation might decide to leave the result empty instead of returning a too approximate envelope.
For example if a coverage aggregates a lot of data (by dynamically choosing data in a catalog upon evaluation),
it might rather not compute envelope union for the entire catalog.
</li><li>
When the function does not have a clear boundary for its domain of validity,
for example because the sample values accuracy decreases progressively with distance.
</li>
</ul></div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the bounding box for the coverage domain in CRS coordinates if available.</dd>
<dt>Since:</dt>
<dd>1.2</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="getSampleDimensions()">
<h3>getSampleDimensions</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="SampleDimension.html" title="class in org.apache.sis.coverage">SampleDimension</a>&gt;</span>&nbsp;<span class="element-name">getSampleDimensions</span>()</div>
<div class="block">Returns information about the <i>range</i> of this coverage.
Information include names, sample value ranges, fill values and transfer functions for all bands in this coverage.
The length of the returned list should be equal to the <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/image/SampleModel.html#getNumBands()" title="class or interface in java.awt.image" class="external-link">number
of bands</a> in rendered images.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>names, value ranges, fill values and transfer functions for all bands in this grid coverage.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="evaluator()">
<h3>evaluator</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="BandedCoverage.Evaluator.html" title="interface in org.apache.sis.coverage">BandedCoverage.Evaluator</a></span>&nbsp;<span class="element-name">evaluator</span>()</div>
<div class="block">Creates a new function for computing or interpolating sample values at given locations.
That function accepts <a href="https://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/geometry/DirectPosition.html" title="class or interface in org.opengis.geometry" class="external-link"><code>Direct­Position</code></a> in arbitrary Coordinate Reference System;
conversions to the coverage reference system are applied as needed.
<h4 id="multi-threading-heading">Multi-threading</h4>
<code>Evaluator</code>s are not thread-safe. For computing sample values concurrently,
a new <code>Evaluator</code> instance should be created for each thread by invoking this
method multiply times.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>a new function for computing or interpolating sample values.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>