Next: 9. Mailing lists, updates, Up: 8. Creating GMT Animations Previous: 8.3 Orbiting a static Contents Index

#
8.4 Flying over topography

Our next animation simulates what an imaginary satellite might see as it passes in a great circle from New York to Miami at an altitude of 160 km. We use the general perspective view projection with grdimage and use project to create a great circle path between the two cities, sampled every 5 km. The main part of the script will make the DVD-quality frames from different view points, draw the path on the ground, and add frame numbers to each frame. As this animation generates 355 frames we can use 3rd party tools to turn the image sequence into a MPEG-4 movie8.2. Note: At the moment, grdview cannot use general perspective view projection to allow ``fly-through'' animations like Fledermaus; we expect to add this functionality in a future version.

    #!/bin/sh
    #               GMT ANIMATION 04
    #
    # Purpose:      Make DVD-res Quicktime movie of NY to Miami flight
    # GMT progs:    gmtset, gmtmath, psbasemap, pstext, psxy, ps2raster
    # Unix progs:   awk, mkdir, rm, mv, echo, qt_export, cat
    #
    # 1. Initialization
    # 1a) Assign movie parameters
    . gmt_shell_functions.sh
    REGION=-Rg
    altitude=160.0
    tilt=55
    azimuth=210
    twist=0
    Width=36.0
    Height=34.0
    px=7.2
    py=4.8
    dpi=100
    name=`basename $0 '.sh'`

    # Set up flight path
    project -C-73.8333/40.75 -E-80.133/25.75 -G5 -Q > $$.path.d
    frame=0
    mkdir -p frames
    grdgradient USEast_Coast.nc -A90 -Nt1 -G$$_int.nc
    makecpt -Cglobe -Z > $$.cpt
    while read lon lat dist; do
            file=`gmt_set_framename $name $frame`
            ID=`echo $frame | awk '{printf "%4.4d\n", $1}'`
            grdimage -JG${lon}/${lat}/${altitude}/${azimuth}/${tilt}/${twist}/${Width}/${Height}/7i+ \
                    $REGION -P -Y0.1i -X0.1i USEast_Coast.nc -I$$_int.nc -C$$.cpt \
                    --PAPER_MEDIA=Custom_${px}ix${py}i -K > $$.ps
            psxy -R -J -O -K -W1p $$.path.d >> $$.ps
            echo 0 4.6 14 0 1 TL $ID | pstext -R0/$px/0/$py -Jx1i -O >> $$.ps
            if [ $# -eq 0 ]; then
                    mv $$.ps $name.ps
                    gmt_cleanup .gmt
                    gmt_abort "$0: First frame plotted to $name.ps"
            fi
            ps2raster $$.ps -Tt -E$dpi
            mv $$.tif frames/$file.tif
            echo "Frame $file completed"
            frame=`gmt_set_framenext $frame`
    done < $$.path.d
    if [ $# -eq 1 ]; then
            echo "anim_04.sh: Made $frame frames at 480x720 pixels placed in subdirectory frames"
    #       qt_export $$/anim_0_123456.tiff --video=h263,24,100, ${name}_movie.m4v
    fi
    # 4. Clean up temporary files
    gmtset DOTS_PR_INCH 300
    gmt_cleanup .gmt

Figure 8.4: Flying over topography.

Next: 9. Mailing lists, updates, Up: 8. Creating GMT Animations Previous: 8.3 Orbiting a static Contents Index