コード例 #1
0
ファイル: app.py プロジェクト: hpfast/mapproxy
def config_command(args):
    parser = optparse.OptionParser("usage: %prog autoconfig [options]")

    parser.add_option("--capabilities", help="URL or filename of WMS 1.1.1/1.3.0 capabilities document")
    parser.add_option("--output", help="filename for created MapProxy config [default: -]", default="-")
    parser.add_option("--output-seed", help="filename for created seeding config")

    parser.add_option("--base", help="base config to include in created MapProxy config")

    parser.add_option("--overwrite", help="YAML file with overwrites for the created MapProxy config")
    parser.add_option("--overwrite-seed", help="YAML file with overwrites for the created seeding config")

    parser.add_option("--force", default=False, action="store_true", help="overwrite existing files")

    options, args = parser.parse_args(args)

    if not options.capabilities:
        parser.print_help()
        print >>sys.stderr, "\nERROR: --capabilities required"
        return 2

    if not options.output and not options.output_seed:
        parser.print_help()
        print >>sys.stderr, "\nERROR: --output and/or --output-seed required"
        return 2

    if not options.force:
        if options.output and options.output != "-" and os.path.exists(options.output):
            print >>sys.stderr, "\nERROR: %s already exists, use --force to overwrite" % options.output
            return 2
        if options.output_seed and options.output_seed != "-" and os.path.exists(options.output_seed):
            print >>sys.stderr, "\nERROR: %s already exists, use --force to overwrite" % options.output_seed
            return 2

    log = logging.getLogger("mapproxy_conf_cmd")
    log.addHandler(logging.StreamHandler())

    setup_logging(logging.WARNING)

    srs_grids = {}
    if options.base:
        base = load_configuration(options.base)
        for name, grid_conf in base.grids.iteritems():
            if name.startswith("GLOBAL_"):
                continue
            srs_grids[grid_conf.tile_grid().srs.srs_code] = name

    cap_doc = options.capabilities
    if cap_doc.startswith(("http://", "https://")):
        cap_doc = download_capabilities(options.capabilities).read()
    else:
        cap_doc = open(cap_doc, "rb").read()

    try:
        cap = parse_capabilities(StringIO(cap_doc))
    except (xml.etree.ElementTree.ParseError, ValueError), ex:
        print >>sys.stderr, ex
        print >>sys.stderr, cap_doc[:1000] + ("..." if len(cap_doc) > 1000 else "")
        return 3
コード例 #2
0
ファイル: wms_capabilities.py プロジェクト: LKajan/mapproxy
def parse_capabilities(fileobj, version='1.1.1'):
    try:
        return wmsparse.parse_capabilities(fileobj)
    except ValueError as ex:
        log_error('%s\n%s\n%s\n%s\nNot a capabilities document: %s', 'Recieved document:', '-'*80, fileobj.getvalue(), '-'*80, ex.args[0])
        sys.exit(1)
    except etree.ElementTree.ParseError as ex:
        log_error('%s\n%s\n%s\n%s\nCould not parse the document: %s', 'Recieved document:', '-'*80, fileobj.getvalue(), '-'*80, ex.args[0])
        sys.exit(1)
コード例 #3
0
ファイル: wms_capabilities.py プロジェクト: GeoDodo/mapproxy
def parse_capabilities(fileobj, version='1.1.1'):
    try:
        return wmsparse.parse_capabilities(fileobj)
    except ValueError as ex:
        log_error('%s\n%s\n%s\n%s\nNot a capabilities document: %s', 'Recieved document:', '-'*80, fileobj.getvalue(), '-'*80, ex.args[0])
        sys.exit(1)
    except Exception as ex:
        # catch all, etree.ParseError only avail since Python 2.7
        # 2.5 and 2.6 raises exc from underlying implementation like expat
        log_error('%s\n%s\n%s\n%s\nCould not parse the document: %s', 'Recieved document:', '-'*80, fileobj.getvalue(), '-'*80, ex.args[0])
        sys.exit(1)
コード例 #4
0
def parse_capabilities(fileobj, version='1.1.1'):
    try:
        return wmsparse.parse_capabilities(fileobj)
    except ValueError as ex:
        log_error('%s\n%s\n%s\n%s\nNot a capabilities document: %s',
                  'Recieved document:', '-' * 80, fileobj.getvalue(), '-' * 80,
                  ex.args[0])
        sys.exit(1)
    except etree.ElementTree.ParseError as ex:
        log_error('%s\n%s\n%s\n%s\nCould not parse the document: %s',
                  'Recieved document:', '-' * 80, fileobj.getvalue(), '-' * 80,
                  ex.args[0])
        sys.exit(1)
コード例 #5
0
def parse_capabilities(fileobj, version='1.1.1'):
    try:
        return wmsparse.parse_capabilities(fileobj)
    except ValueError as ex:
        log_error('%s\n%s\n%s\n%s\nNot a capabilities document: %s',
                  'Recieved document:', '-' * 80, fileobj.getvalue(), '-' * 80,
                  ex.args[0])
        sys.exit(1)
    except Exception as ex:
        # catch all, etree.ParseError only avail since Python 2.7
        # 2.5 and 2.6 raises exc from underlying implementation like expat
        log_error('%s\n%s\n%s\n%s\nCould not parse the document: %s',
                  'Recieved document:', '-' * 80, fileobj.getvalue(), '-' * 80,
                  ex.args[0])
        sys.exit(1)
コード例 #6
0
def config_command(args):
    parser = optparse.OptionParser("usage: %prog autoconfig [options]")

    parser.add_option(
        '--capabilities',
        help="URL or filename of WMS 1.1.1/1.3.0 capabilities document")
    parser.add_option('--output',
                      help="filename for created MapProxy config [default: -]",
                      default="-")
    parser.add_option('--output-seed',
                      help="filename for created seeding config")

    parser.add_option('--base',
                      help='base config to include in created MapProxy config')

    parser.add_option(
        '--overwrite',
        help='YAML file with overwrites for the created MapProxy config')
    parser.add_option(
        '--overwrite-seed',
        help='YAML file with overwrites for the created seeding config')

    parser.add_option('--force',
                      default=False,
                      action='store_true',
                      help="overwrite existing files")

    options, args = parser.parse_args(args)

    if not options.capabilities:
        parser.print_help()
        print("\nERROR: --capabilities required", file=sys.stderr)
        return 2

    if not options.output and not options.output_seed:
        parser.print_help()
        print("\nERROR: --output and/or --output-seed required",
              file=sys.stderr)
        return 2

    if not options.force:
        if options.output and options.output != '-' and os.path.exists(
                options.output):
            print("\nERROR: %s already exists, use --force to overwrite" %
                  options.output,
                  file=sys.stderr)
            return 2
        if options.output_seed and options.output_seed != '-' and os.path.exists(
                options.output_seed):
            print("\nERROR: %s already exists, use --force to overwrite" %
                  options.output_seed,
                  file=sys.stderr)
            return 2

    log = logging.getLogger('mapproxy_conf_cmd')
    log.addHandler(logging.StreamHandler())

    setup_logging(logging.WARNING)

    srs_grids = {}
    if options.base:
        base = load_configuration(options.base)
        for name, grid_conf in iteritems(base.grids):
            if name.startswith('GLOBAL_'):
                continue
            srs_grids[grid_conf.tile_grid().srs.srs_code] = name

    cap_doc = options.capabilities
    if cap_doc.startswith(('http://', 'https://')):
        cap_doc = download_capabilities(options.capabilities).read()
    else:
        cap_doc = open(cap_doc, 'rb').read()

    try:
        cap = parse_capabilities(BytesIO(cap_doc))
    except (xml.etree.ElementTree.ParseError, ValueError) as ex:
        print(ex, file=sys.stderr)
        print(cap_doc[:1000] + ('...' if len(cap_doc) > 1000 else ''),
              file=sys.stderr)
        return 3

    overwrite = None
    if options.overwrite:
        with open(options.overwrite, 'rb') as f:
            overwrite = yaml.safe_load(f)

    overwrite_seed = None
    if options.overwrite_seed:
        with open(options.overwrite_seed, 'rb') as f:
            overwrite_seed = yaml.safe_load(f)

    conf = {}
    if options.base:
        conf['base'] = os.path.abspath(options.base)

    conf['services'] = {'wms': {'md': {'title': cap.metadata()['title']}}}
    if overwrite:
        conf['services'] = update_config(conf['services'],
                                         overwrite.pop('service', {}))

    conf['sources'] = sources(cap)
    if overwrite:
        conf['sources'] = update_config(conf['sources'],
                                        overwrite.pop('sources', {}))

    conf['caches'] = caches(cap, conf['sources'], srs_grids=srs_grids)
    if overwrite:
        conf['caches'] = update_config(conf['caches'],
                                       overwrite.pop('caches', {}))

    conf['layers'] = layers(cap, conf['caches'])
    if overwrite:
        conf['layers'] = update_config(conf['layers'],
                                       overwrite.pop('layers', {}))

    if overwrite:
        conf = update_config(conf, overwrite)

    seed_conf = {}
    seed_conf['seeds'], seed_conf['cleanups'] = seeds(cap, conf['caches'])
    if overwrite_seed:
        seed_conf = update_config(seed_conf, overwrite_seed)

    if options.output:
        with file_or_stdout(options.output) as f:
            write_header(f, options.capabilities)
            yaml.dump(conf,
                      f,
                      default_flow_style=False,
                      Dumper=MapProxyYAMLDumper)
    if options.output_seed:
        with file_or_stdout(options.output_seed) as f:
            write_header(f, options.capabilities)
            yaml.dump(seed_conf,
                      f,
                      default_flow_style=False,
                      Dumper=MapProxyYAMLDumper)

    return 0
コード例 #7
0
ファイル: app.py プロジェクト: TNRIS/mapproxy
def config_command(args):
    parser = optparse.OptionParser("usage: %prog autoconfig [options]")

    parser.add_option("--capabilities", help="URL or filename of WMS 1.1.1/1.3.0 capabilities document")
    parser.add_option("--output", help="filename for created MapProxy config [default: -]", default="-")
    parser.add_option("--output-seed", help="filename for created seeding config")

    parser.add_option("--base", help="base config to include in created MapProxy config")

    parser.add_option("--overwrite", help="YAML file with overwrites for the created MapProxy config")
    parser.add_option("--overwrite-seed", help="YAML file with overwrites for the created seeding config")

    parser.add_option("--force", default=False, action="store_true", help="overwrite existing files")

    options, args = parser.parse_args(args)

    if not options.capabilities:
        parser.print_help()
        print("\nERROR: --capabilities required", file=sys.stderr)
        return 2

    if not options.output and not options.output_seed:
        parser.print_help()
        print("\nERROR: --output and/or --output-seed required", file=sys.stderr)
        return 2

    if not options.force:
        if options.output and options.output != "-" and os.path.exists(options.output):
            print("\nERROR: %s already exists, use --force to overwrite" % options.output, file=sys.stderr)
            return 2
        if options.output_seed and options.output_seed != "-" and os.path.exists(options.output_seed):
            print("\nERROR: %s already exists, use --force to overwrite" % options.output_seed, file=sys.stderr)
            return 2

    log = logging.getLogger("mapproxy_conf_cmd")
    log.addHandler(logging.StreamHandler())

    setup_logging(logging.WARNING)

    srs_grids = {}
    if options.base:
        base = load_configuration(options.base)
        for name, grid_conf in iteritems(base.grids):
            if name.startswith("GLOBAL_"):
                continue
            srs_grids[grid_conf.tile_grid().srs.srs_code] = name

    cap_doc = options.capabilities
    if cap_doc.startswith(("http://", "https://")):
        cap_doc = download_capabilities(options.capabilities).read()
    else:
        cap_doc = open(cap_doc, "rb").read()

    try:
        cap = parse_capabilities(BytesIO(cap_doc))
    except (xml.etree.ElementTree.ParseError, ValueError) as ex:
        print(ex, file=sys.stderr)
        print(cap_doc[:1000] + ("..." if len(cap_doc) > 1000 else ""), file=sys.stderr)
        return 3

    overwrite = None
    if options.overwrite:
        with open(options.overwrite, "rb") as f:
            overwrite = yaml.load(f)

    overwrite_seed = None
    if options.overwrite_seed:
        with open(options.overwrite_seed, "rb") as f:
            overwrite_seed = yaml.load(f)

    conf = {}
    if options.base:
        conf["base"] = os.path.abspath(options.base)

    conf["services"] = {"wms": {"md": {"title": cap.metadata()["title"]}}}
    if overwrite:
        conf["services"] = update_config(conf["services"], overwrite.pop("service", {}))

    conf["sources"] = sources(cap)
    if overwrite:
        conf["sources"] = update_config(conf["sources"], overwrite.pop("sources", {}))

    conf["caches"] = caches(cap, conf["sources"], srs_grids=srs_grids)
    if overwrite:
        conf["caches"] = update_config(conf["caches"], overwrite.pop("caches", {}))

    conf["layers"] = layers(cap, conf["caches"])
    if overwrite:
        conf["layers"] = update_config(conf["layers"], overwrite.pop("layers", {}))

    if overwrite:
        conf = update_config(conf, overwrite)

    seed_conf = {}
    seed_conf["seeds"], seed_conf["cleanups"] = seeds(cap, conf["caches"])
    if overwrite_seed:
        seed_conf = update_config(seed_conf, overwrite_seed)

    if options.output:
        with file_or_stdout(options.output) as f:
            write_header(f, options.capabilities)
            yaml.dump(conf, f, default_flow_style=False, Dumper=MapProxyYAMLDumper)
    if options.output_seed:
        with file_or_stdout(options.output_seed) as f:
            write_header(f, options.capabilities)
            yaml.dump(seed_conf, f, default_flow_style=False, Dumper=MapProxyYAMLDumper)

    return 0