{"_id":"57dc3cdb0e74d920006859a1","parentDoc":null,"version":{"_id":"55faeacad0e22017005b8268","project":"55faeacad0e22017005b8265","__v":33,"createdAt":"2015-09-17T16:31:06.800Z","releaseDate":"2015-09-17T16:31:06.800Z","categories":["55faeacbd0e22017005b8269","55faf550764f50210095078e","55faf5b5626c341700fd9e96","55faf8a7825d5f19001fa386","560052f91503430d007cc88f","560054f73aa0520d00da0b1a","56005aaf6932a00d00ba7c62","56005c273aa0520d00da0b3f","5601ae7681a9670d006d164d","5601ae926811d00d00ceb487","5601aeb064866b1900f4768d","5601aee850ee460d0002224c","5601afa02499c119000faf19","5601afd381a9670d006d1652","561d4c78281aec0d00eb27b6","561d588d8ca8b90d00210219","563a5f934cc3621900ac278c","5665c5763889610d0008a29e","566710a36819320d000c2e93","56ddf6df8a5ae10e008e3926","56e1c96b2506700e00de6e83","56e1ccc4e416450e00b9e48c","56e1ccdfe63f910e00e59870","56e1cd10bc46be0e002af26a","56e1cd21e416450e00b9e48e","56e3139a51857d0e008e77be","573b4f62ef164e2900a2b881","57c9d1335fd8ca0e006308ed","57e2bd9d1e7b7220000d7fa5","57f2b992ac30911900c7c2b6","58adb5c275df0f1b001ed59b","58c81b5c6dc7140f003c3c46","595412446ed4d9001b3e7b37"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"v1","version_clean":"1.0.0","version":"1"},"category":{"_id":"573b4f62ef164e2900a2b881","__v":0,"project":"55faeacad0e22017005b8265","version":"55faeacad0e22017005b8268","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-05-17T17:05:38.443Z","from_sync":false,"order":7,"slug":"algorithm-guide","title":"Certified Algorithms"},"project":"55faeacad0e22017005b8265","__v":1,"user":"55fae9d4825d5f19001fa379","updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-09-16T18:41:31.654Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":22,"body":"## Table of Contents\n\nSection | Description\n--- | ---\n[Imagery Examples](#Imagery Examples) | Before and after example\n[Quickstart](#Quickstart) | Get started with a Python-based quickstart tutorial\n[Task Runtime](#Task Runtime) | Benchmark runtimes for the algorithm\n[Input Options](#Input Options) | Required and optional task inputs\n[Outputs](#Outputs) | Task outputs and example contents\n[Advanced Options](#Advanced Options) | Additional information for advanced users\n[Known Issues](#Known Issues) | Issues users should be aware of\n\n\n\n## <a name=\"Imagery Example\"></a>Imagery Example\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/63e5f09-ENVI_QuerySpectralIndices_Legend.jpg\",\n        \"ENVI_QuerySpectralIndices_Legend.jpg\",\n        800,\n        320,\n        \"#c7beb2\"\n      ],\n      \"caption\": \"This image shows the image file and the JSON output list from ENVI Query Spectral Index\"\n    }\n  ]\n}\n[/block]\n\n## <a name=\"Quickstart\"></a>Quickstart Tutorial\n\n\nExample Script: Run in a python environment (i.e. - IPython) using the gbdxtools interface.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"from gbdxtools import Interface\\ngbdx = Interface()\\n\\n# Edit the following path to reflect a specific path to an image\\ndata = 's3://gbd-customer-data/CustomerAccount#/PathToImage/'\\n\\nenvi = gbdx.Task(\\\"ENVI_QuerySpectralIndices\\\")\\nenvi.inputs.input_raster = data\\n\\nworkflow = gbdx.Workflow([envi])\\n\\nworkflow.savedata(\\n    envi_query.outputs.task_meta_data,\\n    location='QuerySpectralIndices/task_meta_data' # edit location to suit account\\n)\\n\\nprint workflow.execute()\\nprint workflow.status\\n# Repeat workflow.status as needed to monitor progress.\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\n## <a name=\"Task Runtime\"></a>Task Runtime\nThese 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.\n\n  Sensor Name  | Total Pixels |  Total Area (k2)  |  Time(secs)  |  Time/Area k2\n--------|:----------:|-----------|----------------|---------------\nQB | 41,551,668 | 312.07 |194.58|0.62    \nWV01| 1,028,100,320 |NA |NA |NA\nWV02|35,872,942|1,265.14|216.12|0.66\nWV03|35,371,971|196.27|1,265.14|6.45\nGE| 57,498,000|332.97|185.33|0.56\n\n\n\n## <a name=\"Input Options\"></a>Input Options\nThe following table lists all inputs for this task. For details regarding the use of all ENVI input types refer to the [ENVI Task Runner Inputs]([See ENVIRASTER input type](https://github.com/TDG-Platform/docs/blob/master/ENVI_Task_Runner_Inputs.md)) documentation.\n\n| Name                       | Required | Default |               Valid Values               | Description                              |\n| -------------------------- | :------: | :-----: | :--------------------------------------: | ---------------------------------------- |\n| file_types                 |  False   |  None   |                  string                  | GBDX Option. Comma separated list of permitted file type extensions. Use this to filter input files -- Value Type: STRING |\n| input_raster               |   True   |  None   |  A valid S3 URL containing image files.  | Specify a raster from which to run the task. -- Value Type: ENVIRASTER |\n| input_raster_format        |  False   |  None   | [See ENVIRASTER input type](https://github.com/TDG-Platform/docs/blob/master/ENVI_Task_Runner_Inputs.md) | Provide the format of the image, for example: landsat-8. -- Value Type: STRING |\n| input_raster_band_grouping |  False   |  None   | [See ENVIRASTER input type](https://github.com/TDG-Platform/docs/blob/master/ENVI_Task_Runner_Inputs.md) | Provide the name of the band grouping to be used in the task, ie - panchromatic. -- Value Type: STRING |\n| input_raster_filename      |  False   |  None   | [See ENVIRASTER input type](https://github.com/TDG-Platform/docs/blob/master/ENVI_Task_Runner_Inputs.md) | Provide the explicit relative raster filename that ENVI will open. This overrides any file lookup in the task runner. -- Value Type: STRING |\n\n\n## <a name=\"Outputs\"></a>Outputs\nThe following table lists all the outputs from this task.\n\n| Name              | Required | Description                              |\n| ----------------- | :------: | ---------------------------------------- |\n| available_indices |   True   | A string array with the spectral indices that can be computed for the input raster. -- Value Type: STRING[*] |\n| task_meta_data    |  False   | GBDX Option. Output location for task meta data such as execution log and output JSON. |\n\n##### Output Structure\n\nThe output of this task is a string port listing the available indices, based on the bands available in the image file. This port can be used to chain to another task. Alternatively, the output is written to a JSON file in the `task_meta_data` port, where the list can be found after the Task completes.\n\n\n## <a name=\"Advanced Options\"></a>Advanced Options\nWorkflow example for Advanced Image Preprocessor to ENVI Query Spectral Indices, then ENVI Spectral Indices.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"from gbdxtools import Interface\\ngbdx = Interface()\\n\\n# Edit the following path to reflect a specific path to an image\\ndata = 's3://gbd-customer-data/CustomerAccount#/PathToImage/'\\n\\naoptask = gbdx.Task(\\\"AOP_Strip_Processor\\\") \\naoptask.inputs.data = data\\naoptask.inputs.enable_dra = False\\naoptask.inputs.bands = 'MS'\\n\\nenvi_query = gbdx.Task(\\\"ENVI_QuerySpectralIndices\\\")\\nenvi_query.inputs.input_raster = aop2envi.outputs.output_data.value\\nenvi_query.inputs.file_types = \\\"hdr\\\"\\n\\nenvi_si = gbdx.Task(\\\"ENVI_SpectralIndices\\\")\\nenvi_si.inputs.input_raster = envi_query.outputs.output_raster_uri.value\\nenvi_si.inputs.index = envi_query.outputs.available_indices.value\\n\\nworkflow = gbdx.Workflow([aoptask, envi_query, envi_si])\\n\\nworkflow.savedata(\\n    envi_query.outputs.task_meta_data,\\n    location='AOP_Query_SpectralIndices/task_meta_data'\\n)\\n\\nworkflow.savedata(\\n    envi_si.outputs.output_raster_uri,\\n    location='AOP_Query_SpectralIndices/output_raster_uri'\\n)\\n\\nprint workflow.execute()\\nprint workflow.status\\n# Repeat workflow.status as needed to monitor progress.\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\n##<a name=\"Known Issues\"></a>Known Issues\nAdditional parsing of the output list of indices is necessary before using the list as input for the ENVI Spectral Indices task. An example of this workflow is in development. \n\n##<a name=\"Background\"></a>Background\nFor additional background information on this task please refer to the <a href=\"http://www.harrisgeospatial.com/docs/home.html\">Harris Geospatial ENVI documentation.</a>​\n\n#### Contact Us   \nIf you have any questions or issues with this task, please contact [**gbdx-support:::at:::digitalglobe.com** ](mailto:gbdx-support@digitalglobe.com).","excerpt":"This task returns the spectral indices that can be computed for a given input raster, based on its wavelength metadata. The output is a JSON file that lists the available indices, based on the bands available in the image file.\n\t\n**GBDX Registered Name**: ENVI_QuerySpectralIndices\n**Provider**: Harris Geospatial Solutions\nFor more information on how to execute this task please refer to the [ENVI® Task Runner Inputs](doc:envi-task-runner-inputs) .","slug":"envi-query-spectral-indices","type":"basic","title":"ENVI® Query Spectral Indices"}

ENVI® Query Spectral Indices

This task returns the spectral indices that can be computed for a given input raster, based on its wavelength metadata. The output is a JSON file that lists the available indices, based on the bands available in the image file. **GBDX Registered Name**: ENVI_QuerySpectralIndices **Provider**: Harris Geospatial Solutions For more information on how to execute this task please refer to the [ENVI® Task Runner Inputs](doc:envi-task-runner-inputs) .

## Table of Contents Section | Description --- | --- [Imagery Examples](#Imagery Examples) | Before and after example [Quickstart](#Quickstart) | Get started with a Python-based quickstart tutorial [Task Runtime](#Task Runtime) | Benchmark runtimes for the algorithm [Input Options](#Input Options) | Required and optional task inputs [Outputs](#Outputs) | Task outputs and example contents [Advanced Options](#Advanced Options) | Additional information for advanced users [Known Issues](#Known Issues) | Issues users should be aware of ## <a name="Imagery Example"></a>Imagery Example [block:image] { "images": [ { "image": [ "https://files.readme.io/63e5f09-ENVI_QuerySpectralIndices_Legend.jpg", "ENVI_QuerySpectralIndices_Legend.jpg", 800, 320, "#c7beb2" ], "caption": "This image shows the image file and the JSON output list from ENVI Query Spectral Index" } ] } [/block] ## <a name="Quickstart"></a>Quickstart Tutorial Example Script: Run in a python environment (i.e. - IPython) using the gbdxtools interface. [block:code] { "codes": [ { "code": "from gbdxtools import Interface\ngbdx = Interface()\n\n# Edit the following path to reflect a specific path to an image\ndata = 's3://gbd-customer-data/CustomerAccount#/PathToImage/'\n\nenvi = gbdx.Task(\"ENVI_QuerySpectralIndices\")\nenvi.inputs.input_raster = data\n\nworkflow = gbdx.Workflow([envi])\n\nworkflow.savedata(\n envi_query.outputs.task_meta_data,\n location='QuerySpectralIndices/task_meta_data' # edit location to suit account\n)\n\nprint workflow.execute()\nprint workflow.status\n# Repeat workflow.status as needed to monitor progress.", "language": "python" } ] } [/block] ## <a name="Task Runtime"></a>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 --------|:----------:|-----------|----------------|--------------- QB | 41,551,668 | 312.07 |194.58|0.62 WV01| 1,028,100,320 |NA |NA |NA WV02|35,872,942|1,265.14|216.12|0.66 WV03|35,371,971|196.27|1,265.14|6.45 GE| 57,498,000|332.97|185.33|0.56 ## <a name="Input Options"></a>Input Options The following table lists all inputs for this task. For details regarding the use of all ENVI input types refer to the [ENVI Task Runner Inputs]([See ENVIRASTER input type](https://github.com/TDG-Platform/docs/blob/master/ENVI_Task_Runner_Inputs.md)) documentation. | Name | Required | Default | Valid Values | Description | | -------------------------- | :------: | :-----: | :--------------------------------------: | ---------------------------------------- | | file_types | False | None | string | GBDX Option. Comma separated list of permitted file type extensions. Use this to filter input files -- Value Type: STRING | | input_raster | True | None | A valid S3 URL containing image files. | Specify a raster from which to run the task. -- Value Type: ENVIRASTER | | input_raster_format | False | None | [See ENVIRASTER input type](https://github.com/TDG-Platform/docs/blob/master/ENVI_Task_Runner_Inputs.md) | Provide the format of the image, for example: landsat-8. -- Value Type: STRING | | input_raster_band_grouping | False | None | [See ENVIRASTER input type](https://github.com/TDG-Platform/docs/blob/master/ENVI_Task_Runner_Inputs.md) | Provide the name of the band grouping to be used in the task, ie - panchromatic. -- Value Type: STRING | | input_raster_filename | False | None | [See ENVIRASTER input type](https://github.com/TDG-Platform/docs/blob/master/ENVI_Task_Runner_Inputs.md) | Provide the explicit relative raster filename that ENVI will open. This overrides any file lookup in the task runner. -- Value Type: STRING | ## <a name="Outputs"></a>Outputs The following table lists all the outputs from this task. | Name | Required | Description | | ----------------- | :------: | ---------------------------------------- | | available_indices | True | A string array with the spectral indices that can be computed for the input raster. -- Value Type: STRING[*] | | task_meta_data | False | GBDX Option. Output location for task meta data such as execution log and output JSON. | ##### Output Structure The output of this task is a string port listing the available indices, based on the bands available in the image file. This port can be used to chain to another task. Alternatively, the output is written to a JSON file in the `task_meta_data` port, where the list can be found after the Task completes. ## <a name="Advanced Options"></a>Advanced Options Workflow example for Advanced Image Preprocessor to ENVI Query Spectral Indices, then ENVI Spectral Indices. [block:code] { "codes": [ { "code": "from gbdxtools import Interface\ngbdx = Interface()\n\n# Edit the following path to reflect a specific path to an image\ndata = 's3://gbd-customer-data/CustomerAccount#/PathToImage/'\n\naoptask = gbdx.Task(\"AOP_Strip_Processor\") \naoptask.inputs.data = data\naoptask.inputs.enable_dra = False\naoptask.inputs.bands = 'MS'\n\nenvi_query = gbdx.Task(\"ENVI_QuerySpectralIndices\")\nenvi_query.inputs.input_raster = aop2envi.outputs.output_data.value\nenvi_query.inputs.file_types = \"hdr\"\n\nenvi_si = gbdx.Task(\"ENVI_SpectralIndices\")\nenvi_si.inputs.input_raster = envi_query.outputs.output_raster_uri.value\nenvi_si.inputs.index = envi_query.outputs.available_indices.value\n\nworkflow = gbdx.Workflow([aoptask, envi_query, envi_si])\n\nworkflow.savedata(\n envi_query.outputs.task_meta_data,\n location='AOP_Query_SpectralIndices/task_meta_data'\n)\n\nworkflow.savedata(\n envi_si.outputs.output_raster_uri,\n location='AOP_Query_SpectralIndices/output_raster_uri'\n)\n\nprint workflow.execute()\nprint workflow.status\n# Repeat workflow.status as needed to monitor progress.", "language": "python" } ] } [/block] ##<a name="Known Issues"></a>Known Issues Additional parsing of the output list of indices is necessary before using the list as input for the ENVI Spectral Indices task. An example of this workflow is in development. ##<a name="Background"></a>Background For additional background information on this task please refer to the <a href="http://www.harrisgeospatial.com/docs/home.html">Harris Geospatial ENVI documentation.</a>​ #### Contact Us If you have any questions or issues with this task, please contact [**gbdx-support@digitalglobe.com** ](mailto:gbdx-support@digitalglobe.com).