You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2016/11/16 23:45:37 UTC

svn commit: r1770076 - in /sis/branches/JDK8/storage/sis-netcdf/src/main/java/org/apache/sis: internal/netcdf/Variable.java storage/netcdf/MetadataReader.java

Author: desruisseaux
Date: Wed Nov 16 23:45:37 2016
New Revision: 1770076

URL: http://svn.apache.org/viewvc?rev=1770076&view=rev
Log:
Metadata generated from a NetCDF file should include the transfer function (scale factor and offset).

Modified:
    sis/branches/JDK8/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Variable.java
    sis/branches/JDK8/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java

Modified: sis/branches/JDK8/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Variable.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Variable.java?rev=1770076&r1=1770075&r2=1770076&view=diff
==============================================================================
--- sis/branches/JDK8/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Variable.java [UTF-8] (original)
+++ sis/branches/JDK8/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Variable.java [UTF-8] Wed Nov 16 23:45:37 2016
@@ -160,7 +160,7 @@ public abstract class Variable extends N
      *
      * @param  attributeName  the name of the attribute for which to get the values.
      * @param  numeric {@code true} if the values are expected to be numeric, or {@code false} for strings.
-     * @return The sequence of {@link String} or {@link Number} values for the named attribute.
+     * @return the sequence of {@link String} or {@link Number} values for the named attribute.
      */
     public abstract Object[] getAttributeValues(String attributeName, boolean numeric);
 

Modified: sis/branches/JDK8/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java?rev=1770076&r1=1770075&r2=1770076&view=diff
==============================================================================
--- sis/branches/JDK8/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java [UTF-8] (original)
+++ sis/branches/JDK8/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java [UTF-8] Wed Nov 16 23:45:37 2016
@@ -70,6 +70,7 @@ import org.apache.sis.measure.Units;
 
 // The following dependency is used only for static final String constants.
 // Consequently the compiled class files should not have this dependency.
+import ucar.nc2.constants.CDM;
 import ucar.nc2.constants.CF;
 
 import static java.util.Collections.singleton;
@@ -849,7 +850,7 @@ final class MetadataReader {
      * @throws IOException if an I/O operation was necessary but failed.
      */
     private Band createSampleDimension(final Variable variable) throws IOException {
-        final DefaultBand band = new DefaultBand();
+        final DefaultBand band = new DefaultBand();     // TODO: not necessarily a band.
         String name = variable.getName();
         if (name != null && !(name = name.trim()).isEmpty()) {
             if (nameFactory == null) {
@@ -869,6 +870,16 @@ final class MetadataReader {
         } catch (ParserException e) {
             decoder.listeners.warning(errors().getString(Errors.Keys.CanNotAssignUnitToDimension_2, name, units), e);
         }
+        Object[] v = variable.getAttributeValues(CDM.SCALE_FACTOR, true);
+        if (v.length == 1) {
+            band.setScaleFactor(((Number) v[0]).doubleValue());
+            band.setTransferFunctionType(TransferFunctionType.LINEAR);
+        }
+        v = variable.getAttributeValues(CDM.ADD_OFFSET, true);
+        if (v.length == 1) {
+            band.setOffset(((Number) v[0]).doubleValue());
+            band.setTransferFunctionType(TransferFunctionType.LINEAR);
+        }
         return band;
     }