The ENVITask function accepts a task name and returns an object reference to the task.
To write a custom task, see Custom Tasks and ENVITaskFromProcedure.
ENVITasks can run asynchronously. See ENVIAsyncSpawnTaskJob.
Example
Example code is available in each of the ENVITask topics.
Syntax
Result = ENVITask(GSF_URL [, ERROR=variable])
Or:
Result = ENVITask('TaskURI' [, ERROR=variable])
Or:
Result = ENVITask('TaskName' [, ERROR=variable])
Return Value
The ENVITask function returns a reference to an ENVITask object. Use the returned reference to set parameters and execute the task by changing properties or calling methods.
Arguments
GSF_URL
Specify a URL to a Geospatial Services Framework (GSF) endpoint, for example:
http://server:port/ese/services/ENVI/ENVIApplyGainOffsetTask
TaskURI
Specify a string with the full path and filename to a .task file on disk. This option is useful if you are developing and testing a custom task but have not yet deployed it to the appropriate location yet.
TaskName
Specify a string with the name of the task to perform. To see the full list of available tasks in ENVI, type the following at the command line after starting ENVI:
taskNames = e.TASK_NAMES
print, taskNames
See also ENVITasks by Category.
Methods
AddParameter
Dehydrate
Execute
Hydrate
Parameter
ParameterNames
RemoveParameter
Properties
Properties marked as (Init) can be set during the initial creation of the object. Properties marked as (Get) can be retrieved. Properties marked as (Set) can be set after initial creation.
ABORTED (Get)
A boolean that returns true if the task was aborted. Not all tasks support aborting; in these cases the property always returns false.
COMMUTE_ON_DOWNSAMPLE (Get, Init)
A string that defines whether the result of running the ENVITask first, then down-sampling the output raster, matches the result of down-sampling the input raster(s) first before running the ENVITask.
An ENVITask developer can use the scripts provided in More Examples below to determine the COMMUTE_ON_DOWNSAMPLE property value when creating an ENVITask.
Valid values are:
Yes: Downsample the input raster(s) first, and then run the task. The resulting output raster matches the result if the task is run first, then downsample the output raster.
Approximate: The two results look close to each other, but do not exactly match.
No: The two results are significantly different.
Unknown: The property value is unknown.
COMMUTE_ON_SUBSET (Get, Init)
A string that defines whether the result of running the ENVITask first, then subsetting the output raster, matches the result of subsetting the input raster(s) first before running the ENVITask.
An ENVITask developer can use the scripts provided in More Examples below to determine the COMMUTE_ON_SUBSET property value when creating an ENVITask.
Valid values are:
- Yes: Subset the input raster(s) first, and then run the task. The resulting output raster matches the result if the task is run first, then subset the output raster.
- Approximate: The two results look close to each other, but do not exactly match.
- No: The two results are significantly different.
- Unknown: The property value is unknown.
DESCRIPTION (Get, Init)
Text describing the task.
DISPLAY_NAME (Get, Init)
The name of the task as it appears in the user interface.
NAME (Get, Init)
The name of the task.
REVISION (Get, Init)
A string with the semantic revision number of the task. As the task definition evolves over time, the changes will affect how the revision number is incremented, according to semantic versioning rules.
SOURCE_URI (Get, Init)
The path and filename of the .task file that defines the task. If the task was created programmatically using OBJ_NEW, then SOURCE_URI will be an empty string.
TAGS (Get, Init)
A scalar string or an array of strings that help categorize the task. It can be empty with a value of !NULL.
Keywords
ERROR
Set this keyword to a named variable that will contain any error message issued during execution of this routine. If no error occurs, the ERROR variable will be set to a null string (''). If an error occurs and the routine is a function, then the function result will be undefined.
When this keyword is not set and an error occurs, ENVI returns to the caller and execution halts. In this case, the error message is contained within !ERROR_STATE and can be caught using IDL's CATCH routine. See IDL Help for more information on !ERROR_STATE and CATCH.
See Manage Errors for more information on error handling in ENVI programming.
More Examples
Downsample
The spectral index task shown in the next two examples performs a pixel-independent operation on the input raster. The two results match exactly and the COMMUTE_ON_DOWNSAMPLE property value of the spectral index task is Yes.
Example 1: Downsample Input Raster First, then Run Task
e = ENVI()
file = FILEPATH('qb_boulder_msi', ROOT_DIR=e.ROOT_DIR, $
SUBDIRECTORY = ['data'])
raster = e.OpenRaster(file)
scale = 2.0
DownSampleRaster = ENVIResampleRaster(Raster, PIXEL_SCALE=scale, $
METHOD='Nearest Neighbor')
Task = ENVITask('SpectralIndex')
Task.INDEX = 'Normalized Difference Vegetation Index'
Task.INPUT_RASTER = DownSampleRaster
Task.OUTPUT_RASTER_URI = e.GetTemporaryFilename()
Task.Execute
DataColl = e.Data
DataColl.Add, Task.Output_Raster
View1 = e.GetView()
Layer1 = View1.CreateLayer(Task.Output_Raster)
Example 2: Run Task First, then Downsample Output Raster
e = ENVI()
file = FILEPATH('qb_boulder_msi', ROOT_DIR=e.ROOT_DIR, $
SUBDIRECTORY = ['data'])
raster = e.OpenRaster(file)
Task = ENVITask('SpectralIndex')
Task.INDEX = 'Normalized Difference Vegetation Index'
Task.INPUT_RASTER = Raster
Task.OUTPUT_RASTER_URI = e.GetTemporaryFilename()
Task.Execute
OutRaster = Task.Output_Raster
scale = 2.0
OutDownSampleRaster = ENVIResampleRaster(OutRaster, PIXEL_SCALE=scale, $
METHOD='Nearest Neighbor')
DataColl = e.Data
DataColl.Add, OutDownSampleRaster
View1 = e.GetView()
Layer1 = View1.CreateLayer(OutDownSampleRaster)
Subset
The ClassificationAggregation task shown in the next two examples aggregates smaller class regions to a larger, adjacent region as part of the classification cleanup. The two results look close to each other, but do not exactly match at the image border. The COMMUTE_ON_SUBSET property value of the classification aggregation task is Approximate.
Example 1: Subset Input Raster First, then Run Task
e = ENVI()
file = FILEPATH('qb_boulder_msi', ROOT_DIR=e.ROOT_DIR, $
SUBDIRECTORY = ['data'])
raster = e.OpenRaster(file)
Task = ENVITask('ISODATAClassification')
Task.INPUT_RASTER = Raster
Task.OUTPUT_RASTER_URI = e.GetTemporaryFilename()
Task.Execute
classificationRaster = Task.OUTPUT_RASTER
Subrect = [50, 100, 249, 279]
SubsetRaster = classificationRaster.Subset(SUB_RECT=Subrect)
AggregationTask=ENVITask('ClassificationAggregation')
AggregationTask.INPUT_RASTER = SubsetRaster
AggregationTask.OUTPUT_RASTER_URI = e.GetTemporaryFilename()
AggregationTask.Execute
DataColl = e.Data
DataColl.Add, AggregationTask.OUTPUT_RASTER
View1 = e.GetView()
Layer1 = View1.CreateLayer(AggregationTask.OUTPUT_RASTER)
Example 2: Run Task First, then Subset Output Raster
e = ENVI()
file = FILEPATH('qb_boulder_msi', ROOT_DIR=e.ROOT_DIR, $
SUBDIRECTORY = ['data'])
raster = e.OpenRaster(file)
Task = ENVITask('ISODATAClassification')
Task.INPUT_RASTER = Raster
Task.OUTPUT_RASTER_URI = e.GetTemporaryFilename()
Task.Execute
classificationRaster = Task.OUTPUT_RASTER
AggregationTask = ENVITask('ClassificationAggregation')
AggregationTask.INPUT_RASTER = classificationRaster
AggregationTask.OUTPUT_RASTER_URI = e.GetTemporaryFilename()
AggregationTask.Execute
Subrect = [50, 100, 249, 279]
OutSubsetRaster = AggregationTask.OUTPUT_RASTER.Subset(SUB_RECT=Subrect)
DataColl = e.Data
DataColl.Add, OutSubsetRaster
View1 = e.GetView()
Layer1 = View1.CreateLayer(OutSubsetRaster)
Version History
ENVI 5.1 |
Introduced |
ENVI 5.2 |
Added DISPLAY_NAME property.
Added COMMUTE_ON_DOWNSAMPLE and COMMUTE_ON_SUBSET properties.
|
ENVI 5.3 |
Added ABORTED property.
|
ENVI 5.3. 2 |
Added AddParameter and RemoveParameter methods. |
ENVI 5.4 |
Deprecated IGNORE_VALIDATE property and Validate method. |
ENVI 5.5 |
Added Hydrate method; added ability to specify a Geospatial Services Framework (GSF) endpoint URL as input.
|
ENVI 5.5.1 |
Added TAGS and SOURCE_URI properties.
|
API Version
4.3
See Also
ENVITask::Parameter, ENVITaskFromProcedure, ENVIAsyncSpawnTaskJob, QueryAllTasks Task, QueryTaskCatalog Task, QueryTask Task, RunTask Task