X
11289

ENVI 5.4 Release Notes

Release Notes

See the following sections:

ENVI 5.4

See the following sections:

ENVI System Requirements

Platform Hardware Operating System Supported Versions
Windows Intel/AMD 64-bit Windows 7 SP1, 8, 10
Macintosh Intel 64-bit OSX 10.10, 10.11
Linux Intel/AMD 64-bit Linux Kernel 2.6.32, glibc 2.12

Supported versions indicate that ENVI was either built on (the lowest version listed) or tested on that version. You can install and run ENVI on other versions that are binary-compatible with those listed.

ENVI Classic is also supported on Solaris 10 SPARC 64-bit systems.

The 64-bit Windows installer contains 32-bit binaries so that you can launch ENVI in 32-bit mode on 64-bit Windows systems. This ensures interoperability with ArcGIS®. You can find the 32-bit versions of ENVI in the Windows Start menu under Programs > ENVI 5.4 > ENVI for ArcGIS® and Programs > ENVI 5.4 > Tools > ENVI Classic 5.4 (32-bit).

An X-Windows manager is required for Macintosh. ENVI was tested using XQuartz 2.7.11.

For optimal performance, your video card should have a minimum of 1 GB RAM and should support OpenGL 2.0 or later. Also be sure to install the latest drivers for your video card.

ENVI Help requires an HTML5-compatible browser.

New Features in ENVI

This software release includes the new and enhanced features listed below.

Installation and Licensing

ENVI licensing is now managed through a third-party solution from Flexera Software. You obtain the license through a portal hosted by Flexera, then you can choose to activate the license on a license server or on an individual node-locked machine. Details about ENVI licensing are documented in a standalone topic outside of this Help.

By default, ENVI installs under a Harris directory. It was previously Exelis:

  • Windows: C:\Program Files\Harris\ENVI54
  • Linux: /usr/local/harris/envi54
  • Macintosh: /Applications/harris/envi54

ENVI and IDL have separate installers. If IDL and ENVI are both installed on the same system, the Help application contains the help for both products.

Supported Data Types

ENVI supports the following sensors and data types:

  • ADS80
  • Gaofen-2
  • GOES-R
  • Himawari-8
  • NetCDF-3
  • TripleSat

Use File > Open to open MODIS (HDF-EOS), ASTER (HDF-EOS), and EO-1 ALI and Hyperion (HDF4) files. In previous versions, you had to use the File > Open As > Optical Sensors > sensor type menu option.



Dataset Browser

The Dataset Browser was redesigned to let you easily build new ENVI rasters that contain a combination of scientific data, attributes, and latitude/longitude information from HDF and NetCDF files. Use the File > Open As > Scientific Formats > format menu option to access the Dataset Browser. Here are some other updates:

  • The Dataset Browser user interface has new icons to simplify the process of building new rasters.
  • You can map attributes from the source dataset to standard ENVI header fields.
  • You can add standard ENVI header fields to the new raster with known metadata values.
  • You can add VData fields from HDF4 files to the new raster. Each raster can only have one VData field. You cannot combine VData fields with other datasets.
  • You can select latitude and longitude datasets from the source file and add them to a Geographic Information folder in the Raster Builder. When you display the raster, ENVI georeferences the raster on-the-fly in the Image window, using the latitude and longitude information. It does not actually geocorrect the dataset.
  • You can create a report of the data fields and metadata that comprise a raster. The available formats are text, XML, or JSON. With HDF4 files, JSON is the only available option.
  • ENVI programmers can manually create XML templates for reading data in HDF4 and NetCDF-3 datasets. Previously, templates only worked with HDF5 and NetCDF-4 datasets. Templates are helpful in building the same raster and metadata structure from several scientific data formats. Using a template prevents you from having to use the Dataset Browser to re-define the raster and metadata for every file. See the "Open Scientific Data Formats" topic in ENVI Help for more information.

Image Processing

The Generate Point Clouds and DSM by Dense Image Matching tool will now generate digital surface models (DSMs) in TIFF format, in addition to point clouds. This tool is part of the ENVI Photogrammetry Module and requires a separate license and installation of that module. This tool runs on Windows 64-bit platforms only.

Use the RPC Orthorectification Using DSM from Dense Image Matching tool to perform RPC orthorectification using a digital surface model (DSM). The DSM is generated from two or more images taken from different view points. It is used as the terrain source to orthorectify the first raster in the input rasters. This tool is part of the ENVI Photogrammetry Module and requires a separate license and installation of that module. This tool runs on Windows 64-bit platforms only.

The RPC Orthorectification Using Reference Image tool was updated to include a new parameter: Output Pixel Size in the X and Y direction, in meters. The default value is derived from the pixel size of the input image.

Use the Edit Classification Image tool to reassign classes in classification images. You can also use this tool with the results of viewshed analysis or thematic change detection.

The Color Point Cloud tool uses red/green/blue (RGB) data from a raster to colorize a LAS file of the same location. Each point of the point cloud receives the RGB value of the raster pixel that has the same location.

The Image Registration workflow has been updated as follows:

  • The base image and warp image are displayed using side-by-side views instead of separate windows.
  • New buttons and controls are provided for reviewing and managing tie points.
  • A new Predict Warp Location option is available. When you click on a feature point in the base image and this option is enabled, ENVI will use an image-matching technique to try to find the corresponding location in the warp image. This prevents you from having to manually select tie points in both images.

Use the Dice Raster tools to separate a raster into tiles based on tile count, distance, pixel count, or a vector shapefile. The Dice Raster tools are in the ENVI Toolbox under Raster Management > Raster Dicer.

The Calculate Cloud Mask Using Fmask tool was redesigned and simplified from the previous version. You no longer have to calibrate the imagery or create a layer stack before adding the imagery to the tool. It automatically calibrates the imagery and determines the appropriate multispectral, thermal, and cirrus bands to use in creating a cloud mask. It currently supports the following sensors:

  • Landsat 4-5 TM
  • Landsat 7 ETM+
  • Landsat 8
  • Sentinel-2 Level-1C
  • NPP VIIRS Moderate Resolution (750 m) reflectance and brightness temperature SDR data downloaded from NOAA CLASS (HDF5 format)

The Normalized Difference Snow Index (NDSI) was updated to use any green band ranging from 0.5 to 0.6 µm. The NDSI is based on the following references:

Hall, D., G. Riggs, and V. Salomonson. "Development of Methods for Mapping Global Snow Cover Using Moderate Resolution Imaging Spectroradiometer Data." Remote Sensing of Environment 54, No. 2 (1995): 127-140.
Salomonson, V., and I. Appel. "Estimating Fractional Snow Cover from MODIS Using the Normalized Difference Snow Index." Remote Sensing of Environment 89 (2004): 351-360.


Classification

The new ENVI classification framework provides a powerful and flexible way to classify data. You can create and train a classifier on one dataset and apply it to a similar dataset. Traditionally, classifiers are tied to one data source. With the new framework, you can train and evaluate the performance of a classifier once and apply it anywhere, including desktop or enterprise environments. Currently, the classification framework uses the ENVI application programming interface (API).

Here are some of the new features included in the classification framework:

  • Softmax Regression classifier: Softmax is a generalization of logistic regression that is used for multi-class classification where classes are mutually exclusive. An example is classifying a satellite image into four different classes such as cloud, water, asphalt, and vegetation.
  • Iterative and Gradient Descent trainers: These algorithms minimize classification error by iteratively reducing a loss function until it converges on a minimum value.
  • Evaluate a classifier: New API routines are available to compute a confusion matrix and accuracy metrics. Once you train and evaluate a classifier, you can save the classifier to an IDL save file and use it to classify other similar datasets.
  • New tutorials: "Classification Tutorial 1: Create an Attribute Image" describes how to create an image that consists of different attributes, which typically improves classification results. "Classification Tutorial 2: Collect Training Data" shows how to interactively define regions of interest (ROIs) that represent known land-cover types. The ROIs serve as ground truth data for supervised classification.

See the "ENVI Classification" topic in ENVI Help for details. Also see the "New Classification Routines" section below.



Stretch Types and Histograms

Several updates were made to the ENVI stretch and histogram manipulation tools:

  • When you click the new Stretch on View Extent with auto update button, the selected stretch type automatically updates as you pan around the image.
  • The Custom Stretch dialog was renamed to Histogram Stretch. It allows better control with red/green/blue histograms (for color images) or with greyscale histograms. You can adjust the minimum and maximum values of the histograms as well as the number of bins.
  • The Contrast control works in conjunction with Linear, Equalization, Gaussian, Square Root, and Logarithmic stretch types.
  • In previous versions, the stretch type changed to Custom when you adjusted the Contrast setting. The Custom option has since been removed from the Stretch Types drop-down list.
  • The Brightness and Contrast controls are enabled when the Custom Histogram Stretch dialog is displayed. As you adjust the Contrast setting, both the minimum and maximum histogram points adjust accordingly in the Custom Histogram Stretch dialog (for red, green, and blue).
  • Bipolar Stretch is a new option for the Stretch Types drop-down list.


Viewshed Analysis

The Viewshed Analysis workflow and the corresponding API routine (ENVIViewshedRasterTask) were updated with new observer view constraints such as horizontal and vertical field of view, azimuth, and pitch. When combined with range and observer height (which were already in ENVI), these view constraints can more accurately model line-of-sight analyses.

ENVI now uses the Izraelevitz (2003) algorithm for viewshed analysis, which is an extension to the original Xdraw algorithm developed by Franklin et al. (1994). The Izraelevitz algorithm performs well in densely sampled terrain elevation models, and it is significantly faster than the radial interpolation method used in previous versions of ENVI.

References:
Franklin, W. R., C. K. Ray, and S. Mehta. Geometric Algorithms for Siting of Air Defense Missile Batteries, Technical Report DAAL03-86-D-0001 (1994), Battelle, Columbus Division, Columbus, OH, 129 p.
Izraelevitz, D. "A Fast Algorithm for Approximate Viewshed Computation." Photogrammetric Engineering & Remote Sensing 69, No. 7 (2003): 767-774.

The Viewshed Analysis tutorial uses new data files to show different ways to determine visibility from multiple view sources.

Display Tools

You can affix certain annotation items to the display so that they remain stationary while you zoom, pan, and rotate. These are called on-the-glass annotations, and they include text, symbols, classification legends, color bars, and scale bars.

The Create Pyramid if None Exists preference was changed to a drop-down list with more options. It offers better flexibility in choosing whether or not to create pyramid files with datasets that have a large number of bands (such as hyperspectral imagery).

Use the Icon Size preference to adjust the size of icons in the ENVI application. If it is set to Automatic (default), ENVI checks your system's default font size and resizes icons accordingly. Other choices are as follows:

  • Original - 100%: Icons display at their original size.
  • Medium - 140%: Icons display at 140% of their original size.

You can add four new annotation types to the Image window view. These options are available from the Annotations drop-down menu in the toolbar:

  • Legends for classification images
  • Scale bars for georeferenced images
  • Color bars for single-band greyscale images with color tables applied
  • Grid lines for georeferenced images

The Description and/or the Coordinates string from the Feature Counting Tool table now display in the view.

If any layer in a view has a standard, RPC, or pseudo spatial reference, you can change the base projection of the view to any supported map projection. Right-click on the View layer in the Layer Manager and select Change Base Projection, then use the Select Coordinate System dialog to choose a projection.

If a view contains a standard, RPC, or pseudo projection, you can overlay grid lines in that view by clicking the Grid Lines button in the ENVI toolbar.

JPG2000 and NITF C8/M8 compressed rasters display and process faster.

Programming

A new "Custom Tasks" tutorial shows how to write a custom task that creates vegetation indices from Sentinel-2A Level-1C imagery. New example files are provided with the tutorial in the /examples/tasks/sentinelexample folder of the ENVI installation path.

Use the envitaskengine executable to run ENVITasks in command-line environments. You can now plug ENVI analytics into applications in different programming languages or environments that share information. The environments must be able to handle standard streams (stdin, stdout, and stderr).

Dehydrate and Hydrate methods were added to all virtual rasters and data type objects.

If you create a custom task that displays a dialog for selecting parameters for an ENVITask or custom API script, you can include a style sheet to define the individual user interface (UI) elements. Examples of UI elements include file selection boxes, color pickers, and text boxes.

The ENVIGLTRasterSpatialRef routine now acts as a constructor function, allowing you to create a new geographic lookup table (GLT) spatial reference in the ENVI API. You can then open an ENVIRaster using the GLT spatial reference. See the ENVIGLTRasterSpatialRef help topic for details.



New ENVITasks

Task Description
ENVICalculateCloudMaskForProductTask Calculate a cloud mask for the following sensors: Landsat 4-5 TM, Landsat 7 ETM+, Landsat 8, Sentinel-2, and NPP VIIRS reflectance/thermal data. The task automatically performs the radiometric calibration required for the Fmask algorithm. You do not need to calibrate the imagery before running this task.
ENVIColorPointCloudTask Color a point cloud using raster data.
ENVICreateSubrectsFromDistanceTask Create a 2D array of subrects based on a specified distance. A subrect is a bounding box used to spatially subset a raster.
ENVICreateSubrectsFromPixelsTask Create a 2D array of subrects based on a specified number of pixels.
ENVICreateSubrectsFromTileCountTask Create a 2D array of subrects based on a specified number of tiles.
ENVICreateSubrectsFromVectorTask Create a 2D array of subrects based on the spatial extent of individual vector records.
ENVIDiceRasterByDistanceTask Separate a raster into tiles based on a specified distance.
ENVIDiceRasterByPixelTask Separate a raster into tiles based on a specified number of pixels.
ENVIDiceRasterBySubrectsTask Create an array of rasters based on subrects.
ENVIDiceRasterByTileCountTask Separate a raster into tiles based on a specified number of tiles.
ENVIDiceRasterByVectorTask Separate a raster into tiles based on the spatial extent of individual vector records.
ENVIExportRastersToDirectoryTask Export multiple virtual rasters to a specified directory on disk.
ENVIExportRasterToENVITask Export a raster to ENVI file format.
ENVIFirstOrderEntropyTextureTask Compute first-order entropy texture on a raster.
ENVILabelEntropyTextureTask Compute first-order entropy texture on the label bands of a rank-strength-texture raster.
ENVIMirrorRasterTask Flip a raster horizontally, vertically, or both.
ENVIQueryAllTasksTask Return a hash where each key is the task name and each task name key contains a hash of the task's properties.
ENVIRankStrengthTextureTask Compute label rank and strength texture metrics on a raster.
ENVIRGBToHSIRasterTask Transform the color space of a raster from red/green/blue (RGB) to hue/saturation/intensity (HSI).
ENVIRPCOrthorectificationUsingDSM

FromDenseImageMatchingTask
Perform RPC orthorectification using a digital surface model (DSM) generated from a dense image matching method.
ENVITransposeRasterTask Interchange rows with columns in a raster.


New Classification ENVITasks

Task Description
ENVIApplyGainOffsetToExamplesTask This task applies a gain and offset to the examples in an ENVIExamples object. Its purpose is to get the data into a consistent range of values prior to classification.
ENVICalculateConfusionMatrixFromRasterTask This task returns a reference to an ENVIConfusionMatrix object computed from a classification raster and truth ROIs.
ENVIClassifyRasterTask This task classifies a raster using a trained classifier.
ENVICreateGradientDescentTrainerTask This task creates a Gradient Descent trainer that can train a classifier using ENVITrainClassifierTask.
ENVICreateIterativeTrainerTask This task creates an iterative trainer that can train a classifier using ENVITrainClassifierTask.
ENVICreateSoftmaxRegressionClassifierTask This task creates a Softmax Regression classifier.
ENVICreateSVMClassifierTask This task creates a Support Vector Machine (SVM) classifier.
ENVIEvaluateClassifierTask This task takes in truth examples, truth class values, and a classifier. It uses the classifier and truth examples (ignoring the truth class values) to calculate predicted class values. Then it computes a confusion matrix and accuracy metrics between the truth and predicted class values.
ENVIExtractExamplesFromRasterTask This task returns a reference to an ENVIExamples object that contains examples, class values, and other properties from an input raster and regions of interest (ROIs).
ENVIShuffleExamplesTask This task shuffles the examples and class values from an ENVIExamples object to randomize the order of the examples. Random ordering of the examples is important if the examples are split into multiple sets (such as training and evaluation sets).
ENVISplitExamplesTask This task splits the examples and class values from an ENVIExamples object into two sets of examples and class values. A common scenario is to use one set for training a classifier and the other set for evaluation.
ENVITrainClassifierTask This task trains a classifier. It updates the original classifier instead of creating a new output classifier.


New Objects and Methods

Object/Method Description
ENVI::RestoreSession Restore an ENVI session file.
ENVI::SaveSession Create an ENVI session file that specifies a layout configuration, files loaded into views, and their properties.
ENVICalibrateRaster Construct an ENVIRaster from a source raster that has been calibrated to radiance, top-of-atmosphere (TOA) reflectance, or brightness temperatures.
ENVIFirstOrderEntropyTextureRaster Construct an ENVIRaster from a source raster where first-order entropy texture has been computed on an input raster.
ENVIGeoJSON This is a wrapper around a GeoJSON representation that is stored as an IDL Hash. It is required input for tasks such as ENVIGeoJSONToROITask that need a GeoJSON string.
ENVIGridLinesLayer This is a reference to an ENVIGridLinesLayer object. Also see the ENVIView::CreateGridLinesLayer method below.
ENVILabelEntropyTextureRaster Construct an ENVIRaster from a source raster where a first-order entropy texture has been computed on a the label bands of a rank-strength-texture raster.
ENVILayerStackRaster Create a layer-stacked ENVIRaster from source rasters that have been regridded to a common spatial grid. The source rasters can be band groups within a metaspectral dataset (such as Landsat, ASTER, or Sentinel-2), or they can come from different raster files.
ENVIMirrorRaster Construct an ENVIRaster from a source raster that is reflected (flipped) horizontally, vertically, or both.
ENVIRankStrengthTextureRaster Construct an ENVIRaster from a source raster for which rank-based strength and label texture metrics have been computed.
ENVIRestoreObject This function restores a persistable object from disk, including its saved properties and parameters.
ENVIRGBToHSIRaster Construct an ENVIRaster from a source raster that has been transformed from a red/green/blue (RGB) to hue/saturation/intensity (HSI) color space.
ENVITaskParameter::QueryProperty Return information about the properties of the parameter.
ENVITransposeRaster Construct an ENVIRaster from a source raster that has been transposed.
ENVIUI::CreateFromDialog Display a dialog containing a specified user interface (UI) element for selecting object or task parameters. It allows you to preview a user interface element when writing API scripts and custom tasks.
ENVIUI::SelectROI Display a dialog for selecting regions of interest (ROIs).
ENVIView::CreateGridLinesLayer Create grid lines to overlay on a raster or vector layer.


New Classification Routines

Object Description
ENVIApplyScaleOffsetToExamples This function applies a gain and offset to the examples in an ENVIExamples object. Its purpose is to get the data into a consistent range of values prior to classification.
ENVICalculateConfusionMatrixFromRaster This function returns a reference to an ENVIConfusionMatrix object computed from a classification raster and truth regions of interest (ROIs).
ENVIClassifyRaster This function classifies a raster using a trained classifier.
ENVIConfusionMatrix This function returns a reference to an ENVIConfusionMatrix object, which contains a confusion matrix and classification accuracy metrics that indicate how well a classifier performed.
ENVIEvaluateClassifier This function takes in truth examples, truth class values, and a classifier. It uses the classifier and truth examples (ignoring the class values) to calculate predicted class values. Then it computes a confusion matrix and accuracy metrics between the truth and predicted class values.
ENVIExamples This is a reference to an ENVIExamples object, which contains examples and class values used as input to the training method of a classification trainer and to evaluate the performance of a classifier.
ENVIExtractExamplesFromRaster This function creates an ENVIExamples object that contains examples, class values, and other properties from an input raster and regions of interest (ROIs).
ENVIGradientDescentTrainer This function uses a Gradient Descent algorithm to train a classifier that reports a gradient; for example, Softmax Regression.
ENVIIterativeTrainer This function uses an iterative loop to train a classifier that knows how to update its own weights; for example, Support Vector Machine (SVM).
ENVIShuffleExamples This function shuffles examples and class values from an ENVIExamples object in order to create a random distribution of training data used for classification. Random ordering of the examples is important if the examples are split into multiple sets (such as training and evaluation sets).
ENVISoftmaxRegressionClassifier This function classifies a dataset using a Softmax regression classifier.
ENVISplitExamples This function splits examples and class values from an ENVIExamples object into two sets of examples and class values. A common scenario is to use one set for training a classifier and the other set for evaluation.
ENVISVMClassifier This function classifies a dataset using a support vector machine (SVM) classifier.
ENVITrainClassifier This function trains a classifier. It updates the original classifier instead of creating a new output classifier.


Backward-Compatibility Issues

The IGNORE_VALIDATE property for ENVITasks has been deprecated and has no effect on task behavior. All task property values are validated when they are set, and they throw an error with bad input.

The ENVITask::Validate method has deprecated.

The CHOICE_LIST, MAX, and MIN properties of ENVITaskParameter may not be present when the TYPE property is set to certain values. Use the QueryProperty method to find out if these properties are available.

In custom task templates, the version key has changed to schema with the ENVI 5.4 release. Its only valid value is envitask 3.0. You can still specify version but its value must be 5.3.2 or earlier.

For the TYPE property in ENVITaskParameter, one-element arrays are no longer converted to scalars (and vice-versa).

Fixed Issues in ENVI

ENVI-68871 RPC orthorectification of GeoEye geo-stereo products produced incorrect output.
ENVI-70472 ENVI could not read specific PCI .pix files.
ENVI-70673 The NDVI tool crashed with AVIRIS data when the sensor type was not set to AVIRIS in the header file.
ENVI-70708 The ENVIRPCOrthorectificationTask routine did not preserve acquisition time metadata.
ENVI-70712 Using the Reproject GLT with Bowtie Correction tool with MODIS imagery resulted in line artifacts.
ENVI-70755 The EXTERNAL_TYPE keyword to ENVI::OpenRaster did not support SRTM DEM files.
ENVI-70790 ENVI did not read and display Sentinel-2 data correctly that was downloaded from the Sentinel Scientific Data Hub.
ENVI-70791 ENVI computed ROI statistics incorrectly from Gaofen-1 and -2 datasets.
ENVI-70814 Nearest-neighbor pixel resizing did not work as expected.
ENVI-70816 ENVIGainOffsetRaster did not accept scalars for gain/offset values in a single-band raster.
ENVI-70817 ENVI did not save WorldView-3 SWIR NITF data to NITF format.
ENVI-70819 Confusion matrices used XSTART and YSTART values instead of map information to determine image overlap.
ENVI-70820 ENVI did not preserve the data ignore value when writing files to TIFF format.
ENVI-70825 The RPCOrthorectification routine did not preserve acquisition time in TIL files.
ENVI-70832 The Export View to Image File menu option produced tiling artifacts if the view was rotated.
ENVI-70835 Gram-Schmidt pan sharpening did not work correctly when the low-resolution raster belonged to a time series.
ENVI-70838 ENVI did not read ASTER Level-1A data as a recognized ASTER product.
ENVI-70840 ENVI Classic did not support the Web Mercator map projection.
ENVI-70846 Entering a GCP with invalid coordinates issued the wrong error message in Rigorous Orthorectification.
ENVI-70853 ENVI issued an error message upon running Class Statistics on a new class.
ENVI-70855 The ROI Tool flickered between tabs after removing a raster and adding one to the Layer Manager.
ENVI-70856 The Query Spectral Indices dialog issued error messages.
ENVI-70861 ENVI could not open Enterprise geodatabase files through the API.
ENVI-70870 The ENVIReprojectRaster routine lost classification information.
ENVI-70873 A table in the THOR Material Identification help topic was incorrect.
ENVI-70887 The Layer Stacking tool did not respect data ignore values when the input rasters had the same values.
ENVI-70890 The Rigorous Orthorectification tool could not orthorectify ADS40 data.
ENVI-70892 The NDVI tool used Landsat TM default bands with WorldView-2 data.
ENVI-70900 The correct order of geo points metadata was not documented.
ENVI-70905 The DEM Extraction tool forced users to reduce the parallax to a certain threshold before allowing them to proceed through the workflow.
ENVI-70909 With ENVIQueryTaskTask, the order of the returned parameters did not match the order in the dynamic user interface.
ENVI-70920 The Seamless Mosaic tool failed with two calibrated AVHRR images.
ENVI-70921 The QUAC tool was inconsistently setting some pixels to NoData values.
ENVI-70922 The Spectral Indices tool did not always honor NoData pixel values.
ENVI-70929 ENVI did not ignore bad pixel values in NPP VIIRS data, so the data did not geolocate correctly.
ENVI-70930 Georeferenced NPP VIIRS data with nearest-neighbor interpolation showed unexpected pixel values.
ENVI-70936 Sentinel-2 spectral response data was incorrect.
ENVI-70942 Users could not access Sentinel-2 acquisition time metadata in the ENVI API.
ENVI-70948 ENVI did not restore some files in the Example-Based Feature Extraction workflow.
ENVI-70960 SPEAR pan-sharpening results did not export to NITF format.
ENVI-70961 The Image Registration workflow froze during processing.
ENVI-70965 The Band Animation tool did not resize correctly when displaying long band names.
ENVI-70976 The default value was 1 for the "Degree of Kernel Polynomial" parameter for Support Vector Machine classification in Feature Extraction. A better value is 2.
ENVI-70985 ENVI did not generate tie points with virtual rasters.
ENVI-70988 ENVIMaskRasterTask did not assign floating-point numbers with non-zero decimal digits as the data-ignore value.
LIDAR-68745 Generated DEMs contained some artifacts.
LIDAR-69071 ENVI could not write LAS files larger than 2 GB.
LIDAR-69077 The "Save This Project as" option did not work in the Project Properties dialog.
LIDAR-69078 The "Load Palette" drop-down list was empty in the Height Palette editor.
LIDAR-69097 Changing the Products Folder was difficult in the processing dialog because the cursor jumped to the end of the line.
LIDAR-69100 The Point inspector did not give the correct intensity values in QA mode.
LIDAR-69101 Generated DEMs were incorrect when reprojection was applied on output.
LIDAR-69107 Parts of the Navigate window were missing in the ENVI LiDAR application on Windows 10 platforms.
LIDAR-69108 Simultaneous processing of trees and powerlines yielded poor results.
LIDAR-69109 The UTM Zone calculation was incorrect in the ENVI LiDAR application.
LIDAR-69110 Products pushed from ENVI LiDAR to ENVI opened a new session instead of using the current session.
LIDAR-69114 ENVI LiDAR crashed if you reprocessed a dataset with some of the previous results locked by another program.
LIDAR-69115 You could not select NAD83 as the datum for UTM projections in the Convert Format dialog or Select Coordinate System dialog.
LIDAR-69116 Exported products from the Southern Hemisphere were not correctly georeferenced.
LIDAR-69122 The File > Open menu option in ENVI LiDAR did not remember the folder containing the last opened dataset.
LIDAR-69124 IDL crashed when reading.LAZ files from AgerPoint, using the ENVI API.
ENVI-69146 IDL crashed upon exiting the ENVI LiDAR viewer.

IDL 8.6

See the following sections:

IDL Supported Platforms

Platform Hardware Operating System Supported Versions
Windows Intel/AMD 64-bit 7 SP1, 8, 10
Macintosh Intel 64-bit OS X 10.10, 10.11 (El Capitan)
Linux Intel/AMD 64-bit Linux Kernel 2.6.32, glibc 2.12
  • Supported versions indicate that IDL was either built on the lowest version listed or tested on that version. You can install and run IDL on other versions that are binary-compatible.
  • IDL Help requires an HTML5-compatible browser.
  • An X-Windows manager is required for Macintosh. IDL was tested using XQuartz 2.7.11.
  • On Windows, installers for 32-bit are no longer available. However, the 32-bit binaries are still provided with the 64-bit Windows installer so that you can launch IDL in 32-bit mode on 64-bit Windows systems. You can find the 32-bit versions of IDL in the IDL program group under Windows Start-->Programs-->IDL x.x-->32-bit (where x.x is the IDL version).

New Routines and Features in IDL

For information on new routines and features, see "What's New" in the IDL Help.

Backward-Compatibility Issues in IDL

Automatic Check for Updates IDL 8.6: By default, every 7 days IDL will automatically check for updates on startup. If a new version is available, IDL will report this in the output console. You can enable or disable this feature using the new IDL_UPDATE_CHECK preference or by using the Preferences dialog in the IDL Workbench.
New Licensing Method IDL 8.6: IDL licensing is now managed through a 3rd-party solution from Flexera Software. You obtain the license through a portal hosted by Flexera, then you can choose to activate the license on a license server or on an individual node-locked machine. Details about licensing IDL are documented in a standalone help topic in your IDL installation.
LMGR Changes IDL 8.6: with the new IDL licensing, several keywords to the LMGR licensing function have changed. In particular, the DEMO, EMBEDDED, EXPIRE_DATE, FORCE_DEMO, INSTALL_NUM, LMHOSTID, SITE_NOTICE, STUDENT, and TRIAL keywords have been deprecated. These keywords are still accepted but are quietly ignored and return 0 as the result.
macOS DYLD_LIBRARY_PATH IDL 8.6: Recent macOS releases do not allow users to modify DYLD_LIBRARY_PATH. Because of this, the Python Bridge no longer requires you to set DYLD_LIBRARY_PATH (see IDL-69603 below). To avoid problems running IDL you should remove any DYLD_LIBRARY_PATH settings from your bashrc or cshrc shell scripts.
Graphics Font Improvements IDL 8.6: The graphics functions now use the DejaVuSans font by default. This produces better-looking text in plots and visualizations. If desired, you can use the FONT_NAME property to switch back to the default "Helvetica" font.
Python-to-IDL Bridge Error Handling IDL 8.6: In the Python-to-IDL bridge, when an IDL command encounters a syntax or runtime error, the bridge will now throw an IDLError exception and halt execution of your Python script. To take advantage of the new error handling, when you import the "idlpy" library into Python you should now import the entire module:

from idlpy import *
Python Bridge Data Type Conversions IDL 8.6: To improve consistency between IDL and Python, some of the data type conversions have changed. Python OrderedDict is now converted to an IDL Ordered Hash and vice versa, to preserve the key order. IDL structures (which used to be converted to Python dicts) are now converted to Python OrderedDict, to preserve the structure tag order.
Solaris Sparc Feature Support IDL 8.6: Support for Dataminer, DICOM Read/Write (IDLffDicomEx), and IDLgrMPEG has been dropped on Solaris Sparc.
Solaris x86 Feature Support IDL 8.6: Support for IDLgrMPEG has been dropped on Solaris x86.
_REF_EXTRA as a keyword IDL 8.5.2: In previous versions, if you used _REF_EXTRA as a keyword when calling a routine, IDL would quietly put the keyword into the _EXTRA structure for the called routine. This would lead to unexpected and incorrect behavior because the keywords would not actually be passed through as "true" keywords. IDL will now throw a syntax error at compile time if it encounters _REF_EXTRA as a keyword to a routine. To fix your code, you should pass the _ref_extra value using _EXTRA when calling your subroutine. For example:

function MyRoutine, _REF_EXTRA=extra
    MySubroutine, _REF_EXTRA=extra
    MySubroutine, _EXTRA=extra
end
!VERSION BUILD_DATE Change IDL 8.5.2: For the !VERSION system variable, the BUILD_DATE field has been changed to include the build identifier. The field now has the format "MMM DD YYYY (REVISION)", where MMM is the month name, DD is the date (with an extra space for dates less than 10), YYYY is the year, and REVISION is the build identifier. For example: "Feb 29 2016 (306707)".
IDL Workspace Name Change IDL 8.5.1: The name of the IDL Workspace used by the Workbench has been changed from IDLWorkspace85 to just IDLWorkspace. After installation, you should go into your home directory and rename the IDLWorkspace85 folder to IDLWorkspace.
Default Value Changed for Tile Cache Size Preference IDL 8.5.1: The default value for the IDL_GR_TILECACHESIZE preference has been changed from a default of 512 MB to 0. A value of 0 indicates an "unlimited" tile cache size: memory usage will continue to grow as more graphics tiles are cached. You can set this preference in the IDL Workbench Preferences dialog.

Live Tools have been removed IDL 8.5: The obsolete Live Tools routines have been removed from the IDL installation. These routines have been obsolete since IDL 6.2. If you have code that uses the Live routines, you should migrate your code to use the new function graphics routines.

Code SAVE Files Created with IDL 8.3 Cannot be Restored in Previous Versions IDL 8.3: The IDL Save file revision level was increased from 11 to 12 because of the new colon operator (see the "What's New in IDL 8.3" Help topic). Save files that contain IDL code and that are created with IDL 8.3 and later versions cannot be restored in previous versions of IDL. If you want to distribute a code SAVE file to other users who may only have IDL 8.0, IDL 8.1, or IDL 8.2, you should create your SAVE file using one of these earlier IDL versions.



Note: This change does not affect older Code SAVE files or SAVE files that contain data.

IDL Core Preference Migration IDL 8.0: IDL does not automatically migrate IDL core preferences between releases. After upgrading IDL to a new version, you should:

Reset any IDL core preferences you want to use with the new IDL version by using the Preferences dialog or the PREF_SET routine.
Additional Documentation is Provided In Acrobat (PDF) Documents IDL 8.0: The online help contains all the routines and functions in the IDL language. Documentation that does not exist in the online help is provided in fully searchable PDF format as part of the IDL installation, located in <install_dir>\help\pdf.


Fixed Issues in IDL

IDL-68887: NCDF_VARGET segfaults on user's file There was a mismatch in IDL's wrapper code between the input variable and the output dimensions. NCDF_VARGET now works correctly with the user's data file.
IDL-69346: OpenSSL vulnerabilities The IDL OpenSSL library has been upgraded to 1.0.2h; the IDL curl library has been upgraded to 7.49.1.
IDL-69022, IDL-69451, IDL-69491: Function Graphics Legend Issues Various issues with plot legends have been fixed, including sizing with non-ASCII characters, the number of plot symbols, and vertical/horizontal alignment.
IDL-69431: IDLffDICOM crashes IDL when accessing file with unsupported JPEG-LS compression (1.2.840.10008.1.2.4.81) IDLffDICOM now correctly reports that these files are unsupported and returns without crashing.
IDL-69476: IDL crashes when NaNs are passed to QHULL procedure IDL now throws an error if QHULL encouters NaN values.
IDL-69479: POLAR_CONTOUR fails with double precision data POLAR_CONTOUR should now be able to handle double-precision data.
IDL-69485: Workbench seems to ignore Java CLASSPATH IDL will correctly report the value of the "java.class.path" property.
IDL-69493: object cleanup clears math error status IDL will no longer clear the math error status when returning from a user's cleanup method.
IDL-69501: MAKE_RT on Mac OS X uses wrong path IDL no longer calls "xterm -e", and MAKE_RT will now run properly.
IDL-69502: Butterworth function memory usage BUTTERWORTH now uses much less memory and is significantly faster.
IDL-69506: Unable to call CALL_FUNCTION and CALL_PROCEDURE with IDL python object You can now use CALL_FUNCTION, CALL_PROCEDURE, and EXECUTE with the Python-to-IDL Bridge.
IDL-69513: Direct Graphics render very slowly on Mac OS X with XQuartz 2.7.9 and earlier This was due to a bug in XQuartz. Upgrading your Mac to XQuartz 2.7.11 will fix the issue.
IDL-69520: IDL TIMESTAMP and SYSTIME(with /JULIAN) have incorrect fractional seconds TIMESTAMP and SYSTIME(with /JULIAN) now have the correct fractional seconds. Also, SYSTIME will now work properly beyond the 19 January 2038 UNIX millenium bug.
IDL-69527: Content Assist with Unicode characters can freeze the Workbench Content Assist can now process Unicode characters.
IDL-69535: TOARRAY method for LIST fails with arrays of structures List::ToArray now works correctly with arrays of structures.
IDL-69539: VECTOR fails with three element arrays VECTOR now works correctly with three element arrays.
IDL-69541: READ_CSV: Throws Illegal subscript error with empty columns READ_CSV now properly handles empty columns.
IDL-69548: READ_PNG has a bug that causes it to fail to read some PNG images The IDL PNG library was throwing errors for files that do not follow the PNG spec. The library now gracefully handles these bad files and returns the correct image data.
IDL-69556: NaN values cause images saved as PDF or EPS to be grayscaled The IMAGE function now properly handles images with NaN values.
IDL-69571: Adding attributes to a NCDF file can cause IDL to crash This was only a problem when adding the _FillValue attribute while in "REDEF" mode. It is due to a NetCDF library bug. The NCDF_ATTPUT documentation was updated with this information. Workaround: Be sure to set _FillValue during the initial file creation.
IDL-69583: SURFACE with ZLOG plots off of the canvas space The SURFACE, PLOT3D, and CONTOUR functions now handle the ZLOG property.
IDL-69603: IDL to Python bridge fails on Mac OS X 10.11 (El Capitan) IDL now ships with a "setup.py" script that automatically sets the proper library paths, and avoids having to set the DYLD_LIBRARY_PATH. See the IDL Python bridge documentation for install instructions.
IDL-69605: Bug in MAP function when using Polar Stereographic and FILL_COLOR The MAP function now correctly displays polar stereographic projections.
IDL-69614: MESH_VALIDATE cast doubles as floats If double-precision inputs are given to MESH_VALIDATE, the routine uses double-precision for calculations and returns double-precision results.
IDL-69615: New Debian-based Linux releases need libXp to run IDL Debian-based Linux releases (such as Ubuntu 16.04) do not come with libXp and no longer include this package in their online repositories. IDL now ships with libXp on Linux.
IDL-69643: List::ToArray with result array greater than 231 elements fails List::ToArray now successfully returns an array of any size up to your memory limits.


Known Problems in IDL

All Platforms

IDLffVideoWrite Cannot Create Animated GIFs Because of vendor issues in the ffmpeg library, IDLffVideoWrite cannot create animated GIF files. Use the WRITE_GIF routine instead.
Installation error on Windows platforms: "Key not valid for use in specified state" Some customers have reported this error during the installation process. It is caused by a Microsoft update (KB2918614), which affects the Windows installer service. Workaorund: uninstall this Microsoft update. For more information, see the Microsoft Community website.
IDL-42545: WIDGET_TREE Drop EventCan Cause IDL to Crash if an Error Exists in the DRAG_NOTIFY Callback Routine If there is an error (such as an undefined variable) in the custom DRAG_NOTIFY callback routine, IDL may freeze or crash since the error halts execution in the child routine and IDL cannot return to the calling function.

Workaround
: Handle potential problems in the callback routine by including CATCH statements in your code. See the documentation topic "Responding to Drag Notifications (Callbacks)" for more information.
IDL-55393: Breakpoints in Files Opened via Links, Shortcuts, or Alternate Paths To improve performance, IDL always compiles the first version of a file it finds in its path. If you open a file in the editor and set a breakpoint, then compile from a version of the same file with a different path, IDL will not assume that the two files are the same. As a result, IDL will not stop at the breakpoint set in the second file. Alternate paths to the same file can be constructed via UNIX links, Windows shortcuts, mapped drives, or UNC paths.

Workaround: Make sure that the full path to the file in which you set the breakpoint is the same as the full path to the compiled file. If you use the IDL Workbench, compiling using the Workbench menus or toolbars will ensure that the same path is used for compilation and debugging.
IDL-49236: Deleting a Project or a Directory Within a Project While the Project Is Open Causes Exceptions when the Workbench Exits When a project file or a directory within a project is deleted from outside the Workbench (for example, from Windows Project Explorer) while the project is open, a warning message may be issued while the Workbench is still running. An exception may occur on exiting the Workbench.
IDL-51318, IDL-51322: Formatter Preferences for Keywords and Class Names are Ignored by the Source→Format Command The keyword and class name formatting preferences set on the IDL Formatter preference page are not applied when the code is highlighted and the Source > Format command is selected.
IDL-58532: Default UTF-8 Encoding is Corrupting .pro Files with Non-English Characters Non-English characters are converted to symbols when imported into the IDL Workbench. Importing a .pro file containing non-English characters in IDL permanently corrupts the file with bad characters. Workaround: Before opening a file or before saving an open file, change the file encoding to ISO-8859-1 for Spanish or German, or to Shift-JIS for Japanese.

To change the encoding for an individual file, open the file in an IDL editor, then select File > Properties. In the Resources dialog box, change the 6Text file encoding preference.

To change the default encoding preference for IDL, select Window > Preferences. In the Preferences dialog box, choose General > Workspace. Change the Text file encoding preference.

IDL-57214, IDL-58285, IDL-58839: IDL Crashes on Macintosh and UNIX When Performing Graphics Operations Where GL Drivers are Present Possible workaround: Rename the gl_driver.so file (located in bin\bin.<platform>) to gl_driver.ba.
IDL-60473: Accessing Preferences while IDL is Busy May Hang Workbench Trying to change Preferences while IDL is busy (for example, when a lengthy command is being executed) may cause the Workbench to hang.
IDL-63902: Using the IDL_Java Bridge Causes the Workbench to Ignore the Current Directory in CLASSPATH Workaround: Copy the .class file to any other directory explicitly listed in CLASSPATH.

Macintosh Platforms

IDL-60599: On Macintosh OS, Only One Workbench Instance Can Run at a Time Even if the preference "Prompt for workspace on startup" is set and multiple workspaces are available, only one instance will run.

Workaround: Run the Workbench from the init script located in the idlde.darwin.x86_64.app/Contents/MacOS directory of your IDL installation.
IDL-64149: Widget Interface Loses Focus When Selection is Made in a Drop-down List Workaround: In X11 Preferences, enable "Click-through Inactive Windows"
IDL-67319, IDL-67320: Graphics Rendering Causes Memory and Device Errors XQuartz version 2.7.2 causes these error messages when creating IDL Graphics. When IDL is installed, the Macintosh operating system may direct you to install the most recent version of XQuartz.

Workaround: Use the latest version of XQuartz.
IDL-68845: Launching the IDL Workbench on Macintosh May Prompt Installation of Java v1.6 If you launch the IDL Workbench on Macintosh without first having Java v1.6 installed, the Macintosh OS may prompt you to install it first. This will happen even though IDL includes Java v1.7. For more information on this issue, please see: http://stackoverflow.com/questions/11919004/eclipse-4-2-mac-os-x-10-8-ml-and-java-6



Workaround: Install the Macintosh version of Java 1.6 when prompted. The Workbench will continue to use Java v1.7 as it was installed with IDL. Another workaround is to add a softlink as sudo from Frameworks 1.6 -> 1.7 as described in the link above.

Windows Platforms

IDL-27165: Using DIALOG_PICKFILE with the MULTIPLE Keyword Limits the Maximum nFiles or Maximum nBytes for a File Array When attempting to open multiple files using DIALOG_PICKFILE, the operating system has a maximum buffer of 32767 bytes.
IDL-48454: WIDGET_TIMER Can Cause Applications To Freeze Until An Event Is Sent To The Application WIDGET_TIMER events fail after 10 events. This problem happens in the following cases:
  • Timer events are chained together by setting the next timer within the handling of the current timer and before the "work" section of the event handler is performed.
  • The next timer goes off during the current timer event processing (for example, during a lengthy calculation).
Workaround: Chain timer events by setting the next timer after any computations are completed. For smoother performance, set the next timer based on how long the computations execute, which accounts for variances in machine speed. For example, to fire the timer once every second, set the next timer to 1.0 - (time to perform computation)
IDL-49641: Updating Edited Variable Values is Slow While IDL is Busy or Blocking If you edit a variable value using the IDL Workbench Variables view while IDL is busy (for example, when a lengthy command is being executed, or when a widget application is blocking), it may appear that the variable is not being updated. The new variable value is displayed when IDL is no longer busy. (Related to ID 49604.)
IDL-61842: IDL on Windows 7 May Have Unpredictable Behavior When Using Graphics The cause may be graphics cards that are unsupported in Windows 7. Please see a list of supported graphics cards on the Microsoft.com website. You may want to upgrade your graphic driver or switch the IDL Graphics preference to use software rendering.
IDL-66357: Installing into a Directory Named with Multibyte Characters May Cause the IDL Workbench to Not Launch If you are installing IDL into a directory that contains multibyte characters, path names in the idlde.ini file may be truncated. 

Workaround for 32-bit systems: In the  <install_dir>\IDLxx\bin\bin.x86\idlde.ini file, edit the following lines:

Line 2 should read: <install_dir>\IDLxx\bin\bin.x86\jre\bin Line 14 should read: Dosgi.sharedConfiguration.area=<install_dir>\IDLxx\bin\bin.x86\configuration Workaround for 64-bit systems:

In the  <install_dir>\IDLxx\bin\bin.x86_64\idlde.ini file, edit the following lines:

Line 2 should read: <install_dir>\IDLxx\bin\bin.x86_64\jre\bin Line 14 should read: Dosgi.sharedConfiguration.area=<install_dir>\IDLxx\bin\bin.x86_64\configuration
IDL-66363: Executable for a C++ Project that Uses COM_idl_connect.tlb Needs to be in \bin directory to Run If you create a C++ project that uses COM_idl_connect.tlb, the .exe must be installed in <install_dir>\bin\bin.x86 or <install_dir>\bin\bin.x86_64 to run. Alternatively, you can add the install path to the PATH environment variable.

UNIX Platforms

IDL-14221, IDL-30564: DIALOG_PRINTERSETUP Causes IDL to Hang When Called from a Modal Widget This is a known problem with no known workarounds except to use DIALOG_PRINTERSETUP with a non-modal widget.
IDL-41964: IDL Does Not Run in Security Enhanced Linux Some recent versions of Linux implement mandatory access control in the Linux kernel using the Linux Security Modules framework. IDL will not run in such an environment without a modification to the security context for the IDL binaries. Workaround: Either disable SELinux or modify the default security context for IDL. See Help Article 3092 for details.
IDL-43301: Upper Left Corner of Tree Widget is Never a Valid Drop Zone When the ability to drag and drop tree widget nodes has been enabled, the UNIX tree widget does not recognize the upper left corner of the widget as a valid drop zone. This area typically extends over the icons of the first two nodes (but not the labels). This is a vendor issue. You can drop items onto the first two nodes by moving the cursor over the labels instead of the icons.
IDL-55427: IDL Dataminer Requires latest libstdc++ Third-party libraries used by the IDL Dataminer module require a library that may not be available by default on some newer Linux systems. Attempting to run the IDL Dataminer may cause IDL to issue an error similar to the following:

% DLM_LOAD: Error loading sharable executable. Symbol: IDL_Load, File =/rsi/qa/unix/idl71/bin/bin.linux.x86_64/idl_dataminer.so libstdc++.so.5: cannot open shared object file: No such file or directory

You will need to install the appropriate libstdc++ compatible library for your platform.
IDL-57381: Missing 64-bit Library IDL requires a 64-bit version of libXp. Red Hat-based Linux distributions such as RHEL and Fedora may not install this library by default. On Red Hat you can obtain this library using the following command:

yum install libXp.x86_64
IDL-58106: DIALOG_PRINTERSETUP Crashes on Linux 64-bit running in the Workbench Calling DIALOG_PRINTERSETUP from the Workbench causes 64-bit IDL to crash. Workaround: To set up a printer, launch IDL in command line mode and run DIALOG_PRINTERSETUP. Once you have set up a printer, the information is cached in your home directory. Then printed IDL programs will go to the appropriate printer regardless of whether you are running the Workbench or command line IDL.
IDL-58460: IDL Graphics Cause Crash in Ubuntu Versions of UNIX Recent versions of Ubuntu and other Debian-based Linux distributions may not ship with the libstdc++.so.6 library, which is required by Xerces. You will need to download this library and install it in the /bin/bin.linux.x86 directory of your IDL installation. (On 64-bit installations, this directory is /bin/bin.linux.x86_64.)
IDL-59497: IDL Graphics Fail with Software Rendering on Linux IDL graphics in the Workbench in software rendering mode may fail on Linux machines if the display is local and Xinerama is not enabled. Workaround: Configure Xinerama on the system or run from the IDL command line.
IDL-68960, IDL-68965: Java-IDL Bridge with Drawable Windows may not render properly with software rendering When using the Java-IDL Bridge with drawable windows and software rendering, the window may not display anything. Note that this affects the example code in the IDL documentation (IDLWindowExample.java and IDLgrWindowExample.java).

Workaround: If nothing appears in the drawable window, change to hardware rendering by setting your drawable object's RENDERER property to zero (i.e., RENDERER=0).
IDL-69332: Selecting the Help Preference Can Crash the IDL Workbench on Some Linux Systems Selecting Window > Preferences > Help on some Linux systems may cause the IDL Workbench to crash. Workaround: Open the idlde.ini file and find the -vmargs line. Add the following new line after the -vmargs line:

-Dorg.eclipse.swt.browser.DefaultType=mozilla.