{"_id":"58af1492ebd7370f0078b9f9","parentDoc":null,"user":"55fae9d4825d5f19001fa379","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"},"__v":0,"version":{"_id":"55faeacad0e22017005b8268","project":"55faeacad0e22017005b8265","__v":34,"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"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"v1","version_clean":"1.0.0","version":"1"},"project":"55faeacad0e22017005b8265","updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-02-23T16:57:54.371Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":24,"body":"## Table of Contents\n\nSection | Description\n--- | ---\n[Imagery Examples](#Imagery Examples) | Before and after examples\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## <a name=\"Imagery Examples\"></a>Imagery Examples\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/d68f5ef-RPCOrthorectification_Before_1.jpg\",\n        \"RPCOrthorectification_Before (1).jpg\",\n        800,\n        320,\n        \"#7d6d61\"\n      ],\n      \"caption\": \"Before: input IKONOS image that has not been orthorectified\"\n    }\n  ]\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/9e86c5f-RPCOrthorectification_After_1.jpg\",\n        \"RPCOrthorectification_After (1).jpg\",\n        800,\n        320,\n        \"#8e7f73\"\n      ],\n      \"caption\": \"After: Output raster image after running ENVI RPC Orthorectification\"\n    }\n  ]\n}\n[/block]\n\n## <a name=\"Quickstart\"></a>Quickstart Tutorial\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\\n# Note: The dem_raster port is optional, and if it is not included, \\n# the task runner will use the GMTED2010.jp2 as the default.\\nenvi_RPCO = gbdx.Task(\\\"ENVI_RPCOrthorectification\\\")\\nenvi_RPCO.inputs.input_raster = data\\nenvi_RPCO.inputs.input_raster_band_grouping = 'multispectral'\\n\\nworkflow = gbdx.Workflow([envi_RPCO])\\n\\nworkflow.savedata(\\n    envi_RPCO.outputs.output_raster_uri,\\n    location='ENVI_RPCO/output_raster_uri' # 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| ----------- | :----------: | --------------- | ---------- | ------------ |\n| IKONOS      |  29,976,302  | 273.34          | 205.855    | 0.75         |\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](https://gbdxdocs.digitalglobe.com/docs/envi-task-runner-inputs) 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| dem_is_height_above_ellipsoid |  False   |    None    |                True/False                | Set this property to true if the DEM is already expressed as the height above the ellipsoid and no geoid offset is required. -- Value Type: BOOL |\n| output_subset                 |  False   |    None    |             string int array             | Use this property to define a spatial subset from the input image that will apply to the output from ENVIRPCOrthorectificationTask. The output will be a rectangular subset that encompasses the the extent of the input subset. If you set this property, the output extent will be larger than that of the input subset, but the output may contain background pixels. Also, you do not need to specify the ENVIGCPSet::ApplyOffset method to adjust the position of ground control points (GCPs). Set this property to a four-element array expressing the spatial range (in pixels) of the input image. The array is of the form [x1, y1, x2, y2]. Pixel coordinates are zero-based. -- Value Type: INT[4] |\n| input_gcp                     |  False   |    None    | [See ENVIGCPSET input type](https://github.com/TDG-Platform/docs/blob/master/ENVI_Task_Runner_Inputs.md) | A set of ground control points (GCPs). -- Value Type: ENVIGCPSET |\n| grid_spacing                  |  False   |    None    |                string int                | Grid spacing to use. -- Value Type: INT -- Default Value: 10 |\n| dem_raster                    |  False   |    None    |   A valid S3 URL containing DEM files.   | Specify a digital elevation model (DEM) raster. It must have valid map information and the same spatial extent as INPUT_RASTER. Without elevation information from a DEM, RPCs only give an approximate geographic location.  -- Value Type: ENVIRASTER |\n| dem_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| geoid_offset                  |  False   |    None    |              string double               | Set this property to a floating-point value (in meters) of a geoid offset if the DEM is referenced to mean sea level. -- Value Type: DOUBLE |\n| resampling                    |  False   | 'Bilinear' | 'Bilinear', 'Nearest Neighbor', 'Cubic Convolution', | Specify the resampling method.  Nearest Neighbor: Uses the nearest pixel without any interpolation.  Bilinear: Performs a linear interpolation using four pixels to resample, Cubic Convolution: Uses 16 pixels to approximate the sinc function using cubic polynomials to resample the image. -- Value Type: STRING |\n| output_pixel_size             |  False   |    None    |           string double array            | Set this property to a two-element array indicating the output X and Y pixel size, in meters. The default value is the pixel size of the input image. -- Value Type: DOUBLE[2] |\n| output_raster_uri_filename    |  False   |    None    |        s3 location with the name         | Specify a string with the fully-qualified path and filename for OUTPUT_RASTER. -- Value Type: STRING |\n\n\n## <a name=\"Outputs\"></a>Outputs\nThe following table lists all the tasks outputs.\n\n| Name              | Required | Description                              |\n| ----------------- | :------: | ---------------------------------------- |\n| output_raster_uri |   True   | Output for OUTPUT_RASTER.                |\n| task_meta_data    |  False   | GBDX Option. Output location for task meta data such as execution log and output JSON. |\n\n\n##### Output Structure\n\nThe output_raster image file will be written to the specified S3 Customer Account Location in GeoTiff (\\*.tif) format, with an ENVI header file (\\*.hdr).\n\n\n## <a name=\"Advanced Options\"></a>Advanced Options\n\nInclude example(s) with complicated parameter settings and/or example(s) where the task is used as part of a workflow involving other GBDX tasks.\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_RPCO = gbdx.Task(\\\"ENVI_RPCOrthorectification\\\")\\nenvi_RPCO.inputs.input_raster = aop2task.outputs.data.value\\nenvi_RPCO.inputs.dem_raster_filename = 'GMTED2010.jp2'\\n\\nworkflow = gbdx.Workflow([aoptask, envi_RPCO])\\n\\nworkflow.savedata(\\n    envi_RPCO.outputs.output_raster_uri,\\n    location='ENVI_RPCO/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\nThis algorithm provides the ability to orthorectify IKONOS imagery available on the GBDX platform as level OrthoReady-2A data products. In order to orthorectify all other DigitalGlobe imagery on GBDX as level Basic-1B data products from QuickBird, GeoEye-1 or WorldView-1/2/3 sensors we recommend using the [Advanced Image Preprocessor](doc:advanced-image-preprocessor) algorithm instead since it automatically uses a very high resolution DEM for elevation source during the orthorectification process which can improve terrain correction.\n\n## 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 orthorectifies an image georeferenced with RPCs using a DEM and optional GCPs. \n\t\n**GBDX Registered Name**: ENVI_RPCOrthorectification\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-rpc-orthorectification","type":"basic","title":"ENVI® RPC Orthorectification"}

ENVI® RPC Orthorectification

This task orthorectifies an image georeferenced with RPCs using a DEM and optional GCPs. **GBDX Registered Name**: ENVI_RPCOrthorectification **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 examples [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 Examples"></a>Imagery Examples [block:image] { "images": [ { "image": [ "https://files.readme.io/d68f5ef-RPCOrthorectification_Before_1.jpg", "RPCOrthorectification_Before (1).jpg", 800, 320, "#7d6d61" ], "caption": "Before: input IKONOS image that has not been orthorectified" } ] } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/9e86c5f-RPCOrthorectification_After_1.jpg", "RPCOrthorectification_After (1).jpg", 800, 320, "#8e7f73" ], "caption": "After: Output raster image after running ENVI RPC Orthorectification" } ] } [/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\n# Note: The dem_raster port is optional, and if it is not included, \n# the task runner will use the GMTED2010.jp2 as the default.\nenvi_RPCO = gbdx.Task(\"ENVI_RPCOrthorectification\")\nenvi_RPCO.inputs.input_raster = data\nenvi_RPCO.inputs.input_raster_band_grouping = 'multispectral'\n\nworkflow = gbdx.Workflow([envi_RPCO])\n\nworkflow.savedata(\n envi_RPCO.outputs.output_raster_uri,\n location='ENVI_RPCO/output_raster_uri' # 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 | | ----------- | :----------: | --------------- | ---------- | ------------ | | IKONOS | 29,976,302 | 273.34 | 205.855 | 0.75 | ## <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](https://gbdxdocs.digitalglobe.com/docs/envi-task-runner-inputs) 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 | | dem_is_height_above_ellipsoid | False | None | True/False | Set this property to true if the DEM is already expressed as the height above the ellipsoid and no geoid offset is required. -- Value Type: BOOL | | output_subset | False | None | string int array | Use this property to define a spatial subset from the input image that will apply to the output from ENVIRPCOrthorectificationTask. The output will be a rectangular subset that encompasses the the extent of the input subset. If you set this property, the output extent will be larger than that of the input subset, but the output may contain background pixels. Also, you do not need to specify the ENVIGCPSet::ApplyOffset method to adjust the position of ground control points (GCPs). Set this property to a four-element array expressing the spatial range (in pixels) of the input image. The array is of the form [x1, y1, x2, y2]. Pixel coordinates are zero-based. -- Value Type: INT[4] | | input_gcp | False | None | [See ENVIGCPSET input type](https://github.com/TDG-Platform/docs/blob/master/ENVI_Task_Runner_Inputs.md) | A set of ground control points (GCPs). -- Value Type: ENVIGCPSET | | grid_spacing | False | None | string int | Grid spacing to use. -- Value Type: INT -- Default Value: 10 | | dem_raster | False | None | A valid S3 URL containing DEM files. | Specify a digital elevation model (DEM) raster. It must have valid map information and the same spatial extent as INPUT_RASTER. Without elevation information from a DEM, RPCs only give an approximate geographic location. -- Value Type: ENVIRASTER | | dem_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 | | geoid_offset | False | None | string double | Set this property to a floating-point value (in meters) of a geoid offset if the DEM is referenced to mean sea level. -- Value Type: DOUBLE | | resampling | False | 'Bilinear' | 'Bilinear', 'Nearest Neighbor', 'Cubic Convolution', | Specify the resampling method. Nearest Neighbor: Uses the nearest pixel without any interpolation. Bilinear: Performs a linear interpolation using four pixels to resample, Cubic Convolution: Uses 16 pixels to approximate the sinc function using cubic polynomials to resample the image. -- Value Type: STRING | | output_pixel_size | False | None | string double array | Set this property to a two-element array indicating the output X and Y pixel size, in meters. The default value is the pixel size of the input image. -- Value Type: DOUBLE[2] | | output_raster_uri_filename | False | None | s3 location with the name | Specify a string with the fully-qualified path and filename for OUTPUT_RASTER. -- Value Type: STRING | ## <a name="Outputs"></a>Outputs The following table lists all the tasks outputs. | Name | Required | Description | | ----------------- | :------: | ---------------------------------------- | | output_raster_uri | True | Output for OUTPUT_RASTER. | | task_meta_data | False | GBDX Option. Output location for task meta data such as execution log and output JSON. | ##### 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). ## <a name="Advanced Options"></a>Advanced Options Include example(s) with complicated parameter settings and/or example(s) where the task is used as part of a workflow involving other GBDX tasks. [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_RPCO = gbdx.Task(\"ENVI_RPCOrthorectification\")\nenvi_RPCO.inputs.input_raster = aop2task.outputs.data.value\nenvi_RPCO.inputs.dem_raster_filename = 'GMTED2010.jp2'\n\nworkflow = gbdx.Workflow([aoptask, envi_RPCO])\n\nworkflow.savedata(\n envi_RPCO.outputs.output_raster_uri,\n location='ENVI_RPCO/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 This algorithm provides the ability to orthorectify IKONOS imagery available on the GBDX platform as level OrthoReady-2A data products. In order to orthorectify all other DigitalGlobe imagery on GBDX as level Basic-1B data products from QuickBird, GeoEye-1 or WorldView-1/2/3 sensors we recommend using the [Advanced Image Preprocessor](doc:advanced-image-preprocessor) algorithm instead since it automatically uses a very high resolution DEM for elevation source during the orthorectification process which can improve terrain correction. ## 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).