blob: 94a142f6de7bd2fd7f6b772a4e8061f83ee6c512 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (19) -->
<title>BufferedGridCoverage (Apache SIS 1.3 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="description" content="declaration: package: org.apache.sis.coverage.grid, class: BufferedGridCoverage">
<meta name="generator" content="javadoc/ClassWriterImpl">
<meta name="keywords" content="org.apache.sis.coverage.grid.BufferedGridCoverage class">
<meta name="keywords" content="data">
<meta name="keywords" content="evaluator()">
<meta name="keywords" content="render()">
<meta name="keywords" content="configure()">
<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">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.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="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/BufferedGridCoverage.html">Use</a></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><a href="#field-detail">Field</a></li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li><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><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.coverage.grid</a></div>
<h1 title="Class BufferedGridCoverage" class="title">Class BufferedGridCoverage</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/16/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="../BandedCoverage.html" title="class in org.apache.sis.coverage">BandedCoverage</a>
<div class="inheritance"><a href="GridCoverage.html" title="class in org.apache.sis.coverage.grid">GridCoverage</a>
<div class="inheritance">BufferedGridCoverage</div>
</div>
</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">BufferedGridCoverage</span>
<span class="extends-implements">extends <a href="GridCoverage.html" title="class in org.apache.sis.coverage.grid">GridCoverage</a></span></div>
<div class="block">Basic access to grid data values backed by a <var>n</var>-dimensional <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/DataBuffer.html" title="class or interface in java.awt.image" class="external-link"><code>Data­Buffer</code></a>.
Those data can be shown as an untiled <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/RenderedImage.html" title="class or interface in java.awt.image" class="external-link"><code>Rendered­Image</code></a>.
Images are created when <a href="#render(org.apache.sis.coverage.grid.GridExtent)"><code>render(Grid­Extent)</code></a> is invoked instead of at construction time.
This delayed construction makes this class better suited to <var>n</var>-dimensional grids since
those grids cannot be wrapped into a single <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/RenderedImage.html" title="class or interface in java.awt.image" class="external-link"><code>Rendered­Image</code></a>.
<div class="note"><b>Comparison with alternatives:</b>
this class expects all data to reside in-memory and does not support tiling.
Pixels are stored in a row-major fashion with all bands in a single array <em>or</em> one array per band.
By contrast, <a href="GridCoverage2D.html" title="class in org.apache.sis.coverage.grid"><code>Grid­Coverage2D</code></a> allows more flexibility in data layout and supports tiling with data
loaded or computed on-the-fly, but is restricted to two-dimensional images (which may be slices in a
<var>n</var>-dimensional grid).</div>
The number of bands is determined by the number of <a href="../SampleDimension.html" title="class in org.apache.sis.coverage"><code>Sample­Dimension</code></a>s specified at construction time.
The <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/DataBuffer.html#getNumBanks()" title="class or interface in java.awt.image" class="external-link">number of banks</a> is either 1 or the number of bands.
<ul class="verbose">
<li>If the number of banks is 1, all data are packed in a single array with band indices varying fastest,
then column indices (<var>x</var>), then row indices (<var>y</var>), then other dimensions.</li>
<li>If the number of banks is greater than 1, then each band is stored in a separated array.
In each array, sample values are stored with column indices (<var>x</var>) varying fastest,
then row indices (<var>y</var>), then other dimensions.
In the two-dimensional case, this layout is also known as <cite>row-major</cite>.</li>
</ul>
The number of cells in each dimension is specified by the <a href="GridExtent.html" title="class in org.apache.sis.coverage.grid"><code>Grid­Extent</code></a> of the geometry given at
construction time. By default the <a href="GridExtent.html#getSize(int)">extent size</a> in the two first dimensions
will define the <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/RenderedImage.html#getWidth()" title="class or interface in java.awt.image" class="external-link">image width</a> and <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/RenderedImage.html#getHeight()" title="class or interface in java.awt.image" class="external-link">height</a>,
but different dimensions may be used depending on which dimensions are identified as the
<a href="GridExtent.html#getSubspaceDimensions(int)">subspace dimensions</a>.</div>
<dl class="notes">
<dt>Since:</dt>
<dd>1.1</dd>
<p><font size="-1">Defined in the <code>sis-feature</code> module</font></p>
</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.coverage.grid.GridCoverage">Nested classes/interfaces inherited from class&nbsp;<a href="GridCoverage.html" title="class in org.apache.sis.coverage.grid">GridCoverage</a></h2>
<code><a href="GridCoverage.Evaluator.html" title="interface in org.apache.sis.coverage.grid">Grid­Coverage​.Evaluator</a></code></div>
</section>
</li>
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>protected final <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/DataBuffer.html" title="class or interface in java.awt.image" class="external-link">Data­Buffer</a></code></div>
<div class="col-second even-row-color"><code><a href="#data" class="member-name-link">data</a></code></div>
<div class="col-last even-row-color">
<div class="block">The sample values, potentially multi-banded.</div>
</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-GridCoverage">Fields inherited from class&nbsp;<a href="GridCoverage.html" title="class in org.apache.sis.coverage.grid">GridCoverage</a></h3>
<code><a href="GridCoverage.html#gridGeometry">grid­Geometry</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(org.apache.sis.coverage.grid.GridGeometry,java.util.List,int)" class="member-name-link">Buffered­Grid­Coverage</a><wbr>(<a href="GridGeometry.html" title="class in org.apache.sis.coverage.grid">Grid­Geometry</a>&nbsp;grid,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="../SampleDimension.html" title="class in org.apache.sis.coverage">Sample­Dimension</a>&gt;&nbsp;bands,
int&nbsp;data­Type)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a grid coverage using the specified grid geometry, sample dimensions and data type.</div>
</div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(org.apache.sis.coverage.grid.GridGeometry,java.util.List,java.awt.image.DataBuffer)" class="member-name-link">Buffered­Grid­Coverage</a><wbr>(<a href="GridGeometry.html" title="class in org.apache.sis.coverage.grid">Grid­Geometry</a>&nbsp;domain,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="../SampleDimension.html" title="class in org.apache.sis.coverage">Sample­Dimension</a>&gt;&nbsp;range,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/DataBuffer.html" title="class or interface in java.awt.image" class="external-link">Data­Buffer</a>&nbsp;data)</code></div>
<div class="col-last odd-row-color">
<div class="block">Constructs a grid coverage using the specified grid geometry, sample dimensions and data buffer.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#configure(org.apache.sis.coverage.grid.ImageRenderer)" class="member-name-link">configure</a><wbr>(<a href="ImageRenderer.html" title="class in org.apache.sis.coverage.grid">Image­Renderer</a>&nbsp;renderer)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Invoked by the default implementation of <a href="#render(org.apache.sis.coverage.grid.GridExtent)"><code>render(Grid­Extent)</code></a>
for completing the renderer configuration before to create an image.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="GridCoverage.Evaluator.html" title="interface in org.apache.sis.coverage.grid">Grid­Coverage​.Evaluator</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#evaluator()" class="member-name-link">evaluator</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Creates a new function for computing or interpolating sample values at given locations.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/RenderedImage.html" title="class or interface in java.awt.image" class="external-link">Rendered­Image</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#render(org.apache.sis.coverage.grid.GridExtent)" class="member-name-link">render</a><wbr>(<a href="GridExtent.html" title="class in org.apache.sis.coverage.grid">Grid­Extent</a>&nbsp;slice­Extent)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a two-dimensional slice of grid data as a rendered image.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-GridCoverage">Methods inherited from class&nbsp;<a href="GridCoverage.html" title="class in org.apache.sis.coverage.grid">GridCoverage</a></h3>
<code><a href="GridCoverage.html#createConvertedValues(boolean)">create­Converted­Values</a>, <a href="GridCoverage.html#forConvertedValues(boolean)">for­Converted­Values</a>, <a href="GridCoverage.html#getCoordinateReferenceSystem()">get­Coordinate­Reference­System</a>, <a href="GridCoverage.html#getEnvelope()">get­Envelope</a>, <a href="GridCoverage.html#getGridGeometry()">get­Grid­Geometry</a>, <a href="GridCoverage.html#getSampleDimensions()">get­Sample­Dimensions</a>, <a href="GridCoverage.html#toString()">to­String</a>, <a href="GridCoverage.html#toTree(java.util.Locale,int)">to­Tree</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/16/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/16/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/16/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/16/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/16/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/16/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/16/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/16/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/16/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/16/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/16/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="data">
<h3>data</h3>
<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/DataBuffer.html" title="class or interface in java.awt.image" class="external-link">DataBuffer</a></span>&nbsp;<span class="element-name">data</span></div>
<div class="block">The sample values, potentially multi-banded. The bands may be stored either in a single bank
(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/PixelInterleavedSampleModel.html" title="class or interface in java.awt.image" class="external-link">pixel interleaved</a> image) or in different banks
(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/BandedSampleModel.html" title="class or interface in java.awt.image" class="external-link">banded</a> image). This class detects automatically
which of those two sample models is used when <a href="#render(org.apache.sis.coverage.grid.GridExtent)"><code>render(Grid­Extent)</code></a> is invoked.
<p>Sample values in this buffer shall not be <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/SinglePixelPackedSampleModel.html" title="class or interface in java.awt.image" class="external-link">packed</a>.</p></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(org.apache.sis.coverage.grid.GridGeometry,java.util.List,java.awt.image.DataBuffer)">
<h3>BufferedGridCoverage</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">BufferedGridCoverage</span><wbr><span class="parameters">(<a href="GridGeometry.html" title="class in org.apache.sis.coverage.grid">GridGeometry</a>&nbsp;domain,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="../SampleDimension.html" title="class in org.apache.sis.coverage">SampleDimension</a>&gt;&nbsp;range,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/DataBuffer.html" title="class or interface in java.awt.image" class="external-link">DataBuffer</a>&nbsp;data)</span></div>
<div class="block">Constructs a grid coverage using the specified grid geometry, sample dimensions and data buffer.
This method stores the given buffer by reference (no copy). The bands in the given buffer can be
stored either in a single bank (pixel interleaved image) or in different banks (banded image).
This class detects automatically which of those two sample models is used
(see class javadoc for more information).
<p>Note that <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/DataBuffer.html" title="class or interface in java.awt.image" class="external-link"><code>Data­Buffer</code></a> does not contain any information about image size.
Consequently, <a href="#render(org.apache.sis.coverage.grid.GridExtent)"><code>render(Grid­Extent)</code></a> depends on the domain <a href="GridExtent.html" title="class in org.apache.sis.coverage.grid"><code>Grid­Extent</code></a>,
which must be accurate. If the extent size does not reflect accurately the image size,
then the image will not be rendered properly.</p></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>domain</code> - the grid extent, CRS and conversion from cell indices to CRS.</dd>
<dd><code>range</code> - sample dimensions for each image band.</dd>
<dd><code>data</code> - the sample values, potentially multi-banded.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">Null­Pointer­Exception</a></code> - if an argument is <code>null</code>.</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/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 data buffer has an incompatible number of banks.</dd>
<dd><code><a href="IllegalGridGeometryException.html" title="class in org.apache.sis.coverage.grid">Illegal­Grid­Geometry­Exception</a></code> - if the grid extent is larger than the data buffer capacity.</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/ArithmeticException.html" title="class or interface in java.lang" class="external-link">Arithmetic­Exception</a></code> - if the number of cells is larger than 64 bits integer capacity.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.apache.sis.coverage.grid.GridGeometry,java.util.List,int)">
<h3>BufferedGridCoverage</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">BufferedGridCoverage</span><wbr><span class="parameters">(<a href="GridGeometry.html" title="class in org.apache.sis.coverage.grid">GridGeometry</a>&nbsp;grid,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="../SampleDimension.html" title="class in org.apache.sis.coverage">SampleDimension</a>&gt;&nbsp;bands,
int&nbsp;dataType)</span></div>
<div class="block">Constructs a grid coverage using the specified grid geometry, sample dimensions and data type.
This constructor creates a single-bank <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/DataBuffer.html" title="class or interface in java.awt.image" class="external-link"><code>Data­Buffer</code></a> (pixel interleaved sample model)
with all sample values initialized to zero.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>grid</code> - the grid extent, CRS and conversion from cell indices to CRS.</dd>
<dd><code>bands</code> - sample dimensions for each image band.</dd>
<dd><code>data­Type</code> - one of <code>Data­Buffer​.TYPE_*</code> constants, the native data type used to store the coverage values.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/ArithmeticException.html" title="class or interface in java.lang" class="external-link">Arithmetic­Exception</a></code> - if the grid size is too large.</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="evaluator()">
<h3>evaluator</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="GridCoverage.Evaluator.html" title="interface in org.apache.sis.coverage.grid">GridCoverage.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.
<h4>Multi-threading</h4>
<code>Evaluator</code>s are not thread-safe. For computing sample values concurrently,
a new <a href="GridCoverage.Evaluator.html" title="interface in org.apache.sis.coverage.grid"><code>Grid­Coverage​.Evaluator</code></a> instance should be created for each thread.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="GridCoverage.html#evaluator()">evaluator</a></code>&nbsp;in class&nbsp;<code><a href="GridCoverage.html" title="class in org.apache.sis.coverage.grid">Grid­Coverage</a></code></dd>
<dt>Returns:</dt>
<dd>a new function for computing or interpolating sample values.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="render(org.apache.sis.coverage.grid.GridExtent)">
<h3>render</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/image/RenderedImage.html" title="class or interface in java.awt.image" class="external-link">RenderedImage</a></span>&nbsp;<span class="element-name">render</span><wbr><span class="parameters">(<a href="GridExtent.html" title="class in org.apache.sis.coverage.grid">GridExtent</a>&nbsp;sliceExtent)</span></div>
<div class="block">Returns a two-dimensional slice of grid data as a rendered image.
This method returns a view; sample values are not copied.
<p>The default implementation prepares an <a href="ImageRenderer.html" title="class in org.apache.sis.coverage.grid"><code>Image­Renderer</code></a>,
then invokes <a href="#configure(org.apache.sis.coverage.grid.ImageRenderer)"><code>configure(Image­Renderer)</code></a> for allowing subclasses
to complete the renderer configuration before to create the image.</p></div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="GridCoverage.html#render(org.apache.sis.coverage.grid.GridExtent)">render</a></code>&nbsp;in class&nbsp;<code><a href="GridCoverage.html" title="class in org.apache.sis.coverage.grid">Grid­Coverage</a></code></dd>
<dt>Parameters:</dt>
<dd><code>slice­Extent</code> - a subspace of this grid coverage extent where all dimensions except two have a size of 1 cell.
May be <code>null</code> if this grid coverage has only two dimensions with a size greater than 1 cell.</dd>
<dt>Returns:</dt>
<dd>the grid slice as a rendered image.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="configure(org.apache.sis.coverage.grid.ImageRenderer)">
<h3>configure</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">configure</span><wbr><span class="parameters">(<a href="ImageRenderer.html" title="class in org.apache.sis.coverage.grid">ImageRenderer</a>&nbsp;renderer)</span></div>
<div class="block">Invoked by the default implementation of <a href="#render(org.apache.sis.coverage.grid.GridExtent)"><code>render(Grid­Extent)</code></a>
for completing the renderer configuration before to create an image.
The default implementation does nothing.
<p>Some example of methods that subclasses may want to use are:</p>
<ul>
<li><a href="ImageRenderer.html#setCategoryColors(java.util.function.Function)"><code>Image­Renderer​.set­Category­Colors(Function)</code></a></li>
<li><a href="ImageRenderer.html#setVisibleBand(int)"><code>Image­Renderer​.set­Visible­Band(int)</code></a></li>
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>renderer</code> - the renderer to configure before to create an image.</dd>
<dt>Since:</dt>
<dd>1.3</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2010&#x2013;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>