make_tiles / app.py
Omnibus's picture
Create app.py
8a824fd verified
import gradio as gr
import os
from subprocess import call
import mkgmap
# Example usage:
pbf_file = "path/to/your/osm.pbf"
tile_dir = "path/to/your/tiles" # This will be uploaded to Hugging Face
def generate_and_upload_tiles(pbf_file, min_zoom, max_zoom, dataset_name=None):
"""
Generates map tiles from an OSM PBF file.
Args:
pbf_file (str): Path to the OSM PBF file.
tile_dir (str): Directory to store the generated tiles.
min_zoom (int): Minimum zoom level.
max_zoom (int): Maximum zoom level.
"""
if not os.path.exists(tile_dir):
os.makedirs(tile_dir)
# Define mkgmap options
options = [
'--style-file=default', # You can customize with your own style
f'--min-zoom={min_zoom}',
f'--max-zoom={max_zoom}',
'--reduce-point-density',
'--generate-tiles',
f'--output-dir={tile_dir}',
pbf_file
]
# Call generate_tiles.py script
call(['generate_tiles.py'] + options)
iface = gr.Interface(
generate_and_upload_tiles,
[
gr.inputs.File(label="OSM PBF File"),
gr.inputs.Number(label="Min Zoom", default=0, minimum=0, maximum=14),
gr.inputs.Number(label="Max Zoom", default=14, minimum=0, maximum=14),
gr.inputs.Textbox(label="Hugging Face Dataset Name (Optional)")
],
[
gr.outputs.Textbox(label="Status"),
gr.outputs.Textbox(label="Dataset URL (Optional)")
],
)
iface.launch()