Last active
December 10, 2019 18:36
-
-
Save ghelobytes/735731e3c4af5f550d089724d15b41f8 to your computer and use it in GitHub Desktop.
TMS proxy to write ZXY on tiles
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import flask | |
import requests | |
from flask import Flask | |
from flask_restful import Resource, Api | |
from PIL import Image, ImageDraw, ImageFont | |
from io import BytesIO | |
app = Flask(__name__) | |
api = Api(app) | |
def _font_as_bytes(): | |
font_url = '' | |
response = requests.get(url) | |
with open(FONT_PATH, 'rb') as f: | |
font_bytes = BytesIO(f.read()) | |
return font_bytes | |
class OSM(Resource): | |
def get(self, z, x, y): | |
border_size = 1 | |
border_color = 'gray' | |
label_color = 'black' | |
label = 'z:{z} \nx:{x} \ny:{y}'.format(z=z, x=x, y=y) | |
url = 'https://a.tile.openstreetmap.org/{z}/{x}/{y}.png'.format(z=z, x=x, y=y) | |
response = requests.get(url, headers = { | |
'user-agent': 'TMS proxy' | |
}) | |
tile = Image.open(BytesIO(response.content)) | |
width, height = tile.size | |
canvas = Image.new('RGBA', tile.size) | |
canvas.paste(tile) | |
draw = ImageDraw.Draw(canvas) | |
draw.rectangle((0, 0, width + border_size, height + border_size), outline=border_color, width=border_size) | |
font = ImageFont.truetype('./fonts/Roboto-Regular.ttf', 12) | |
w, h = draw.textsize(label) | |
draw.text(((width - w) / 2,( height - h) / 2), label, fill=label_color, font=font) | |
result = BytesIO() | |
canvas.save(result, 'PNG') | |
result.seek(0) | |
response = flask.send_file(result, mimetype='image/png') | |
return response | |
# expose endpoints | |
api.add_resource(OSM, '/osm/<int:z>/<int:x>/<int:y>.png') | |
if __name__ == '__main__': | |
app.run(debug=True) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
flask-restful | |
requests | |
pillow==6.2.1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment