Пример #1
0
def main():
    title = Colors.BOLD + 'GIPS Image Statistics (v%s)' % __version__ + Colors.OFF

    parser0 = GIPSParser(datasources=False, description=title)
    parser0.add_default_parser()
    parser0.add_projdir_parser()
    group = parser0.add_argument_group('masking options')
    args = parser0.parse_args()

    # TODO - check that at least 1 of filemask or pmask is supplied

    try:
        print title
        header = ['min', 'max', 'mean', 'sd', 'skew', 'count']

        for projdir in args.projdir:
            VerboseOut('Stats for Project directory: %s' % projdir, 1)
            inv = ProjectInventory(projdir, args.products)

            files = {}
            for date in inv.dates:
                VerboseOut('Calculating statistics for %s' % date)
                for p in inv.products(date):
                    img = inv[date].open(p)
                    if p not in files.keys():
                        files[p] = open(
                            os.path.join(projdir, p + '_stats.txt'), 'w')
                        # write header
                        files[p].write('date ')
                        if img.NumBands() == 1:
                            files[p].write(' '.join(header))
                        else:
                            for band in img:
                                h = [
                                    band.Description() + "-" + a
                                    for a in header
                                ]
                                files[p].write(' '.join(h) + ' ')
                        files[p].write('\n')
                    # print date and stats
                    files[p].write(date.strftime('%Y-%j'))
                    for band in img:
                        stats = band.Stats()
                        [files[p].write(' ' + str(s)) for s in stats]
                        files[p].write(' ')
                    files[p].write('\n')
                    img = None
            for f in files:
                files[f].close()

    except Exception, e:
        import traceback
        VerboseOut(traceback.format_exc(), 4)
        print 'Error: %s' % e
Пример #2
0
def main():
    title = Colors.BOLD + "GIPS Image Statistics (v%s)" % __version__ + Colors.OFF

    parser0 = GIPSParser(datasources=False, description=title)
    parser0.add_default_parser()
    parser0.add_projdir_parser()
    group = parser0.add_argument_group("masking options")
    args = parser0.parse_args()

    # TODO - check that at least 1 of filemask or pmask is supplied

    try:
        print title
        header = ["min", "max", "mean", "sd", "skew", "count"]

        for projdir in args.projdir:
            VerboseOut("Stats for Project directory: %s" % projdir, 1)
            inv = ProjectInventory(projdir, args.products)

            files = {}
            for date in inv.dates:
                VerboseOut("Calculating statistics for %s" % date)
                for p in inv.products(date):
                    img = inv[date].open(p)
                    if p not in files.keys():
                        files[p] = open(os.path.join(projdir, p + "_stats.txt"), "w")
                        # write header
                        files[p].write("date ")
                        if img.NumBands() == 1:
                            files[p].write(" ".join(header))
                        else:
                            for band in img:
                                h = [band.Description() + "-" + a for a in header]
                                files[p].write(" ".join(h) + " ")
                        files[p].write("\n")
                    # print date and stats
                    files[p].write(date.strftime("%Y-%j"))
                    for band in img:
                        stats = band.Stats()
                        [files[p].write(" " + str(s)) for s in stats]
                        files[p].write(" ")
                    files[p].write("\n")
                    img = None
            for f in files:
                files[f].close()

    except Exception, e:
        import traceback

        VerboseOut(traceback.format_exc(), 4)
        print "Error: %s" % e
Пример #3
0
def main():
    title = Colors.BOLD + 'GIPS Data Archive Utility (v%s)' % gipsversion + Colors.OFF

    # argument parsing
    parser0 = GIPSParser(description=title)
    parser = parser0.add_default_parser()
    group = parser.add_argument_group('archive options')
    group.add_argument('--keep',
                       help='Keep files after adding to archive',
                       default=False,
                       action='store_true')
    group.add_argument('--recursive',
                       help='Iterate through subdirectories',
                       default=False,
                       action='store_true')
    group.add_argument(
        '--update',
        help=
        'Update asset if newer version available, (must call gips_process to regenerate products',
        default=False,
        action='store_true')
    args = parser0.parse_args()

    try:
        print title
        cls = import_data_class(args.command)
        cls.Asset.archive(**vars(args))
    except Exception, e:
        import traceback
        VerboseOut(traceback.format_exc(), 4)
        print 'Data archive error: %s' % e
Пример #4
0
def main():
    title = Colors.BOLD + 'GIPS Data Archive Utility (v%s)' % gipsversion + Colors.OFF

    # argument parsing
    parser0 = GIPSParser(description=title)
    parser = parser0.add_default_parser()
    group = parser.add_argument_group('archive options')
    group.add_argument('--keep', help='Keep files after adding to archive', default=False, action='store_true')
    group.add_argument('--recursive', help='Iterate through subdirectories', default=False, action='store_true')
    group.add_argument(
        '--update',
        help='Update asset if newer version available, (must call gips_process to regenerate products',
        default=False,
        action='store_true'
    )
    args = parser0.parse_args()

    try:
        print title
        cls = import_data_class(args.command)
        cls.Asset.archive(**vars(args))
    except Exception, e:
        import traceback
        VerboseOut(traceback.format_exc(), 4)
        print 'Data archive error: %s' % e
Пример #5
0
def main():
    title = Colors.BOLD + 'GIPS Project Masking (v%s)' % __version__ + Colors.OFF

    parser0 = GIPSParser(datasources=False, description=title)
    parser0.add_default_parser()
    parser0.add_projdir_parser()
    group = parser0.add_argument_group('masking options')
    group.add_argument('--filemask',
                       help='Mask all files with this static mask',
                       default=None)
    group.add_argument('--pmask',
                       help='Mask files with this corresponding product',
                       nargs='*',
                       default=[])
    h = 'Write mask to original image instead of creating new image'
    group.add_argument('--original',
                       help=h,
                       default=False,
                       action='store_true')
    h = 'Overwrite existing files when creating new'
    group.add_argument('--overwrite',
                       help=h,
                       default=False,
                       action='store_true')
    h = 'Suffix to apply to masked file (not compatible with --original)'
    group.add_argument('--suffix', help=h, default='-masked')
    #parser0.add_argument('-i', '--invert', help='Invert mask (0->1, 1->0)', default=False, action='store_true')
    #parser0.add_argument('--value', help='Mask == val', default=1)
    args = parser0.parse_args()

    # TODO - check that at least 1 of filemask or pmask is supplied

    try:
        print title
        for projdir in args.projdir:

            if args.filemask is not None:
                mask_file = gippy.GeoImage(args.filemask)

            inv = ProjectInventory(projdir, args.products)
            for date in inv.dates:
                VerboseOut('Masking files from %s' % date)
                available_masks = inv[date].masks(args.pmask)
                for p in inv.products(date):
                    # don't mask any masks
                    if p in available_masks:
                        continue
                    meta = ''
                    update = True if args.original else False
                    img = inv[date].open(p, update=update)
                    if args.filemask is not None:
                        img.AddMask(mask_file[0])
                        meta = basename(args.filemask) + ' '
                    for mask in available_masks:
                        img.AddMask(inv[date].open(mask)[0])
                        meta = meta + basename(inv[date][mask]) + ' '
                    if meta != '':
                        if args.original:
                            VerboseOut('  %s' % (img.Basename()), 2)
                            img.Process()
                            img.SetMeta('MASKS', meta)
                        else:
                            fout = os.path.splitext(
                                img.Filename())[0] + args.suffix + '.tif'
                            if not os.path.exists(fout) or args.overwrite:
                                VerboseOut(
                                    '  %s -> %s' %
                                    (img.Basename(), basename(fout)), 2)
                                imgout = img.Process(fout)
                                imgout.SetMeta('MASKS', meta)
                                imgout = None
                    img = None
            mask_file = None

    except Exception, e:
        import traceback
        VerboseOut(traceback.format_exc(), 4)
        print 'Masking error: %s' % e
Пример #6
0
def main():
    title = Colors.BOLD + 'GIPS Project Masking (v%s)' % __version__ + Colors.OFF

    parser0 = GIPSParser(datasources=False, description=title)
    parser0.add_default_parser()
    parser0.add_projdir_parser()
    group = parser0.add_argument_group('masking options')
    group.add_argument('--filemask', help='Mask all files with this static mask', default=None)
    group.add_argument('--pmask', help='Mask files with this corresponding product', nargs='*', default=[])
    h = 'Write mask to original image instead of creating new image'
    group.add_argument('--original', help=h, default=False, action='store_true')
    h = 'Overwrite existing files when creating new'
    group.add_argument('--overwrite', help=h, default=False, action='store_true')
    h = 'Suffix to apply to masked file (not compatible with --original)'
    group.add_argument('--suffix', help=h, default='-masked')
    #parser0.add_argument('-i', '--invert', help='Invert mask (0->1, 1->0)', default=False, action='store_true')
    #parser0.add_argument('--value', help='Mask == val', default=1)
    args = parser0.parse_args()

    # TODO - check that at least 1 of filemask or pmask is supplied

    try:
        VerboseOut(title)
        for projdir in args.projdir:

            if args.filemask is not None:
                mask_file = gippy.GeoImage(args.filemask)

            inv = ProjectInventory(projdir, args.products)
            for date in inv.dates:
                VerboseOut('Masking files from %s' % date)
                if args.filemask is None and args.pmask == []:
                    available_masks = inv[date].masks()
                else:
                    available_masks = inv[date].masks(args.pmask)
                for p in inv.products(date):
                    # don't mask any masks
                    if p in available_masks:
                        continue
                    meta = ''
                    update = True if args.original else False
                    img = inv[date].open(p, update=update)
                    if args.filemask is not None:
                        img.AddMask(mask_file[0])
                        meta = basename(args.filemask) + ' '
                    for mask in available_masks:
                        img.AddMask(inv[date].open(mask)[0])
                        meta = meta + basename(inv[date][mask]) + ' '
                    if meta != '':
                        if args.original:
                            VerboseOut('  %s' % (img.Basename()), 2)
                            img.Process()
                            img.SetMeta('MASKS', meta)
                        else:
                            fout = os.path.splitext(img.Filename())[0] + args.suffix + '.tif'
                            if not os.path.exists(fout) or args.overwrite:
                                VerboseOut('  %s -> %s' % (img.Basename(), basename(fout)), 2)
                                imgout = img.Process(fout)
                                imgout.SetMeta('MASKS', meta)
                                imgout = None
                    img = None
            mask_file = None

    except Exception, e:
        import traceback
        VerboseOut(traceback.format_exc(), 4)
        print 'Masking error: %s' % e