GBDX

ENVI® Spectral Adaptive Coherence Estimator

This task performs the Adaptive Coherence Estimator (ACE) spectral analysis.

GBDX Registered Name: ENVI_SpectralAdaptiveCoherenceEstimator

Provider: Harris Geospatial Solutions

Imagery Examples

Before: WorldView 3 image before Advanced Image Preprocessing (AOP) correction

Before: WorldView 3 image before Advanced Image Preprocessing (AOP) correction

After: WorldView 3 image after running Spectral Adaptive Coherence Estimator. Lighter areas signify a closer match to the reference spectrum.

After: WorldView 3 image after running Spectral Adaptive Coherence Estimator. Lighter areas signify a closer match to the reference spectrum.

Quickstart

This is a workflow example for basic processing.

# Initialize the environment.
from gbdxtools import Interface
gbdx=Interface()

tasks = []
cat_id = '104001002D1B2100'
aop_output_location = 'ENVI/ACE/aop/'
task_output_location = 'ENVI/ACE/task/'

# Auto ordering task parameters
order = gbdx.Task("Auto_Ordering")
order.inputs.cat_id = cat_id
order.impersonation_allowed = True
order.persist = True
order.timeout = 36000
order_data_loc = order.outputs.s3_location.value
tasks.append(order)

# AOP task parameters
aop_task = gbdx.Task("AOP_Strip_Processor")
aop_task.inputs.data = order_data_loc
aop_task.inputs.enable_acomp = True
aop_task.inputs.enable_dra = False
aop_task.inputs.enable_pansharpen = False
aop_task.inputs.bands = 'MS'
aop_task_output = aop_task.outputs.data.value
tasks.append(aop_task)

# Read to input raster metadata
envi_metadata_wavelength = gbdx.Task("ENVI_RasterMetadataItem")
envi_metadata_wavelength.inputs.input_raster = aop_task_output
envi_metadata_wavelength.inputs.input_raster_band_grouping = 'multispectral'
envi_metadata_wavelength.inputs.key = "wavelength"
tasks.append(envi_metadata_wavelength)

envi_metadata_wavelength_units = gbdx.Task("ENVI_RasterMetadataItem")
envi_metadata_wavelength_units.inputs.input_raster = aop_task_output
envi_metadata_wavelength_units.inputs.input_raster_band_grouping = 'multispectral'
envi_metadata_wavelength_units.inputs.key = "wavelength units"
tasks.append(envi_metadata_wavelength_units)

# Get a spectrum from a library
envi_speclib = gbdx.Task("ENVI_GetSpectrumFromLibrary")
envi_speclib.inputs.input_spectral_library_filename = 'manmade_jhu_becknic_561.sli'
envi_speclib.inputs.spectrum_name = 'Construction Concrete [concrete-construction-solid-0598uuu]'
tasks.append(envi_speclib)

# Resample spectral library specturm to input raster spectrum
envi_resample = gbdx.Task("ENVI_ResampleSpectrum")
envi_resample.inputs.input_spectrum = envi_speclib.outputs.spectrum.value
envi_resample.inputs.input_wavelengths = envi_speclib.outputs.wavelengths.value
envi_resample.inputs.input_wavelength_units = envi_speclib.outputs.wavelength_units.value
envi_resample.inputs.resample_wavelengths = envi_metadata_wavelength.outputs.value.value
envi_resample.inputs.resample_wavelength_units = envi_metadata_wavelength_units.outputs.value.value
tasks.append(envi_resample)

# ACE Target Detection
envi_ACE = gbdx.Task("ENVI_SpectralAdaptiveCoherenceEstimator")
envi_ACE.inputs.input_raster = aop_task_output
envi_ACE.inputs.input_raster_band_grouping = 'multispectral'
envi_ACE.inputs.spectra = envi_resample.outputs.output_spectrum
tasks.append(envi_ACE)

# Setup workflow to save data
workflow = gbdx.Workflow(tasks)
workflow.savedata(aop_task.outputs.data, location=aop_output_location)
workflow.savedata(envi_ACE.outputs.output_raster_uri, location=task_output_location)

# Execute Workflow
workflow.execute()

Inputs

The following table lists all ENVI_SpectralAdaptiveCoherenceEstimator inputs.
Mandatory (optional) settings are listed as Required = True (Required = False).

Name Required Default Valid Values Description
file_types False N/A string GBDX Option. Comma seperated list of permitted file type extensions. Use this to filter input files -- Value Type: STRING[*]
input_raster True N/A directory Specify a raster on which to perform the Adaptive Coherence Estimator. -- Value Type: ENVIRASTER
input_raster_format False N/A string Provide the format of the image, for example: landsat-8. -- Value Type: STRING
input_raster_band_grouping False N/A string Provide the name of the band grouping to be used in the task, ie - panchromatic. -- Value Type: STRING
input_raster_filename False N/A string Provide the explicit relative raster filename that ENVI will open. This overrides any file lookup in the task runner. -- Value Type: STRING
input_raster_raw_output False False See ENVIRASTER input type Provide True to output an ENVI Binary instead of a tif. -- Value Type: STRING
spectra True N/A string Specify the target spectra. It is a floating-point array. The array size is [number of bands,number of target spectra]. -- Value Type: DOUBLEARRAY
covariance False N/A string Specify an array that is the covariance matrix of the input bands. The array size must be [number of bands,number of bands] -- Value Type: DOUBLEARRAY
mean False N/A string Specify an array that is the mean of the input bands. The number of elements in the array must match the number of bands. -- Value Type: DOUBLEARRAY
output_raster_uri_filename False N/A string Specify a string with the fully-qualified path and filename for OUTPUT_RASTER. -- Value Type: STRING

Outputs

The following table lists all ENVI_SpectralAdaptiveCoherenceEstimator outputs.
Mandatory (optional) settings are listed as Required = True (Required = False).

Name Required Default Valid Values Description
task_meta_data False N/A directory GBDX Option. Output location for task meta data such as execution log and output JSON
output_raster_uri True N/A directory Output for OUTPUT_RASTER. -- Value Type: ENVIURI

Output structure

The output_raster image file will be written to the specified S3 Customer Account Location in GeoTiff (.tif) format, with an ENVI header file (.hdr)

Background

For additional background information on this task please refer to the Harris Geospatial ENVI documentation and
ENVI® Spectral Adaptive Coherence Estimator.

Contact

If you have any questions or issues with this task, please contact gbdx-support@digitalglobe.com.