{"_id":"5a945ba5f9c4390069a09f82","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:10:29.527Z","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/7fe8007-envi_sieve_before_web.jpg\",\n        \"envi_sieve_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/9105410-envi_sieve_after_web.jpg\",\n        \"envi_sieve_after_web.jpg\",\n        566,\n        400,\n        \"#187b22\"\n      ],\n      \"caption\": \"After: WorldView 2 image after sieving\"\n    }\n  ]\n}\n[/block]\n### Quickstart\nThis is a workflow example for basic processing.\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/ClassificationSieving'\\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\\nenvi_sieve.inputs.pixel_connectivity = '4'\\ntasks += [envi_sieve]\\n\\nworkflow = gbdx.Workflow(tasks)\\nworkflow.savedata(\\n    envi_sieve.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_ClassificationSieving 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 sieving. -- 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\nminimum_size|False| 2|string|Specify the minimum size of a blob to keep. If a minimum size is not defined, the minimum size will be set to two. -- Value Type: UINT -- Default Value: 2\npixel_connectivity|False| 8|string|Specify 4 (four-neighbor) or 8 (eight-neighbor) regions around a pixel are searched, for continuous blobs. The default is 8. -- Value Type: UINT -- Default Value: 8\nclass_order|False|N/A|string|Specify the order of class names in which sieving is applied to the classification image. If you do not specify this keyword, 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_ClassificationSieving 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 Sieving](http://www.harrisgeospatial.com/docs/enviclassificationsievingtask.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 removes isolated classified pixels using blob grouping. Low pass or other types of filtering could be used to remove these areas, but the class information would be contaminated by adjacent class codes. The sieve classes method looks at the neighboring four or eight pixels to determine if a pixel is grouped with pixels of the same class. If the number of pixels in a class that are grouped is less than the value that you enter, those pixels will be removed from the class. When pixels are removed from a class using sieving, black pixels (unclassified) will be left. Use ENVIClassificationClumpingTask to remove the black pixels.\n\t\n**GBDX Registered Name**: ENVI_ClassificationSieving\n**Provider**: Harris Geospatial Solutions","slug":"envi-classification-sieving","type":"basic","title":"ENVI® Classification Sieving"}

ENVI® Classification Sieving

This task removes isolated classified pixels using blob grouping. Low pass or other types of filtering could be used to remove these areas, but the class information would be contaminated by adjacent class codes. The sieve classes method looks at the neighboring four or eight pixels to determine if a pixel is grouped with pixels of the same class. If the number of pixels in a class that are grouped is less than the value that you enter, those pixels will be removed from the class. When pixels are removed from a class using sieving, black pixels (unclassified) will be left. Use ENVIClassificationClumpingTask to remove the black pixels. **GBDX Registered Name**: ENVI_ClassificationSieving **Provider**: Harris Geospatial Solutions

### Imagery Examples [block:image] { "images": [ { "image": [ "https://files.readme.io/7fe8007-envi_sieve_before_web.jpg", "envi_sieve_before_web.jpg", 566, 400, "#82756b" ], "caption": "Before: WorldView 2 image after AOP correction" } ] } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/9105410-envi_sieve_after_web.jpg", "envi_sieve_after_web.jpg", 566, 400, "#187b22" ], "caption": "After: WorldView 2 image after sieving" } ] } [/block] ### Quickstart This is a workflow example for basic processing. [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/ClassificationSieving'\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\nenvi_sieve.inputs.pixel_connectivity = '4'\ntasks += [envi_sieve]\n\nworkflow = gbdx.Workflow(tasks)\nworkflow.savedata(\n envi_sieve.outputs.output_raster_uri, location=output_location\n)\n\nworkflow.execute()", "language": "python" } ] } [/block] ### Inputs The following table lists all ENVI_ClassificationSieving 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 sieving. -- 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 minimum_size|False| 2|string|Specify the minimum size of a blob to keep. If a minimum size is not defined, the minimum size will be set to two. -- Value Type: UINT -- Default Value: 2 pixel_connectivity|False| 8|string|Specify 4 (four-neighbor) or 8 (eight-neighbor) regions around a pixel are searched, for continuous blobs. The default is 8. -- Value Type: UINT -- Default Value: 8 class_order|False|N/A|string|Specify the order of class names in which sieving is applied to the classification image. If you do not specify this keyword, 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_ClassificationSieving 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 Sieving](http://www.harrisgeospatial.com/docs/enviclassificationsievingtask.html). ### Contact If you have any questions or issues with this task, please contact [gbdx-support@digitalglobe.com](mailto:gbdx-support@digitalglobe.com).