Often we need to apply the same set of functions to multiple files. For example, you may want to import a collection of Landsat images, apply radiometric calibration to Top of Atmosphere reflectance, and subset the images to your study area. Or perhaps you want to import and stack MODIS day-time Land Surface Temperature (23 per year) for five years. Then repeat this process for the night-time temperatures. These can be done individually in ENVI but may take a lot of time and effort .
The ENVI Application Programming Interface (API) can be used to automate many of these repetitive tasks, performing many steps on a large number of files in a batch mode. These programs (scripts) are based on the IDL programming language and are run in the IDL environment, either by loading the ENVI+IDL program or simply loading IDL by itself. You can manipulate the ENVI GUI via scripts, or run the scripts without even loading ENVI. Please see a member of the YCEO staff to learn more.
The ENVI API uses an object-oriented design to operate on data and manipulate the environment. Use the ENVIRaster object to open a file, or the View function to add a new View in the GUI. There are a large number of ENVI Tasks that can be called to perform many operations such as stacking layers, classifying an image, or reprojecting a raster. The API also uses many IDL routines to control looping and other methods of flow control, file searching, directory navigation, etc.
Learn more about programming in the ENVI Help section under Contents | Programming | Programming Guide. This provides a good introduction and a number of examples to help you get started. Harris Geospatial Solutions, ENVI’s parent company, has much more detailed information on their site. Learn about the ENVI Task objects at: http://www.harrisgeospatial.com/docs/ENVITask.html
Detailed function specifications can be found at: http://www.harrisgeospatial.com/docs/routines-2.html
For those wishing to dig even deeper, check out the IDL Programming guide at: http://www.harrisgeospatial.com/docs/idl_programming.html