{"_id":"5a945acee6e53200638aac60","project":"55faeacad0e22017005b8265","version":{"_id":"55faeacad0e22017005b8268","project":"55faeacad0e22017005b8265","__v":36,"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","59e76ce41938310028037295","5a009de510890d001c2aabfe","5a96f89c89442e002041144b"],"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":9,"slug":"algorithm-guide","title":"Algorithms"},"user":"5a904b636bddb90012a75607","__v":0,"parentDoc":null,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2018-02-26T19:06:54.731Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":28,"body":"### Imagery Examples\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/6c77d32-envi_clumping_before_web.jpg\",\n        \"envi_clumping_before_web.jpg\",\n        566,\n        400,\n        \"#82756b\"\n      ],\n      \"caption\": \"Before: WorldView 2 image after AOP correction\"\n    }\n  ]\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/9a58da8-envi_clumping_after_web.jpg\",\n        \"envi_clumping_after_web.jpg\",\n        566,\n        400,\n        \"#157b23\"\n      ],\n      \"caption\": \"After: WorldView 2 image after clumping\"\n    }\n  ]\n}\n[/block]\n### Quickstart\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"# Quickstart Example running the task name.\\n\\n# Initialize the Environment.\\nfrom os.path import join, split\\nfrom gbdxtools import Interface\\ngbdx = Interface()\\n\\ntasks = []\\noutput_location = 'ENVI/ClassificationClumping'\\n\\ncat_id = '105001000672E000'\\n\\n# Image Auto ordering task parameters\\norder = gbdx.Task(\\\"Auto_Ordering\\\")\\norder.inputs.cat_id = cat_id\\norder.impersonation_allowed = True\\norder.persist = True\\norder.timeout = 36000\\ntasks += [order]\\n\\n# Image AOP task parameters\\naop = gbdx.Task(\\\"AOP_Strip_Processor\\\")\\naop.inputs.data = order.outputs.s3_location.value\\naop.inputs.bands = 'MS'\\naop.inputs.enable_dra = False\\naop.outputs.data.persist = True\\naop.outputs.data.persist_location = output_location+'/aop'\\naop.timeout = 36000\\ntasks += [aop]\\n\\n# Create a basic classification\\nenvi_isodata = gbdx.Task(\\\"ENVI_ISODATAClassification\\\")\\nenvi_isodata.inputs.input_raster = aop.outputs.data.value\\ntasks += [envi_isodata]\\n\\n# Seive the classification\\nenvi_sieve = gbdx.Task(\\\"ENVI_ClassificationSieving\\\")\\nenvi_sieve.inputs.input_raster = envi_isodata.outputs.output_raster_uri.value\\ntasks += [envi_sieve]\\n\\n# Clump the classification\\nenvi_clump = gbdx.Task(\\\"ENVI_ClassificationClumping\\\")\\nenvi_clump.inputs.input_raster = envi_sieve.outputs.output_raster_uri.value\\ntasks += [envi_clump]\\n\\nworkflow = gbdx.Workflow(tasks)\\nworkflow.savedata(\\n    envi_clump.outputs.output_raster_uri, location=output_location\\n)\\n\\nworkflow.execute()\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\n\n### Inputs\nThe following table lists all ENVI_ClassificationClumping inputs.\nMandatory (optional) settings are listed as Required = True (Required = False).\n\n  Name  |  Required  |  Default  |  Valid Values  |  Description  \n--------|:----------:|-----------|----------------|---------------\nfile_types|False|N/A|string|GBDX Option. Comma seperated list of permitted file type extensions. Use this to filter input files -- Value Type: STRING`[*]`\ninput_raster|True|N/A|[See ENVIRASTER input type](https://gbdxdocs.digitalglobe.com/docs/envi-task-engine#section-enviraster)|Specify a raster on which to perform classification clumping. -- Value Type: ENVIRASTER\ninput_raster_format|False|N/A|[See ENVIRASTER input type](https://gbdxdocs.digitalglobe.com/docs/envi-task-engine#section-enviraster)|Provide the format of the image, for example: landsat-8. -- Value Type: STRING\ninput_raster_band_grouping|False|N/A|[See ENVIRASTER input type](https://gbdxdocs.digitalglobe.com/docs/envi-task-engine#section-enviraster)|Provide the name of the band grouping to be used in the task, ie - panchromatic. -- Value Type: STRING\ninput_raster_filename|False|N/A|[See ENVIRASTER input type](https://gbdxdocs.digitalglobe.com/docs/envi-task-engine#section-enviraster)|Provide the explicit relative raster filename that ENVI will open. This overrides any file lookup in the task runner. -- Value Type: STRING\ndilate_kernel|False| `['[1, 1, 1]', '[1, 1, 1]', '[1, 1, 1]']`|string|Specify 2D array of zeros and ones that represents the structuring element (kernel) used for a dilate operation. If no kernel is specified, a 3 x 3 array will be used with a value of 1 for all of the array elements. Dilation is a morphological operation that uses a structuring element to expand the shapes contained in the input image. -- Value Type: UINTARRAY -- Default Value: `['[1, 1, 1]', '[1, 1, 1]', '[1, 1, 1]']`\nerode_kernel|False| `['[1, 1, 1]', '[1, 1, 1]', '[1, 1, 1]']`|string|Specify 2D array of zeros and ones that represents the structuring element (kernel) used for an erode operation. If no kernel is specified, a 3 x 3 array will be used with a value of 1 for all of the array elements. Erosion is a morphological operation that uses a structuring element to reduce the shapes contained in the input image. -- Value Type: UINTARRAY -- Default Value: `['[1, 1, 1]', '[1, 1, 1]', '[1, 1, 1]']`\nclass_order|False|N/A|string|Specify the order of class names in which clumping is applied to the classification image. If you do not specify this property, the classes are processed from first to last. -- Value Type: STRINGARRAY\noutput_raster_uri_filename|False|N/A|string|Specify a string with the fully-qualified path and filename for OUTPUT_RASTER. -- Value Type: STRING\n\n\n### Outputs\n\nThe following table lists all ENVI_ClassificationClumping outputs.\nMandatory (optional) settings are listed as Required = True (Required = False).\n\n  Name  |  Required  |  Default  |  Valid Values  |  Description\n--------|:----------:|-----------|----------------|---------------\ntask_meta_data|False|N/A|directory|GBDX Option. Output location for task meta data such as execution log and output JSON\noutput_raster_uri|True|N/A|directory|Output for OUTPUT_RASTER. -- Value Type: ENVIURI\n\n**Output structure**\n\nThe output_raster_uri file will be written to the specified S3 Customer Account Location.\n\n### Background\nFor additional background information on this task please refer to the [Harris Geospatial ENVI documentation](http://www.harrisgeospatial.com/docs/home.html) and \n[ENVI® Classification Clumping](http://www.harrisgeospatial.com/docs/enviclassificationclumpingtask.html). \n\n### Contact\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 performs a clumping method on a classification image. This operation clumps adjacent similar classified areas using morphological operators. Classified images often suffer from a lack of spatial coherency (speckle or holes in classified areas). Low pass filtering could be used to smooth these images, but the class information would be contaminated by adjacent class codes. Clumping classes solves this problem. The selected classes are clumped together by first performing a dilate operation then an erode operation on the classified image using one specified kernel (structuring element) for each operation.\n    \n**GBDX Registered Name**: ENVI_ClassificationClumping\n**Provider**: Harris Geospatial Solutions","slug":"envi-classification-clumping","type":"basic","title":"ENVI® Classification Clumping"}

ENVI® Classification Clumping

This task performs a clumping method on a classification image. This operation clumps adjacent similar classified areas using morphological operators. Classified images often suffer from a lack of spatial coherency (speckle or holes in classified areas). Low pass filtering could be used to smooth these images, but the class information would be contaminated by adjacent class codes. Clumping classes solves this problem. The selected classes are clumped together by first performing a dilate operation then an erode operation on the classified image using one specified kernel (structuring element) for each operation. **GBDX Registered Name**: ENVI_ClassificationClumping **Provider**: Harris Geospatial Solutions

### Imagery Examples [block:image] { "images": [ { "image": [ "https://files.readme.io/6c77d32-envi_clumping_before_web.jpg", "envi_clumping_before_web.jpg", 566, 400, "#82756b" ], "caption": "Before: WorldView 2 image after AOP correction" } ] } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/9a58da8-envi_clumping_after_web.jpg", "envi_clumping_after_web.jpg", 566, 400, "#157b23" ], "caption": "After: WorldView 2 image after clumping" } ] } [/block] ### Quickstart [block:code] { "codes": [ { "code": "# Quickstart Example running the task name.\n\n# Initialize the Environment.\nfrom os.path import join, split\nfrom gbdxtools import Interface\ngbdx = Interface()\n\ntasks = []\noutput_location = 'ENVI/ClassificationClumping'\n\ncat_id = '105001000672E000'\n\n# Image Auto ordering task parameters\norder = gbdx.Task(\"Auto_Ordering\")\norder.inputs.cat_id = cat_id\norder.impersonation_allowed = True\norder.persist = True\norder.timeout = 36000\ntasks += [order]\n\n# Image AOP task parameters\naop = gbdx.Task(\"AOP_Strip_Processor\")\naop.inputs.data = order.outputs.s3_location.value\naop.inputs.bands = 'MS'\naop.inputs.enable_dra = False\naop.outputs.data.persist = True\naop.outputs.data.persist_location = output_location+'/aop'\naop.timeout = 36000\ntasks += [aop]\n\n# Create a basic classification\nenvi_isodata = gbdx.Task(\"ENVI_ISODATAClassification\")\nenvi_isodata.inputs.input_raster = aop.outputs.data.value\ntasks += [envi_isodata]\n\n# Seive the classification\nenvi_sieve = gbdx.Task(\"ENVI_ClassificationSieving\")\nenvi_sieve.inputs.input_raster = envi_isodata.outputs.output_raster_uri.value\ntasks += [envi_sieve]\n\n# Clump the classification\nenvi_clump = gbdx.Task(\"ENVI_ClassificationClumping\")\nenvi_clump.inputs.input_raster = envi_sieve.outputs.output_raster_uri.value\ntasks += [envi_clump]\n\nworkflow = gbdx.Workflow(tasks)\nworkflow.savedata(\n envi_clump.outputs.output_raster_uri, location=output_location\n)\n\nworkflow.execute()", "language": "python" } ] } [/block] ### Inputs The following table lists all ENVI_ClassificationClumping 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|[See ENVIRASTER input type](https://gbdxdocs.digitalglobe.com/docs/envi-task-engine#section-enviraster)|Specify a raster on which to perform classification clumping. -- Value Type: ENVIRASTER input_raster_format|False|N/A|[See ENVIRASTER input type](https://gbdxdocs.digitalglobe.com/docs/envi-task-engine#section-enviraster)|Provide the format of the image, for example: landsat-8. -- Value Type: STRING input_raster_band_grouping|False|N/A|[See ENVIRASTER input type](https://gbdxdocs.digitalglobe.com/docs/envi-task-engine#section-enviraster)|Provide the name of the band grouping to be used in the task, ie - panchromatic. -- Value Type: STRING input_raster_filename|False|N/A|[See ENVIRASTER input type](https://gbdxdocs.digitalglobe.com/docs/envi-task-engine#section-enviraster)|Provide the explicit relative raster filename that ENVI will open. This overrides any file lookup in the task runner. -- Value Type: STRING dilate_kernel|False| `['[1, 1, 1]', '[1, 1, 1]', '[1, 1, 1]']`|string|Specify 2D array of zeros and ones that represents the structuring element (kernel) used for a dilate operation. If no kernel is specified, a 3 x 3 array will be used with a value of 1 for all of the array elements. Dilation is a morphological operation that uses a structuring element to expand the shapes contained in the input image. -- Value Type: UINTARRAY -- Default Value: `['[1, 1, 1]', '[1, 1, 1]', '[1, 1, 1]']` erode_kernel|False| `['[1, 1, 1]', '[1, 1, 1]', '[1, 1, 1]']`|string|Specify 2D array of zeros and ones that represents the structuring element (kernel) used for an erode operation. If no kernel is specified, a 3 x 3 array will be used with a value of 1 for all of the array elements. Erosion is a morphological operation that uses a structuring element to reduce the shapes contained in the input image. -- Value Type: UINTARRAY -- Default Value: `['[1, 1, 1]', '[1, 1, 1]', '[1, 1, 1]']` class_order|False|N/A|string|Specify the order of class names in which clumping is applied to the classification image. If you do not specify this property, the classes are processed from first to last. -- Value Type: STRINGARRAY 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_ClassificationClumping 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_uri file will be written to the specified S3 Customer Account Location. ### Background For additional background information on this task please refer to the [Harris Geospatial ENVI documentation](http://www.harrisgeospatial.com/docs/home.html) and [ENVI® Classification Clumping](http://www.harrisgeospatial.com/docs/enviclassificationclumpingtask.html). ### Contact If you have any questions or issues with this task, please contact [gbdx-support@digitalglobe.com](mailto:gbdx-support@digitalglobe.com).