Index: wflow-py/wflow/wflow_upscale.py =================================================================== diff -u -rb590764dadccdae36e4e24d1560c0f8a5aec0415 -r05aa7b57325875db6ec490ea6770b834d5b879a6 --- wflow-py/wflow/wflow_upscale.py (.../wflow_upscale.py) (revision b590764dadccdae36e4e24d1560c0f8a5aec0415) +++ wflow-py/wflow/wflow_upscale.py (.../wflow_upscale.py) (revision 05aa7b57325875db6ec490ea6770b834d5b879a6) @@ -23,10 +23,10 @@ Usage:: - -C CaseName - -N NewCaseName - -r resample factor - -I skip input mapstacks if specified + -C CaseName + -N NewCaseName + -r resample factor + -I skip input mapstacks if specified -f force overwrite an existing model The script uses the pcraster resample program to reduce the maps. The original @@ -50,7 +50,7 @@ except ImportError: import pcrut -import os, sys +import os, sys, shlex import os.path import glob import getopt @@ -107,87 +107,91 @@ def main(): - try: - opts, args = getopt.getopt(sys.argv[1:], 'fhC:N:Ir:') - except getopt.error, msg: - usage(msg) + try: + opts, args = getopt.getopt(sys.argv[1:], 'fhC:N:Ir:') + except getopt.error, msg: + usage(msg) - factor = 1 - Verbose=1 - inmaps = True - force = False - caseName = "rhineNew" - caseNameNew = "rhineNew_resamp" + factor = 1 + Verbose=1 + inmaps = True + force = False + caseName = "rhineNew" + caseNameNew = "rhineNew_resamp" - for o, a in opts: - if o == '-C': caseName = a - if o == '-N': caseNameNew = a - if o == '-r': factor = int(a) - if o == '-I': inmaps = False - if o == '-h': usage() - if o == '-f': force = True - + for o, a in opts: + if o == '-C': caseName = a + if o == '-N': caseNameNew = a + if o == '-r': factor = int(a) + if o == '-I': inmaps = False + if o == '-h': usage() + if o == '-f': force = True - dirs = ['/intbl/', '/inmaps/', '/staticmaps/', '/intss/', '/instate/', '/outstate/'] - if os.path.isdir(caseNameNew) and not force: - print "Refusing to write into an existing directory:" + caseNameNew - exit() + dirs = ['/intbl/', '/inmaps/', '/staticmaps/', '/intss/', '/instate/', '/outstate/'] + if os.path.isdir(caseNameNew) and not force: + print "Refusing to write into an existing directory:" + caseNameNew + exit() - if not os.path.isdir(caseNameNew): - for ddir in dirs: - os.makedirs(caseNameNew + ddir) - for inifile in glob.glob(caseName + "/*.ini"): - shutil.copy(inifile, inifile.replace(caseName,caseNameNew)) - - for ddir in dirs: - for mfile in glob.glob(caseName + ddir + '/*.map'): - mstr = "resample -r " + str(factor) + ' ' + mfile + " " + mfile.replace(caseName,caseNameNew) - print mstr - os.system(mstr) + + if not os.path.isdir(caseNameNew): + for ddir in dirs: + os.makedirs(caseNameNew + ddir) + for inifile in glob.glob(caseName + "/*.ini"): + shutil.copy(inifile, inifile.replace(caseName,caseNameNew)) + + for ddir in dirs: + allcmd = [] + for mfile in glob.glob(caseName + ddir + '/*.map'): + mstr = "resample -r " + str(factor) + ' ' + mfile + " " + mfile.replace(caseName,caseNameNew) + print mstr + allcmd.append(mstr) + #os.system(mstr) + runCommands(allcmd,maxcpu) + if inmaps: allcmd = [] - for mfile in glob.glob(caseName + ddir + '/*.[0-9][0-9][0-9]'): - mstr = "resample -r " + str(factor) + ' ' + mfile + " " + mfile.replace(caseName,caseNameNew) - if not os.path.exists(mfile.replace(caseName,caseNameNew)): - print mstr + for mfile in glob.glob(caseName + ddir + '/*.[0-9][0-9][0-9]'): + mstr = "resample -r " + str(factor) + ' ' + mfile + " " + mfile.replace(caseName,caseNameNew) + if not os.path.exists(mfile.replace(caseName,caseNameNew)): + print mstr allcmd.append(mstr) - #os.system(mstr) - else: - print "skipping " + mfile.replace(caseName,caseNameNew) + #os.system(mstr) + else: + print "skipping " + mfile.replace(caseName,caseNameNew) runCommands(allcmd,maxcpu) - for mfile in glob.glob(caseName + ddir + '*.tbl'): - shutil.copy(mfile, mfile.replace(caseName,caseNameNew)) - for mfile in glob.glob(caseName + ddir + '*.col'): - shutil.copy(mfile, mfile.replace(caseName,caseNameNew)) - for mfile in glob.glob(caseName + ddir + '*.tss'): - shutil.copy(mfile, mfile.replace(caseName,caseNameNew)) - - print "recreating static maps ..." - # Create new ldd using old river network - dem = readmap(caseNameNew + "/staticmaps/wflow_dem.map") - # orig low res river - riverburn = readmap(caseNameNew + "/staticmaps/wflow_river.map") - # save it - report(riverburn,caseNameNew + "/staticmaps/wflow_riverburnin.map") - demburn = cover(ifthen(boolean(riverburn), dem - 600) ,dem) - print "Creating ldd..." - ldd = lddcreate_save(caseNameNew + "/staticmaps/wflow_ldd.map",demburn, True, 10.0E35) - # - ## Find catchment (overall) - outlet = find_outlet(ldd) - sub = subcatch(ldd,outlet) - report(sub,caseNameNew + "/staticmaps/wflow_catchment.map") - report(outlet,caseNameNew + "/staticmaps/wflow_outlet.map") - #os.system("col2map --clone " + caseNameNew + "/staticmaps/wflow_subcatch.map " + caseNameNew + "/staticmaps/gauges.col " + caseNameNew + "/staticmaps/wflow_gauges.map") - gmap = readmap(caseNameNew + "/staticmaps/wflow_gauges.map") - scatch = subcatch(ldd,gmap) - report(scatch,caseNameNew + "/staticmaps/wflow_subcatch.map") + for mfile in glob.glob(caseName + ddir + '*.tbl'): + shutil.copy(mfile, mfile.replace(caseName,caseNameNew)) + for mfile in glob.glob(caseName + ddir + '*.col'): + shutil.copy(mfile, mfile.replace(caseName,caseNameNew)) + for mfile in glob.glob(caseName + ddir + '*.tss'): + shutil.copy(mfile, mfile.replace(caseName,caseNameNew)) + print "recreating static maps ..." + # Create new ldd using old river network + dem = readmap(caseNameNew + "/staticmaps/wflow_dem.map") + # orig low res river + riverburn = readmap(caseNameNew + "/staticmaps/wflow_river.map") + # save it + report(riverburn,caseNameNew + "/staticmaps/wflow_riverburnin.map") + demburn = cover(ifthen(boolean(riverburn), dem - 600) ,dem) + print "Creating ldd..." + ldd = lddcreate_save(caseNameNew + "/staticmaps/wflow_ldd.map",demburn, True, 10.0E35) + # + ## Find catchment (overall) + outlet = find_outlet(ldd) + sub = subcatch(ldd,outlet) + report(sub,caseNameNew + "/staticmaps/wflow_catchment.map") + report(outlet,caseNameNew + "/staticmaps/wflow_outlet.map") + #os.system("col2map --clone " + caseNameNew + "/staticmaps/wflow_subcatch.map " + caseNameNew + "/staticmaps/gauges.col " + caseNameNew + "/staticmaps/wflow_gauges.map") + gmap = readmap(caseNameNew + "/staticmaps/wflow_gauges.map") + scatch = subcatch(ldd,gmap) + report(scatch,caseNameNew + "/staticmaps/wflow_subcatch.map") + if __name__ == "__main__": main()