Source code for satproc.console.make_masks

# -*- coding: utf-8 -*-
"""
This is a skeleton file that can serve as a starting point for a Python
console script. To run this script uncomment the following lines in the
[options.entry_points] section in setup.cfg:

    console_scripts =
         fibonacci = satproc.skeleton:run

Then run `python setup.py install` which will install the command `fibonacci`
inside your current environment.
Besides console scripts, the header (i.e. until _logger...) of this file can
also be used as template for Python modules.

Note: This skeleton file can be safely removed if not needed!
"""

import argparse
import logging
import sys

from satproc import __version__
from satproc.masks import make_masks

__author__ = "Damián Silvani"
__copyright__ = "Damián Silvani"
__license__ = "mit"

_logger = logging.getLogger(__name__)


[docs]def parse_args(args): """Parse command line parameters Args: args ([str]): command line parameters as list of strings Returns: :obj:`argparse.Namespace`: command line parameters namespace """ parser = argparse.ArgumentParser( description="Build masks from chip raster files", formatter_class=argparse.ArgumentDefaultsHelpFormatter, ) parser.add_argument("raster", nargs="+", help="input raster file(s)") parser.add_argument( "--masks", "-m", nargs="+", choices=["extent", "boundary", "distance"], default={"extent"}, ) parser.add_argument( "--mask-type", choices=["single", "class", "instance"], default="class" ) parser.add_argument("--labels", required=True, help="inpul label shapefile") parser.add_argument( "--label-property", default="class", help="label property to separate in classes", ) parser.add_argument( "--classes", nargs="+", type=str, help="specify classes order in result mask." ) parser.add_argument( "--extent-no-border", action="store_true", help="do not include border in extent mask", ) parser.add_argument("-o", "--output-dir", help="output dir", default=".") parser.add_argument( "--version", action="version", version="satproc {ver}".format(ver=__version__) ) parser.add_argument( "-v", "--verbose", dest="loglevel", help="set loglevel to INFO", action="store_const", const=logging.INFO, ) parser.add_argument( "-vv", "--very-verbose", dest="loglevel", help="set loglevel to DEBUG", action="store_const", const=logging.DEBUG, ) return parser.parse_args(args), parser
[docs]def setup_logging(loglevel): """Setup basic logging Args: loglevel (int): minimum loglevel for emitting messages """ logformat = "[%(asctime)s] %(levelname)s:%(name)s:%(message)s" logging.basicConfig( level=loglevel, stream=sys.stdout, format=logformat, datefmt="%Y-%m-%d %H:%M:%S" )
[docs]def main(args): """Main entry point allowing external calls Args: args ([str]): command line parameter list """ args, _parser = parse_args(args) setup_logging(args.loglevel) make_masks( args.raster, output_dir=args.output_dir, masks=args.masks, mask_type=args.mask_type, labels=args.labels, label_property=args.label_property, classes=args.classes, extent_no_border=args.extent_no_border, )
[docs]def run(): """Entry point for console_scripts""" main(sys.argv[1:])
if __name__ == "__main__": run()