ENVIHydrate

This function is used to create ENVI objects like ENVIRaster, ENVIMaskRaster, and ENVIVector from a hash description of their properties instead of using their dedicated routines. Any ENVI object with a Dehydrate method can be used in ENVIHydrate. The ability to dehydrate and hydrate ENVI objects gives you the following capabilities:

ENVIHydrate performs these items using recursion. It performs a depth-first traversal by looking for any values that are hash objects, then calls itself recursively to make sure object inputs have been rebuilt first. It looks for the factory key in the hash to identify the type of object to create. The rest of the keys in the hash are mapped to keywords in the function.

For additional information, see What are Hydrate and Dehydrate routines used for?

Example

The following code creates a virtual subsetted Normalized Difference Vegetation Index (NDVI) raster, stores the hash as a JSON file, and restores it in another session.

; Start the application

e = ENVI()

 

; Open an input file

file = FILEPATH('qb_boulder_msi', ROOT_DIR=e.ROOT_DIR, $

  SUBDIRECTORY = ['data'])

raster = e.OpenRaster(file)

 

; Subset the raster

subsetRaster = ENVISubsetRaster(Raster, $

  SUB_RECT=[60,159,250,399])

 

; Compute NDVI on the subset raster

ndviRaster = ENVISpectralIndexRaster(subsetRaster, 'NDVI')

 

; Display the NDVI

view = e.GetView()

layer = view.CreateLayer(ndviRaster)

 

; Get the hash representation of the virtual raster chain

ndviHash = ndviRaster.Dehydrate()

 

; Store hash in JSON format

ndviJSON = JSON_SERIALIZE(ndviHash)

jsonFile = e.GetTemporaryFileName('.json')

OPENW, LUN, jsonFile, /GET_LUN

PRINTF, LUN, ndviJSON

FREE_LUN, LUN

 

; Close ENVI

e.Close

 

; Relaunch and create the NDVI raster from file

e = ENVI()

ndviRestoredHash = JSON_PARSE(jsonFile)

ndviRestoredRaster = ENVIHydrate(ndviRestoredHash)

 

; Display the restored raster

view = e.GetView()

layer = view.CreateLayer(ndviRestoredRaster)

Syntax

Result = ENVIHydrate(Hash [, ERROR=value])

Return Value

This function returns a reference to an object created by the factory function identified by the factory key in the input Hash.

Arguments

Hash

An IDL hash object that describes the object to be created. The hash must contain a factory key whose value is a scalar string with the name of the object type to create. See the Dehydrate method of the object type (for example, ENVIRasterMetadata::Dehydrate) for a description of the keys that can be used.

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.

Version History

ENVI 5.3.1

Introduced

API Version

4.2

See Also

ENVIHydratable::Dehydrate, ENVICoordSys::Dehydrate, ENVIGCPSet::Dehydrate, ENVIGLTRasterSpatialRef::Dehydrate, ENVIGridDefinition::Dehydrate, ENVIPseudoRasterSpatialRef::Dehydrate, ENVIRaster::Dehydrate, ENVIRasterMetadata::Dehydrate, ENVIRasterSeries::Dehydrate, ENVIRPCRasterSpatialRef::Dehydrate, ENVISpectralLibrary::Dehydrate, ENVIStandardRasterSpatialRef::Dehydrate, ENVITiePointSet::Dehydrate, ENVITime::Dehydrate, ENVIVector::Dehydrate