blob: 652d3bc0a5e458ecc4a660147f170e773466f72e [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) on Thu Oct 05 19:54:57 CEST 2023 -->
<title>BandedCoverage.Evaluator (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.feature, package: org.apache.sis.coverage, class: BandedCoverage, interface: Evaluator">
<meta name="generator" content="javadoc/ClassWriterImpl">
<meta name="keywords" content="org.apache.sis.coverage.BandedCoverage.Evaluator interface">
<meta name="keywords" content="getCoverage()">
<meta name="keywords" content="isNullIfOutside()">
<meta name="keywords" content="setNullIfOutside()">
<meta name="keywords" content="isWraparoundEnabled()">
<meta name="keywords" content="setWraparoundEnabled()">
<meta name="keywords" content="apply()">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../sis.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li>Constr</li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li>Constr</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&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>Constr&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.feature</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.coverage</a></div>
<h1 title="Interface BandedCoverage.Evaluator" class="title">Interface BandedCoverage.Evaluator</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Superinterfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="http://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">Direct­Position</a>,<wbr>double[]&gt;</code></dd>
</dl>
<dl class="notes">
<dt>All Known Subinterfaces:</dt>
<dd><code><a href="grid/GridCoverage.Evaluator.html" title="interface in org.apache.sis.coverage.grid">Grid­Coverage​.Evaluator</a></code></dd>
</dl>
<dl class="notes">
<dt>Enclosing class:</dt>
<dd><code><a href="BandedCoverage.html" title="class in org.apache.sis.coverage">Banded­Coverage</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public static interface </span><span class="element-name type-name-label">BandedCoverage.Evaluator</span><span class="extends-implements">
extends <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="http://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">DirectPosition</a>,<wbr>double[]&gt;</span></div>
<div class="block">Computes or interpolates values of sample dimensions at given positions.
Values are computed by calls to <a href="#apply(org.opengis.geometry.DirectPosition)"><code>apply(Direct­Position)</code></a> and are returned as <code>double[]</code>.
<h2 id="multi-threading-heading">Multi-threading</h2>
Evaluators are not thread-safe. An instance of <code>Evaluator</code> should be created
for each thread that need to compute sample values.</div>
<dl class="notes">
<dt>Since:</dt>
<dd>1.1</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="BandedCoverage.html#evaluator()"><code>Banded­Coverage​.evaluator()</code></a></li>
</ul>
</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== 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">
<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-tab3"><code>double[]</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#apply(org.opengis.geometry.DirectPosition)" class="member-name-link">apply</a><wbr>(<a href="http://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">Direct­Position</a>&nbsp;point)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns a sequence of double values for a given point in the coverage.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="BandedCoverage.html" title="class in org.apache.sis.coverage">Banded­Coverage</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getCoverage()" class="member-name-link">get­Coverage</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 coverage from which this evaluator is computing sample values.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#isNullIfOutside()" class="member-name-link">is­Null­If­Outside</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 whether to return <code>null</code> instead of throwing an exception if a point is outside coverage bounds.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#isWraparoundEnabled()" class="member-name-link">is­Wraparound­Enabled</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 <code>true</code> if this evaluator is allowed to wraparound coordinates that are outside the coverage.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#setNullIfOutside(boolean)" class="member-name-link">set­Null­If­Outside</a><wbr>(boolean&nbsp;flag)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Sets whether to return <code>null</code> instead of throwing an exception if a point is outside coverage bounds.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#setWraparoundEnabled(boolean)" class="member-name-link">set­Wraparound­Enabled</a><wbr>(boolean&nbsp;allow)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Specifies whether this evaluator is allowed to wraparound coordinates that are outside the coverage.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-Function">Methods inherited from interface&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/function/Function.html#andThen(java.util.function.Function)" title="class or interface in java.util.function" class="external-link">and­Then</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/function/Function.html#compose(java.util.function.Function)" title="class or interface in java.util.function" class="external-link">compose</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getCoverage()">
<h3>getCoverage</h3>
<div class="member-signature"><span class="return-type"><a href="BandedCoverage.html" title="class in org.apache.sis.coverage">BandedCoverage</a></span>&nbsp;<span class="element-name">getCoverage</span>()</div>
<div class="block">Returns the coverage from which this evaluator is computing sample values.
This is <em>usually</em> the instance on which the <a href="BandedCoverage.html#evaluator()"><code>Banded­Coverage​.evaluator()</code></a>
method has been invoked, but not necessarily. Evaluators are allowed to fetch values
from a different source for better performances or accuracies.
<h4 id="example-heading">Example</h4>
If the values of the enclosing coverage are interpolated from the values of another coverage,
then this evaluator may use directly the values of the latter coverage. Doing so avoid to add
more interpolations on values that are already interpolated.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the source of sample values for this evaluator.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isNullIfOutside()">
<h3>isNullIfOutside</h3>
<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name">isNullIfOutside</span>()</div>
<div class="block">Returns whether to return <code>null</code> instead of throwing an exception if a point is outside coverage bounds.
The default value is <code>false</code>, which means that the default <a href="#apply(org.opengis.geometry.DirectPosition)"><code>apply(Direct­Position)</code></a> behavior is to
throw <a href="PointOutsideCoverageException.html" title="class in org.apache.sis.coverage"><code>Point­Outside­Coverage­Exception</code></a> for points outside bounds.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>whether <a href="#apply(org.opengis.geometry.DirectPosition)"><code>apply(Direct­Position)</code></a> return <code>null</code> for points outside coverage bounds.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setNullIfOutside(boolean)">
<h3>setNullIfOutside</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">setNullIfOutside</span><wbr><span class="parameters">(boolean&nbsp;flag)</span></div>
<div class="block">Sets whether to return <code>null</code> instead of throwing an exception if a point is outside coverage bounds.
The default value is <code>false</code>. Setting this flag to <code>true</code> may improve performances if the caller
expects that many points will be outside coverage bounds, since it reduces the amount of exceptions to be thrown.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>flag</code> - whether <a href="#apply(org.opengis.geometry.DirectPosition)"><code>apply(Direct­Position)</code></a> should use <code>null</code> return value instead of
<a href="PointOutsideCoverageException.html" title="class in org.apache.sis.coverage"><code>Point­Outside­Coverage­Exception</code></a> for signaling that a point is outside coverage bounds.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isWraparoundEnabled()">
<h3>isWraparoundEnabled</h3>
<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name">isWraparoundEnabled</span>()</div>
<div class="block">Returns <code>true</code> if this evaluator is allowed to wraparound coordinates that are outside the coverage.
The initial value is <code>false</code>. This method may continue to return <code>false</code> even after a call to
<code>set­Wraparound­Enabled(true)</code> if no wraparound axis has been found in the coverage CRS,
or if automatic wraparound is not supported.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd><code>true</code> if this evaluator may wraparound coordinates that are outside the coverage.</dd>
<dt>Since:</dt>
<dd>1.3</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setWraparoundEnabled(boolean)">
<h3>setWraparoundEnabled</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">setWraparoundEnabled</span><wbr><span class="parameters">(boolean&nbsp;allow)</span></div>
<div class="block">Specifies whether this evaluator is allowed to wraparound coordinates that are outside the coverage.
If <code>true</code> and if a given coordinate is outside the coverage, then this evaluator may translate
the point along a wraparound axis in an attempt to get the point inside the coverage. For example, if
the coverage CRS has a longitude axis, then the evaluator may translate the longitude value by a
multiple of 360°.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>allow</code> - whether to allow wraparound of coordinates that are outside the coverage.</dd>
<dt>Since:</dt>
<dd>1.3</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="apply(org.opengis.geometry.DirectPosition)">
<h3>apply</h3>
<div class="member-signature"><span class="return-type">double[]</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="http://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">DirectPosition</a>&nbsp;point)</span>
throws <span class="exceptions"><a href="CannotEvaluateException.html" title="class in org.apache.sis.coverage">CannotEvaluateException</a></span></div>
<div class="block">Returns a sequence of double values for a given point in the coverage.
The CRS of the given point may be any coordinate reference system;
coordinate conversions will be applied as needed.
If the CRS of the point is undefined, then it is assumed to be the <a href="#getCoverage()">coverage</a> CRS.
The returned sequence includes a value for each <a href="SampleDimension.html" title="class in org.apache.sis.coverage">sample dimension</a>.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/function/Function.html#apply(T)" title="class or interface in java.util.function" class="external-link">apply</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="http://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">Direct­Position</a>,<wbr>double[]&gt;</code></dd>
<dt>Parameters:</dt>
<dd><code>point</code> - the position where to evaluate.</dd>
<dt>Returns:</dt>
<dd>the sample values at the specified point, or <code>null</code> if the point is outside the coverage.
For performance reason, this method may return the same array
on every method call by overwriting previous values.
Callers should not assume that the array content stay valid for a long time.</dd>
<dt>Throws:</dt>
<dd><code><a href="PointOutsideCoverageException.html" title="class in org.apache.sis.coverage">Point­Outside­Coverage­Exception</a></code> - if the evaluation failed because the input point
has invalid coordinates and the <a href="#isNullIfOutside()"><code>is­Null­If­Outside()</code></a> flag is <code>false</code>.</dd>
<dd><code><a href="CannotEvaluateException.html" title="class in org.apache.sis.coverage">Cannot­Evaluate­Exception</a></code> - if the values cannot be computed at the specified coordinates
for another reason. For example, this exception may be thrown if the coverage data type
cannot be converted to <code>double</code> by an identity or widening conversion.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>