Ejemplo n.º 1
0
 def __init__(self,source,dirname,opts):
     self.sourcedata=S(source)
     self.dirname=dirname
     self.desc=opts.desc
     self.wordsize=opts.wordsize
     self.halo=opts.halo
     self.missing=opts.missing
     self.endian=opts.endian
     #probably should do something about this later because
     #geogrid will be SLOW with large data sets
     #self.nxtile=opts.nxtile
     #self.nytile=opts.nytile
     self.halo=0
     n=self.sourcedata.getsize()
     self.nxtile=n[0]
     self.nytile=n[1]
     
     self.nztile=opts.nztile
     self.scale=opts.scale
     self.force=opts.force
     self.units=opts.units
     proj=self.sourcedata.getprojection()
     if proj is None:
         self.projection="regular_ll"
     else:
         if proj['projection'] == 'Albers_Conic_Equal_Area' and \
            proj['datum'] == 'North_American_Datum_1983':
             self.projection='albers_nad83'
         else:
             print "Sorry I don't understand this projection/datum:"
             print proj['projection']
             print proj['datum']
             raise Exception("")
         self.truelat1=proj['truelat1']
         self.truelat2=proj['truelat2']
         self.stdlon=proj['stdlon']
         self.stdlat=proj['stdlat']
     self.continuous=opts.continuous
     self.maxcategories=opts.maxcategories
     if not self.continuous and self.maxcategories < 1:
         raise Exception("Couldn't determine the number of categories.")
     self.signed=opts.signed
     self.script=opts.script
     if self.script:
         setverbose(False)
     self.check()
Ejemplo n.º 2
0
        
        raise Exception("multiple input files not yet supported")
        up=[0]*len(f)
        down=up
        left=up
        right=up
        for i in range(len(f)):
            for j in range(i,len(f)):
                if abs(f[i].ulx - f[j].lrx) - resx < self.eps:
                    left[i]=j
                    right[j]=i
                elif abs(f[i].lrx - f[j].ulx) - resx < self.eps:
                    right[i]=j
                    left[j]=i
                elif abs(f[i].uly - f[j].lry) - resy < self.eps:
                    up[i]=j
                    down[j]=i
                elif abs(f[i].lry - f[j].uly) - resy < self.eps:
                    down[i]=j
                    up[j]=i

def source_option_parser(parser):
    pass   
                    
if __name__ == '__main__':
    setverbose()
    s=Source(['/Users/jbeezley/Downloads/data/24/w001001.adf'])
    a=s.gettile(1,5,1,10)
    print a
    print a.shape
Ejemplo n.º 3
0
def mainprog(argv):
    usage = "usage: %prog [options] output input1 [input2 [input3 [...]]]"
    parser=OptionParser(usage)
    out_parse=OptionGroup(parser,"output options")
    source_option_parser(parser)
    out_parse.add_option("-w","--wordsize",choices=["1","2","4"],
                         help="size (in bytes) of each number in the output file "
                              "[default: %default]")
    out_parse.add_option("-b","--border",type="int",dest="halo",metavar="BORDER",
                         help=SUPPRESS_HELP)
                         #help="size of border for each data tile "
                         #     "[default: %default]")
    out_parse.add_option("-e","--endian",choices=["big","little"],
                         help="byte order of output (conversion handled automatically "
                              "by geogrid, so it is not necessary to change) "
                          "[default= %default]")
    out_parse.add_option("-m","--missing",type="int",
                         help="value (int) to set any missing data in the source data "
                              "[default: %default]")
    out_parse.add_option("-s","--scale",type="float",
                         help="geogrid stores data as integers scaled by some constant value "
                              "[default: %default]")
    out_parse.add_option("-x","--xsize",type="int",dest="nxtile",metavar="XSIZE",
                         help="output tile sizes in x (west-east) direction "
                              "[default: %default]")
    out_parse.add_option("-y","--ysize",type="int",dest="nytile",metavar="YSIZE",
                         help="output tile sizes in y (south-north) direction "
                              "[default: %default]")
    out_parse.add_option("-z","--zsize",type="int",dest="nztile",metavar="ZSIZE",
                         help="output data size (not tiled) "
                              "in vertical direction or the number "
                              "of categories for categorical data "
                              "[default: determined from source data]")
    out_parse.add_option("-d","--description",dest="desc",
                         help="description of the data set"
                               "[default: determined from source data]")
    out_parse.add_option("-u","--units",
                         help="physical units of the data"
                              "[default: determined from source data]")
    out_parse.add_option("-f","--force",action="store_true",
                         help="force creation of output files even if "
                              "they already exist [default: %default]")
    out_parse.add_option("-S","--signed",action="store_true",
                         help="output data is signed [default: %default]")
    parser.add_option("-v","--verbose",action="store_true",
                      help="set verbose output [default: %default]",)
    parser.add_option("--script",action="store_true",
                      help="set non-verbose output for use inside a script")
    parser.add_option("-c","--continuous",action="store_true",
                      help="indicates continuous data [default]")
    parser.add_option("-a","--categorical",dest="continuous",action="store_false",
                      help="indicates categorical data")
    parser.add_option("-A","--maxcategories",type="int",action="store",
                      help="maximum number of categories")
    parser.add_option_group(out_parse)
    parser.set_defaults(wordsize="2",halo=0,endian="little",nxtile=1000,nytile=1000,
                       nztile=1,scale=1.0,missing=65535,verbose=False,
                       force=False,signed=False,script=False,continuous=True,
                       maxcategories=-1)
    (opts,args)=parser.parse_args(argv)
    setverbose(opts.verbose)
    if len(args) < 2:
        parser.print_usage()
        print "Must supply output directory and one or more input files."
        sys.exit(2)
    g=Geogrid(args[1:],args[0],opts)
    g.write()
    if not opts.script:
        print "Completed successfully!"
    if len(args[1:])>1:
        s=args[1:]
    else:
        s=args[1]
    inst="To use this data in geogrid move %s to your wrf geographical \
data directory (i.e. '../../wrfdata/geog/') and insert the following lines \
into the relevant section of your GEOGRID.TBL file (geogrid/GEOGRID.TBL by default).  \
This is a run time file, you do not need to recompile WPS!"
    if not opts.script:
        print textwrap.fill(inst,80)
    #    print "name=<variable name>"
    #    print "\tpriority=1"
        if g.info.continuous:
            s="continuous"
        else:
            s="categorical"
        print "\tdest_type=%s" % s
        fmissing=float(g.info.missing) * g.info.scale
        print "\tfill_missing=%f" % fmissing
        print "\trel_path=default:%s" % g.info.dirname
        
        web="http://www.mmm.ucar.edu/wrf/users/docs/user_guide/users_guide_chap3.html#_Description_of_GEOGRID.TBL"
        inst="These are the only options I can determine from the data set, \
see the GEOGRID.TBL specification:"
        print textwrap.fill(inst,80)
        print web
        print "for a full listing of options."
    else:
        #print g.info.dirname
        return g.info.dirname
Ejemplo n.º 4
0
        up = [0] * len(f)
        down = up
        left = up
        right = up
        for i in range(len(f)):
            for j in range(i, len(f)):
                if abs(f[i].ulx - f[j].lrx) - resx < self.eps:
                    left[i] = j
                    right[j] = i
                elif abs(f[i].lrx - f[j].ulx) - resx < self.eps:
                    right[i] = j
                    left[j] = i
                elif abs(f[i].uly - f[j].lry) - resy < self.eps:
                    up[i] = j
                    down[j] = i
                elif abs(f[i].lry - f[j].uly) - resy < self.eps:
                    down[i] = j
                    up[j] = i


def source_option_parser(parser):
    pass


if __name__ == '__main__':
    setverbose()
    s = Source(['/Users/jbeezley/Downloads/data/24/w001001.adf'])
    a = s.gettile(1, 5, 1, 10)
    print a
    print a.shape