This repository has been archived on 2025-05-10. You can view files and clone it, but cannot push or open issues or pull requests.
mapviewer/viewtiles

56 lines
1.7 KiB
Python
Executable file

#!/usr/bin/env python
"""
Small flask server to view map tiles.
"""
from gevent import monkey
monkey.patch_all()
from gevent.pywsgi import WSGIServer
from argparse import ArgumentParser
import importlib.util
from http import HTTPStatus
from os import getcwd
import importlib.util
import errno
import os.path
import sys
from flask import Flask, send_file, Response, render_template
# Parse Arguments
parser = ArgumentParser(description="Map Tile Viewer")
parser.add_argument(
"--tile-server",
type=str,
help="Path to tile server",
default="https://a.tile.openstreetmap.org/{z}/{x}/{y}.png"
)
parser.add_argument("--port", type=int, help="Port to bind to.", default=9001)
args = vars(parser.parse_args())
# Try to locate mapviewer folder
root_path = getcwd() + "/mapserver"
if not os.path.isdir(root_path):
spec_location = importlib.util.find_spec('mapviewer')
if spec_location is None or spec_location.origin is None:
print("mapviewer folder is not in current directory or installed.")
sys.exit(1)
root_path = os.path.dirname(spec_location.origin)
print(root_path)
app = Flask(__name__, root_path=root_path)
@app.route('/')
def index():
"""Return a sample fullscreen map application."""
return render_template("index.html", tile_server=args['tile_server'])
if __name__ == '__main__':
try:
http_server = WSGIServer(('', args['port']), app)
print(f"Starting map server on http://localhost:{args['port']}")
http_server.serve_forever()
except OSError as e:
if e.errno == errno.EADDRINUSE:
print("Address-Port Combination in use. Is another servemaps running?")
os._exit(errno.EADDRINUSE)
raise e