GBDX

Automated Land Cover Classification (RETIRED)

This task was retired from the GBDX Platform on 7/23/2018, and is no longer supported.

GBDX Registered Name: protogenV2LULC
Provider: GBDX
Inputs: TIF, .TIL, .HDR
Outputs: RGB .TIF image of type UINT8x3
Compatible bands & sensors: WorldView 2 or WorldView 3 multi-spectral imagery (8-band optical and VNIR data sets) that has been atmospherically compensated by the AOP processor

This task uses an old version of the automated land cover classification algorithm.

Table of Contents

Section Description
Imagery Examples Before and after examples
Quickstart Get started with a Python-based quickstart tutorial
Task Runtime Benchmark runtimes for the algorithm
Input Options Required and optional task inputs
Outputs Task outputs and example contents
Advanced Options Additional information for advanced users
Known Issues Issues users should be aware of

Imagery Example

Output image with Automated Land Cover Classification applied

Output image with Automated Land Cover Classification applied

Quickstart Tutorial

This script gives the example of Automated Land Cover Classification with a single tif file as input.

# Quickstart Example producing an unsupervised Landuse Landcover Classification from a tif file.
# First Initialize the Environment

from gbdxtools import Interface
gbdx = Interface()

#Edit the following path to reflect a specific path to an image
raster = 's3://gbd-customer-data/CustomerAccount#/PathToImage/'
prototask = gbdx.Task("protogenV2LULC", raster=raster)

workflow = gbdx.Workflow([ prototask ])
#Edit the following line(s) to reflect specific folder(s) for the output file (example location provided)  
workflow.savedata(prototask.outputs.data, location='LULC')
workflow.execute()

print workflow.id
print workflow.status

Task Runtime

These are the average runtimes for this algorithm. All benchmark tests were run using a standard set of images, based on our most common customer scenarios. Runtime benchmarks apply to the specific algorithm, and don’t represent the runtime of a complete workflow.

Sensor Name Total Pixels Total Area (k2) Time(secs) Time/Area k2
WV02 35,872,942 329.87 328.19 0.99
WV03 35,371,971 196.27 459.06 2.34

Input Options

This task will process only WorldView 2 or WorldView 3 multi-spectral imagery (8-band optical and VNIR data sets) that has been atmospherically compensated by the Advanced Image Preprocessor. Supported formats are .TIF, .TIL, .VRT, .HDR.

Outputs

RGB .TIF image of type UINT8x3. The data will be displayed using the following color codes:

Color RGB Value Class Description
Green [0,255,0] All types of vegetation (healthy chlorophyll content)
Blue [0,0,128] All types of water, excluding flood waters (murky)
Brown [128,64,0} All types of soils, excluding rocks and stone
Light Blue [128,255,255] All types of clouds excluding smoke
Purple [164,74,164] Shadows
Gray [128,128,128] Unclassified (equivalent to man-made materials, rock, stone)
Black [0,0,0] No-data

Advanced Options

If you need to generate the 8-Band multi-spectral data required as input for this task, you can use the following example script to preprocess your data. This example runs the Advanced Image Preprocessor and Automated Land Cover Classification from end to end.

# Initialize the gbdxtools Interface
 gbdx = Interface()

 # Make sure DRA is disabled if you are processing both the PAN+MS files
 #Edit the following line(s) to reflect specific folder(s) for the output file (example location provided)  
 data='s3://gbd-customer-data/CustomerAccount#/PathToImage/'
 aoptask = gbdx.Task("AOP_Strip_Processor", data=data, enable_acomp=True, bands="MS", enable_pansharpen=False, enable_dra=False)

# Capture AOP task outputs
log = task.get_output('log')
orthoed_output = task.get_output('data')

# Stage AOP output for the Protogen Task using the Protogen Prep Task
pp_task = gbdx.Task("ProtogenPrep",raster=aoptask.outputs.data.value)    

# Setup ProtogenV2LULC Task
prot_lulc = gbdx.Task("protogenV2LULC",raster=pp_task.outputs.data.value)
		
# Run Combined Workflow
workflow = gbdx.Workflow([ aoptask, pp_task, prot_lulc ])

# Send output to  s3 Bucket. 
# Once you are familiar with the process it is not necessary to save the output from the intermediate steps.
#Edit the following line(s) to reflect specific folder(s) for the output file (example location provided)  
workflow.savedata(aoptask.outputs.data,location='s3://gbd-customer-data/CustomerAccount#/Protogen_LULC/')
workflow.savedata(pp_task.outputs.data,location='s3://gbd-customer-data/CustomerAccount#/ProtoPrep/')
workflow.savedata(prot_lulc.outputs.data,location='s3://gbd-customer-data/CustomerAccount#/Protogen_LULC/LULC/')
workflow.execute()

print(workflow.id)
print(workflow.status)

Known Issues

Vegetation: Thin cloud (cloud edges) might be misinterpreted as vegetation.

Water: False positives maybe present due to certain types of concrete roofs or shadows.

Soils: Ceramic roofing material and some types of asphalt may be misinterpreted as soil.

Clouds: Certain types of concrete might be misinterpreted as cloud. Thin cloud areas may be interpreted as soil or vegetation.

Limitations: The layer uses smoothing operators in cross-class interfaces for noise reduction. This might result in loss/misinterpretation of small class patches 8m^2.