This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git
The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
new 1d3e815901 Bug fix: wrong pixel coordinates when evaluating sample
values in an image having more than one band.
1d3e815901 is described below
commit 1d3e81590146ce71be74be9479ba0e4dda7ed971
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Wed Feb 8 18:27:01 2023 +0100
Bug fix: wrong pixel coordinates when evaluating sample values in an image
having more than one band.
---
.../apache/sis/coverage/grid/BufferedGridCoverage.java | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git
a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/BufferedGridCoverage.java
b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/BufferedGridCoverage.java
index a1f8fead29..8d2ceae008 100644
---
a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/BufferedGridCoverage.java
+++
b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/BufferedGridCoverage.java
@@ -77,7 +77,7 @@ import org.opengis.coverage.PointOutsideCoverageException;
*
* @author Johann Sorel (Geomatys)
* @author Martin Desruisseaux (Geomatys)
- * @version 1.3
+ * @version 1.4
* @since 1.1
*/
public class BufferedGridCoverage extends GridCoverage {
@@ -301,7 +301,7 @@ public class BufferedGridCoverage extends GridCoverage {
/**
* Grid size with shifted index. The size of dimension 0 is stored at
index 1, the size of dimension 1
- * is stored in index 2, <i>etc.</i>. Element 0 contains the number of
banks. This layout is convenient
+ * is stored in index 2, <i>etc.</i>. Element 0 contains the pixel
stride. This layout is convenient
* for computing index in {@link DataBuffer}.
*/
private final long[] sizes;
@@ -316,17 +316,18 @@ public class BufferedGridCoverage extends GridCoverage {
*/
CellAccessor(final BufferedGridCoverage coverage) {
super(coverage);
- data = coverage.data;
final GridExtent extent = coverage.getGridGeometry().getExtent();
- lower = new long[extent.getDimension()];
- sizes = new long[lower.length + 1];
- sizes[0] = data.getNumBanks();
+ final int numBands = coverage.getSampleDimensions().size();
+ data = coverage.data;
+ banded = data.getNumBanks() > 1;
+ values = new double[numBands];
+ lower = new long[extent.getDimension()];
+ sizes = new long[lower.length + 1];
+ sizes[0] = banded ? 1 : numBands;
for (int i=0; i<lower.length; i++) {
lower[i] = extent.getLow(i);
sizes[i+1] = extent.getSize(i);
}
- banded = sizes[0] > 1;
- values = new double[coverage.getSampleDimensions().size()];
}
/**