def test1_create_density(self): """ Test creating density """ fouts = [] for f in self.features: lasfiles = find_lasfiles(self.lasdir, site=f, checkoverlap=True) fout = create_dems(lasfiles, "density", site=f, outdir=self.testdir) fouts.append(fout["den"]) [self.assertTrue(os.path.exists(f)) for f in fouts] # create VRT fout = os.path.join(self.testdir, "density.vrt") create_vrt(fouts, fout, site=self.features)
def test3_create_dsm(self): """ Create DSM """ pieces = [] for f in self.features: lasfiles = find_classified_lasfile(self.testdir, site=f) pouts = create_dems(lasfiles, "dsm", site=f, gapfill=True, outdir=self.testdir) [self.assertTrue(os.path.exists(fout) for fout in pouts.items())] pieces.append(pouts) for product in pouts.keys(): # there will be mult if gapfill False and multiple radii....use 1st one fnames = [piece[product] for piece in pieces] fout = os.path.join(self.testdir, "dsm-%s.vrt" % product) create_vrt(fnames, fout, site=self.features) self.assertTrue(os.path.exists(fout))
def test1_create_density(self): """ Test creating density """ fouts = [] for f in self.features: lasfiles = find_lasfiles(self.lasdir, site=f, checkoverlap=True) fout = create_dems(lasfiles, 'density', site=f, outdir=self.testdir) fouts.append(fout['den']) [self.assertTrue(os.path.exists(f)) for f in fouts] # create VRT fout = os.path.join(self.testdir, 'density.vrt') create_vrt(fouts, fout, site=self.features)
def test3_create_dsm(self): """ Create DSM """ pieces = [] for f in self.features: lasfiles = find_classified_lasfile(self.testdir, site=f) pouts = create_dems(lasfiles, 'dsm', site=f, gapfill=True, outdir=self.testdir) [self.assertTrue(os.path.exists(fout) for fout in pouts.items())] pieces.append(pouts) for product in pouts.keys(): # there will be mult if gapfill False and multiple radii....use 1st one fnames = [piece[product] for piece in pieces] fout = os.path.join(self.testdir, 'dsm-%s.vrt' % product) create_vrt(fnames, fout, site=self.features) self.assertTrue(os.path.exists(fout))
def main(): parser = l2dParser(description='Create DEM(s) from LiDAR files', commands=True) parser.add_input_parser() parser.add_output_parser() parser.add_filter_parser() # parser.add_argument('--vendor_classified', # help='Files are not classified by l2d, the l2d naming scheme was not used for classified files', # default=False) args = parser.parse_args() start0 = datetime.now() lasdir = args.lasdir # open site vector if args.site is not None: try: site = GeoVector(args.site) except: print 'Error opening %s' % args.site exit(2) else: site = [None] # make sure outdir exists args.outdir = os.path.abspath(args.outdir) if not os.path.exists(args.outdir): os.makedirs(args.outdir) args.lasdir = os.path.abspath(args.lasdir) # the final filenames products = dem_products(args.demtype) bnames = {p: '%s%s.%s' % (args.demtype, args.suffix, p) for p in products} prefix = '' # if args.site is None else site.Basename() + '_' fouts = {p: os.path.join(args.outdir, '%s%s%s.%s.vrt' % (prefix, args.demtype, args.suffix, p)) for p in products} # pull out the arguments to pass to create_dems keys = ['radius', 'decimation', 'maxsd', 'maxz', 'maxangle', 'returnnum', 'outdir', 'suffix', 'verbose', 'overwrite'] vargs = vars(args) kwargs = {k: vargs[k] for k in vargs if k in keys} # run if any products are missing exists = all([os.path.exists(f) for f in fouts.values()]) if exists and not args.overwrite: print 'Already created %s in %s' % (args.demtype, os.path.relpath(args.outdir)) exit(0) # loop through features pieces = [] for feature in site: try: # find las files if args.demtype == 'density': lasfiles = find_lasfiles(args.lasdir, site=feature, checkoverlap=True) else: if args.vendor_classified == False: parameters = class_params(feature, args.slope, args.cellsize) lasfiles = find_classified_lasfile(args.lasdir, site=feature, params=parameters) else: lasfiles = find_lasfiles(args.lasdir, site=feature, checkoverlap=True) # create dems pouts = create_dems(lasfiles, args.demtype, site=feature, gapfill=args.gapfill, **kwargs) # NOTE - if gapfill then fouts is dict, otherwise is list of dicts (1 for each radius) pieces.append(pouts) except Exception, e: print "Error creating %s %s: %s" % (args.demtype, '' if feature is None else feature.Basename(), e) if args.verbose: import traceback print traceback.format_exc()
def main(): parser = l2dParser(description='Create DEM(s) from LiDAR files', commands=True) parser.add_input_parser() parser.add_output_parser() parser.add_filter_parser() # parser.add_argument('--vendor_classified', # help='Files are not classified by l2d, the l2d naming scheme was not used for classified files', # default=False) args = parser.parse_args() start0 = datetime.now() lasdir = args.lasdir # open site vector if args.site is not None: try: site = GeoVector(args.site) except: print 'Error opening %s' % args.site exit(2) else: site = [None] # make sure outdir exists args.outdir = os.path.abspath(args.outdir) if not os.path.exists(args.outdir): os.makedirs(args.outdir) args.lasdir = os.path.abspath(args.lasdir) # the final filenames products = dem_products(args.demtype) bnames = {p: '%s%s.%s' % (args.demtype, args.suffix, p) for p in products} prefix = '' # if args.site is None else site.Basename() + '_' fouts = { p: os.path.join(args.outdir, '%s%s%s.%s.vrt' % (prefix, args.demtype, args.suffix, p)) for p in products } # pull out the arguments to pass to create_dems keys = [ 'radius', 'decimation', 'maxsd', 'maxz', 'maxangle', 'returnnum', 'outdir', 'suffix', 'verbose', 'overwrite', 'resolution' ] vargs = vars(args) kwargs = {k: vargs[k] for k in vargs if k in keys} # run if any products are missing exists = all([os.path.exists(f) for f in fouts.values()]) if exists and not args.overwrite: print 'Already created %s in %s' % (args.demtype, os.path.relpath(args.outdir)) exit(0) # loop through features pieces = [] for feature in site: try: # find las files if args.demtype == 'density': lasfiles = find_lasfiles(args.lasdir, site=feature, checkoverlap=True) else: if args.vendor_classified == False: parameters = class_params(feature, args.slope, args.cellsize) lasfiles = find_classified_lasfile(args.lasdir, site=feature, params=parameters) else: lasfiles = find_lasfiles(args.lasdir, site=feature, checkoverlap=True) # create dems pouts = create_dems(lasfiles, args.demtype, site=feature, gapfill=args.gapfill, **kwargs) # NOTE - if gapfill then fouts is dict, otherwise is list of dicts (1 for each radius) pieces.append(pouts) except Exception, e: print "Error creating %s %s: %s" % ( args.demtype, '' if feature is None else feature.Basename(), e) if args.verbose: import traceback print traceback.format_exc()