def main():
    """
    NAME 
        plot_map_pts.py 

    DESCRIPTION
        plots points on map
 
    SYNTAX
        plot_map_pts.py [command line options]

    OPTIONS
        -h prints help and quits
        -sym [ro, bs, g^, r., b-, etc.] [1,5,10] symbol and size for points
           colors are r=red,b=blue,g=green, etc.
           symbols are '.' for points, ^, for triangle, s for square, etc.
            -, for lines, -- for dotted lines, see matplotlib online documentation for plot()
        -eye  ELAT ELON [specify eyeball location]
        -etp  put on topography
        -cmap color map [default is jet]
        -f FILE, specify input file
        -o color ocean blue/land green (default is not)
        -res [c,l,i,h] specify resolution (crude, low, intermediate, high]
        -fmt [pdf,eps, png] specify output format (default is pdf)
        -R don't plot details of rivers
        -B don't plot national/state boundaries, etc.
        -pad [LAT LON] pad bounding box by LAT/LON (default is not)
        -grd SPACE specify grid spacing
        -sav  save plot and quit
        -prj PROJ,  specify one of the supported projections: 
            pc = Plate Carree
            aea = Albers Equal Area
            aeqd = Azimuthal Equidistant
            lcc = Lambert Conformal
            lcyl = Lambert Cylindrical
            merc = Mercator
            mill = Miller Cylindrical
            moll = Mollweide [default]
            ortho = Orthographic
            robin = Robinson
            sinu = Sinusoidal
            stere = Stereographic
            tmerc = Transverse Mercator
            utm = UTM
            laea = Lambert Azimuthal Equal Area
            geos = Geostationary
            npstere = North-Polar Stereographic
            spstere = South-Polar Stereographic
        Special codes for MagIC formatted input files:
            -n
            -l
    
    INPUTS
        space or tab delimited LON LAT data
        OR: 
           standard MagIC formatted er_sites or pmag_results table
    DEFAULTS
        res:  c
        prj: mollweide;  lcc for MagIC format files 
        ELAT,ELON = 0,0
        pad LAT,LON=0,0
        NB: high resolution or lines can be very slow
    
    """
    dir_path='.'
    plot=0
    ocean=0
    res='c'
    proj='moll'
    Lats,Lons=[],[]
    fmt='pdf'
    sym='ro'
    symsize=5
    fancy=0
    rivers,boundaries,ocean=1,1,0
    latmin,latmax,lonmin,lonmax,lat_0,lon_0=-90,90,0.,360.,0.,0.
    padlat,padlon,gridspace=0,0,30
    lat_0,lon_0="",""
    basemap=1
    prn_name,prn_loc,names,locs=0,0,[],[]
    if '-WD' in sys.argv:
        ind = sys.argv.index('-WD')
        dir_path=sys.argv[ind+1]
    if '-h' in sys.argv:
        print(main.__doc__)
        sys.exit()
    if '-fmt' in sys.argv:
        ind = sys.argv.index('-fmt')
        fmt=sys.argv[ind+1]
    if '-res' in sys.argv:
        ind = sys.argv.index('-res')
        res=sys.argv[ind+1]
        if res!= 'c' and res!='l':
            print('this resolution will take a while - be patient')
    if '-etp' in sys.argv: 
        fancy=1
        print ('-W- plotting will require patience!')
    if '-ctp' in sys.argv: basemap=0
    if '-sav' in sys.argv: plot=1
    if '-R' in sys.argv:rivers=0
    if '-B' in sys.argv:boundaries=0
    if '-o' in sys.argv:ocean=1
    if '-cmap' in sys.argv:
        ind = sys.argv.index('-cmap')
        cmap=float(sys.argv[ind+1])
    else:
        cmap='jet'
    if '-grd' in sys.argv:
        ind = sys.argv.index('-grd')
        gridspace=float(sys.argv[ind+1])
    if '-eye' in sys.argv:
        ind = sys.argv.index('-eye')
        lat_0=float(sys.argv[ind+1])
        lon_0=float(sys.argv[ind+2])
    if '-sym' in sys.argv:
        ind = sys.argv.index('-sym')
        sym=sys.argv[ind+1]
        symsize=int(sys.argv[ind+2])
    if '-pad' in sys.argv:
        ind = sys.argv.index('-pad')
        padlat=float(sys.argv[ind+1])
        padlon=float(sys.argv[ind+2])
    if '-f' in sys.argv:
        ind = sys.argv.index('-f')
        file=dir_path+'/'+sys.argv[ind+1]
        header=open(file,'r').readlines()[0].split('\t')
        if 'tab' in header[0]:
            proj='lcc'
            if 'sites' in header[1]:
                latkey='lat'
                lonkey='lon'
                namekey='site'
                lockey=''
            else:  
                print('file type not supported')
                print(main.__doc__)
                sys.exit()
            Sites,file_type=pmag.magic_read(file)
            Lats=pmag.get_dictkey(Sites,latkey,'f')
            Lons=pmag.get_dictkey(Sites,lonkey,'f')
            if prn_name==1:names=pmag.get_dictkey(Sites,namekey,'')
            if prn_loc==1:names=pmag.get_dictkey(Sites,lockey,'')
        else:
            ptdata=numpy.loadtxt(file)
            Lons=ptdata.transpose()[0]
            Lats=ptdata.transpose()[1]
        latmin=numpy.min(Lats)-padlat
        lonmin=numpy.min(Lons)-padlon
        latmax=numpy.max(Lats)+padlat
        lonmax=numpy.max(Lons)+padlon
        if lon_0=="":
            lon_0=0.5*(lonmin+lonmax)
            lat_0=0.5*(latmin+latmax)
    else:
        print("input file must be specified")
        sys.exit()
    if '-prj' in sys.argv:
        ind = sys.argv.index('-prj')
        proj=sys.argv[ind+1]
    FIG={'map':1}
    pmagplotlib.plot_init(FIG['map'],6,6)
    cnt=0
    Opts={'latmin':latmin,'latmax':latmax,'lonmin':lonmin,'lonmax':lonmax,'lat_0':lat_0,'lon_0':lon_0,'proj':proj,'sym':sym,'symsize':3,'pltgrid':1,'res':res,'boundinglat':0.,'padlon':padlon,'padlat':padlat,'gridspace':gridspace,'cmap':cmap}
    Opts['details']={}
    Opts['details']['coasts']=1
    Opts['details']['rivers']=rivers
    Opts['details']['states']=boundaries
    Opts['details']['countries']=boundaries
    Opts['details']['ocean']=ocean
    Opts['details']['fancy']=fancy
    if len(names)>0:Opts['names']=names
    if len(locs)>0:Opts['loc_name']=locs
    if proj=='merc':
        Opts['latmin']=-70
        Opts['latmax']=70
        Opts['lonmin']=-180
        Opts['lonmax']=180
    print('please wait to draw points')
    Opts['sym']=sym
    Opts['symsize']=symsize
    if basemap: 
        pmagplotlib.plot_map(FIG['map'],Lats,Lons,Opts)
    else:
        pmagplotlib.plot_map(FIG['map'],Lats,Lons,Opts)
    files={}
    titles={}
    titles['map']='PT Map'
    for key in list(FIG.keys()):
        files[key]='map_pts'+'.'+fmt
    if pmagplotlib.isServer:
        black     = '#000000'
        purple    = '#800080'
        FIG = pmagplotlib.add_borders(FIG,titles,black,purple)
        pmagplotlib.save_plots(FIG,files)
    if plot==1:
        pmagplotlib.save_plots(FIG,files)
    else:
        pmagplotlib.draw_figs(FIG)
        ans=input(" S[a]ve to save plot, Return to quit:  ")
        if ans=="a": pmagplotlib.save_plots(FIG,files)
def main ( ) : dir_path = '.' plot = 0 ocean = 0 res = 'c' proj = 'moll' Lats , Lons = [ ] , [ ] fmt = 'pdf' sym = 'ro' symsize = 5 fancy = 0 rivers , boundaries , ocean = 1 , 1 , 0 latmin , latmax , lonmin , lonmax , lat_0 , lon_0 = - 90 , 90 , 0. , 360. , 0. , 0. padlat , padlon , gridspace = 0 , 0 , 30 lat_0 , lon_0 = "" , "" basemap = 1 prn_name , prn_loc , names , locs = 0 , 0 , [ ] , [ ] if '-WD' in sys . argv : ind = sys . argv . index ( '-WD' ) dir_path = sys . argv [ ind + 1 ] if '-h' in sys . argv : print ( main . __doc__ ) sys . exit ( ) if '-fmt' in sys . argv : ind = sys . argv . index ( '-fmt' ) fmt = sys . argv [ ind + 1 ] if '-res' in sys . argv : ind = sys . argv . index ( '-res' ) res = sys . argv [ ind + 1 ] if res != 'c' and res != 'l' : print ( 'this resolution will take a while - be patient' ) if '-etp' in sys . argv : fancy = 1 print ( '-W- plotting will require patience!' ) if '-ctp' in sys . argv : basemap = 0 if '-sav' in sys . argv : plot = 1 if '-R' in sys . argv : rivers = 0 if '-B' in sys . argv : boundaries = 0 if '-o' in sys . argv : ocean = 1 if '-cmap' in sys . argv : ind = sys . argv . index ( '-cmap' ) cmap = float ( sys . argv [ ind + 1 ] ) else : cmap = 'jet' if '-grd' in sys . argv : ind = sys . argv . index ( '-grd' ) gridspace = float ( sys . argv [ ind + 1 ] ) if '-eye' in sys . argv : ind = sys . argv . index ( '-eye' ) lat_0 = float ( sys . argv [ ind + 1 ] ) lon_0 = float ( sys . argv [ ind + 2 ] ) if '-sym' in sys . argv : ind = sys . argv . index ( '-sym' ) sym = sys . argv [ ind + 1 ] symsize = int ( sys . argv [ ind + 2 ] ) if '-pad' in sys . argv : ind = sys . argv . index ( '-pad' ) padlat = float ( sys . argv [ ind + 1 ] ) padlon = float ( sys . argv [ ind + 2 ] ) if '-f' in sys . argv : ind = sys . argv . index ( '-f' ) file = dir_path + '/' + sys . argv [ ind + 1 ] header = open ( file , 'r' ) . readlines ( ) [ 0 ] . split ( '\t' ) if 'tab' in header [ 0 ] : proj = 'lcc' if 'sites' in header [ 1 ] : latkey = 'lat' lonkey = 'lon' namekey = 'site' lockey = '' else : print ( 'file type not supported' ) print ( main . __doc__ ) sys . exit ( ) Sites , file_type = pmag . magic_read ( file ) Lats = pmag . get_dictkey ( Sites , latkey , 'f' ) Lons = pmag . get_dictkey ( Sites , lonkey , 'f' ) if prn_name == 1 : names = pmag . get_dictkey ( Sites , namekey , '' ) if prn_loc == 1 : names = pmag . get_dictkey ( Sites , lockey , '' ) else : ptdata = numpy . loadtxt ( file ) Lons = ptdata . transpose ( ) [ 0 ] Lats = ptdata . transpose ( ) [ 1 ] latmin = numpy . min ( Lats ) - padlat lonmin = numpy . min ( Lons ) - padlon latmax = numpy . max ( Lats ) + padlat lonmax = numpy . max ( Lons ) + padlon if lon_0 == "" : lon_0 = 0.5 * ( lonmin + lonmax ) lat_0 = 0.5 * ( latmin + latmax ) else : print ( "input file must be specified" ) sys . exit ( ) if '-prj' in sys . argv : ind = sys . argv . index ( '-prj' ) proj = sys . argv [ ind + 1 ] FIG = { 'map' : 1 } pmagplotlib . plot_init ( FIG [ 'map' ] , 6 , 6 ) cnt = 0 Opts = { 'latmin' : latmin , 'latmax' : latmax , 'lonmin' : lonmin , 'lonmax' : lonmax , 'lat_0' : lat_0 , 'lon_0' : lon_0 , 'proj' : proj , 'sym' : sym , 'symsize' : 3 , 'pltgrid' : 1 , 'res' : res , 'boundinglat' : 0. , 'padlon' : padlon , 'padlat' : padlat , 'gridspace' : gridspace , 'cmap' : cmap } Opts [ 'details' ] = { } Opts [ 'details' ] [ 'coasts' ] = 1 Opts [ 'details' ] [ 'rivers' ] = rivers Opts [ 'details' ] [ 'states' ] = boundaries Opts [ 'details' ] [ 'countries' ] = boundaries Opts [ 'details' ] [ 'ocean' ] = ocean Opts [ 'details' ] [ 'fancy' ] = fancy if len ( names ) > 0 : Opts [ 'names' ] = names if len ( locs ) > 0 : Opts [ 'loc_name' ] = locs if proj == 'merc' : Opts [ 'latmin' ] = - 70 Opts [ 'latmax' ] = 70 Opts [ 'lonmin' ] = - 180 Opts [ 'lonmax' ] = 180 print ( 'please wait to draw points' ) Opts [ 'sym' ] = sym Opts [ 'symsize' ] = symsize if basemap : pmagplotlib . plot_map ( FIG [ 'map' ] , Lats , Lons , Opts ) else : pmagplotlib . plot_map ( FIG [ 'map' ] , Lats , Lons , Opts ) files = { } titles = { } titles [ 'map' ] = 'PT Map' for key in list ( FIG . keys ( ) ) : files [ key ] = 'map_pts' + '.' + fmt if pmagplotlib . isServer : black = '#000000' purple = '#800080' FIG = pmagplotlib . add_borders ( FIG , titles , black , purple ) pmagplotlib . save_plots ( FIG , files ) if plot == 1 : pmagplotlib . save_plots ( FIG , files ) else : pmagplotlib . draw_figs ( FIG ) ans = input ( " S[a]ve to save plot, Return to quit:  " ) if ans == "a" : pmagplotlib . save_plots ( FIG , files )
NAME 
        plot_map_pts.py 

    DESCRIPTION
        plots points on map
 
    SYNTAX
        plot_map_pts.py [command line options]

    OPTIONS
        -h prints help and quits
        -sym [ro, bs, g^, r., b-, etc.] [1,5,10] symbol and size for points
           colors are r=red,b=blue,g=green, etc.
           symbols are '.' for points, ^, for triangle, s for square, etc.
            -, for lines, -- for dotted lines, see matplotlib online documentation for plot()
        -eye  ELAT ELON [specify eyeball location]
        -etp  put on topography
        -cmap color map [default is jet]
        -f FILE, specify input file
        -o color ocean blue/land green (default is not)
        -res [c,l,i,h] specify resolution (crude, low, intermediate, high]
        -fmt [pdf,eps, png] specify output format (default is pdf)
        -R don't plot details of rivers
        -B don't plot national/state boundaries, etc.
        -pad [LAT LON] pad bounding box by LAT/LON (default is not)
        -grd SPACE specify grid spacing
        -sav  save plot and quit
        -prj PROJ,  specify one of the supported projections: 
            pc = Plate Carree
            aea = Albers Equal Area
            aeqd = Azimuthal Equidistant
            lcc = Lambert Conformal
            lcyl = Lambert Cylindrical
            merc = Mercator
            mill = Miller Cylindrical
            moll = Mollweide [default]
            ortho = Orthographic
            robin = Robinson
            sinu = Sinusoidal
            stere = Stereographic
            tmerc = Transverse Mercator
            utm = UTM
            laea = Lambert Azimuthal Equal Area
            geos = Geostationary
            npstere = North-Polar Stereographic
            spstere = South-Polar Stereographic
        Special codes for MagIC formatted input files:
            -n
            -l
    
    INPUTS
        space or tab delimited LON LAT data
        OR: 
           standard MagIC formatted er_sites or pmag_results table
    DEFAULTS
        res:  c
        prj: mollweide;  lcc for MagIC format files 
        ELAT,ELON = 0,0
        pad LAT,LON=0,0
        NB: high resolution or lines can be very slow