diff --git a/scripts/tile_gen/extract_mbtiles/extract_mbtiles.py b/scripts/tile_gen/extract_mbtiles/extract_mbtiles.py
index 1f5eb6a..ac5359e 100755
--- a/scripts/tile_gen/extract_mbtiles/extract_mbtiles.py
+++ b/scripts/tile_gen/extract_mbtiles/extract_mbtiles.py
@@ -35,11 +35,7 @@ def cli(mbtiles_path: Path, dir_path: Path):
write_tile_files(c, dir_path=dir_path)
# planetiler has missing tiles by design, so disabling this
- # if it's a full planet run,
- # make sure there are exactly the right number of files generated
- # if 'planet' in mbtiles_path.resolve().parent.name:
- # assert count_files(dir_path / 'tiles') == calculate_tiles_sum(14)
- # print(f'Tile number: {calculate_tiles_sum(14)} - OK')
+ # assert_all_tiles_present(mbtiles_path, dir_path)
write_metadata(c, dir_path=dir_path)
print('extract_mbtiles.py DONE')
@@ -113,6 +109,17 @@ def write_tile_files(c, *, dir_path):
raise
+def assert_all_tiles_present(mbtiles_path, dir_path):
+ """
+ If it's a full planet run,
+ ake sure there are exactly the right number of files generated.
+ """
+
+ if 'planet' in mbtiles_path.resolve().parent.name:
+ assert count_files(dir_path / 'tiles') == calculate_tiles_sum(14)
+ print(f'Tile number: {calculate_tiles_sum(14)} - OK')
+
+
def count_files(folder):
total = 0
for root, dirs, files in os.walk(folder):
diff --git a/scripts/tile_gen/extract_mbtiles/out/metadata.json b/scripts/tile_gen/extract_mbtiles/out/metadata.json
new file mode 100644
index 0000000..9125af0
--- /dev/null
+++ b/scripts/tile_gen/extract_mbtiles/out/metadata.json
@@ -0,0 +1,20 @@
+{
+ "format": "pbf",
+ "center": "7.42892,43.73752,14",
+ "bounds": "7.40921,43.72335,7.44864,43.75169",
+ "json": "{\"vector_layers\":[{\"id\":\"aeroway\",\"fields\":{\"ref\":\"String\",\"class\":\"String\"},\"minzoom\":12,\"maxzoom\":14},{\"id\":\"boundary\",\"fields\":{\"disputed\":\"Number\",\"admin_level\":\"Number\",\"maritime\":\"Number\"},\"minzoom\":0,\"maxzoom\":14},{\"id\":\"building\",\"fields\":{\"colour\":\"String\",\"render_height\":\"Number\",\"render_min_height\":\"Number\"},\"minzoom\":13,\"maxzoom\":14},{\"id\":\"housenumber\",\"fields\":{\"housenumber\":\"String\"},\"minzoom\":14,\"maxzoom\":14},{\"id\":\"landcover\",\"fields\":{\"subclass\":\"String\",\"class\":\"String\",\"_numpoints\":\"Number\"},\"minzoom\":13,\"maxzoom\":14},{\"id\":\"landuse\",\"fields\":{\"class\":\"String\"},\"minzoom\":6,\"maxzoom\":14},{\"id\":\"mountain_peak\",\"fields\":{\"rank\":\"Number\",\"class\":\"String\"},\"minzoom\":13,\"maxzoom\":14},{\"id\":\"park\",\"fields\":{\"name_int\":\"String\",\"name:ar\":\"String\",\"name:de\":\"String\",\"name_de\":\"String\",\"name:it\":\"String\",\"name\":\"String\",\"name:fr\":\"String\",\"name:en\":\"String\",\"name:eo\":\"String\",\"name:eu\":\"String\",\"class\":\"String\",\"name:zh\":\"String\",\"name:es\":\"String\",\"name_en\":\"String\",\"name:latin\":\"String\"},\"minzoom\":13,\"maxzoom\":14},{\"id\":\"place\",\"fields\":{\"name:fy\":\"String\",\"name_int\":\"String\",\"name:oc\":\"String\",\"name:bs\":\"String\",\"capital\":\"Number\",\"name:sk\":\"String\",\"name:ka\":\"String\",\"name:sl\":\"String\",\"name:ga\":\"String\",\"name:sr\":\"String\",\"name:kk\":\"String\",\"name:gd\":\"String\",\"name:sq\":\"String\",\"name:ca\":\"String\",\"name:kn\":\"String\",\"name:sv\":\"String\",\"name:ko\":\"String\",\"name_de\":\"String\",\"rank\":\"Number\",\"name:co\":\"String\",\"name:ku\":\"String\",\"name:cs\":\"String\",\"name:ta\":\"String\",\"name:latin\":\"String\",\"name:ar\":\"String\",\"name:ja\":\"String\",\"name:rm\":\"String\",\"name:az\":\"String\",\"name:ro\":\"String\",\"name:nl\":\"String\",\"name:fi\":\"String\",\"name:be\":\"String\",\"name:ru\":\"String\",\"name:no\":\"String\",\"name:bg\":\"String\",\"name\":\"String\",\"name:fr\":\"String\",\"name:br\":\"String\",\"name:hy\":\"String\",\"name:uk\":\"String\",\"name:id\":\"String\",\"name:ml\":\"String\",\"name:mk\":\"String\",\"name:mt\":\"String\",\"name:el\":\"String\",\"name:it\":\"String\",\"name:am\":\"String\",\"name:en\":\"String\",\"name:is\":\"String\",\"name:eo\":\"String\",\"name:et\":\"String\",\"name:eu\":\"String\",\"class\":\"String\",\"iso_a2\":\"String\",\"name:zh\":\"String\",\"name:es\":\"String\",\"name:th\":\"String\",\"name:te\":\"String\",\"name:la\":\"String\",\"name:lb\":\"String\",\"name:cy\":\"String\",\"name:pl\":\"String\",\"name:he\":\"String\",\"name:da\":\"String\",\"name:tr\":\"String\",\"name:pt\":\"String\",\"name:hi\":\"String\",\"name:de\":\"String\",\"name:lt\":\"String\",\"name:lv\":\"String\",\"name:hr\":\"String\",\"name:hu\":\"String\",\"name_en\":\"String\"},\"minzoom\":2,\"maxzoom\":14},{\"id\":\"poi\",\"fields\":{\"name:oc\":\"String\",\"name_int\":\"String\",\"name:sk\":\"String\",\"name:ka\":\"String\",\"name:sl\":\"String\",\"name:ga\":\"String\",\"name:sr\":\"String\",\"name:kk\":\"String\",\"name:sq\":\"String\",\"name:ca\":\"String\",\"name:sv\":\"String\",\"name:ko\":\"String\",\"name_de\":\"String\",\"name:co\":\"String\",\"name:ku\":\"String\",\"name:cs\":\"String\",\"name:latin\":\"String\",\"name:ar\":\"String\",\"name:ja\":\"String\",\"level\":\"Number\",\"name:rm\":\"String\",\"name:az\":\"String\",\"name:ro\":\"String\",\"name:nl\":\"String\",\"name:be\":\"String\",\"name:ru\":\"String\",\"name:fi\":\"String\",\"name\":\"String\",\"indoor\":\"Number\",\"name:fr\":\"String\",\"name:br\":\"String\",\"name:hy\":\"String\",\"name:uk\":\"String\",\"name:id\":\"String\",\"layer\":\"Number\",\"name:mk\":\"String\",\"name:el\":\"String\",\"name:it\":\"String\",\"name:en\":\"String\",\"name:eo\":\"String\",\"name:et\":\"String\",\"name:eu\":\"String\",\"class\":\"String\",\"name:zh\":\"String\",\"name:es\":\"String\",\"name:th\":\"String\",\"name:lb\":\"String\",\"name:cy\":\"String\",\"name:pl\":\"String\",\"name:da\":\"String\",\"name:he\":\"String\",\"name:tr\":\"String\",\"name:pt\":\"String\",\"name:de\":\"String\",\"name:lt\":\"String\",\"subclass\":\"String\",\"name:lv\":\"String\",\"name:hr\":\"String\",\"name:hu\":\"String\",\"name_en\":\"String\"},\"minzoom\":12,\"maxzoom\":14},{\"id\":\"transportation\",\"fields\":{\"brunnel\":\"String\",\"access\":\"String\",\"surface\":\"String\",\"bicycle\":\"String\",\"level\":\"Number\",\"ramp\":\"Number\",\"oneway\":\"Number\",\"layer\":\"Number\",\"horse\":\"String\",\"service\":\"String\",\"subclass\":\"String\",\"indoor\":\"Number\",\"class\":\"String\",\"foot\":\"String\"},\"minzoom\":7,\"maxzoom\":14},{\"id\":\"transportation_name\",\"fields\":{\"name_int\":\"String\",\"level\":\"Number\",\"route_2\":\"String\",\"route_1\":\"String\",\"layer\":\"Number\",\"network\":\"String\",\"ref\":\"String\",\"name_de\":\"String\",\"ref_length\":\"Number\",\"subclass\":\"String\",\"name\":\"String\",\"indoor\":\"Number\",\"class\":\"String\",\"name_en\":\"String\",\"name:latin\":\"String\"},\"minzoom\":12,\"maxzoom\":14},{\"id\":\"water\",\"fields\":{\"intermittent\":\"Number\",\"id\":\"Number\",\"class\":\"String\"},\"minzoom\":0,\"maxzoom\":14},{\"id\":\"water_name\",\"fields\":{\"name_int\":\"String\",\"name_de\":\"String\",\"name\":\"String\",\"intermittent\":\"Number\",\"name:en\":\"String\",\"class\":\"String\",\"name_en\":\"String\",\"name:latin\":\"String\"},\"minzoom\":14,\"maxzoom\":14},{\"id\":\"waterway\",\"fields\":{\"brunnel\":\"String\",\"intermittent\":\"Number\",\"class\":\"String\"},\"minzoom\":4,\"maxzoom\":14}]}",
+ "name": "OpenFreeMap",
+ "description": "https://openfreemap.org/",
+ "attribution": "OpenFreeMap © OpenMapTiles © OpenStreetMap contributors",
+ "version": "3.14.0",
+ "type": "baselayer",
+ "minzoom": "0",
+ "maxzoom": "14",
+ "compression": "gzip",
+ "planetiler:version": "0.7.0",
+ "planetiler:githash": "79ba9d925f4a3738a07cc6a6dc4a6ede6d0f5c4b",
+ "planetiler:buildtime": "2023-10-01T17:00:31.116Z",
+ "planetiler:osm:osmosisreplicationtime": "2023-12-07T21:21:32Z",
+ "planetiler:osm:osmosisreplicationseq": "3900",
+ "planetiler:osm:osmosisreplicationurl": "http://download.geofabrik.de/europe/monaco-updates"
+}
\ No newline at end of file
diff --git a/ssh_lib/rclone.py b/ssh_lib/rclone.py
index 61a6a1b..ef839f1 100644
--- a/ssh_lib/rclone.py
+++ b/ssh_lib/rclone.py
@@ -1,6 +1,9 @@
-from ssh_lib.utils import apt_get_update
+from ssh_lib.utils import apt_get_update, exists
def install_rclone(c):
+ if exists(c, '/usr/bin/rclone'):
+ return
+
apt_get_update(c)
c.sudo('curl https://rclone.org/install.sh | sudo bash')