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 <martin.desruisse...@geomatys.com>
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()];
         }
 
         /**

Reply via email to