# usage: python3 generate-tiles-list.py > tiles.list import math def deg2num(lat_deg, lon_deg, zoom): lat_rad = math.radians(lat_deg) n = 2.0 ** zoom xtile = int((lon_deg + 180.0) / 360.0 * n) ytile = int((1.0 - math.asinh(math.tan(lat_rad)) / math.pi) / 2.0 * n) return (xtile, ytile) # GD lux coordinates max_x = 6.531 max_y = 50.184 min_x = 5.735 min_y = 49.452 # BE ardenne coordinates max_x = 6.40 max_y = 50.77 min_x = 4.13 min_y = 49.49 # BE coordinates min_x = 2.54539 max_y = 51.50543 min_y = 49.49 max_x = 6.40 # BE buffer coordinates min_x = 2.38246 max_y = 51.64907 min_y = 49.35438 max_x = 6.55565 #for low zoom levels BE min_x = 0 max_y = 70 min_y = 20 max_x = 30 min_z = 2 max_z = 9 for z in range(min_z, max_z+1): x1_tile, y1_tile = deg2num(max_y, max_x, z) x2_tile, y2_tile = deg2num(min_y, min_x, z) min_x_tile = x1_tile if x1_tile < x2_tile else x2_tile max_x_tile = x1_tile if x1_tile > x2_tile else x2_tile min_y_tile = y1_tile if y1_tile < y2_tile else y2_tile max_y_tile = y1_tile if y1_tile > y2_tile else y2_tile for tx in range(min_x_tile, max_x_tile): if tx % 8 != 0: continue for ty in range(min_y_tile, max_y_tile): if ty % 8 != 0: continue print("{} {} {}".format(tx, ty, z)) # BE buffer coordinates min_x = 2.38246 max_y = 51.64907 min_y = 49.35438 max_x = 6.55565 min_z = 10 max_z = 18 for z in range(min_z, max_z+1): x1_tile, y1_tile = deg2num(max_y, max_x, z) x2_tile, y2_tile = deg2num(min_y, min_x, z) min_x_tile = x1_tile if x1_tile < x2_tile else x2_tile max_x_tile = x1_tile if x1_tile > x2_tile else x2_tile min_y_tile = y1_tile if y1_tile < y2_tile else y2_tile max_y_tile = y1_tile if y1_tile > y2_tile else y2_tile for tx in range(min_x_tile, max_x_tile): if tx % 8 != 0: continue for ty in range(min_y_tile, max_y_tile): if ty % 8 != 0: continue print("{} {} {}".format(tx, ty, z))