File size: 1,481 Bytes
8a824fd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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()