About the Book

Part of the Practical IDL Programming Web

Practical IDL Programming provides a solid foundation in the fundamentals of procedural programming in IDL. The book presents concise information on how to develop IDL programs that are well structured, reliable, and efficient. The example programs throughout the book demonstrate key concepts and provide functionality that can be immediately applied. In addition, the book offers readers practical tips and advice that they would otherwise only discover after years of experience. The table of contents is available in extended format and brief format.

Source code and sample data

The sample procedures and functions shown in the book are available here in source form. See Chapter 1 of the book for instructions on how to add these programs to your IDL path:

Sample programs: PIP_programs.zip (34 K), PIP_programs.tar.Z (35 K)

Sample netCDF and HDF data files are used in Chapter 4 of the book to demonstrate input and output with standard data formats:

netCDF files: PIP_netcdf.zip (411 K), PIP_netcdf.tar.Z (459 K)

HDF files: PIP_hdf.zip (296 K), PIP_hdf.tar.Z (393 K)


I maintain a list of known errors for the current printing. Please let me know if you find any other errors in the book.

About the Author

I am a researcher in the Space Science and Engineering Center at the University of Wisconsin-Madison, and I have used IDL since 1993. My primary responsibilities are the analysis and visualization of large earth science datasets acquired by NASA satellites and aircraft.

Overview of the Book

I wrote this book because I felt there was a need for an in-depth yet accessible explanation of the fundamentals of procedural IDL programming, showing how to go from the basics of the language to real world applications. This meant starting at the beginning, explaining the data types supported by IDL and their dynamic nature; the means for creating, indexing, and manipulating arrays; expressions and arithmetic operators, Boolean and relational operators, and structures and pointers. The book then proceeds to explain the mechanics of constructing IDL programs, including detailed information about control statements, parameter and keyword passing and checking, global variables, and error handling. Next, the input and output of ASCII (text), binary, netCDF, and HDF data is explained in detail. The direct graphics system in IDL is described next, with particular attention paid to the differences between 8-bit and 24-bit display modes, followed by a troubleshooting guide for display problems.

Once the book has covered the foundations of IDL programming, it goes on to explain how IDL programs are constructed to solve real world problems. A detailed explanation of data plotting is given, including plot types, positioning, and customization. Tried and tested methods for creating contour, surface, and shaded surface plots are described, followed by a guide to geographic mapping in IDL. This is followed by an explanation of techniques for displaying images, with equal attention given to PseudoColor and TrueColor images, regardless of the selected display device. The chapter on image display concludes with a detailed explanation of the workings of an image display application (IMDISP). Next, the methods available for creating raster (bitmap) and vector graphical output in IDL are described, with an emphasis on demystifying the PostScript and Printer devices, and providing utility programs which make it simple to obtain WYSIWYG output. Finally, the book describes in detail the construction of graphical user interface (GUI) applications, and concludes with the construction and explanation of a moderately complex GUI application for displaying images (IMGUI).

Liam E. Gumley