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()