ENVI 5.4 Release Notes
See the following sections:
See the following sections:
ENVI System Requirements
||7 SP1, 8, 10
||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:
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.
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.
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.
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.
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.
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.
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.
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.
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 (
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.
||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.
||Color a point cloud using raster data.
||Create a 2D array of subrects based on a specified distance. A subrect is a bounding box used to spatially subset a raster.
||Create a 2D array of subrects based on a specified number of pixels.
||Create a 2D array of subrects based on a specified number of tiles.
||Create a 2D array of subrects based on the spatial extent of individual vector records.
||Separate a raster into tiles based on a specified distance.
||Separate a raster into tiles based on a specified number of pixels.
||Create an array of rasters based on subrects.
||Separate a raster into tiles based on a specified number of tiles.
||Separate a raster into tiles based on the spatial extent of individual vector records.
||Export multiple virtual rasters to a specified directory on disk.
||Export a raster to ENVI file format.
||Compute first-order entropy texture on a raster.
||Compute first-order entropy texture on the label bands of a rank-strength-texture raster.
||Flip a raster horizontally, vertically, or both.
||Return a hash where each key is the task name and each task name key contains a hash of the task's properties.
||Compute label rank and strength texture metrics on a raster.
||Transform the color space of a raster from red/green/blue (RGB) to hue/saturation/intensity (HSI).
|Perform RPC orthorectification using a digital surface model (DSM) generated from a dense image matching method.
||Interchange rows with columns in a raster.
New Classification ENVITasks
||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.
||This task returns a reference to an ENVIConfusionMatrix object computed from a classification raster and truth ROIs.
||This task classifies a raster using a trained classifier.
||This task creates a Gradient Descent trainer that can train a classifier using ENVITrainClassifierTask.
||This task creates an iterative trainer that can train a classifier using ENVITrainClassifierTask.
||This task creates a Softmax Regression classifier.
||This task creates a Support Vector Machine (SVM) classifier.
||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.
||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).
||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).
||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.
||This task trains a classifier. It updates the original classifier instead of creating a new output classifier.
New Objects and Methods
||Restore an ENVI session file.
||Create an ENVI session file that specifies a layout configuration, files loaded into views, and their properties.
||Construct an ENVIRaster from a source raster that has been calibrated to radiance, top-of-atmosphere (TOA) reflectance, or brightness temperatures.
||Construct an ENVIRaster from a source raster where first-order entropy texture has been computed on an input raster.
||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.
||This is a reference to an ENVIGridLinesLayer object. Also see the ENVIView::CreateGridLinesLayer method below.
||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.
||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.
||Construct an ENVIRaster from a source raster that is reflected (flipped) horizontally, vertically, or both.
||Construct an ENVIRaster from a source raster for which rank-based strength and label texture metrics have been computed.
||This function restores a persistable object from disk, including its saved properties and parameters.
||Construct an ENVIRaster from a source raster that has been transformed from a red/green/blue (RGB) to hue/saturation/intensity (HSI) color space.
||Return information about the properties of the parameter.
||Construct an ENVIRaster from a source raster that has been transposed.
||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.
||Display a dialog for selecting regions of interest (ROIs).
||Create grid lines to overlay on a raster or vector layer.
New Classification Routines
||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.
||This function returns a reference to an ENVIConfusionMatrix object computed from a classification raster and truth regions of interest (ROIs).
||This function classifies a raster using a trained classifier.
||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.
||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.
||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.
||This function creates an ENVIExamples object that contains examples, class values, and other properties from an input raster and regions of interest (ROIs).
||This function uses a Gradient Descent algorithm to train a classifier that reports a gradient; for example, Softmax Regression.
||This function uses an iterative loop to train a classifier that knows how to update its own weights; for example, Support Vector Machine (SVM).
||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).
||This function classifies a dataset using a Softmax regression classifier.
||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.
||This function classifies a dataset using a support vector machine (SVM) classifier.
||This function trains a classifier. It updates the original classifier instead of creating a new output classifier.
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
||RPC orthorectification of GeoEye geo-stereo products produced incorrect output.
||ENVI could not read specific PCI .pix files.
||The NDVI tool crashed with AVIRIS data when the sensor type was not set to AVIRIS in the header file.
||The ENVIRPCOrthorectificationTask routine did not preserve acquisition time metadata.
||Using the Reproject GLT with Bowtie Correction tool with MODIS imagery resulted in line artifacts.
||The EXTERNAL_TYPE keyword to ENVI::OpenRaster did not support SRTM DEM files.
||ENVI did not read and display Sentinel-2 data correctly that was downloaded from the Sentinel Scientific Data Hub.
||ENVI computed ROI statistics incorrectly from Gaofen-1 and -2 datasets.
||Nearest-neighbor pixel resizing did not work as expected.
||ENVIGainOffsetRaster did not accept scalars for gain/offset values in a single-band raster.
||ENVI did not save WorldView-3 SWIR NITF data to NITF format.
||Confusion matrices used XSTART and YSTART values instead of map information to determine image overlap.
||ENVI did not preserve the data ignore value when writing files to TIFF format.
||The RPCOrthorectification routine did not preserve acquisition time in TIL files.
||The Export View to Image File menu option produced tiling artifacts if the view was rotated.
||Gram-Schmidt pan sharpening did not work correctly when the low-resolution raster belonged to a time series.
||ENVI did not read ASTER Level-1A data as a recognized ASTER product.
||ENVI Classic did not support the Web Mercator map projection.
||Entering a GCP with invalid coordinates issued the wrong error message in Rigorous Orthorectification.
||ENVI issued an error message upon running Class Statistics on a new class.
||The ROI Tool flickered between tabs after removing a raster and adding one to the Layer Manager.
||The Query Spectral Indices dialog issued error messages.
||ENVI could not open Enterprise geodatabase files through the API.
||The ENVIReprojectRaster routine lost classification information.
||A table in the THOR Material Identification help topic was incorrect.
||The Layer Stacking tool did not respect data ignore values when the input rasters had the same values.
||The Rigorous Orthorectification tool could not orthorectify ADS40 data.
||The NDVI tool used Landsat TM default bands with WorldView-2 data.
||The correct order of
geo points metadata was not documented.
||The DEM Extraction tool forced users to reduce the parallax to a certain threshold before allowing them to proceed through the workflow.
||With ENVIQueryTaskTask, the order of the returned parameters did not match the order in the dynamic user interface.
||The Seamless Mosaic tool failed with two calibrated AVHRR images.
||The QUAC tool was inconsistently setting some pixels to NoData values.
||The Spectral Indices tool did not always honor NoData pixel values.
||ENVI did not ignore bad pixel values in NPP VIIRS data, so the data did not geolocate correctly.
||Georeferenced NPP VIIRS data with nearest-neighbor interpolation showed unexpected pixel values.
||Sentinel-2 spectral response data was incorrect.
||Users could not access Sentinel-2 acquisition time metadata in the ENVI API.
||ENVI did not restore some files in the Example-Based Feature Extraction workflow.
||SPEAR pan-sharpening results did not export to NITF format.
||The Image Registration workflow froze during processing.
||The Band Animation tool did not resize correctly when displaying long band names.
||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 did not generate tie points with virtual rasters.
||ENVIMaskRasterTask did not assign floating-point numbers with non-zero decimal digits as the data-ignore value.
||Generated DEMs contained some artifacts.
||ENVI could not write LAS files larger than 2 GB.
||The "Save This Project as" option did not work in the Project Properties dialog.
||The "Load Palette" drop-down list was empty in the Height Palette editor.
||Changing the Products Folder was difficult in the processing dialog because the cursor jumped to the end of the line.
||The Point inspector did not give the correct intensity values in QA mode.
||Generated DEMs were incorrect when reprojection was applied on output.
||Parts of the Navigate window were missing in the ENVI LiDAR application on Windows 10 platforms.
||Simultaneous processing of trees and powerlines yielded poor results.
||The UTM Zone calculation was incorrect in the ENVI LiDAR application.
||Products pushed from ENVI LiDAR to ENVI opened a new session instead of using the current session.
||ENVI LiDAR crashed if you reprocessed a dataset with some of the previous results locked by another program.
||You could not select NAD83 as the datum for UTM projections in the Convert Format dialog or Select Coordinate System dialog.
||Exported products from the Southern Hemisphere were not correctly georeferenced.
||The File > Open menu option in ENVI LiDAR did not remember the folder containing the last opened dataset.
||IDL crashed when reading.LAZ files from AgerPoint, using the ENVI API.
||IDL crashed upon exiting the ENVI LiDAR viewer.
See the following sections:
IDL Supported Platforms
||7 SP1, 8, 10
||10.10, 10.11 (El Capitan)
||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.
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.
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.
function MyRoutine, _REF_EXTRA=extra
|!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
change does not affect older Code SAVE files or SAVE files that contain
|IDL Core Preference Migration
IDL 8.0: IDL does not
migrate IDL core preferences between releases. After upgrading IDL to a
new version, you should:
Reset any IDL
preferences you want to use with
the new IDL version by using the Preferences dialog or the PREF_SET
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
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
Drop EventCan Cause IDL to Crash if an Error Exists in the DRAG_NOTIFY Callback
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
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.
Opened via Links, Shortcuts, or Alternate Paths
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.
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.
a Project or a
Directory Within a Project While the Project Is Open Causes Exceptions
when the Workbench Exits
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
for Keywords and Class Names are
Ignored by the Source→Format
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.
is Corrupting .pro Files with Non-English Characters
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
In the Resources dialog box, change the 6Text file encoding
To change the default encoding preference for IDL,
select Window >
In the Preferences dialog box, choose General
> Workspace. Change the Text file
|IDL-57214, IDL-58285, IDL-58839: IDL
Crashes on Macintosh
and UNIX When Performing Graphics Operations Where GL Drivers are
Rename the gl_driver.so
file (located in bin\bin.<platform>)
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.
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 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.
Widget Interface Loses Focus When Selection is Made in a Drop-down List
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
you to install the most recent version of XQuartz.
Workaround: Use the latest version of XQuartz.
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
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 ->
as described in the link above.
with the MULTIPLE Keyword Limits the Maximum nFiles or Maximum nBytes
for a File Array
multiple files using DIALOG_PICKFILE, the operating system has a
maximum buffer of 32767 bytes.
Applications To Freeze Until An Event Is Sent To The Application
events fail after 10 events. This problem happens in the following
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)
- 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).
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.)
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.
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
idlde.ini file may be truncated.
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:
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:
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
Alternatively, you can add the install
path to the PATH environment variable.
|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.
Does Not Run in
Security Enhanced Linux
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.
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.
Dataminer Requires latest
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
cannot open shared object file: No such file or directory
You will need to install the appropriate libstdc++
compatible library for your platform.
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
Crashes on Linux 64-bit running in the Workbench
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.
Crash in Ubuntu Versions of UNIX
of Ubuntu and other Debian-based Linux distributions may not ship with
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.)
Graphics Fail with
Software Rendering on Linux
IDL graphics in
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).
If nothing appears in the drawable window, change to hardware rendering
by setting your drawable object's RENDERER property to zero
|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:
© 2016 Exelis Visual Information Solutions, Inc., a subsidiary of Harris Corporation. All Rights Reserved. This information is not subject to the controls of the International Traffic in Arms Regulations (ITAR) or the Export Administration Regulations (EAR). However, this information may be restricted from transfer to various embargoed countries under U.S. laws and regulations.