C     
C     $Id: mp07f.f,v 1.1 2002/03/04 21:57:13 haley Exp $
C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C                                                                      C
C                Copyright (C)  2002                                   C
C        University Corporation for Atmospheric Research               C
C                All Rights Reserved                                   C
C                                                                      C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C
C
C      File:            mp07f.f
C
C      Author:          Mary Haley
C                       National Center for Atmospheric Research
C                       PO 3000, Boulder, Colorado
C
C      Date:            Mon Mar  4 14:08:54 MST 2002
C
C   Description: Shows how to draw high-resolution coastlines using the
C   RANGS (Regionally Accessible Nested Global Shorelines), developed
C   by Rainer Feistel from Wessel and Smith's GSHHS (Global
C   Self-consistent Hierarchical High-resolution Shoreline) database.
C   To access the RANGS/GSHHS database, you must first download it from
C   Rainer Feistel's web site at
C   http://www.io-warnemuende.de/homepages/rfeistel/index.html.  Right
C   before the section entitled "Some WWW Links", you should see a
C   little table with ten *.zip files to download:
C
C     rangs(0).zip         gshhs(0).zip
C     rangs(1).zip         gshhs(1).zip
C     rangs(2).zip         gshhs(2).zip
C     rangs(3).zip         gshhs(3).zip
C     rangs(4).zip         gshhs(4).zip
C
C   You must download all ten of these files, unzip them, and either
C   put them in the default directory
C   "$NCARG_ROOT/lib/ncarg/database/rangs", or put them somewhere else
C   and set the environment variable NCARG_RANGS to this directory. The
C   files take up about 140 megabytes, unzipped. Once you have the
C   files in the appropriate location, then set the mpDataBaseVersion
C   resource to "RANGS_GSHHS" to create maps using this database. You
C   should not use this database to plot maximal area plots, because 1)
C   you will get horizontal lines through your plot, and 2) it takes a
C   long time.
C
      external NhlFAppClass
      external NhlFXWorkstationClass
      external NhlFNcgmWorkstationClass
      external NhlFPSWorkstationClass
      external NhlFMapPlotClass

      integer appid,wks,mapid
      integer rlist
      integer NCGM, X11, PS
C
C Default is to display output to an X workstation
C
      NCGM=0
      X11=1
      PS=0
C
C Initialize the high level utility library
C
      call NhlFInitialize
C
C Create an application object.
C
      call NhlFRLCreate(rlist,'SETRL')
      call NhlFRLClear(rlist)
      call NhlFRLSetstring(rlist,'appUsrDir','./',ierr)
      call NhlFCreate(appid,'mp07',NhlFAppClass,0,rlist,ierr)

      if (NCGM.eq.1) then
C
C Create an NCGM workstation.
C
         call NhlFRLClear(rlist)
         call NhlFRLSetstring(rlist,'wkMetaName','./mp07f.ncgm',ierr)
         call NhlFCreate(wks,'mp07Work',NhlFNcgmWorkstationClass,0,
     1        rlist,ierr)
      else  if (X11.eq.1) then
C
C Create an X workstation
C
         call NhlFRLClear(rlist)
         call NhlFCreate(wks,'mp07Work',NhlFXWorkstationClass,0,
     1     rlist,ierr)
      else if (PS.eq.1) then
C
C Create a PS object.
C
         call NhlFRLClear(rlist)
         call NhlFRLSetstring(rlist,'wkPSFileName','./mp07f.ps',ierr)
         call NhlFCreate(wks,'mp07Work',NhlFPSWorkstationClass,0,
     1        rlist,ierr)
      endif

C
C Create and draw a map with the default databse.
C
      call NhlFRLClear(rlist)
      call NhlFRLSetFloat(rlist,'vpWidthF',  0.80,ierr)
      call NhlFRLSetFloat(rlist,'vpHeightF', 0.80,ierr)
      call NhlFRLSetFloat(rlist,'vpXF',      0.15,ierr)
      call NhlFRLSetFloat(rlist,'vpYF',      0.90,ierr)
      call NhlFRLSetString(rlist,'mpProjection', 
     1     'CylindricalEquidistant',ierr)
C
C "LowRes" is the default database, also sometimes known as "Ncarg4_0".
C
      call NhlFRLSetString(rlist,'mpDataBaseVersion', 
     1     'LowRes',ierr)
C 
C Zoom in on part of the map.
C
      call NhlFRLSetString(rlist,'mpLimitMode','LatLon',ierr)
      call NhlFRLSetFloat(rlist,'mpMinLatF',   30.,ierr)
      call NhlFRLSetFloat(rlist,'mpMaxLatF',   60.,ierr)
      call NhlFRLSetFloat(rlist,'mpMinLonF',  -15.,ierr)
      call NhlFRLSetFloat(rlist,'mpMaxLonF',   15. ,ierr)
C
C Turn on the labeling of lat/lon lines.
C
      call NhlFRLSetString(rlist,'pmTickMarkDisplayMode', 
     1     'Always',ierr)
      call NhlFCreate(mapid,'mp07',NhlFMapPlotClass,wks,rlist,ierr)
C
C Draw map and advance the frame.
C
      call NhlFDraw(mapid,ierr)
      call NhlFFrame(wks,ierr)
C
C Set the resource indicating you want to use the high-resolution
C RANGS/GSHHS database.
C
      call NhlFRLClear(rlist)
      call NhlFRLSetString(rlist,'mpDataBaseVersion','RANGS_GSHHS',
     1     ierr)
      call NhlFSetValues(mapid,rlist,ierr)
C
C Draw map and advance the frame.
C
      call NhlFDraw(mapid,ierr)
      call NhlFFrame(wks,ierr)

      call NhlFDestroy(wks,ierr)
      call NhlFClose
      stop
      end
