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()
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
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
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