diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/SatForecast.iml b/.idea/SatForecast.iml new file mode 100644 index 0000000..eab9ae5 --- /dev/null +++ b/.idea/SatForecast.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..b9bf2ff --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..262f5a0 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..adfd90f --- /dev/null +++ b/main.py @@ -0,0 +1,507 @@ +import tkinter as tk +from tkinter import ttk, messagebox +from PIL import Image, ImageTk +import requests +from io import BytesIO +import math +import time +from datetime import datetime +import threading +from pathlib import Path +import random + + +class RateLimiter: + def __init__(self, max_per_second=1): + self.min_interval = 1.0 / max_per_second + self.last_request = 0 + + def wait(self): + elapsed = time.time() - self.last_request + if elapsed < self.min_interval: + time.sleep(self.min_interval - elapsed) + self.last_request = time.time() + + +class WeatherMapApp: + def __init__(self, root): + self.root = root + self.root.title("SatForecast") + self.root.geometry("1200x800") + + # API ключи + self.owm_api_key = "cc437a23f6a217cd5859bd2d4dc9b6f8" + + # Rate limiter + self.rate_limiter = RateLimiter(max_per_second=2) + + # Настройки карты + self.lon = 37.6173 + self.lat = 55.7558 + self.zoom = 8 + self.dragging = False + self.drag_start_x = 0 + self.drag_start_y = 0 + + # Кэш тайлов + self.cache_dir = Path("tile_cache") + self.cache_dir.mkdir(exist_ok=True) + + # Маркеры + self.markers = [ + {"name": "Москва", "lat": 55.7558, "lon": 37.6173}, + {"name": "СПб", "lat": 59.9343, "lon": 30.3351}, + ] + + # Настройка интерфейса + self.setup_ui() + + # Загрузка данных + self.load_map() + self.load_forecast() + + def setup_ui(self): + # Основной контейнер + main_frame = ttk.Frame(self.root) + main_frame.pack(fill='both', expand=True) + + # Левая панель управления + control_panel = ttk.Frame(main_frame, width=300) + control_panel.pack(side='left', fill='y', padx=5, pady=5) + control_panel.pack_propagate(False) + + # Поиск города + ttk.Label(control_panel, text="Поиск города:").pack(pady=5) + search_frame = ttk.Frame(control_panel) + search_frame.pack(fill='x', padx=5) + + self.city_entry = ttk.Entry(search_frame) + self.city_entry.pack(side='left', fill='x', expand=True) + self.city_entry.bind('', lambda e: self.search_city()) + + ttk.Button(search_frame, text="🔍", width=3, + command=self.search_city).pack(side='left') + + # Список городов + ttk.Label(control_panel, text="Избранные города:").pack(pady=5) + self.city_listbox = tk.Listbox(control_panel, height=8) + self.city_listbox.pack(fill='x', padx=5) + self.city_listbox.bind('<>', self.on_city_select) + + for marker in self.markers: + self.city_listbox.insert(tk.END, marker['name']) + + # Управление маркерами + marker_frame = ttk.Frame(control_panel) + marker_frame.pack(fill='x', padx=5, pady=5) + + ttk.Button(marker_frame, text="Добавить маркер", + command=self.add_current_location).pack(fill='x') + ttk.Button(marker_frame, text="Удалить маркер", + command=self.remove_marker).pack(fill='x') + + # Слои карты + ttk.Label(control_panel, text="Слой карты:").pack(pady=5) + + layers = [ + ("Спутник (ESRI)", "esri_sat"), + ("Спутник (Google)", "google_sat"), + ("OpenStreetMap", "osm"), + ("CartoDB", "cartodb"), + ("Температура", "temp"), + ("Облачность", "clouds"), + ("Осадки", "precipitation") + ] + + self.layer_var = tk.StringVar(value="esri_sat") + for text, value in layers: + ttk.Radiobutton(control_panel, text=text, variable=self.layer_var, + value=value, command=self.load_map).pack(anchor='w', padx=20) + + # Прогноз погоды + ttk.Label(control_panel, text="Прогноз погоды:").pack(pady=10) + self.forecast_text = tk.Text(control_panel, height=12, width=35) + self.forecast_text.pack(fill='both', expand=True, padx=5) + + # Карта + map_frame = ttk.Frame(main_frame) + map_frame.pack(side='right', fill='both', expand=True) + + self.canvas = tk.Canvas(map_frame, bg='#1a1a2e') + self.canvas.pack(fill='both', expand=True) + + # Привязка событий + self.canvas.bind('', self.start_drag) + self.canvas.bind('', self.drag_map) + self.canvas.bind('', self.end_drag) + self.canvas.bind('', self.mouse_zoom) + + # Кнопки масштаба + zoom_frame = ttk.Frame(map_frame) + zoom_frame.place(relx=1.0, rely=0.5, anchor='e', x=-10) + + ttk.Button(zoom_frame, text="+", width=3, + command=lambda: self.change_zoom(1)).pack() + ttk.Button(zoom_frame, text="-", width=3, + command=lambda: self.change_zoom(-1)).pack() + + # Статус бар + self.status_label = ttk.Label(self.root, text="Готово") + self.status_label.pack(side='bottom', fill='x') + + def get_cache_path(self, layer, x, y, zoom): + cache_subdir = self.cache_dir / layer / str(zoom) / str(x) + cache_subdir.mkdir(parents=True, exist_ok=True) + return cache_subdir / f"{y}.png" + + def download_tile_cached(self, url, layer, x, y, zoom): + cache_path = self.get_cache_path(layer, x, y, zoom) + + # Проверяем кэш + if cache_path.exists(): + max_age = 3 * 3600 if "sat" in layer else 24 * 3600 + if datetime.now().timestamp() - cache_path.stat().st_mtime < max_age: + try: + return Image.open(cache_path) + except: + pass + + try: + headers = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', + 'Accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8', + 'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', + 'Referer': 'https://www.openstreetmap.org/', + 'Sec-Fetch-Dest': 'image', + 'Sec-Fetch-Mode': 'no-cors', + 'Sec-Fetch-Site': 'cross-site', + } + + self.rate_limiter.wait() + + response = requests.get(url, headers=headers, timeout=15) + + if response.status_code == 200: + content_type = response.headers.get('content-type', '') + if 'image' in content_type or len(response.content) > 1000: + img = Image.open(BytesIO(response.content)) + img.save(cache_path) + print(f"✓ {layer}: {x},{y} zoom={zoom}") + return img + else: + print(f"✗ Не изображение: {url[:80]}") + else: + print(f"✗ {response.status_code}: {url[:80]}") + + except Exception as e: + print(f"✗ Ошибка: {e}") + + # Возвращаем из кэша + if cache_path.exists(): + try: + return Image.open(cache_path) + except: + pass + + return None + + def get_tile_url(self, x, y, zoom): + """Рабочие бесплатные URL для тайлов""" + layer = self.layer_var.get() + + if layer == "esri_sat": + # ESRI спутниковые снимки (бесплатно, без ключа) + return f"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{zoom}/{y}/{x}" + + elif layer == "google_sat": + # Google Maps спутник (бесплатно для некоммерческого использования) + # Используем разные поддомены для распределения нагрузки + subdomain = random.choice(['0', '1', '2', '3']) + return f"https://mt{subdomain}.google.com/vt/lyrs=s&x={x}&y={y}&z={zoom}" + + elif layer == "osm": + # OpenStreetMap + subdomain = random.choice(['a', 'b', 'c']) + return f"https://{subdomain}.tile.openstreetmap.org/{zoom}/{x}/{y}.png" + + elif layer == "cartodb": + # CartoDB Light (красивый стиль) + return f"https://a.basemaps.cartocdn.com/light_all/{zoom}/{x}/{y}.png" + + elif layer == "temp": + return f"https://tile.openweathermap.org/map/temp_new/{zoom}/{x}/{y}.png?appid={self.owm_api_key}" + + elif layer == "clouds": + return f"https://tile.openweathermap.org/map/clouds_new/{zoom}/{x}/{y}.png?appid={self.owm_api_key}" + + elif layer == "precipitation": + return f"https://tile.openweathermap.org/map/precipitation_new/{zoom}/{x}/{y}.png?appid={self.owm_api_key}" + + return None + + def lat_lon_to_tile(self, lat, lon, zoom): + lat_rad = math.radians(lat) + n = 2.0 ** zoom + xtile = (lon + 180.0) / 360.0 * n + ytile = (1.0 - math.asinh(math.tan(lat_rad)) / math.pi) / 2.0 * n + return xtile, ytile + + def load_map(self): + threading.Thread(target=self._load_map_thread, daemon=True).start() + + def _load_map_thread(self): + self.root.after(0, lambda: self.status_label.config(text="Загрузка карты...")) + + self.canvas.delete("tile") + + center_x, center_y = self.lat_lon_to_tile(self.lat, self.lon, self.zoom) + center_x_int = int(center_x) + center_y_int = int(center_y) + + tiles = {} + for dx in range(-1, 2): + for dy in range(-1, 2): + x = center_x_int + dx + y = center_y_int + dy + + url = self.get_tile_url(x, y, self.zoom) + if url: + layer = self.layer_var.get() + img = self.download_tile_cached(url, layer, x, y, self.zoom) + + if img: + tiles[(dx, dy)] = ImageTk.PhotoImage(img) + + self.root.after(0, self._display_tiles, tiles, center_x, center_y) + self.root.after(0, lambda: self.status_label.config( + text=f"Загружено тайлов: {len(tiles)}/9")) + + def _display_tiles(self, tiles, center_x, center_y): + canvas_width = self.canvas.winfo_width() + canvas_height = self.canvas.winfo_height() + + if canvas_width < 100: + canvas_width = 800 + canvas_height = 600 + + tile_size = 256 + + for (dx, dy), photo in tiles.items(): + x_offset = (center_x - int(center_x)) * tile_size + y_offset = (center_y - int(center_y)) * tile_size + + px = canvas_width / 2 + dx * tile_size - x_offset + py = canvas_height / 2 + dy * tile_size - y_offset + + self.canvas.create_image(px, py, image=photo, anchor='nw', tags="tile") + + self.draw_markers() + self.canvas.tile_images = tiles + + def draw_markers(self): + self.canvas.delete("marker") + + canvas_width = self.canvas.winfo_width() + canvas_height = self.canvas.winfo_height() + + for marker in self.markers: + marker_x, marker_y = self.lat_lon_to_tile( + marker['lat'], marker['lon'], self.zoom) + + center_x, center_y = self.lat_lon_to_tile(self.lat, self.lon, self.zoom) + + tile_size = 256 + px = canvas_width / 2 + (marker_x - center_x) * tile_size + py = canvas_height / 2 + (marker_y - center_y) * tile_size + + # Красивый маркер + self.canvas.create_oval(px - 10, py - 10, px + 10, py + 10, + fill='#ff4444', outline='white', width=2, tags="marker") + self.canvas.create_oval(px - 3, py - 3, px + 3, py + 3, + fill='white', tags="marker") + self.canvas.create_text(px, py - 20, text=marker['name'], + fill='white', font=('Arial', 10, 'bold'), + tags="marker") + + def start_drag(self, event): + self.dragging = True + self.drag_start_x = event.x + self.drag_start_y = event.y + + def drag_map(self, event): + if not self.dragging: + return + + dx = event.x - self.drag_start_x + dy = event.y - self.drag_start_y + + self.canvas.move("tile", dx, dy) + self.canvas.move("marker", dx, dy) + + tile_size = 256 + n = 2.0 ** self.zoom + + self.lon -= dx / tile_size * 360.0 / n + self.lat += dy / tile_size * 180.0 / n + + self.drag_start_x = event.x + self.drag_start_y = event.y + + if abs(dx) > tile_size / 2 or abs(dy) > tile_size / 2: + self.load_map() + + def end_drag(self, event): + self.dragging = False + self.load_map() + + def mouse_zoom(self, event): + if event.delta > 0: + self.change_zoom(1) + else: + self.change_zoom(-1) + + def change_zoom(self, delta): + new_zoom = self.zoom + delta + if 2 <= new_zoom <= 18: + self.zoom = new_zoom + self.load_map() + + def search_city(self): + city = self.city_entry.get().strip() + if not city: + return + threading.Thread(target=self._search_city_thread, args=(city,), daemon=True).start() + + def _search_city_thread(self, city): + try: + url = "https://nominatim.openstreetmap.org/search" + params = { + "q": city, + "format": "json", + "limit": 1 + } + headers = { + "User-Agent": "SatForecast/1.0" + } + + response = requests.get(url, params=params, headers=headers) + data = response.json() + + if data: + lat = float(data[0]['lat']) + lon = float(data[0]['lon']) + self.root.after(0, lambda: self.set_location(lat, lon, city)) + else: + self.root.after(0, lambda: messagebox.showinfo("Поиск", "Город не найден")) + except Exception as e: + self.root.after(0, lambda: messagebox.showerror("Ошибка", str(e))) + + def set_location(self, lat, lon, name): + self.lat = lat + self.lon = lon + + if not any(m['name'] == name for m in self.markers): + self.markers.append({"name": name, "lat": lat, "lon": lon}) + self.city_listbox.insert(tk.END, name) + + self.load_map() + self.load_forecast() + + def on_city_select(self, event): + selection = self.city_listbox.curselection() + if selection: + index = selection[0] + if index < len(self.markers): + marker = self.markers[index] + self.set_location(marker['lat'], marker['lon'], marker['name']) + + def add_current_location(self): + name = f"Точка {len(self.markers) + 1}" + self.markers.append({"name": name, "lat": self.lat, "lon": self.lon}) + self.city_listbox.insert(tk.END, name) + self.draw_markers() + + def remove_marker(self): + selection = self.city_listbox.curselection() + if selection: + index = selection[0] + if index < len(self.markers): + del self.markers[index] + self.city_listbox.delete(index) + self.load_map() + + def load_forecast(self): + threading.Thread(target=self._load_forecast_thread, daemon=True).start() + + def _load_forecast_thread(self): + try: + # Open-Meteo (бесплатно, без ключа) + url = "https://api.open-meteo.com/v1/forecast" + params = { + "latitude": self.lat, + "longitude": self.lon, + "hourly": "temperature_2m,precipitation,wind_speed_10m,cloud_cover", + "daily": "temperature_2m_max,temperature_2m_min,precipitation_sum", + "timezone": "auto", + "forecast_days": 3 + } + + response = requests.get(url, params=params) + data = response.json() + + forecast_text = f"📍 Прогноз для координат:\n{self.lat:.2f}, {self.lon:.2f}\n\n" + + if 'daily' in data: + forecast_text += "📅 По дням:\n" + for i in range(3): + date = data['daily']['time'][i] + temp_max = data['daily']['temperature_2m_max'][i] + temp_min = data['daily']['temperature_2m_min'][i] + precip = data['daily']['precipitation_sum'][i] + + weather_emoji = "☀️" if precip == 0 else "🌧️" + if temp_max > 30: + weather_emoji = "🔥" + elif temp_max < 0: + weather_emoji = "❄️" + + forecast_text += f"{date}: {weather_emoji} {temp_min}°C...{temp_max}°C, 💧{precip}мм\n" + + if 'hourly' in data: + forecast_text += "\n🕐 Ближайшие часы:\n" + current_hour = datetime.now().hour + for i in range(current_hour, min(current_hour + 8, len(data['hourly']['time']))): + time = data['hourly']['time'][i].split('T')[1] + temp = data['hourly']['temperature_2m'][i] + wind = data['hourly']['wind_speed_10m'][i] + clouds = data['hourly']['cloud_cover'][i] + + cloud_emoji = "☁️" if clouds > 50 else "🌤️" if clouds > 20 else "☀️" + forecast_text += f"{time}: {cloud_emoji} {temp}°C, 💨{wind}м/с\n" + + self.root.after(0, self._update_forecast_display, forecast_text) + except Exception as e: + self.root.after(0, lambda: self.status_label.config(text=f"Ошибка прогноза: {e}")) + + def _update_forecast_display(self, text): + self.forecast_text.delete(1.0, tk.END) + self.forecast_text.insert(1.0, text) + + +def main(): + root = tk.Tk() + app = WeatherMapApp(root) + + style = ttk.Style() + style.theme_use('clam') + + def on_closing(): + if messagebox.askokcancel("Выход", "Закрыть приложение?"): + root.destroy() + + root.protocol("WM_DELETE_WINDOW", on_closing) + root.mainloop() + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/tile_cache/cartodb/9/311/178.png b/tile_cache/cartodb/9/311/178.png new file mode 100644 index 0000000..4bbf1c0 Binary files /dev/null and b/tile_cache/cartodb/9/311/178.png differ diff --git a/tile_cache/cartodb/9/311/179.png b/tile_cache/cartodb/9/311/179.png new file mode 100644 index 0000000..dd4abb4 Binary files /dev/null and b/tile_cache/cartodb/9/311/179.png differ diff --git a/tile_cache/cartodb/9/311/180.png b/tile_cache/cartodb/9/311/180.png new file mode 100644 index 0000000..cd599b1 Binary files /dev/null and b/tile_cache/cartodb/9/311/180.png differ diff --git a/tile_cache/cartodb/9/312/178.png b/tile_cache/cartodb/9/312/178.png new file mode 100644 index 0000000..b644b88 Binary files /dev/null and b/tile_cache/cartodb/9/312/178.png differ diff --git a/tile_cache/cartodb/9/312/179.png b/tile_cache/cartodb/9/312/179.png new file mode 100644 index 0000000..5c3c9b0 Binary files /dev/null and b/tile_cache/cartodb/9/312/179.png differ diff --git a/tile_cache/cartodb/9/312/180.png b/tile_cache/cartodb/9/312/180.png new file mode 100644 index 0000000..8961896 Binary files /dev/null and b/tile_cache/cartodb/9/312/180.png differ diff --git a/tile_cache/cartodb/9/313/178.png b/tile_cache/cartodb/9/313/178.png new file mode 100644 index 0000000..5245d77 Binary files /dev/null and b/tile_cache/cartodb/9/313/178.png differ diff --git a/tile_cache/cartodb/9/313/179.png b/tile_cache/cartodb/9/313/179.png new file mode 100644 index 0000000..cf26698 Binary files /dev/null and b/tile_cache/cartodb/9/313/179.png differ diff --git a/tile_cache/cartodb/9/313/180.png b/tile_cache/cartodb/9/313/180.png new file mode 100644 index 0000000..38832d9 Binary files /dev/null and b/tile_cache/cartodb/9/313/180.png differ diff --git a/tile_cache/clouds/8/155/88.png b/tile_cache/clouds/8/155/88.png new file mode 100644 index 0000000..d28a1d0 Binary files /dev/null and b/tile_cache/clouds/8/155/88.png differ diff --git a/tile_cache/clouds/8/155/89.png b/tile_cache/clouds/8/155/89.png new file mode 100644 index 0000000..f0a74f8 Binary files /dev/null and b/tile_cache/clouds/8/155/89.png differ diff --git a/tile_cache/clouds/8/155/90.png b/tile_cache/clouds/8/155/90.png new file mode 100644 index 0000000..ea1e8a9 Binary files /dev/null and b/tile_cache/clouds/8/155/90.png differ diff --git a/tile_cache/clouds/8/156/88.png b/tile_cache/clouds/8/156/88.png new file mode 100644 index 0000000..b252e3c Binary files /dev/null and b/tile_cache/clouds/8/156/88.png differ diff --git a/tile_cache/clouds/8/156/89.png b/tile_cache/clouds/8/156/89.png new file mode 100644 index 0000000..65f07b2 Binary files /dev/null and b/tile_cache/clouds/8/156/89.png differ diff --git a/tile_cache/clouds/8/156/90.png b/tile_cache/clouds/8/156/90.png new file mode 100644 index 0000000..779e90c Binary files /dev/null and b/tile_cache/clouds/8/156/90.png differ diff --git a/tile_cache/clouds/8/157/88.png b/tile_cache/clouds/8/157/88.png new file mode 100644 index 0000000..c21aa8e Binary files /dev/null and b/tile_cache/clouds/8/157/88.png differ diff --git a/tile_cache/clouds/8/157/89.png b/tile_cache/clouds/8/157/89.png new file mode 100644 index 0000000..fd30248 Binary files /dev/null and b/tile_cache/clouds/8/157/89.png differ diff --git a/tile_cache/clouds/8/157/90.png b/tile_cache/clouds/8/157/90.png new file mode 100644 index 0000000..6ba4c1a Binary files /dev/null and b/tile_cache/clouds/8/157/90.png differ diff --git a/tile_cache/esri_sat/10/623/358.png b/tile_cache/esri_sat/10/623/358.png new file mode 100644 index 0000000..70eb126 Binary files /dev/null and b/tile_cache/esri_sat/10/623/358.png differ diff --git a/tile_cache/esri_sat/10/623/359.png b/tile_cache/esri_sat/10/623/359.png new file mode 100644 index 0000000..bafcc2c Binary files /dev/null and b/tile_cache/esri_sat/10/623/359.png differ diff --git a/tile_cache/esri_sat/10/623/360.png b/tile_cache/esri_sat/10/623/360.png new file mode 100644 index 0000000..5d71261 Binary files /dev/null and b/tile_cache/esri_sat/10/623/360.png differ diff --git a/tile_cache/esri_sat/10/624/358.png b/tile_cache/esri_sat/10/624/358.png new file mode 100644 index 0000000..3d69d59 Binary files /dev/null and b/tile_cache/esri_sat/10/624/358.png differ diff --git a/tile_cache/esri_sat/10/624/359.png b/tile_cache/esri_sat/10/624/359.png new file mode 100644 index 0000000..2cafd20 Binary files /dev/null and b/tile_cache/esri_sat/10/624/359.png differ diff --git a/tile_cache/esri_sat/10/624/360.png b/tile_cache/esri_sat/10/624/360.png new file mode 100644 index 0000000..88374ab Binary files /dev/null and b/tile_cache/esri_sat/10/624/360.png differ diff --git a/tile_cache/esri_sat/10/625/358.png b/tile_cache/esri_sat/10/625/358.png new file mode 100644 index 0000000..a025cab Binary files /dev/null and b/tile_cache/esri_sat/10/625/358.png differ diff --git a/tile_cache/esri_sat/10/625/359.png b/tile_cache/esri_sat/10/625/359.png new file mode 100644 index 0000000..7c8c8c8 Binary files /dev/null and b/tile_cache/esri_sat/10/625/359.png differ diff --git a/tile_cache/esri_sat/10/625/360.png b/tile_cache/esri_sat/10/625/360.png new file mode 100644 index 0000000..d588ce0 Binary files /dev/null and b/tile_cache/esri_sat/10/625/360.png differ diff --git a/tile_cache/esri_sat/11/1248/717.png b/tile_cache/esri_sat/11/1248/717.png new file mode 100644 index 0000000..e07b9bc Binary files /dev/null and b/tile_cache/esri_sat/11/1248/717.png differ diff --git a/tile_cache/esri_sat/11/1248/718.png b/tile_cache/esri_sat/11/1248/718.png new file mode 100644 index 0000000..328463a Binary files /dev/null and b/tile_cache/esri_sat/11/1248/718.png differ diff --git a/tile_cache/esri_sat/11/1248/719.png b/tile_cache/esri_sat/11/1248/719.png new file mode 100644 index 0000000..ab44416 Binary files /dev/null and b/tile_cache/esri_sat/11/1248/719.png differ diff --git a/tile_cache/esri_sat/11/1249/717.png b/tile_cache/esri_sat/11/1249/717.png new file mode 100644 index 0000000..d09a797 Binary files /dev/null and b/tile_cache/esri_sat/11/1249/717.png differ diff --git a/tile_cache/esri_sat/12/1249/718.png b/tile_cache/esri_sat/12/1249/718.png new file mode 100644 index 0000000..a7b54f0 Binary files /dev/null and b/tile_cache/esri_sat/12/1249/718.png differ diff --git a/tile_cache/esri_sat/12/2498/1435.png b/tile_cache/esri_sat/12/2498/1435.png new file mode 100644 index 0000000..f2d3e71 Binary files /dev/null and b/tile_cache/esri_sat/12/2498/1435.png differ diff --git a/tile_cache/esri_sat/13/1249/719.png b/tile_cache/esri_sat/13/1249/719.png new file mode 100644 index 0000000..a7b54f0 Binary files /dev/null and b/tile_cache/esri_sat/13/1249/719.png differ diff --git a/tile_cache/esri_sat/13/1250/717.png b/tile_cache/esri_sat/13/1250/717.png new file mode 100644 index 0000000..a7b54f0 Binary files /dev/null and b/tile_cache/esri_sat/13/1250/717.png differ diff --git a/tile_cache/esri_sat/13/1250/718.png b/tile_cache/esri_sat/13/1250/718.png new file mode 100644 index 0000000..a7b54f0 Binary files /dev/null and b/tile_cache/esri_sat/13/1250/718.png differ diff --git a/tile_cache/esri_sat/13/1250/719.png b/tile_cache/esri_sat/13/1250/719.png new file mode 100644 index 0000000..a7b54f0 Binary files /dev/null and b/tile_cache/esri_sat/13/1250/719.png differ diff --git a/tile_cache/esri_sat/13/2498/1436.png b/tile_cache/esri_sat/13/2498/1436.png new file mode 100644 index 0000000..a7b54f0 Binary files /dev/null and b/tile_cache/esri_sat/13/2498/1436.png differ diff --git a/tile_cache/esri_sat/13/2498/1437.png b/tile_cache/esri_sat/13/2498/1437.png new file mode 100644 index 0000000..a7b54f0 Binary files /dev/null and b/tile_cache/esri_sat/13/2498/1437.png differ diff --git a/tile_cache/esri_sat/13/2499/1435.png b/tile_cache/esri_sat/13/2499/1435.png new file mode 100644 index 0000000..a7b54f0 Binary files /dev/null and b/tile_cache/esri_sat/13/2499/1435.png differ diff --git a/tile_cache/esri_sat/13/2499/1436.png b/tile_cache/esri_sat/13/2499/1436.png new file mode 100644 index 0000000..a7b54f0 Binary files /dev/null and b/tile_cache/esri_sat/13/2499/1436.png differ diff --git a/tile_cache/esri_sat/13/2499/1437.png b/tile_cache/esri_sat/13/2499/1437.png new file mode 100644 index 0000000..a7b54f0 Binary files /dev/null and b/tile_cache/esri_sat/13/2499/1437.png differ diff --git a/tile_cache/esri_sat/13/2500/1435.png b/tile_cache/esri_sat/13/2500/1435.png new file mode 100644 index 0000000..a7b54f0 Binary files /dev/null and b/tile_cache/esri_sat/13/2500/1435.png differ diff --git a/tile_cache/esri_sat/13/2500/1436.png b/tile_cache/esri_sat/13/2500/1436.png new file mode 100644 index 0000000..a7b54f0 Binary files /dev/null and b/tile_cache/esri_sat/13/2500/1436.png differ diff --git a/tile_cache/esri_sat/13/2500/1437.png b/tile_cache/esri_sat/13/2500/1437.png new file mode 100644 index 0000000..a7b54f0 Binary files /dev/null and b/tile_cache/esri_sat/13/2500/1437.png differ diff --git a/tile_cache/esri_sat/13/4995/2871.png b/tile_cache/esri_sat/13/4995/2871.png new file mode 100644 index 0000000..90b13b3 Binary files /dev/null and b/tile_cache/esri_sat/13/4995/2871.png differ diff --git a/tile_cache/esri_sat/13/4995/2872.png b/tile_cache/esri_sat/13/4995/2872.png new file mode 100644 index 0000000..8c94db2 Binary files /dev/null and b/tile_cache/esri_sat/13/4995/2872.png differ diff --git a/tile_cache/esri_sat/13/4995/2873.png b/tile_cache/esri_sat/13/4995/2873.png new file mode 100644 index 0000000..4a09086 Binary files /dev/null and b/tile_cache/esri_sat/13/4995/2873.png differ diff --git a/tile_cache/esri_sat/13/4996/2871.png b/tile_cache/esri_sat/13/4996/2871.png new file mode 100644 index 0000000..d016ae6 Binary files /dev/null and b/tile_cache/esri_sat/13/4996/2871.png differ diff --git a/tile_cache/esri_sat/13/4996/2872.png b/tile_cache/esri_sat/13/4996/2872.png new file mode 100644 index 0000000..469e17c Binary files /dev/null and b/tile_cache/esri_sat/13/4996/2872.png differ diff --git a/tile_cache/esri_sat/13/4997/2871.png b/tile_cache/esri_sat/13/4997/2871.png new file mode 100644 index 0000000..4eea614 Binary files /dev/null and b/tile_cache/esri_sat/13/4997/2871.png differ diff --git a/tile_cache/esri_sat/13/4997/2872.png b/tile_cache/esri_sat/13/4997/2872.png new file mode 100644 index 0000000..208404c Binary files /dev/null and b/tile_cache/esri_sat/13/4997/2872.png differ diff --git a/tile_cache/esri_sat/13/4997/2873.png b/tile_cache/esri_sat/13/4997/2873.png new file mode 100644 index 0000000..c647269 Binary files /dev/null and b/tile_cache/esri_sat/13/4997/2873.png differ diff --git a/tile_cache/esri_sat/13/4997/2874.png b/tile_cache/esri_sat/13/4997/2874.png new file mode 100644 index 0000000..9168a32 Binary files /dev/null and b/tile_cache/esri_sat/13/4997/2874.png differ diff --git a/tile_cache/esri_sat/13/4998/2871.png b/tile_cache/esri_sat/13/4998/2871.png new file mode 100644 index 0000000..54c99a8 Binary files /dev/null and b/tile_cache/esri_sat/13/4998/2871.png differ diff --git a/tile_cache/esri_sat/13/4998/2872.png b/tile_cache/esri_sat/13/4998/2872.png new file mode 100644 index 0000000..abf7b81 Binary files /dev/null and b/tile_cache/esri_sat/13/4998/2872.png differ diff --git a/tile_cache/esri_sat/13/4998/2873.png b/tile_cache/esri_sat/13/4998/2873.png new file mode 100644 index 0000000..c697c31 Binary files /dev/null and b/tile_cache/esri_sat/13/4998/2873.png differ diff --git a/tile_cache/esri_sat/13/4998/2874.png b/tile_cache/esri_sat/13/4998/2874.png new file mode 100644 index 0000000..87897de Binary files /dev/null and b/tile_cache/esri_sat/13/4998/2874.png differ diff --git a/tile_cache/esri_sat/13/4999/2871.png b/tile_cache/esri_sat/13/4999/2871.png new file mode 100644 index 0000000..2d0a312 Binary files /dev/null and b/tile_cache/esri_sat/13/4999/2871.png differ diff --git a/tile_cache/esri_sat/13/4999/2872.png b/tile_cache/esri_sat/13/4999/2872.png new file mode 100644 index 0000000..93ae6e4 Binary files /dev/null and b/tile_cache/esri_sat/13/4999/2872.png differ diff --git a/tile_cache/esri_sat/13/4999/2873.png b/tile_cache/esri_sat/13/4999/2873.png new file mode 100644 index 0000000..6d93355 Binary files /dev/null and b/tile_cache/esri_sat/13/4999/2873.png differ diff --git a/tile_cache/esri_sat/13/4999/2874.png b/tile_cache/esri_sat/13/4999/2874.png new file mode 100644 index 0000000..51eb861 Binary files /dev/null and b/tile_cache/esri_sat/13/4999/2874.png differ diff --git a/tile_cache/esri_sat/13/5000/2872.png b/tile_cache/esri_sat/13/5000/2872.png new file mode 100644 index 0000000..4a9b252 Binary files /dev/null and b/tile_cache/esri_sat/13/5000/2872.png differ diff --git a/tile_cache/esri_sat/13/5000/2873.png b/tile_cache/esri_sat/13/5000/2873.png new file mode 100644 index 0000000..90e5e45 Binary files /dev/null and b/tile_cache/esri_sat/13/5000/2873.png differ diff --git a/tile_cache/esri_sat/13/5000/2874.png b/tile_cache/esri_sat/13/5000/2874.png new file mode 100644 index 0000000..1141135 Binary files /dev/null and b/tile_cache/esri_sat/13/5000/2874.png differ diff --git a/tile_cache/esri_sat/14/19988/11491.png b/tile_cache/esri_sat/14/19988/11491.png new file mode 100644 index 0000000..2cb95b2 Binary files /dev/null and b/tile_cache/esri_sat/14/19988/11491.png differ diff --git a/tile_cache/esri_sat/14/9991/5743.png b/tile_cache/esri_sat/14/9991/5743.png new file mode 100644 index 0000000..59ae5e5 Binary files /dev/null and b/tile_cache/esri_sat/14/9991/5743.png differ diff --git a/tile_cache/esri_sat/14/9991/5744.png b/tile_cache/esri_sat/14/9991/5744.png new file mode 100644 index 0000000..a382e0a Binary files /dev/null and b/tile_cache/esri_sat/14/9991/5744.png differ diff --git a/tile_cache/esri_sat/14/9991/5745.png b/tile_cache/esri_sat/14/9991/5745.png new file mode 100644 index 0000000..33f567c Binary files /dev/null and b/tile_cache/esri_sat/14/9991/5745.png differ diff --git a/tile_cache/esri_sat/14/9992/5742.png b/tile_cache/esri_sat/14/9992/5742.png new file mode 100644 index 0000000..985fdb9 Binary files /dev/null and b/tile_cache/esri_sat/14/9992/5742.png differ diff --git a/tile_cache/esri_sat/14/9992/5743.png b/tile_cache/esri_sat/14/9992/5743.png new file mode 100644 index 0000000..fcd9fa7 Binary files /dev/null and b/tile_cache/esri_sat/14/9992/5743.png differ diff --git a/tile_cache/esri_sat/14/9992/5744.png b/tile_cache/esri_sat/14/9992/5744.png new file mode 100644 index 0000000..6257f2b Binary files /dev/null and b/tile_cache/esri_sat/14/9992/5744.png differ diff --git a/tile_cache/esri_sat/14/9992/5745.png b/tile_cache/esri_sat/14/9992/5745.png new file mode 100644 index 0000000..fe313a7 Binary files /dev/null and b/tile_cache/esri_sat/14/9992/5745.png differ diff --git a/tile_cache/esri_sat/14/9992/5746.png b/tile_cache/esri_sat/14/9992/5746.png new file mode 100644 index 0000000..5f43beb Binary files /dev/null and b/tile_cache/esri_sat/14/9992/5746.png differ diff --git a/tile_cache/esri_sat/14/9993/5742.png b/tile_cache/esri_sat/14/9993/5742.png new file mode 100644 index 0000000..c48a30c Binary files /dev/null and b/tile_cache/esri_sat/14/9993/5742.png differ diff --git a/tile_cache/esri_sat/14/9993/5743.png b/tile_cache/esri_sat/14/9993/5743.png new file mode 100644 index 0000000..100dffb Binary files /dev/null and b/tile_cache/esri_sat/14/9993/5743.png differ diff --git a/tile_cache/esri_sat/14/9993/5744.png b/tile_cache/esri_sat/14/9993/5744.png new file mode 100644 index 0000000..1358ac3 Binary files /dev/null and b/tile_cache/esri_sat/14/9993/5744.png differ diff --git a/tile_cache/esri_sat/14/9993/5745.png b/tile_cache/esri_sat/14/9993/5745.png new file mode 100644 index 0000000..70a8993 Binary files /dev/null and b/tile_cache/esri_sat/14/9993/5745.png differ diff --git a/tile_cache/esri_sat/14/9993/5746.png b/tile_cache/esri_sat/14/9993/5746.png new file mode 100644 index 0000000..f27f895 Binary files /dev/null and b/tile_cache/esri_sat/14/9993/5746.png differ diff --git a/tile_cache/esri_sat/14/9994/5742.png b/tile_cache/esri_sat/14/9994/5742.png new file mode 100644 index 0000000..c2b1fec Binary files /dev/null and b/tile_cache/esri_sat/14/9994/5742.png differ diff --git a/tile_cache/esri_sat/14/9994/5743.png b/tile_cache/esri_sat/14/9994/5743.png new file mode 100644 index 0000000..23e5b8c Binary files /dev/null and b/tile_cache/esri_sat/14/9994/5743.png differ diff --git a/tile_cache/esri_sat/14/9994/5744.png b/tile_cache/esri_sat/14/9994/5744.png new file mode 100644 index 0000000..b8330ea Binary files /dev/null and b/tile_cache/esri_sat/14/9994/5744.png differ diff --git a/tile_cache/esri_sat/14/9994/5745.png b/tile_cache/esri_sat/14/9994/5745.png new file mode 100644 index 0000000..eee9fb2 Binary files /dev/null and b/tile_cache/esri_sat/14/9994/5745.png differ diff --git a/tile_cache/esri_sat/14/9994/5746.png b/tile_cache/esri_sat/14/9994/5746.png new file mode 100644 index 0000000..8ad2b81 Binary files /dev/null and b/tile_cache/esri_sat/14/9994/5746.png differ diff --git a/tile_cache/esri_sat/15/19986/11489.png b/tile_cache/esri_sat/15/19986/11489.png new file mode 100644 index 0000000..3aee4bf Binary files /dev/null and b/tile_cache/esri_sat/15/19986/11489.png differ diff --git a/tile_cache/esri_sat/15/19986/11490.png b/tile_cache/esri_sat/15/19986/11490.png new file mode 100644 index 0000000..4740a55 Binary files /dev/null and b/tile_cache/esri_sat/15/19986/11490.png differ diff --git a/tile_cache/esri_sat/15/19986/11491.png b/tile_cache/esri_sat/15/19986/11491.png new file mode 100644 index 0000000..2724592 Binary files /dev/null and b/tile_cache/esri_sat/15/19986/11491.png differ diff --git a/tile_cache/esri_sat/15/19987/11489.png b/tile_cache/esri_sat/15/19987/11489.png new file mode 100644 index 0000000..7134729 Binary files /dev/null and b/tile_cache/esri_sat/15/19987/11489.png differ diff --git a/tile_cache/esri_sat/15/19987/11490.png b/tile_cache/esri_sat/15/19987/11490.png new file mode 100644 index 0000000..96f2adb Binary files /dev/null and b/tile_cache/esri_sat/15/19987/11490.png differ diff --git a/tile_cache/esri_sat/15/19987/11491.png b/tile_cache/esri_sat/15/19987/11491.png new file mode 100644 index 0000000..30a4b27 Binary files /dev/null and b/tile_cache/esri_sat/15/19987/11491.png differ diff --git a/tile_cache/esri_sat/15/19988/11489.png b/tile_cache/esri_sat/15/19988/11489.png new file mode 100644 index 0000000..3c4ec1a Binary files /dev/null and b/tile_cache/esri_sat/15/19988/11489.png differ diff --git a/tile_cache/esri_sat/15/19988/11490.png b/tile_cache/esri_sat/15/19988/11490.png new file mode 100644 index 0000000..c21a5f2 Binary files /dev/null and b/tile_cache/esri_sat/15/19988/11490.png differ diff --git a/tile_cache/esri_sat/15/4996/2873.png b/tile_cache/esri_sat/15/4996/2873.png new file mode 100644 index 0000000..2cb95b2 Binary files /dev/null and b/tile_cache/esri_sat/15/4996/2873.png differ diff --git a/tile_cache/esri_sat/15/4997/2871.png b/tile_cache/esri_sat/15/4997/2871.png new file mode 100644 index 0000000..2cb95b2 Binary files /dev/null and b/tile_cache/esri_sat/15/4997/2871.png differ diff --git a/tile_cache/esri_sat/15/4997/2872.png b/tile_cache/esri_sat/15/4997/2872.png new file mode 100644 index 0000000..2cb95b2 Binary files /dev/null and b/tile_cache/esri_sat/15/4997/2872.png differ diff --git a/tile_cache/esri_sat/15/4997/2873.png b/tile_cache/esri_sat/15/4997/2873.png new file mode 100644 index 0000000..2cb95b2 Binary files /dev/null and b/tile_cache/esri_sat/15/4997/2873.png differ diff --git a/tile_cache/esri_sat/15/9992/5745.png b/tile_cache/esri_sat/15/9992/5745.png new file mode 100644 index 0000000..2cb95b2 Binary files /dev/null and b/tile_cache/esri_sat/15/9992/5745.png differ diff --git a/tile_cache/esri_sat/15/9992/5746.png b/tile_cache/esri_sat/15/9992/5746.png new file mode 100644 index 0000000..2cb95b2 Binary files /dev/null and b/tile_cache/esri_sat/15/9992/5746.png differ diff --git a/tile_cache/esri_sat/15/9993/5744.png b/tile_cache/esri_sat/15/9993/5744.png new file mode 100644 index 0000000..2cb95b2 Binary files /dev/null and b/tile_cache/esri_sat/15/9993/5744.png differ diff --git a/tile_cache/esri_sat/15/9993/5745.png b/tile_cache/esri_sat/15/9993/5745.png new file mode 100644 index 0000000..2cb95b2 Binary files /dev/null and b/tile_cache/esri_sat/15/9993/5745.png differ diff --git a/tile_cache/esri_sat/15/9993/5746.png b/tile_cache/esri_sat/15/9993/5746.png new file mode 100644 index 0000000..2cb95b2 Binary files /dev/null and b/tile_cache/esri_sat/15/9993/5746.png differ diff --git a/tile_cache/esri_sat/15/9994/5744.png b/tile_cache/esri_sat/15/9994/5744.png new file mode 100644 index 0000000..2cb95b2 Binary files /dev/null and b/tile_cache/esri_sat/15/9994/5744.png differ diff --git a/tile_cache/esri_sat/15/9994/5745.png b/tile_cache/esri_sat/15/9994/5745.png new file mode 100644 index 0000000..2cb95b2 Binary files /dev/null and b/tile_cache/esri_sat/15/9994/5745.png differ diff --git a/tile_cache/esri_sat/15/9994/5746.png b/tile_cache/esri_sat/15/9994/5746.png new file mode 100644 index 0000000..2cb95b2 Binary files /dev/null and b/tile_cache/esri_sat/15/9994/5746.png differ diff --git a/tile_cache/esri_sat/8/152/79.png b/tile_cache/esri_sat/8/152/79.png new file mode 100644 index 0000000..c42d322 Binary files /dev/null and b/tile_cache/esri_sat/8/152/79.png differ diff --git a/tile_cache/esri_sat/8/152/80.png b/tile_cache/esri_sat/8/152/80.png new file mode 100644 index 0000000..a60bcf7 Binary files /dev/null and b/tile_cache/esri_sat/8/152/80.png differ diff --git a/tile_cache/esri_sat/8/152/81.png b/tile_cache/esri_sat/8/152/81.png new file mode 100644 index 0000000..057c4ff Binary files /dev/null and b/tile_cache/esri_sat/8/152/81.png differ diff --git a/tile_cache/esri_sat/8/152/82.png b/tile_cache/esri_sat/8/152/82.png new file mode 100644 index 0000000..4c84ffd Binary files /dev/null and b/tile_cache/esri_sat/8/152/82.png differ diff --git a/tile_cache/esri_sat/8/153/78.png b/tile_cache/esri_sat/8/153/78.png new file mode 100644 index 0000000..8156473 Binary files /dev/null and b/tile_cache/esri_sat/8/153/78.png differ diff --git a/tile_cache/esri_sat/8/153/79.png b/tile_cache/esri_sat/8/153/79.png new file mode 100644 index 0000000..f5ce264 Binary files /dev/null and b/tile_cache/esri_sat/8/153/79.png differ diff --git a/tile_cache/esri_sat/8/153/80.png b/tile_cache/esri_sat/8/153/80.png new file mode 100644 index 0000000..047e450 Binary files /dev/null and b/tile_cache/esri_sat/8/153/80.png differ diff --git a/tile_cache/esri_sat/8/153/81.png b/tile_cache/esri_sat/8/153/81.png new file mode 100644 index 0000000..c6df333 Binary files /dev/null and b/tile_cache/esri_sat/8/153/81.png differ diff --git a/tile_cache/esri_sat/8/153/82.png b/tile_cache/esri_sat/8/153/82.png new file mode 100644 index 0000000..2bf07c6 Binary files /dev/null and b/tile_cache/esri_sat/8/153/82.png differ diff --git a/tile_cache/esri_sat/8/154/78.png b/tile_cache/esri_sat/8/154/78.png new file mode 100644 index 0000000..3c445f3 Binary files /dev/null and b/tile_cache/esri_sat/8/154/78.png differ diff --git a/tile_cache/esri_sat/8/154/79.png b/tile_cache/esri_sat/8/154/79.png new file mode 100644 index 0000000..eb4b357 Binary files /dev/null and b/tile_cache/esri_sat/8/154/79.png differ diff --git a/tile_cache/esri_sat/8/154/80.png b/tile_cache/esri_sat/8/154/80.png new file mode 100644 index 0000000..4478864 Binary files /dev/null and b/tile_cache/esri_sat/8/154/80.png differ diff --git a/tile_cache/esri_sat/8/154/81.png b/tile_cache/esri_sat/8/154/81.png new file mode 100644 index 0000000..c6bc7e5 Binary files /dev/null and b/tile_cache/esri_sat/8/154/81.png differ diff --git a/tile_cache/esri_sat/8/154/82.png b/tile_cache/esri_sat/8/154/82.png new file mode 100644 index 0000000..0b87106 Binary files /dev/null and b/tile_cache/esri_sat/8/154/82.png differ diff --git a/tile_cache/esri_sat/8/155/78.png b/tile_cache/esri_sat/8/155/78.png new file mode 100644 index 0000000..6db9404 Binary files /dev/null and b/tile_cache/esri_sat/8/155/78.png differ diff --git a/tile_cache/esri_sat/8/155/79.png b/tile_cache/esri_sat/8/155/79.png new file mode 100644 index 0000000..ed0c2fb Binary files /dev/null and b/tile_cache/esri_sat/8/155/79.png differ diff --git a/tile_cache/esri_sat/8/155/80.png b/tile_cache/esri_sat/8/155/80.png new file mode 100644 index 0000000..0eac3a3 Binary files /dev/null and b/tile_cache/esri_sat/8/155/80.png differ diff --git a/tile_cache/esri_sat/8/155/81.png b/tile_cache/esri_sat/8/155/81.png new file mode 100644 index 0000000..6d6aa88 Binary files /dev/null and b/tile_cache/esri_sat/8/155/81.png differ diff --git a/tile_cache/esri_sat/8/155/88.png b/tile_cache/esri_sat/8/155/88.png new file mode 100644 index 0000000..f9a086d Binary files /dev/null and b/tile_cache/esri_sat/8/155/88.png differ diff --git a/tile_cache/esri_sat/8/155/89.png b/tile_cache/esri_sat/8/155/89.png new file mode 100644 index 0000000..4889f8a Binary files /dev/null and b/tile_cache/esri_sat/8/155/89.png differ diff --git a/tile_cache/esri_sat/8/155/90.png b/tile_cache/esri_sat/8/155/90.png new file mode 100644 index 0000000..38b06b7 Binary files /dev/null and b/tile_cache/esri_sat/8/155/90.png differ diff --git a/tile_cache/esri_sat/8/156/88.png b/tile_cache/esri_sat/8/156/88.png new file mode 100644 index 0000000..8752d6c Binary files /dev/null and b/tile_cache/esri_sat/8/156/88.png differ diff --git a/tile_cache/esri_sat/8/156/89.png b/tile_cache/esri_sat/8/156/89.png new file mode 100644 index 0000000..e76c1c9 Binary files /dev/null and b/tile_cache/esri_sat/8/156/89.png differ diff --git a/tile_cache/esri_sat/8/156/90.png b/tile_cache/esri_sat/8/156/90.png new file mode 100644 index 0000000..aa09553 Binary files /dev/null and b/tile_cache/esri_sat/8/156/90.png differ diff --git a/tile_cache/esri_sat/8/157/88.png b/tile_cache/esri_sat/8/157/88.png new file mode 100644 index 0000000..1bf3e17 Binary files /dev/null and b/tile_cache/esri_sat/8/157/88.png differ diff --git a/tile_cache/esri_sat/8/157/89.png b/tile_cache/esri_sat/8/157/89.png new file mode 100644 index 0000000..0f4ddb2 Binary files /dev/null and b/tile_cache/esri_sat/8/157/89.png differ diff --git a/tile_cache/esri_sat/8/157/90.png b/tile_cache/esri_sat/8/157/90.png new file mode 100644 index 0000000..31585b6 Binary files /dev/null and b/tile_cache/esri_sat/8/157/90.png differ diff --git a/tile_cache/esri_sat/9/311/178.png b/tile_cache/esri_sat/9/311/178.png new file mode 100644 index 0000000..be96b63 Binary files /dev/null and b/tile_cache/esri_sat/9/311/178.png differ diff --git a/tile_cache/esri_sat/9/311/179.png b/tile_cache/esri_sat/9/311/179.png new file mode 100644 index 0000000..43dcc71 Binary files /dev/null and b/tile_cache/esri_sat/9/311/179.png differ diff --git a/tile_cache/esri_sat/9/311/180.png b/tile_cache/esri_sat/9/311/180.png new file mode 100644 index 0000000..7fe9f27 Binary files /dev/null and b/tile_cache/esri_sat/9/311/180.png differ diff --git a/tile_cache/esri_sat/9/312/178.png b/tile_cache/esri_sat/9/312/178.png new file mode 100644 index 0000000..ac997dc Binary files /dev/null and b/tile_cache/esri_sat/9/312/178.png differ diff --git a/tile_cache/esri_sat/9/312/179.png b/tile_cache/esri_sat/9/312/179.png new file mode 100644 index 0000000..59148c1 Binary files /dev/null and b/tile_cache/esri_sat/9/312/179.png differ diff --git a/tile_cache/esri_sat/9/312/180.png b/tile_cache/esri_sat/9/312/180.png new file mode 100644 index 0000000..7b0ed31 Binary files /dev/null and b/tile_cache/esri_sat/9/312/180.png differ diff --git a/tile_cache/esri_sat/9/313/178.png b/tile_cache/esri_sat/9/313/178.png new file mode 100644 index 0000000..4398a83 Binary files /dev/null and b/tile_cache/esri_sat/9/313/178.png differ diff --git a/tile_cache/esri_sat/9/313/179.png b/tile_cache/esri_sat/9/313/179.png new file mode 100644 index 0000000..0da4264 Binary files /dev/null and b/tile_cache/esri_sat/9/313/179.png differ diff --git a/tile_cache/esri_sat/9/313/180.png b/tile_cache/esri_sat/9/313/180.png new file mode 100644 index 0000000..b09e863 Binary files /dev/null and b/tile_cache/esri_sat/9/313/180.png differ diff --git a/tile_cache/google_sat/9/311/178.png b/tile_cache/google_sat/9/311/178.png new file mode 100644 index 0000000..54dd412 Binary files /dev/null and b/tile_cache/google_sat/9/311/178.png differ diff --git a/tile_cache/google_sat/9/311/179.png b/tile_cache/google_sat/9/311/179.png new file mode 100644 index 0000000..4c6c9f5 Binary files /dev/null and b/tile_cache/google_sat/9/311/179.png differ diff --git a/tile_cache/google_sat/9/311/180.png b/tile_cache/google_sat/9/311/180.png new file mode 100644 index 0000000..71d8fc6 Binary files /dev/null and b/tile_cache/google_sat/9/311/180.png differ diff --git a/tile_cache/google_sat/9/312/178.png b/tile_cache/google_sat/9/312/178.png new file mode 100644 index 0000000..e09aa3e Binary files /dev/null and b/tile_cache/google_sat/9/312/178.png differ diff --git a/tile_cache/google_sat/9/312/179.png b/tile_cache/google_sat/9/312/179.png new file mode 100644 index 0000000..6df1581 Binary files /dev/null and b/tile_cache/google_sat/9/312/179.png differ diff --git a/tile_cache/google_sat/9/312/180.png b/tile_cache/google_sat/9/312/180.png new file mode 100644 index 0000000..af59923 Binary files /dev/null and b/tile_cache/google_sat/9/312/180.png differ diff --git a/tile_cache/google_sat/9/313/178.png b/tile_cache/google_sat/9/313/178.png new file mode 100644 index 0000000..c9cf36f Binary files /dev/null and b/tile_cache/google_sat/9/313/178.png differ diff --git a/tile_cache/google_sat/9/313/179.png b/tile_cache/google_sat/9/313/179.png new file mode 100644 index 0000000..588faad Binary files /dev/null and b/tile_cache/google_sat/9/313/179.png differ diff --git a/tile_cache/google_sat/9/313/180.png b/tile_cache/google_sat/9/313/180.png new file mode 100644 index 0000000..f5e24c9 Binary files /dev/null and b/tile_cache/google_sat/9/313/180.png differ diff --git a/tile_cache/osm/8/153/79.png b/tile_cache/osm/8/153/79.png new file mode 100644 index 0000000..91754d9 Binary files /dev/null and b/tile_cache/osm/8/153/79.png differ diff --git a/tile_cache/osm/8/153/80.png b/tile_cache/osm/8/153/80.png new file mode 100644 index 0000000..91754d9 Binary files /dev/null and b/tile_cache/osm/8/153/80.png differ diff --git a/tile_cache/osm/8/153/81.png b/tile_cache/osm/8/153/81.png new file mode 100644 index 0000000..91754d9 Binary files /dev/null and b/tile_cache/osm/8/153/81.png differ diff --git a/tile_cache/osm/8/154/79.png b/tile_cache/osm/8/154/79.png new file mode 100644 index 0000000..91754d9 Binary files /dev/null and b/tile_cache/osm/8/154/79.png differ diff --git a/tile_cache/osm/8/154/80.png b/tile_cache/osm/8/154/80.png new file mode 100644 index 0000000..91754d9 Binary files /dev/null and b/tile_cache/osm/8/154/80.png differ diff --git a/tile_cache/osm/8/154/81.png b/tile_cache/osm/8/154/81.png new file mode 100644 index 0000000..91754d9 Binary files /dev/null and b/tile_cache/osm/8/154/81.png differ diff --git a/tile_cache/osm/8/155/79.png b/tile_cache/osm/8/155/79.png new file mode 100644 index 0000000..91754d9 Binary files /dev/null and b/tile_cache/osm/8/155/79.png differ diff --git a/tile_cache/osm/8/155/80.png b/tile_cache/osm/8/155/80.png new file mode 100644 index 0000000..91754d9 Binary files /dev/null and b/tile_cache/osm/8/155/80.png differ diff --git a/tile_cache/osm/8/155/81.png b/tile_cache/osm/8/155/81.png new file mode 100644 index 0000000..91754d9 Binary files /dev/null and b/tile_cache/osm/8/155/81.png differ diff --git a/tile_cache/osm/9/311/178.png b/tile_cache/osm/9/311/178.png new file mode 100644 index 0000000..039d9bd Binary files /dev/null and b/tile_cache/osm/9/311/178.png differ diff --git a/tile_cache/osm/9/311/179.png b/tile_cache/osm/9/311/179.png new file mode 100644 index 0000000..039d9bd Binary files /dev/null and b/tile_cache/osm/9/311/179.png differ diff --git a/tile_cache/osm/9/311/180.png b/tile_cache/osm/9/311/180.png new file mode 100644 index 0000000..039d9bd Binary files /dev/null and b/tile_cache/osm/9/311/180.png differ diff --git a/tile_cache/osm/9/312/178.png b/tile_cache/osm/9/312/178.png new file mode 100644 index 0000000..039d9bd Binary files /dev/null and b/tile_cache/osm/9/312/178.png differ diff --git a/tile_cache/osm/9/312/179.png b/tile_cache/osm/9/312/179.png new file mode 100644 index 0000000..039d9bd Binary files /dev/null and b/tile_cache/osm/9/312/179.png differ diff --git a/tile_cache/osm/9/312/180.png b/tile_cache/osm/9/312/180.png new file mode 100644 index 0000000..039d9bd Binary files /dev/null and b/tile_cache/osm/9/312/180.png differ diff --git a/tile_cache/osm/9/313/178.png b/tile_cache/osm/9/313/178.png new file mode 100644 index 0000000..039d9bd Binary files /dev/null and b/tile_cache/osm/9/313/178.png differ diff --git a/tile_cache/osm/9/313/179.png b/tile_cache/osm/9/313/179.png new file mode 100644 index 0000000..039d9bd Binary files /dev/null and b/tile_cache/osm/9/313/179.png differ diff --git a/tile_cache/osm/9/313/180.png b/tile_cache/osm/9/313/180.png new file mode 100644 index 0000000..039d9bd Binary files /dev/null and b/tile_cache/osm/9/313/180.png differ diff --git a/tile_cache/precipitation/8/148/73.png b/tile_cache/precipitation/8/148/73.png new file mode 100644 index 0000000..711b7fd Binary files /dev/null and b/tile_cache/precipitation/8/148/73.png differ diff --git a/tile_cache/precipitation/8/148/74.png b/tile_cache/precipitation/8/148/74.png new file mode 100644 index 0000000..23cc57c Binary files /dev/null and b/tile_cache/precipitation/8/148/74.png differ diff --git a/tile_cache/precipitation/8/148/75.png b/tile_cache/precipitation/8/148/75.png new file mode 100644 index 0000000..f615941 Binary files /dev/null and b/tile_cache/precipitation/8/148/75.png differ diff --git a/tile_cache/precipitation/8/149/73.png b/tile_cache/precipitation/8/149/73.png new file mode 100644 index 0000000..8d026a8 Binary files /dev/null and b/tile_cache/precipitation/8/149/73.png differ diff --git a/tile_cache/precipitation/8/149/74.png b/tile_cache/precipitation/8/149/74.png new file mode 100644 index 0000000..ac28437 Binary files /dev/null and b/tile_cache/precipitation/8/149/74.png differ diff --git a/tile_cache/precipitation/8/149/75.png b/tile_cache/precipitation/8/149/75.png new file mode 100644 index 0000000..e69d17f Binary files /dev/null and b/tile_cache/precipitation/8/149/75.png differ diff --git a/tile_cache/precipitation/8/150/73.png b/tile_cache/precipitation/8/150/73.png new file mode 100644 index 0000000..2924386 Binary files /dev/null and b/tile_cache/precipitation/8/150/73.png differ diff --git a/tile_cache/precipitation/8/150/74.png b/tile_cache/precipitation/8/150/74.png new file mode 100644 index 0000000..5b03ce0 Binary files /dev/null and b/tile_cache/precipitation/8/150/74.png differ diff --git a/tile_cache/precipitation/8/150/75.png b/tile_cache/precipitation/8/150/75.png new file mode 100644 index 0000000..e066882 Binary files /dev/null and b/tile_cache/precipitation/8/150/75.png differ diff --git a/tile_cache/precipitation/8/153/79.png b/tile_cache/precipitation/8/153/79.png new file mode 100644 index 0000000..559670f Binary files /dev/null and b/tile_cache/precipitation/8/153/79.png differ diff --git a/tile_cache/precipitation/8/153/80.png b/tile_cache/precipitation/8/153/80.png new file mode 100644 index 0000000..3cc512e Binary files /dev/null and b/tile_cache/precipitation/8/153/80.png differ diff --git a/tile_cache/precipitation/8/153/81.png b/tile_cache/precipitation/8/153/81.png new file mode 100644 index 0000000..7609557 Binary files /dev/null and b/tile_cache/precipitation/8/153/81.png differ diff --git a/tile_cache/precipitation/8/154/79.png b/tile_cache/precipitation/8/154/79.png new file mode 100644 index 0000000..d7962c6 Binary files /dev/null and b/tile_cache/precipitation/8/154/79.png differ diff --git a/tile_cache/precipitation/8/154/80.png b/tile_cache/precipitation/8/154/80.png new file mode 100644 index 0000000..709d3bc Binary files /dev/null and b/tile_cache/precipitation/8/154/80.png differ diff --git a/tile_cache/precipitation/8/154/81.png b/tile_cache/precipitation/8/154/81.png new file mode 100644 index 0000000..c8931de Binary files /dev/null and b/tile_cache/precipitation/8/154/81.png differ diff --git a/tile_cache/precipitation/8/155/79.png b/tile_cache/precipitation/8/155/79.png new file mode 100644 index 0000000..d5d990b Binary files /dev/null and b/tile_cache/precipitation/8/155/79.png differ diff --git a/tile_cache/precipitation/8/155/80.png b/tile_cache/precipitation/8/155/80.png new file mode 100644 index 0000000..54e8972 Binary files /dev/null and b/tile_cache/precipitation/8/155/80.png differ diff --git a/tile_cache/precipitation/8/155/81.png b/tile_cache/precipitation/8/155/81.png new file mode 100644 index 0000000..d5316e9 Binary files /dev/null and b/tile_cache/precipitation/8/155/81.png differ diff --git a/tile_cache/precipitation/8/155/88.png b/tile_cache/precipitation/8/155/88.png new file mode 100644 index 0000000..a618ca0 Binary files /dev/null and b/tile_cache/precipitation/8/155/88.png differ diff --git a/tile_cache/precipitation/8/155/89.png b/tile_cache/precipitation/8/155/89.png new file mode 100644 index 0000000..a4997cd Binary files /dev/null and b/tile_cache/precipitation/8/155/89.png differ diff --git a/tile_cache/precipitation/8/155/90.png b/tile_cache/precipitation/8/155/90.png new file mode 100644 index 0000000..6645e00 Binary files /dev/null and b/tile_cache/precipitation/8/155/90.png differ diff --git a/tile_cache/precipitation/8/156/88.png b/tile_cache/precipitation/8/156/88.png new file mode 100644 index 0000000..c61ab46 Binary files /dev/null and b/tile_cache/precipitation/8/156/88.png differ diff --git a/tile_cache/precipitation/8/156/89.png b/tile_cache/precipitation/8/156/89.png new file mode 100644 index 0000000..496ab1b Binary files /dev/null and b/tile_cache/precipitation/8/156/89.png differ diff --git a/tile_cache/precipitation/8/156/90.png b/tile_cache/precipitation/8/156/90.png new file mode 100644 index 0000000..0415148 Binary files /dev/null and b/tile_cache/precipitation/8/156/90.png differ diff --git a/tile_cache/precipitation/8/157/88.png b/tile_cache/precipitation/8/157/88.png new file mode 100644 index 0000000..616c912 Binary files /dev/null and b/tile_cache/precipitation/8/157/88.png differ diff --git a/tile_cache/precipitation/8/157/89.png b/tile_cache/precipitation/8/157/89.png new file mode 100644 index 0000000..a8eb5c6 Binary files /dev/null and b/tile_cache/precipitation/8/157/89.png differ diff --git a/tile_cache/precipitation/8/157/90.png b/tile_cache/precipitation/8/157/90.png new file mode 100644 index 0000000..03b9e73 Binary files /dev/null and b/tile_cache/precipitation/8/157/90.png differ diff --git a/tile_cache/temp/8/155/88.png b/tile_cache/temp/8/155/88.png new file mode 100644 index 0000000..68654ee Binary files /dev/null and b/tile_cache/temp/8/155/88.png differ diff --git a/tile_cache/temp/8/155/89.png b/tile_cache/temp/8/155/89.png new file mode 100644 index 0000000..97babb7 Binary files /dev/null and b/tile_cache/temp/8/155/89.png differ diff --git a/tile_cache/temp/8/155/90.png b/tile_cache/temp/8/155/90.png new file mode 100644 index 0000000..6f2a4b0 Binary files /dev/null and b/tile_cache/temp/8/155/90.png differ diff --git a/tile_cache/temp/8/156/88.png b/tile_cache/temp/8/156/88.png new file mode 100644 index 0000000..62ce63d Binary files /dev/null and b/tile_cache/temp/8/156/88.png differ diff --git a/tile_cache/temp/8/156/89.png b/tile_cache/temp/8/156/89.png new file mode 100644 index 0000000..d1a9879 Binary files /dev/null and b/tile_cache/temp/8/156/89.png differ diff --git a/tile_cache/temp/9/311/178.png b/tile_cache/temp/9/311/178.png new file mode 100644 index 0000000..1342763 Binary files /dev/null and b/tile_cache/temp/9/311/178.png differ diff --git a/tile_cache/temp/9/311/179.png b/tile_cache/temp/9/311/179.png new file mode 100644 index 0000000..107446c Binary files /dev/null and b/tile_cache/temp/9/311/179.png differ diff --git a/tile_cache/temp/9/311/180.png b/tile_cache/temp/9/311/180.png new file mode 100644 index 0000000..1bf3c53 Binary files /dev/null and b/tile_cache/temp/9/311/180.png differ diff --git a/tile_cache/temp/9/312/178.png b/tile_cache/temp/9/312/178.png new file mode 100644 index 0000000..5aa0a23 Binary files /dev/null and b/tile_cache/temp/9/312/178.png differ diff --git a/tile_cache/temp/9/312/179.png b/tile_cache/temp/9/312/179.png new file mode 100644 index 0000000..f6c6bf3 Binary files /dev/null and b/tile_cache/temp/9/312/179.png differ diff --git a/tile_cache/temp/9/312/180.png b/tile_cache/temp/9/312/180.png new file mode 100644 index 0000000..9515c81 Binary files /dev/null and b/tile_cache/temp/9/312/180.png differ diff --git a/tile_cache/temp/9/313/178.png b/tile_cache/temp/9/313/178.png new file mode 100644 index 0000000..0c615db Binary files /dev/null and b/tile_cache/temp/9/313/178.png differ diff --git a/tile_cache/temp/9/313/179.png b/tile_cache/temp/9/313/179.png new file mode 100644 index 0000000..fcb8c84 Binary files /dev/null and b/tile_cache/temp/9/313/179.png differ diff --git a/tile_cache/temp/9/313/180.png b/tile_cache/temp/9/313/180.png new file mode 100644 index 0000000..47caf7e Binary files /dev/null and b/tile_cache/temp/9/313/180.png differ