def test4_create_chm(self): """ Create CHM """ fouts = [] for f in self.features: prefix = os.path.join(self.testdir, f.Basename() + "_") fdtm = os.path.join(self.testdir, prefix + "dtm.idw.tif") fdsm = os.path.join(self.testdir, prefix + "dsm.max.tif") fout = create_chm(fdtm, fdsm, prefix + "chm.tif") fouts.append(fout) self.assertTrue(os.path.exists(fout)) fout = create_vrt(fouts, os.path.join(self.testdir, "chm.vrt"), site=self.features) self.assertTrue(os.path.exists(fout))
def test4_create_chm(self): """ Create CHM """ fouts = [] for f in self.features: prefix = os.path.join(self.testdir, f.Basename() + '_') fdtm = os.path.join(self.testdir, prefix + 'dtm.idw.tif') fdsm = os.path.join(self.testdir, prefix + 'dsm.max.tif') fout = create_chm(fdtm, fdsm, prefix + 'chm.tif') fouts.append(fout) self.assertTrue(os.path.exists(fout)) fout = create_vrt(fouts, os.path.join(self.testdir, 'chm.vrt'), site=self.features) self.assertTrue(os.path.exists(fout))
def main(): dhf = argparse.ArgumentDefaultsHelpFormatter desc = 'Calculate and create CHM from a DSM and DTM' parser = argparse.ArgumentParser(description=desc, formatter_class=dhf) parser.add_argument( 'demdir', help='Directory holding DEMs (and used to store CHM output') parser.add_argument( '-s', '--site', default=None, help='Site shapefile name (use if used for DTM/DSM creation') parser.add_argument( '--dsm', default='dsm.max.tif', help='Filename of DSM input (will be preceded by feature name if using shapefile') parser.add_argument( '--dtm', default='dtm.idw.tif', help='Filename of DTM input (will be preceded by feature name if using shapefile') parser.add_argument( '--fout', default='chm.tif', help='Output filename (created in demdir)') parser.add_argument( '--hillshade', default=False, action='store_true', help='Generate hillshade') parser.add_argument( '-v', '--verbose', default=False, action='store_true', help='Print additional info') args = parser.parse_args() start = dt.datetime.now() print 'Creating CHM from DEMS in %s' % (os.path.relpath(args.demdir)) if args.site is not None: site = gippy.GeoVector(args.site) else: site = [None] fout_final = os.path.join(args.demdir, os.path.splitext(args.fout)[0] + '.vrt') fouts = [] hillfouts = [] for feature in site: prefix = os.path.join(args.demdir, '' if feature is None else feature.Basename() + '_') fdtm = prefix + args.dtm fdsm = prefix + args.dsm if not os.path.exists(fdtm) or not os.path.exists(fdsm): print "No valid input files found (%s)" % prefix continue try: fout = create_chm(fdtm, fdsm, prefix + args.fout) fouts.append(fout) except Exception as e: print "Error creating %s: %s" % (fout, e) if args.verbose: import traceback print traceback.format_exc() if args.hillshade: hillfouts.append(create_hillshade(fout)) # if multiple file output then combine them together if len(fouts) > 0 and site[0] is not None: create_vrt(fouts, fout_final, site=site) if args.hillshade: fout = os.path.splitext(fout_final)[0] + '_hillshade.tif' create_vrt(hillfouts, fout, site=site) print 'Completed %s in %s' % (fout_final, dt.datetime.now() - start)
def main(): dhf = argparse.ArgumentDefaultsHelpFormatter desc = 'Calculate and create CHM from a DSM and DTM' parser = argparse.ArgumentParser(description=desc, formatter_class=dhf) parser.add_argument( 'demdir', help='Directory holding DEMs (and used to store CHM output') parser.add_argument( '-s', '--site', default=None, help='Site shapefile name (use if used for DTM/DSM creation') parser.add_argument( '--dsm', default='dsm.max.tif', help= 'Filename of DSM input (will be preceded by feature name if using shapefile' ) parser.add_argument( '--dtm', default='dtm.idw.tif', help= 'Filename of DTM input (will be preceded by feature name if using shapefile' ) parser.add_argument('--fout', default='chm.tif', help='Output filename (created in demdir)') parser.add_argument('--hillshade', default=False, action='store_true', help='Generate hillshade') parser.add_argument('-v', '--verbose', default=False, action='store_true', help='Print additional info') args = parser.parse_args() start = dt.datetime.now() print 'Creating CHM from DEMS in %s' % (os.path.relpath(args.demdir)) if args.site is not None: site = gippy.GeoVector(args.site) else: site = [None] fout_final = os.path.join(args.demdir, os.path.splitext(args.fout)[0] + '.vrt') fouts = [] hillfouts = [] for feature in site: prefix = os.path.join( args.demdir, '' if feature is None else feature.Basename() + '_') fdtm = prefix + args.dtm fdsm = prefix + args.dsm if not os.path.exists(fdtm) or not os.path.exists(fdsm): print "No valid input files found (%s)" % prefix continue try: fout = create_chm(fdtm, fdsm, prefix + args.fout) fouts.append(fout) except Exception as e: print "Error creating %s: %s" % (fout, e) if args.verbose: import traceback print traceback.format_exc() if args.hillshade: hillfouts.append(create_hillshade(fout)) # if multiple file output then combine them together if len(fouts) > 0 and site[0] is not None: create_vrt(fouts, fout_final, site=site) if args.hillshade: fout = os.path.splitext(fout_final)[0] + '_hillshade.tif' create_vrt(hillfouts, fout, site=site) print 'Completed %s in %s' % (fout_final, dt.datetime.now() - start)