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/09/06 17:39:55 UTC
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...
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>