Practical IDL Programming

Practical IDL Programming

1st Edition - July 18, 2001

Write a review

  • Authors: Liam Gumley, Liam Gumley
  • eBook ISBN: 9780080514444

Purchase options

Purchase options
DRM-free (EPub, PDF, Mobi)
Sales tax will be calculated at check-out

Institutional Subscription

Free Global Shipping
No minimum order

Description

Increasingly, scientists and engineers must quickly and efficiently analyze and visualize extremely large sets of data. Interactive Data Language, IDL, was designed to address just this need. A popular data analysis and visualization programming environment, IDL is used worldwide by scientists and engineers in fields as diverse as the physical sciences, medical physics, and engineering test and analysis.In Practical IDL Programming, Liam E. Gumley provides a solid foundation in the fundamentals of procedural programming in IDL. He presents concise information on how to develop IDL programmers that are well structured, reliable, and efficient. The example programs in the book demonstrate key concepts and provide functionality that can be applied immediately. In addition, the book offers readers practical tips and advice on IDL programming, which they would otherwise discover only after years of experience.While only modest prior programming experience is assumed, readers with experience in any procedural language will quickly translate their skills to IDL, learning the best programming practices for this new environment. Scientists, engineers, and students in educational, government, and commercial research and development environments will all appreciate the author's guidance in helping them effectively analyze and visualize data.

Key Features

* Presents a comprehensive and detailed treatment of IDL data types, operators, expressions, array operations, input and output, direct graphics, plotting and imaging, publication quality output, and graphical user interfaces.
* Designed for novices and experienced IDL users and programmers alike.
* Provides an accompanying Web site with downloadable versions of all IDL programs in the book and a link to downloadable demonstration versions of the IDL software.

Readership

IDL users and programmers

Table of Contents

  • Foreword by David Stern


    Acknowledgements




    Chapter 1: Introduction



    Who Should Read This Book?

    Why Write This Book?

    What About Objects?

    Supporting Materials

    Typographic Conventions

    Special Characters

    1.1 About IDL

    IDL in Perspective

    Obtaining IDL

    1.2 Running IDL

    On-line Help

    1.3 Chapter Outline



    Chapter 2: Fundamentals of IDL Syntax



    2.1 Interactive and Compiled Modes


    Interactive Mode

    Compiled Mode

    2.2 Variables

    Data Types

    Keeping Track of Variable Types

    Type Conversions

    Converting Floats to Integers

    Converting between String and Numeric Types

    Variable Names

    2.3 Introduction to Arrays

    Creating Arrays

    Array Storage Format

    Functions for Creating Arrays

    Floating Point Grid Arrays

    2.4 Array Indexing

    Array Indexing Examples

    Multi-dimensional Array Indexing Examples

    One-dimensional Indexing

    Index Sampling

    Multi-dimensional Index Sampling

    2.5 Expressions and Arithmetic Operators

    Type Conversion in Expressions

    Guarding Against Division by an Integer

    Operators

    Operator Precedence

    Arithmetic Operations on Arrays

    Operator Precedence and Efficiency of Array Operations

    Minimum, Maximum, and Modulo Operators

    Array and Matrix Multiplication Operators

    2.6 Relational and Boolean Operators

    Relational Operators

    Boolean Operators

    not Operator

    and Operator

    or Operator

    xor Operator

    Combining Relational and Boolean Operators

    Bit Manipulation

    2.7 Structures

    Anonymous Structures

    Arrays of Structures

    Named Structures

    Working with Structures

    2.8 Pointers

    Types of Pointers

    Creating Pointers

    Freeing Pointers

    Checking Pointer Validity

    Pointer De-Referencing

    Avoiding Pointer Problems

    2.9 Array Properties

    Number of Array Elements

    Array Size and Type

    Minimum and Maximum Values

    Mean, Variance, and Standard Deviation

    2.10 Locating Values Within an Array

    Finding Values Which Meet Selection Criteria

    Working with 1D indices from where

    Finding Values Which Don't Meet Selection Criteria

    2.11 Array Reordering

    Changing Array Dimensions

    Reversing Array Elements

    Rotating Arrays

    Transposing Arrays

    Shifting Arrays

    Sorting Arrays

    Finding Unique Array Values

    2.12 Array Resizing

    Resizing by an Integer Factor

    Resizing to Arbitrary Size

    Resizing to Arbitrary Size with Custom Interpolation

    Removing Rows or Columns


    Chapter 3: Writing IDL Programs


    3.1 Defining and Compiling Programs


    Procedures

    Functions

    Naming and Editing Source Files

    Manual Compilation

    Automatic Compilation

    Returning to the Main Level after an Error

    3.2 Control Statements

    if Statement

    case Statement

    for Statement

    while Statement

    repeat Statement

    return Statement

    goto Statement

    switch Statement

    break Statement

    continue Statement

    3.3 Parameters and Keywords

    Parameters

    Keywords

    Using Parameters and Keywords

    Argument Passing Mechanism

    Extra Keywords

    Extra Keyword Precedence

    Extra Keyword Passing Mechanism

    3.4 Checking Parameters and Keywords

    Checking Input Parameters

    Don't Modify Input Parameters

    Checking Boolean Keywords

    Checking Output Parameters and Keywords

    3.5 Scripts, Include Files, and Journaling

    Scripts

    Include Files

    Journaling

    3.6 Global Variables

    Read-only System Variables

    Writable System Variables

    User-Defined System Variables

    Common Blocks

    3.7 Error Handling

    Intercepting Errors

    Math Errors

    Resetting the IDL Session

    3.8 Efficient Programming

    Conserving Memory

    Using Efficient Methods


    Chapter 4: Input and Output


    4.1 Standard Input and Output


    Writing to Standard Output

    Reading from Standard Input

    Free Format Input

    Reading from a String

    Writing to a String

    Legal and Illegal read Arguments

    4.2 Working with Files

    Opening Files

    Selecting a File

    Obtaining Information about Files

    Closing Files

    4.4 Reading and Writing Formatted (ASCII) Files

    Reading a Formatted File

    Writing a Formatted File

    4.5 Reading and Writing Unformatted (Binary) Files

    Reading an Unformatted File (Single Data Type)

    Reading an Unformatted File (Mixed Data Types)

    Reading a FORTRAN-77 Unformatted File

    Repositioning the File Pointer

    Byte Swapping (or Big-endian versus Little-endian)

    Writing Binary Data to an Unformatted File

    Programs to Write and Read Portable Binary Data

    Reading Binary Data via an Associated Variable

    Saving and Restoring IDL Variables

    4.6 Scientific Data Formats

    Specialized Formats

    4.7 Reading and Writing netCDF Files

    Reading a Variable from a netCDF file

    Reading an Attribute from a netCDF file

    Discovering the Contents of a netCDF file

    Writing to a netCDF file

    Standard Attributes

    Coordinate Variables

    4.8 Reading and Writing HDF Files

    Reading a Variable from a HDF file

    Using a Wrapper Procedure to Read a Variable

    Reading an Attribute from a HDF file

    Discovering the Contents of a HDF file

    Writing to a HDF file

    Coordinate Variables


    Chapter 5: Direct Graphics


    5.1 Graphics Devices


    Selecting a Graphics Device

    Configuring the Graphics Device

    5.2 Display Modes

    8-bit Display Mode

    24-bit Display Mode

    Display Mode Comparison

    Obtaining Display Mode Information

    Selecting a Display Mode: Windows and MacOS platforms

    Selecting a Display Mode: UNIX platforms

    Selecting a Display Mode via a Startup File

    5.3 Graphics Windows

    Creating a Window

    Working with Existing Windows

    Invisible Graphics Windows (Pixmaps) and Animation

    Scrolling Graphics Windows

    5.4 Working with Colors

    Color Modes

    Indexed Color

    Working with the Color Table

    Color Table Updates in 24-bit mode

    Decomposed Color

    5.5 Display Mode Troubleshooting



    Chapter 6: Plotting Data



    6.1 Plotting Overview


    Line Plots

    Overplotting

    Scatter Plots

    Polar Plots

    Plot Coordinates

    Coordinate Conversions

    Plotting in Normal and Device Coordinates

    System Variables

    6.2 Plot Positioning

    Specifying a Plot Position

    Computing a Plot Position

    Positioning Multiple Plots

    6.3 Plot Customization

    General Plot Properties

    General Axis Properties

    Configuring Axis Range and Style

    Creating Axes

    Logarithmic Axes

    Tick Marks and Labels

    6.4 Plot Colors

    Indexed Colors

    Decomposed Colors

    6.5 Titles, Labels, and Symbols

    Titles

    Labels

    Mathematical Symbols

    6.6 Error Bar, Histogram, and Bar Plots

    Error Bar Plots

    Histogram Plots

    Bar Plots

    6.7 Contour Plots

    Contour Plotting Overview

    Contouring Irregularly Spaced Data

    Filled Contours

    6.8 Mesh and Shaded Surface Plots

    Irregularly Spaced Data

    Shaded Surface Plots

    Combined Mesh and Shaded Surface Plots

    6.9 Mapping

    Creating a Map Projection

    Configuring a Map Projection

    Selecting Map Limits

    Continental Outlines

    Map Grid Lines

    Contour Plots on Map Projections

    Displaying Regularly Gridded Images on Map Projections


    Chapter 7: Displaying Images


    7.1 Image Fundamentals


    PseudoColor Images

    TrueColor Images

    7.2 Image Display Routines

    Displaying Unscaled Images: tv

    Displaying Scaled Images: tvscl

    Bottom-up vs. Top-down display

    Keywords for tv and tvscl

    7.3 Customizing Image Scaling

    Image Scaling via bytscl

    Color Table Splitting

    Displaying Multiple Images with Separate Color Tables

    Histogram Clipping

    Histogram Equalization

    7.4 Sizing the Image to Fit the Display

    Computing Image Size and Offset Automatically

    7.5 Displaying TrueColor Images

    Displaying TrueColor Images in 24-bit Display Mode

    Displaying TrueColor Images in 8-bit Display Mode

    7.6 Displaying Images on the PostScript and Printer Devices

    Displaying PseudoColor Images on the PostScript Device

    Displaying PseudoColor Images on the Printer Device

    Displaying TrueColor Images on the PostScript Device

    Displaying TrueColor Images on the Printer Device

    7.7 An Image Display Procedure



    Chapter 8 Creating Graphical Output



    8.1 Bitmap and Vector Output


    Bitmap and Vector Formats

    8.2 Creating Bitmap Output Files

    Reading from the Display: tvrd

    Reading from an 8-bit Display

    Reading from a 24-bit Display

    A Wrapper Function for tvrd

    Selecting a Bitmap Output Format

    Saving an 8-bit Image to a Bitmap Output File

    Saving a 24-bit Image to a Bitmap Output File

    A Program for Saving the Screen to a Bitmap Output File

    8.3 Creating PostScript Output

    Introduction to the PostScript Device

    Configuring the PostScript Device

    Setting Size and Offset Manually

    Setting Size and Offset Automatically

    Color PostScript Output

    Using the Color Table in PostScript Mode

    Reversed Background and Drawing Colors

    Fonts

    PostScript Device Fonts

    TrueType Fonts

    Positioning Graphics in the Drawable Area

    Adding an EPS Preview

    8.4 Creating Printer Output

    Selecting a Printer

    Configuring the Printer Device

    Setting Size and Offset Manually

    Setting Size and Offset Automatically

    Color Printer Output

    Fonts and Positioning


    Chapter 9: Graphical User Interfaces (GUIs)


    9.1 Introduction to GUI Programming


    GUI Components (Widgets)

    GUI Programming vs. Procedural Programming

    GUI Design

    9.2 Creating Widgets

    Widget Basics

    Widget Attributes

    widget_base function

    widget_button function

    widget_draw function

    widget_droplist function

    widget_label function

    widget_list function

    widget_slider function

    widget_table function

    widget_text function

    Widget Layout

    Naming Buttons

    Compound Widgets

    9.3 Working with Existing Widgets

    Setting Widget Properties: widget_control

    Getting Widget Information: widget_info

    9.4 Events and Event Handling

    Event Structures

    Event Management

    Event Handlers and Application State Information

    Multiple Instances of an Application

    9.5 A GUI Application

    Design Implications

    Startup Procedure

    Event Handler Procedures

    Service Procedures

    Compiling and Running imgui


    Appendix A: IDL on the Internet


    Resources by the Author

    RSI Information

    IDL Newsgroup

    IDL Libraries

    IDL Library Searchable Database

    IDL People

    IDL Applications


    Appendix B: Mathematical Routines


    Complex Numbers

    Correlation Analysis

    Curve and Surface Fitting

    Differentiation and Integration

    Eigenvalues and Eigenvectors

    Gridding and Interpolation

    Hypothesis Testing

    Linear Systems

    Mathematical Error Assessment

    Miscellaneous Math Routines

    Multivariate Analysis

    Nonlinear Equations

    Optimization

    Probability

    Signal Processing

    Sparse Arrays

    Special Math Functions

    Statistical Fitting

    Statistical Tools

    Time Series Analysis

    Transcendental Functions

    Transforms


    Appendix C: Widget Event Structures


    Base Widgets

    Button Widgets

    Draw Widgets

    Droplist Widgets

    Label Widgets

    List Widgets

    Slider Widgets

    Table Widgets

    Text Widgets


    Appendix D: Widget Properties


    Base Widgets

    Button Widgets

    Draw Widgets

    Droplist Widgets

    Label Widgets

    List Widgets

    Slider Widgets

    Table Widgets

    Text Widgets


    Appendix E: Graphics Device Properties

Product details

  • No. of pages: 528
  • Language: English
  • Copyright: © Morgan Kaufmann 2001
  • Published: July 18, 2001
  • Imprint: Morgan Kaufmann
  • eBook ISBN: 9780080514444

About the Authors

Liam Gumley

Liam E. Gumley is a researcher at the Space Science and Engineering Center at the University of Wisconsin-Madison. He has developed his expertise in IDL by analyzing and visualizing large earth science datasets acquired by NASA earth-orbiting satellites and aircraft. He has also developed high-end application programs in IDL, including an application for visualizing data from a NASA airborne imaging sensor. He si a frequent contributor to the IDL Usenet newsgroup.

Affiliations and Expertise

University of Wisconsin-Madison

Liam Gumley

Liam E. Gumley is a researcher at the Space Science and Engineering Center at the University of Wisconsin-Madison. He has developed his expertise in IDL by analyzing and visualizing large earth science datasets acquired by NASA earth-orbiting satellites and aircraft. He has also developed high-end application programs in IDL, including an application for visualizing data from a NASA airborne imaging sensor. He si a frequent contributor to the IDL Usenet newsgroup.

Affiliations and Expertise

University of Wisconsin-Madison

Ratings and Reviews

Write a review

There are currently no reviews for "Practical IDL Programming"