{"_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":9,"slug":"algorithm-guide","title":"Algorithms"},"__v":0,"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"},"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":151,"body":"### Imagery Examples\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### 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/RPCOrthorectification'\\n\\n#Ikonos Imagery See. https://gbdxdocs.digitalglobe.com/docs/ikonos\\ncat_id = '2000032417393810000010101359'\\nimg_meta = gbdx.catalog.get(cat_id)\\nikonos_path = join('s3://',\\n                   img_meta['properties']['bucketName'],\\n                   img_meta['properties']['bucketPrefix'],\\n                   '{0}_{1:0>7}'.format(img_meta['properties']['bucketPrefix'], img_meta['properties']['components']-1),\\n                   '')\\n\\n# Orthorectify the imagery\\nenvi_RPCO = gbdx.Task(\\\"ENVI_RPCOrthorectification\\\")\\nenvi_RPCO.inputs.input_raster = ikonos_path\\nenvi_RPCO.inputs.input_raster_band_grouping = 'multispectral'\\nenvi_RPCO.inputs.input_raster_format = 'ikonos'\\nenvi_RPCO.inputs.dem_raster_filename = 'GMTED2010.jp2'\\ntasks += [envi_RPCO]\\n\\nworkflow = gbdx.Workflow(tasks)\\nworkflow.savedata(\\n    envi_RPCO.outputs.task_meta_data, location=output_location\\n)\\n\\nworkflow.execute()\",\n      \"language\": \"python\"\n    }\n  ]\n}\n[/block]\n### Inputs\nThe following table lists all ENVI_RPCOrthorectification 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 that has a RPC sensor model or a replacement sensor model (RSM) to orthorectify. -- 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\ndem_is_height_above_ellipsoid|False|N/A|string|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: BOOLEAN\noutput_subset|False|N/A|string|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: INTARRAY\ninput_gcp|False|N/A|[See ENVIGCPSET input type](https://gbdxdocs.digitalglobe.com/docs/envi-task-engine#section-envigcpset)|A set of ground control points (GCPs). -- Value Type: ENVIGCPSET\ngrid_spacing|False| 10|string|Grid spacing to use. -- Value Type: INT -- Default Value: 10\ndem_raster|False|N/A|[See ENVIRASTER input type](https://gbdxdocs.digitalglobe.com/docs/envi-task-engine#section-enviraster)|Specify a digital elevation model (DEM) raster. A DEM raster is only required if the input raster has a RPC sensor model. If you do not have a DEM file readily available, you can use the global DEM named GMTED2010.jp2 that is provided with your ENVI installation under the Harris/envixx/data folder. The Global Multi-resolution Terrain Elevation Data 2010 (GMTED2010) dataset has a mean resolution of 30 arc seconds. -- Value Type: ENVIRASTER\ndem_raster_filename|False|N/A|string|Provide the explicit relative raster filename that ENVI will open. This overrides any file lookup in the task runner. -- Value Type: STRING\ngeoid_offset|False|N/A|string|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\nresampling|False| \"bilinear\"|string|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 -- Default Value: \"Bilinear\"\noutput_pixel_size|False|N/A|string|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: DOUBLEARRAY\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_RPCOrthorectification 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### 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 [Harris Geospatial ENVI documentation](http://www.harrisgeospatial.com/docs/home.html) and \n[ENVI® RPC Orthorectification](http://www.harrisgeospatial.com/docs/envirpcorthorectificationtask.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 orthorectifies an image georeferenced with a rational polynomial coefficient (RPC) sensor model or a replacement sensor model (RSM) using a DEM and optional GCPs.\n    \n**GBDX Registered Name**: ENVI_RPCOrthorectification\n**Provider**: Harris Geospatial Solutions","slug":"envi-rpc-orthorectification","type":"basic","title":"ENVI® RPC Orthorectification"}

ENVI® RPC Orthorectification

This task orthorectifies an image georeferenced with a rational polynomial coefficient (RPC) sensor model or a replacement sensor model (RSM) using a DEM and optional GCPs. **GBDX Registered Name**: ENVI_RPCOrthorectification **Provider**: Harris Geospatial Solutions

### 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] ### 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/RPCOrthorectification'\n\n#Ikonos Imagery See. https://gbdxdocs.digitalglobe.com/docs/ikonos\ncat_id = '2000032417393810000010101359'\nimg_meta = gbdx.catalog.get(cat_id)\nikonos_path = join('s3://',\n img_meta['properties']['bucketName'],\n img_meta['properties']['bucketPrefix'],\n '{0}_{1:0>7}'.format(img_meta['properties']['bucketPrefix'], img_meta['properties']['components']-1),\n '')\n\n# Orthorectify the imagery\nenvi_RPCO = gbdx.Task(\"ENVI_RPCOrthorectification\")\nenvi_RPCO.inputs.input_raster = ikonos_path\nenvi_RPCO.inputs.input_raster_band_grouping = 'multispectral'\nenvi_RPCO.inputs.input_raster_format = 'ikonos'\nenvi_RPCO.inputs.dem_raster_filename = 'GMTED2010.jp2'\ntasks += [envi_RPCO]\n\nworkflow = gbdx.Workflow(tasks)\nworkflow.savedata(\n envi_RPCO.outputs.task_meta_data, location=output_location\n)\n\nworkflow.execute()", "language": "python" } ] } [/block] ### Inputs The following table lists all ENVI_RPCOrthorectification 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 that has a RPC sensor model or a replacement sensor model (RSM) to orthorectify. -- 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 dem_is_height_above_ellipsoid|False|N/A|string|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: BOOLEAN output_subset|False|N/A|string|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: INTARRAY input_gcp|False|N/A|[See ENVIGCPSET input type](https://gbdxdocs.digitalglobe.com/docs/envi-task-engine#section-envigcpset)|A set of ground control points (GCPs). -- Value Type: ENVIGCPSET grid_spacing|False| 10|string|Grid spacing to use. -- Value Type: INT -- Default Value: 10 dem_raster|False|N/A|[See ENVIRASTER input type](https://gbdxdocs.digitalglobe.com/docs/envi-task-engine#section-enviraster)|Specify a digital elevation model (DEM) raster. A DEM raster is only required if the input raster has a RPC sensor model. If you do not have a DEM file readily available, you can use the global DEM named GMTED2010.jp2 that is provided with your ENVI installation under the Harris/envixx/data folder. The Global Multi-resolution Terrain Elevation Data 2010 (GMTED2010) dataset has a mean resolution of 30 arc seconds. -- Value Type: ENVIRASTER dem_raster_filename|False|N/A|string|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|N/A|string|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"|string|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 -- Default Value: "Bilinear" output_pixel_size|False|N/A|string|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: DOUBLEARRAY 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_RPCOrthorectification 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. ### 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 [Harris Geospatial ENVI documentation](http://www.harrisgeospatial.com/docs/home.html) and [ENVI® RPC Orthorectification](http://www.harrisgeospatial.com/docs/envirpcorthorectificationtask.html). ### Contact If you have any questions or issues with this task, please contact [gbdx-support@digitalglobe.com](mailto:gbdx-support@digitalglobe.com).