Beispiel #1
0
    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))
Beispiel #2
0
    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))
Beispiel #3
0
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)
Beispiel #4
0
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)