sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1759474 [1/2] - in /sis/branches/JDK8/storage: sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/ sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/doc-files/ sis-earth-observation/src/te...
Date Tue, 06 Sep 2016 17:39:55 GMT
Author: desruisseaux
Date: Tue Sep  6 17:39:55 2016
New Revision: 1759474

URL: http://svn.apache.org/viewvc?rev=1759474&view=rev
Log:
Add metadata about grid size and group bands in 3 categories: panchromatic, reflective and thermal bands.

Modified:
    sis/branches/JDK8/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatReader.java
    sis/branches/JDK8/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/doc-files/LandsatMetadata.html
    sis/branches/JDK8/storage/sis-earth-observation/src/test/java/org/apache/sis/storage/earthobservation/LandsatReaderTest.java
    sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/MetadataBuilder.java

Modified: sis/branches/JDK8/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatReader.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatReader.java?rev=1759474&r1=1759473&r2=1759474&view=diff
==============================================================================
--- sis/branches/JDK8/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatReader.java [UTF-8] (original)
+++ sis/branches/JDK8/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatReader.java [UTF-8] Tue Sep  6 17:39:55 2016
@@ -18,10 +18,8 @@ package org.apache.sis.storage.earthobse
 
 import java.io.BufferedReader;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
-import java.util.List;
 import java.util.Locale;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -31,7 +29,7 @@ import javax.measure.unit.SI;
 import org.opengis.metadata.Metadata;
 import org.opengis.metadata.citation.Citation;
 import org.opengis.metadata.citation.DateType;
-import org.opengis.metadata.content.ContentInformation;
+import org.opengis.metadata.spatial.DimensionNameType;
 import org.opengis.metadata.content.CoverageContentType;
 import org.opengis.metadata.content.TransferFunctionType;
 import org.opengis.metadata.identification.Identification;
@@ -129,6 +127,12 @@ final class LandsatReader {
     static final Pattern CREDIT = Pattern.compile("\\bcourtesy\\h+of\\h+(the)?\\b\\s*", Pattern.CASE_INSENSITIVE);
 
     /**
+     * Number of spatial dimensions. This is the number of ordinate values to be stored
+     * in the {@link #gridSizes} and {@link #corners} arrays for each tuple.
+     */
+    static final int DIM = 2;
+
+    /**
      * The {@value} suffix added to attribute names that are followed by a band number.
      * This band suffix is itself followed by the {@code '_'} character, then the band number.
      * Example: {@code "REFLECTANCE_ADD_BAND_1"}.
@@ -136,19 +140,47 @@ final class LandsatReader {
     private static final String BAND_SUFFIX = "_BAND";
 
     /**
-     * Index of panchromatic, reflective or thermal images in {@link #gridSize} array.
-     * Each kind of images have its size described by 2 integers: the width and the height.
+     * A bit mask of the group in which to classify a given band.
+     * There is three groups: panchromatic, reflective or thermal bands:
+     *
+     * <ul>
+     *   <li><b>Panchromatic:</b> band  8.</li>
+     *   <li><b>Reflective:</b>   bands 1, 2, 3, 4, 5, 6, 7, 9.</li>
+     *   <li><b>Thermal:</b>      bands 10, 11.</li>
+     * </ul>
+     *
+     * For a band numbered from 1 to 11 inclusive, the group is computed by
+     * (constants 2 and 3 in that formula depends on the {@link #NUM_GROUPS} value):
+     *
+     * {@preformat java
+     *   group = (BAND_GROUPS >>> 2*(band - 1)) & 3;
+     * }
+     *
+     * The result is one of the {@link #PANCHROMATIC}, {@link #REFLECTIVE} or {@link #THERMAL} constant values
+     * divided by {@value #DIM}.
+     */
+    static final int BAND_GROUPS = 2692437;     // Value computed by LandsatReaderTest.verifyBandGroupsMask()
+
+    /**
+     * Maximum number of band groups that a metadata may contains.
+     * See {@link #BAND_GROUPS} javadoc for the list of groups.
      */
-    private static final int PANCHROMATIC = 0,
-                             REFLECTIVE   = 2,
-                             THERMAL      = 4;
+    private static final int NUM_GROUPS = 3;
+
+    /**
+     * Index of panchromatic, reflective or thermal groups in the {@link #gridSize} array.
+     * The image size is each group is given by {@value #DIM} integers: the width and the height.
+     */
+    static final int PANCHROMATIC = 0*DIM,
+                     REFLECTIVE   = 1*DIM,
+                     THERMAL      = 2*DIM;
 
     /**
      * Index of projected and geographic coordinates in the {@link #corners} array.
-     * Each kind of coordinates are stored as 4 corners of 2 ordinate values.
+     * Each kind of coordinates are stored as 4 corners of {@value #DIM} ordinate values.
      */
-    private static final int PROJECTED  = 0,
-                             GEOGRAPHIC = 8;
+    private static final int PROJECTED  = 0*DIM,
+                             GEOGRAPHIC = 4*DIM;
 
     /**
      * The keyword for end of metadata file.
@@ -243,8 +275,8 @@ final class LandsatReader {
         this.listeners = listeners;
         this.metadata  = new MetadataBuilder();
         this.bands     = new DefaultBand[BAND_NAMES.length];
-        this.gridSizes = new int[THERMAL + 2];                  // THERMAL is the last group of images grid size.
-        this.corners   = new double[GEOGRAPHIC + 8];            // GEOGRAPHIC is the last group of corners to store.
+        this.gridSizes = new int[NUM_GROUPS * DIM];
+        this.corners   = new double[GEOGRAPHIC + (4*DIM)];      // GEOGRAPHIC is the last group of corners to store.
         Arrays.fill(corners, Double.NaN);
     }
 
@@ -323,7 +355,7 @@ final class LandsatReader {
     /**
      * Parses the given value and stores it at the given index in the {@link #corners} array.
      * The given index must be one of the {@link #PROJECTED} or {@link #GEOGRAPHIC} constants
-     * plus the corner index.
+     * plus the ordinate index.
      */
     private void parseCorner(final int index, final String value) throws NumberFormatException {
         corners[index] = Double.parseDouble(value);
@@ -333,7 +365,7 @@ final class LandsatReader {
      * Parses the given value and stores it at the given index in the {@link #gridSizes} array.
      *
      * @param  index  {@link #PANCHROMATIC}, {@link #REFLECTIVE} or {@link #THERMAL},
-     *                plus one for parsing the height instead than the width.
+     *                +1 if parsing the height instead than the width.
      * @param  value  the value to parse.
      */
     private void parseGridSize(final int index, final String value) throws NumberFormatException {
@@ -718,7 +750,7 @@ final class LandsatReader {
         double ymin = Double.POSITIVE_INFINITY;
         double xmax = Double.NEGATIVE_INFINITY;
         double ymax = Double.NEGATIVE_INFINITY;
-        for (int i = base+8; --i >= base;) {
+        for (int i = base + (4*DIM); --i >= base;) {
             double v = corners[i];
             if (v < ymin) ymin = v;
             if (v > ymax) ymax = v;
@@ -749,9 +781,28 @@ final class LandsatReader {
             // May happen if the SCENE_CENTER_TIME attribute was found without DATE_ACQUIRED.
             warning(null, null, e);
         }
+        /*
+         * Set information about envelope (or geographic area) and grid size.
+         */
         if (toBoundingBox(GEOGRAPHIC)) {
             metadata.addExtent(corners, GEOGRAPHIC);
         }
+        for (int i = 0; i < gridSizes.length; i += DIM) {
+            final int width  = gridSizes[i  ];
+            final int height = gridSizes[i+1];
+            if (width != 0 || height != 0) {
+                metadata.newGridRepresentation();
+                metadata.setAxisName((short) 0, DimensionNameType.SAMPLE);
+                metadata.setAxisName((short) 1, DimensionNameType.LINE);
+                metadata.setAxisLength((short) 0, width);
+                metadata.setAxisLength((short) 1, height);
+            }
+        }
+        /*
+         * At this point we are done configuring he metadata builder. Creates the ISO 19115 metadata instance,
+         * then continue adding some more specific metadata elements by ourself. For example information about
+         * bands are splitted in 3 different AttributeGroups based on their grid size.
+         */
         final DefaultMetadata result = metadata.build(false);
         if (result != null) {
             /*
@@ -767,17 +818,27 @@ final class LandsatReader {
                 }
             }
             /*
-             * Set information about all non-null bands.
-             */
-            final ContentInformation content = singletonOrNull(result.getContentInfo());
-            if (content instanceof DefaultCoverageDescription) {
-                final DefaultAttributeGroup attributes = new DefaultAttributeGroup(CoverageContentType.PHYSICAL_MEASUREMENT, null);
-                final List<DefaultBand> nonNulls = new ArrayList<>(bands.length);
-                for (final DefaultBand b : bands) {
-                    if (b != null) nonNulls.add(b);
+             * Set information about all non-null bands. The bands are categorized in three groups:
+             * PANCHROMATIC, REFLECTIVE and THERMAL. The group in which each band belong is encoded
+             * in the BAND_GROUPS bitmask. The maximum number of groups is the same than the maximum
+             * number of
+             */
+            final DefaultCoverageDescription content = (DefaultCoverageDescription) singletonOrNull(result.getContentInfo());
+            if (content != null) {
+                final DefaultAttributeGroup[] groups = new DefaultAttributeGroup[NUM_GROUPS];
+                for (int i=0; i < bands.length; i++) {
+                    final DefaultBand band = bands[i];
+                    if (band != null) {
+                        final int gi = (BAND_GROUPS >>> 2*i) & 3;
+                        DefaultAttributeGroup group = groups[gi];
+                        if (group == null) {
+                            group = new DefaultAttributeGroup(CoverageContentType.PHYSICAL_MEASUREMENT, null);
+                            content.getAttributeGroups().add(group);
+                            groups[gi] = group;
+                        }
+                        group.getAttributes().add(band);
+                    }
                 }
-                attributes.setAttributes(nonNulls);
-                ((DefaultCoverageDescription) content).setAttributeGroups(singleton(attributes));
             }
             result.setMetadataStandards(Citations.ISO_19115);
             result.freeze();

Modified: sis/branches/JDK8/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/doc-files/LandsatMetadata.html
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/doc-files/LandsatMetadata.html?rev=1759474&r1=1759473&r2=1759474&view=diff
==============================================================================
--- sis/branches/JDK8/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/doc-files/LandsatMetadata.html (original)
+++ sis/branches/JDK8/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/doc-files/LandsatMetadata.html Tue Sep  6 17:39:55 2016
@@ -22,6 +22,7 @@
 <!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
   <head>
+    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
     <title>Landsat to ISO 19115 metadata</title>
     <style>
       table {
@@ -111,6 +112,28 @@
       </tr>
       <tr><td colspan="3" style="padding-top: 9px">Metadata</td></tr>
       <tr><td><code>  ├─</code>Language</td>                              <td>English</td>                                          <td></td></tr>
+      <tr><td><code>  ├─</code>Spatial representation info (1 of 3)</td>  <td></td>                                                 <td></td></tr>
+      <tr><td><code>  │   ├─</code>Number of dimensions</td>              <td>2</td>                                                <td></td></tr>
+      <tr><td><code>  │   ├─</code>Axis dimension properties (1 of 2)</td><td></td>                                                 <td></td></tr>
+      <tr><td><code>  │   │   ├─</code>Dimension name</td>                <td>Sample</td>                                           <td></td></tr>
+      <tr><td><code>  │   │   └─</code>Dimension size</td>                <td><code class="rf">PANCHROMATIC_SAMPLES</code></td>     <td></td></tr>
+      <tr><td><code>  │   └─</code>Axis dimension properties (2 of 2)</td><td></td>                                                 <td></td></tr>
+      <tr><td><code>  │       ├─</code>Dimension name</td>                <td>Line</td>                                             <td></td></tr>
+      <tr><td><code>  │       └─</code>Dimension size</td>                <td><code class="rf">PANCHROMATIC_LINES</code></td>       <td></td></tr>
+      <tr><td><code>  ├─</code>Spatial representation info (2 of 3)</td>  <td></td>                                                 <td></td></tr>
+      <tr><td><code>  │   ├─</code>Number of dimensions</td>              <td>2</td>                                                <td></td></tr>
+      <tr><td><code>  │   │   ├─</code>Dimension name</td>                <td>Sample</td>                                           <td></td></tr>
+      <tr><td><code>  │   │   └─</code>Dimension size</td>                <td><code class="rf">REFLECTIVE_SAMPLES</code></td>       <td></td></tr>
+      <tr><td><code>  │   └─</code>Axis dimension properties (2 of 2)</td><td></td>                                                 <td></td></tr>
+      <tr><td><code>  │       ├─</code>Dimension name</td>                <td>Line</td>                                             <td></td></tr>
+      <tr><td><code>  │       └─</code>Dimension size</td>                <td><code class="rf">REFLECTIVE_LINES</code></td>         <td></td></tr>
+      <tr><td><code>  ├─</code>Spatial representation info (3 of 3)</td>  <td></td>                                                 <td></td></tr>
+      <tr><td><code>  │   ├─</code>Number of dimensions</td>              <td>2</td>                                                <td></td></tr>
+      <tr><td><code>  │   │   ├─</code>Dimension name</td>                <td>Sample</td>                                           <td></td></tr>
+      <tr><td><code>  │   │   └─</code>Dimension size</td>                <td><code class="rf">THERMAL_SAMPLES</code></td>          <td></td></tr>
+      <tr><td><code>  │   └─</code>Axis dimension properties (2 of 2)</td><td></td>                                                 <td></td></tr>
+      <tr><td><code>  │       ├─</code>Dimension name</td>                <td>Line</td>                                             <td></td></tr>
+      <tr><td><code>  │       └─</code>Dimension size</td>                <td><code class="rf">THERMAL_LINES</code></td>            <td></td></tr>
       <tr><td><code>  ├─</code>Identification info</td>                   <td></td>                                                 <td></td></tr>
       <tr><td><code>  │   ├─</code>Citation</td>                          <td></td>                                                 <td></td></tr>
       <tr><td><code>  │   │   ├─</code>Date:</td>                         <td><code class="rf">FILE_DATE</code></td>                <td>The date when metadata file product set was created.</td></tr>
@@ -137,98 +160,102 @@
       <tr><td><code>  │   ├─</code>Illumination elevation angle:</td>     <td><code class="rf">SUN_ELEVATION</code></td>            <td>The Sun elevation angle in degrees for the image center location at the image center acquisition time.</td></tr>
       <tr><td><code>  │   ├─</code>Illumination azimuth angle:</td>       <td><code class="rf">SUN_AZIMUTH</code></td>              <td>The Sun azimuth angle in degrees for the image center location at the image center acquisition time.</td></tr>
       <tr><td><code>  │   ├─</code>Cloud cover percentage:</td>           <td><code class="rf">CLOUD_COVER</code></td>              <td>The overall cloud coverage (percent) of the WRS-2 scene.</td></tr>
-      <tr><td><code>  │   └─</code>Attribute group</td>                   <td></td>                                                 <td></td></tr>
+      <tr><td><code>  │   ├─</code>Attribute group (1 of 3)</td>          <td></td>                                                 <td>Reflective bands</td></tr>
+      <tr><td><code>  │   │   ├─</code>Content type:</td>                 <td>Physical measurement</td>                             <td>The types of information represented by the values.</td></tr>
+      <tr><td><code>  │   │   ├─</code>Attribute (1 of 8)</td>            <td></td>                                                 <td></td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Peak response:</td>            <td>433</td>                                              <td></td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_1</code></td>  <td>Minimum pixel value.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_1</code></td>  <td>Maximum pixel value.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_1</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_1</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_1</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
+      <tr><td><code>  │   │   │   └─</code>Description:</td>              <td>Coastal Aerosol (Operational Land Imager)</td>        <td></td></tr>
+      <tr><td><code>  │   │   ├─</code>Attribute (2 of 8)</td>            <td></td>                                                 <td></td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Peak response:</td>            <td>482</td>                                              <td></td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_2</code></td>  <td>Minimum pixel value.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_2</code></td>  <td>Maximum pixel value.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_2</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_2</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_2</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
+      <tr><td><code>  │   │   │   └─</code>Description:</td>              <td>Blue (OLI)</td>                                       <td></td></tr>
+      <tr><td><code>  │   │   ├─</code>Attribute (3 of 8)</td>            <td></td>                                                 <td></td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Peak response:</td>            <td>562</td>                                              <td></td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_3</code></td>  <td>Minimum pixel value.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_3</code></td>  <td>Maximum pixel value.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_3</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_3</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_3</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
+      <tr><td><code>  │   │   │   └─</code>Description:</td>              <td>Green (OLI)</td>                                      <td></td></tr>
+      <tr><td><code>  │   │   ├─</code>Attribute (4 of 8)</td>            <td></td>                                                 <td></td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Peak response:</td>            <td>655</td>                                              <td></td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_4</code></td>  <td>Minimum pixel value.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_4</code></td>  <td>Maximum pixel value.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_4</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_4</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_4</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
+      <tr><td><code>  │   │   │   └─</code>Description:</td>              <td>Red (OLI)</td>                                        <td></td></tr>
+      <tr><td><code>  │   │   ├─</code>Attribute (5 of 8)</td>            <td></td>                                                 <td></td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Peak response:</td>            <td>865</td>                                              <td></td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_5</code></td>  <td>Minimum pixel value.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_5</code></td>  <td>Maximum pixel value.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_5</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_5</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_5</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
+      <tr><td><code>  │   │   │   └─</code>Description:</td>              <td>Near-Infrared (NIR) (OLI)</td>                        <td></td></tr>
+      <tr><td><code>  │   │   ├─</code>Attribute (6 of 8)</td>            <td></td>                                                 <td></td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Peak response:</td>            <td>1610</td>                                             <td></td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_6</code></td>  <td>Minimum pixel value.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_6</code></td>  <td>Maximum pixel value.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_6</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_6</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_6</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
+      <tr><td><code>  │   │   │   └─</code>Description:</td>              <td>Short Wavelength Infrared (SWIR) 1 (OLI)</td>         <td></td></tr>
+      <tr><td><code>  │   │   ├─</code>Attribute (7 of 8)</td>            <td></td>                                                 <td></td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Peak response:</td>            <td>2200</td>                                             <td></td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_7</code></td>  <td>Minimum pixel value.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_7</code></td>  <td>Maximum pixel value.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_7</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_7</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
+      <tr><td><code>  │   │   │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_7</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
+      <tr><td><code>  │   │   │   └─</code>Description:</td>              <td>SWIR 2 (OLI)</td>                                     <td></td></tr>
+      <tr><td><code>  │   │   └─</code>Attribute (8 of 8)</td>            <td></td>                                                 <td></td></tr>
+      <tr><td><code>  │   │       ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
+      <tr><td><code>  │   │       ├─</code>Peak response:</td>            <td>1375</td>                                             <td></td></tr>
+      <tr><td><code>  │   │       ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_9</code></td>  <td>Minimum pixel value.</td></tr>
+      <tr><td><code>  │   │       ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_9</code></td>  <td>Maximum pixel value.</td></tr>
+      <tr><td><code>  │   │       ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_9</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │       ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_9</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │       ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
+      <tr><td><code>  │   │       ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_9</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
+      <tr><td><code>  │   │       └─</code>Description:</td>              <td>Cirrus (OLI)</td>                                     <td></td></tr>
+      <tr><td><code>  │   ├─</code>Attribute group (2 of 3)</td>          <td></td>                                                 <td>Panchromatic band</td></tr>
+      <tr><td><code>  │   │   ├─</code>Content type:</td>                 <td>Physical measurement</td>                             <td>The types of information represented by the values.</td></tr>
+      <tr><td><code>  │   │   └─</code>Attribute (8 of 11)</td>           <td></td>                                                 <td></td></tr>
+      <tr><td><code>  │   │       ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
+      <tr><td><code>  │   │       ├─</code>Peak response:</td>            <td>590</td>                                              <td></td></tr>
+      <tr><td><code>  │   │       ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_8</code></td>  <td>Minimum pixel value.</td></tr>
+      <tr><td><code>  │   │       ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_8</code></td>  <td>Maximum pixel value.</td></tr>
+      <tr><td><code>  │   │       ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_8</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │       ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_8</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
+      <tr><td><code>  │   │       ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
+      <tr><td><code>  │   │       ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_8</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
+      <tr><td><code>  │   │       └─</code>Description:</td>              <td>Panchromatic (OLI)</td>                               <td></td></tr>
+      <tr><td><code>  │   └─</code>Attribute group (3 of 3)</td>          <td></td>                                                 <td>Thermal bands</td></tr>
       <tr><td><code>  │       ├─</code>Content type:</td>                 <td>Physical measurement</td>                             <td>The types of information represented by the values.</td></tr>
-      <tr><td><code>  │       ├─</code>Attribute (1 of 11)</td>           <td></td>                                                 <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Peak response:</td>            <td>433</td>                                              <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_1</code></td>  <td>Minimum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_1</code></td>  <td>Maximum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_1</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_1</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_1</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
-      <tr><td><code>  │       │   └─</code>Description:</td>              <td>Coastal Aerosol (Operational Land Imager)</td>        <td></td></tr>
-      <tr><td><code>  │       ├─</code>Attribute (2 of 11)</td>           <td></td>                                                 <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Peak response:</td>            <td>482</td>                                              <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_2</code></td>  <td>Minimum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_2</code></td>  <td>Maximum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_2</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_2</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_2</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
-      <tr><td><code>  │       │   └─</code>Description:</td>              <td>Blue (OLI)</td>                                       <td></td></tr>
-      <tr><td><code>  │       ├─</code>Attribute (3 of 11)</td>           <td></td>                                                 <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Peak response:</td>            <td>562</td>                                              <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_3</code></td>  <td>Minimum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_3</code></td>  <td>Maximum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_3</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_3</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_3</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
-      <tr><td><code>  │       │   └─</code>Description:</td>              <td>Green (OLI)</td>                                      <td></td></tr>
-      <tr><td><code>  │       ├─</code>Attribute (4 of 11)</td>           <td></td>                                                 <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Peak response:</td>            <td>655</td>                                              <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_4</code></td>  <td>Minimum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_4</code></td>  <td>Maximum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_4</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_4</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_4</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
-      <tr><td><code>  │       │   └─</code>Description:</td>              <td>Red (OLI)</td>                                        <td></td></tr>
-      <tr><td><code>  │       ├─</code>Attribute (5 of 11)</td>           <td></td>                                                 <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Peak response:</td>            <td>865</td>                                              <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_5</code></td>  <td>Minimum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_5</code></td>  <td>Maximum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_5</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_5</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_5</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
-      <tr><td><code>  │       │   └─</code>Description:</td>              <td>Near-Infrared (NIR) (OLI)</td>                        <td></td></tr>
-      <tr><td><code>  │       ├─</code>Attribute (6 of 11)</td>           <td></td>                                                 <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Peak response:</td>            <td>1610</td>                                             <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_6</code></td>  <td>Minimum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_6</code></td>  <td>Maximum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_6</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_6</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_6</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
-      <tr><td><code>  │       │   └─</code>Description:</td>              <td>Short Wavelength Infrared (SWIR) 1 (OLI)</td>         <td></td></tr>
-      <tr><td><code>  │       ├─</code>Attribute (7 of 11)</td>           <td></td>                                                 <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Peak response:</td>            <td>2200</td>                                             <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_7</code></td>  <td>Minimum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_7</code></td>  <td>Maximum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_7</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_7</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_7</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
-      <tr><td><code>  │       │   └─</code>Description:</td>              <td>SWIR 2 (OLI)</td>                                     <td></td></tr>
-      <tr><td><code>  │       ├─</code>Attribute (8 of 11)</td>           <td></td>                                                 <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Peak response:</td>            <td>590</td>                                              <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_8</code></td>  <td>Minimum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_8</code></td>  <td>Maximum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_8</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_8</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_8</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
-      <tr><td><code>  │       │   └─</code>Description:</td>              <td>Panchromatic (OLI)</td>                               <td></td></tr>
-      <tr><td><code>  │       ├─</code>Attribute (9 of 11)</td>           <td></td>                                                 <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Peak response:</td>            <td>1375</td>                                             <td></td></tr>
-      <tr><td><code>  │       │   ├─</code>Min value:</td>                <td><code class="rf">QUANTIZE_CAL_MIN_BAND_9</code></td>  <td>Minimum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Max value:</td>                <td><code class="rf">QUANTIZE_CAL_MAX_BAND_9</code></td>  <td>Maximum pixel value.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Scale factor:</td>             <td><code class="rf">RADIANCE_MULT_BAND_9</code></td>     <td>Multiplicative rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Offset:</td>                   <td><code class="rf">RADIANCE_ADD_BAND_9</code></td>      <td>Additive rescaling factor from pixel to radiance units.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Transfer function type:</td>   <td>Linear</td>                                           <td>Scale factor and offset are used in a linear equation.</td></tr>
-      <tr><td><code>  │       │   ├─</code>Name:</td>                     <td><code class="rf">FILE_NAME_BAND_9</code></td>         <td>File name of the TIFF image containing pixel values</td></tr>
-      <tr><td><code>  │       │   └─</code>Description:</td>              <td>Cirrus (OLI)</td>                                     <td></td></tr>
       <tr><td><code>  │       ├─</code>Attribute (10 of 11)</td>          <td></td>                                                 <td></td></tr>
       <tr><td><code>  │       │   ├─</code>Bound units:</td>              <td>nm</td>                                               <td>Units in which sensor wavelengths are expressed.</td></tr>
       <tr><td><code>  │       │   ├─</code>Peak response:</td>            <td>10800</td>                                            <td></td></tr>



Mime
View raw message