1840 lines
125 KiB
Plaintext
1840 lines
125 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "0c18e312-8421-47d7-84f9-ed7d5e47e7ee",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"#### Load packages and connect to SentinelHub"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"id": "b7ca7102-5fd9-481f-90cd-3ba60e288649",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# $ pip install sentinelhub\n",
|
||
"# pip install gdal\n",
|
||
"\n",
|
||
"import os\n",
|
||
"import json\n",
|
||
"import datetime\n",
|
||
"import numpy as np\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"from pathlib import Path\n",
|
||
"from osgeo import gdal\n",
|
||
"\n",
|
||
"from sentinelhub import MimeType, CRS, BBox, SentinelHubRequest, SentinelHubDownloadClient, \\\n",
|
||
" DataCollection, bbox_to_dimensions, DownloadRequest, SHConfig, BBoxSplitter, read_data, Geometry, SentinelHubCatalog\n",
|
||
"\n",
|
||
"config = SHConfig()\n",
|
||
"catalog = SentinelHubCatalog(config=config)\n",
|
||
"\n",
|
||
"import time\n",
|
||
"import shutil\n",
|
||
"\n",
|
||
"import geopandas as gpd\n",
|
||
"from shapely.geometry import MultiLineString, MultiPolygon, Polygon, box, shape\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d19f7f18",
|
||
"metadata": {},
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"id": "330c967c-2742-4a7a-9a61-28bfdaf8eeca",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#pip install pipreqs"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"id": "49f8496a-a267-4b74-9500-a168e031ed68",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#import pipreqs\n",
|
||
"#pipreqs Resilience BV/4002 CMD App - General/4002 CMD Team/4002 TechnicalData/04 WP2 technical/python/Chemba_download.ipynb"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"id": "5491a840-779c-4f0c-8164-c3de738b3298",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"config.sh_client_id = '1a72d811-4f0e-4447-8282-df09608cff44'\n",
|
||
"config.sh_client_secret = 'FcBlRL29i9ZmTzhmKTv1etSMFs5PxSos'"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 25,
|
||
"id": "eb1fb662-0e25-4ca9-8317-c6953290842b",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"collection_id = '4e56d0cb-c402-40ff-97bb-c2b9e6bfcf2a'\n",
|
||
"byoc = DataCollection.define_byoc(\n",
|
||
" collection_id,\n",
|
||
" name='planet_data_8b',\n",
|
||
" is_timeless=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "6adb603d-8182-48c6-a051-869e16ee7bba",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"#### Set some variables\n",
|
||
"The only place anything might need to be changed."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 26,
|
||
"id": "060396e0-e5ee-4b54-b211-5d8bfcba167f",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#project = 'chemba' #or xinavane or chemba_test_8b\n",
|
||
"#project = 'xinavane' #or xinavane or chemba_test_8b\n",
|
||
"project = 'tz_nik' #or xinavane or chemba_test_8b\n",
|
||
"resolution = 3"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 34,
|
||
"id": "d5a99e68",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Adjust the number of days needed\n",
|
||
"days = 38 # default to 7 days for recent imagery (was 200)."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 35,
|
||
"id": "f2b0e629",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#delete all the satellite outputs -> then True\n",
|
||
"empty_folder_question = True"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "81bbb513-0bd2-4277-83e8-6f94051ce70b",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"#### Define functions\n",
|
||
"After this block, no manual changes to parameters are required. \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 36,
|
||
"id": "3f7c8e04-4569-457b-b39d-283582c4ba36",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"BASE_PATH = Path('../laravel_app/storage/app') / os.getenv('PROJECT_DIR',project) \n",
|
||
"BASE_PATH_SINGLE_IMAGES = Path(BASE_PATH / 'single_images_8b')\n",
|
||
"folder_for_merged_tifs = str(BASE_PATH / 'merged_tif_8b')\n",
|
||
"folder_for_virtual_raster = str(BASE_PATH / 'merged_virtual_8b')\n",
|
||
"geojson_file = Path(BASE_PATH /'Data'/ 'pivot.geojson') #the geojsons should have the same name\n",
|
||
" \n",
|
||
"# Check if the folders exist, and if not, create them\n",
|
||
"if not os.path.exists(BASE_PATH_SINGLE_IMAGES):\n",
|
||
" os.makedirs(BASE_PATH_SINGLE_IMAGES)\n",
|
||
" \n",
|
||
"if not os.path.exists(folder_for_merged_tifs):\n",
|
||
" os.makedirs(folder_for_merged_tifs)\n",
|
||
"\n",
|
||
"if not os.path.exists(folder_for_virtual_raster):\n",
|
||
" os.makedirs(folder_for_virtual_raster)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 37,
|
||
"id": "244b5752-4f02-4347-9278-f6a0a46b88f4",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def merge_files(slot):\n",
|
||
" # List the downloaded Tiffs in the different subfolders with pathlib (native library)\n",
|
||
" slot_dir = Path(BASE_PATH_SINGLE_IMAGES / slot)\n",
|
||
" file_list = [str(p) for p in slot_dir.rglob('response.tiff') if p.is_file()]\n",
|
||
"\n",
|
||
" if not file_list:\n",
|
||
" print(f\"No response.tiff files found for slot {slot}\")\n",
|
||
" return False\n",
|
||
"\n",
|
||
" # Use the previously defined folder variables (which are directory paths)\n",
|
||
" merged_tif_path = str(Path(folder_for_merged_tifs) / f\"{slot}.tif\")\n",
|
||
" merged_vrt_path = str(Path(folder_for_virtual_raster) / f\"merged{slot}.vrt\")\n",
|
||
"\n",
|
||
" try:\n",
|
||
" # Create a virtual raster\n",
|
||
" vrt_all = gdal.BuildVRT(merged_vrt_path, file_list)\n",
|
||
" \n",
|
||
" if vrt_all is None:\n",
|
||
" print(f\"ERROR: Failed to create VRT for slot {slot}. Check file paths and GDAL installation.\")\n",
|
||
" print(f\" VRT path: {merged_vrt_path}\")\n",
|
||
" print(f\" File list sample (first 3): {file_list[:3]}\")\n",
|
||
" return False\n",
|
||
"\n",
|
||
" # Close the VRT dataset to ensure it's written to disk\n",
|
||
" vrt_all = None\n",
|
||
"\n",
|
||
" # Convert to TIFF (create tiled, compressed, multi-threaded output for better size)\n",
|
||
" options = gdal.TranslateOptions(\n",
|
||
" outputType=gdal.GDT_Float32,\n",
|
||
" creationOptions=[\n",
|
||
" 'COMPRESS=LZW',\n",
|
||
" 'TILED=YES',\n",
|
||
" 'BLOCKXSIZE=256',\n",
|
||
" 'BLOCKYSIZE=256',\n",
|
||
" 'NUM_THREADS=ALL_CPUS'\n",
|
||
" ]\n",
|
||
" )\n",
|
||
" result = gdal.Translate(merged_tif_path, merged_vrt_path, options=options)\n",
|
||
" \n",
|
||
" if result is None:\n",
|
||
" print(f\"ERROR: Failed to translate VRT to TIFF for slot {slot}\")\n",
|
||
" print(f\" TIFF path: {merged_tif_path}\")\n",
|
||
" print(f\" VRT path: {merged_vrt_path}\")\n",
|
||
" return False\n",
|
||
" \n",
|
||
" result = None # Close the dataset\n",
|
||
" print(f\"✓ Successfully merged {len(file_list)} tiles for slot {slot} into {merged_tif_path}\")\n",
|
||
" return True\n",
|
||
" \n",
|
||
" except Exception as e:\n",
|
||
" print(f\"Exception while processing slot {slot}: {e}\")\n",
|
||
" import traceback\n",
|
||
" traceback.print_exc()\n",
|
||
" return False\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 38,
|
||
"id": "848dc773-70d6-4ae6-b05c-d6ebfb41624d",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Monthly time windows:\n",
|
||
"\n",
|
||
"2025-12-01\n",
|
||
"2025-12-02\n",
|
||
"2025-12-03\n",
|
||
"...\n",
|
||
"2026-01-05\n",
|
||
"2026-01-06\n",
|
||
"2026-01-07\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"days_needed = int(os.environ.get(\"DAYS\", days))\n",
|
||
"date_str = os.environ.get(\"DATE\")\n",
|
||
"\n",
|
||
"if date_str:\n",
|
||
" # Parse de datumstring naar een datetime.date object\n",
|
||
" end = datetime.datetime.strptime(date_str, \"%Y-%m-%d\").date()\n",
|
||
"else:\n",
|
||
" # Gebruik de huidige datum als fallback\n",
|
||
" end = datetime.date.today() \n",
|
||
"\n",
|
||
"start = end - datetime.timedelta(days=days_needed - 1)\n",
|
||
"\n",
|
||
"slots = [(start + datetime.timedelta(days=i)).strftime('%Y-%m-%d') for i in range(days_needed)]\n",
|
||
"\n",
|
||
"print('Monthly time windows:\\n')\n",
|
||
"if len(slots) > 10:\n",
|
||
" for slot in slots[:3]:\n",
|
||
" print(slot)\n",
|
||
" print(\"...\")\n",
|
||
" for slot in slots[-3:]:\n",
|
||
" print(slot)\n",
|
||
"else:\n",
|
||
" for slot in slots:\n",
|
||
" print(slot)\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "420b0a3d",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Define evalscript and download functions\n",
|
||
"The evalscript exports 9 bands: Red, Green, Blue, NIR, and 5 UDM (Usable Data Mask) bands for quality assessment."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 39,
|
||
"id": "3fd61860",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Evalscript loaded with 9 bands:\n",
|
||
" Spectral: Coastal Blue, Blue, Green I, Green, Yellow, Red, Red Edge, NIR\n",
|
||
" Quality: UDM1 (usable data mask)\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Evalscript to download all 8 Planet Scope bands + UDM1 quality mask\n",
|
||
"# Planet Scope 8-band: Coastal Blue, Blue, Green I, Green, Yellow, Red, Red Edge, NIR\n",
|
||
"# UDM1: Usable Data Mask (0 = clear, 1 = unusable/cloud)\n",
|
||
"evalscript_with_udm = \"\"\"\n",
|
||
" //VERSION=3\n",
|
||
" function setup() {\n",
|
||
" return {\n",
|
||
" input: [{\n",
|
||
" bands: [\"coastal_blue\", \"blue\", \"green_i\", \"green\", \"yellow\", \"red\", \"rededge\", \"nir\", \"udm1\"],\n",
|
||
" units: \"DN\"\n",
|
||
" }],\n",
|
||
" output: {\n",
|
||
" bands: 9, // 8 spectral bands + UDM1\n",
|
||
" sampleType: \"FLOAT32\"\n",
|
||
" }\n",
|
||
" };\n",
|
||
" }\n",
|
||
" function evaluatePixel(sample) {\n",
|
||
" // Scale all 8 spectral bands from DN to reflectance (0-1 range)\n",
|
||
" // Planet Scope uses 10000 as the scaling factor\n",
|
||
" var scaledCoastalBlue = 2.5 * sample.coastal_blue / 10000;\n",
|
||
" var scaledBlue = 2.5 * sample.blue / 10000;\n",
|
||
" var scaledGreenI = 2.5 * sample.green_i / 10000;\n",
|
||
" var scaledGreen = 2.5 * sample.green / 10000;\n",
|
||
" var scaledYellow = 2.5 * sample.yellow / 10000;\n",
|
||
" var scaledRed = 2.5 * sample.red / 10000;\n",
|
||
" var scaledRedEdge = 2.5 * sample.rededge / 10000;\n",
|
||
" var scaledNIR = 2.5 * sample.nir / 10000;\n",
|
||
" \n",
|
||
" // UDM1: Usable Data Mask (0 = clear, 1 = unusable)\n",
|
||
" var udm1 = sample.udm1;\n",
|
||
" \n",
|
||
" // Return 9 bands: 8 spectral + UDM1 quality mask\n",
|
||
" return [scaledCoastalBlue, scaledBlue, scaledGreenI, scaledGreen, \n",
|
||
" scaledYellow, scaledRed, scaledRedEdge, scaledNIR, udm1];\n",
|
||
" }\n",
|
||
"\"\"\"\n",
|
||
"\n",
|
||
"print(\"✓ Evalscript loaded with 9 bands:\")\n",
|
||
"print(\" Spectral: Coastal Blue, Blue, Green I, Green, Yellow, Red, Red Edge, NIR\")\n",
|
||
"print(\" Quality: UDM1 (usable data mask)\")\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 40,
|
||
"id": "af55505a",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Download functions defined\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Function to check if imagery is available for a given date\n",
|
||
"def is_image_available(time_interval):\n",
|
||
" \"\"\"Check if Planet imagery is available for the given date.\"\"\"\n",
|
||
" try:\n",
|
||
" # Use first bbox to check availability (assumes all have similar coverage)\n",
|
||
" test_bbox = bbox_list[0] if bbox_list else None\n",
|
||
" if test_bbox is None:\n",
|
||
" return True # Skip check if no bbox available\n",
|
||
" \n",
|
||
" # Query catalog for available images\n",
|
||
" search_results = catalog.search(\n",
|
||
" collection=DataCollection.define_byoc(collection_id),\n",
|
||
" bbox=test_bbox,\n",
|
||
" time=(time_interval, time_interval),\n",
|
||
" filter=None\n",
|
||
" )\n",
|
||
" \n",
|
||
" # Check if any results\n",
|
||
" tiles = list(search_results)\n",
|
||
" if len(tiles) > 0:\n",
|
||
" print(f\"✓ Found {len(tiles)} image(s) for {time_interval}\")\n",
|
||
" return True\n",
|
||
" else:\n",
|
||
" print(f\"✗ No images found for {time_interval}\")\n",
|
||
" return False\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"⚠ Error checking availability for {time_interval}: {e}\")\n",
|
||
" return True # Continue anyway on error\n",
|
||
"\n",
|
||
"# Function to download imagery for a specific date\n",
|
||
"def download_function(slot, bbox, size):\n",
|
||
" \"\"\"Download Planet imagery with UDM masks for a specific date and bbox.\"\"\"\n",
|
||
" try:\n",
|
||
" request = SentinelHubRequest(\n",
|
||
" evalscript=evalscript_with_udm,\n",
|
||
" input_data=[\n",
|
||
" SentinelHubRequest.input_data(\n",
|
||
" data_collection=byoc, # Use the BYOC collection defined earlier\n",
|
||
" time_interval=(slot, slot)\n",
|
||
" )\n",
|
||
" ],\n",
|
||
" responses=[\n",
|
||
" SentinelHubRequest.output_response('default', MimeType.TIFF)\n",
|
||
" ],\n",
|
||
" bbox=bbox,\n",
|
||
" size=size,\n",
|
||
" config=config,\n",
|
||
" data_folder=str(BASE_PATH_SINGLE_IMAGES / slot),\n",
|
||
" )\n",
|
||
" \n",
|
||
" # Download\n",
|
||
" list_of_requests = [request.download_list[0]]\n",
|
||
" data = SentinelHubDownloadClient(config=config).download(list_of_requests, max_threads=2)\n",
|
||
" print(f'✓ Downloaded image for {slot} and bbox {repr(bbox)}')\n",
|
||
" time.sleep(1)\n",
|
||
" \n",
|
||
" except Exception as e:\n",
|
||
" print(f'✗ Error downloading {slot} for bbox {repr(bbox)}: {e}')\n",
|
||
"\n",
|
||
"print(\"✓ Download functions defined\")\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "f8ea846f-783b-4460-a951-7b522273555f",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Download images\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 41,
|
||
"id": "f145bdd1",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"geo_json = gpd.read_file(str(geojson_file))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 42,
|
||
"id": "f5064dd1",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"GeoJSON CRS: EPSG:4326\n",
|
||
"GeoJSON bounds: [37.02846083 -7.6046316 37.43829051 -6.46179388]\n",
|
||
"✓ GeoJSON is already in WGS84\n",
|
||
"WGS84 bounds (lon/lat): LON=37.02846-37.43829, LAT=-7.60463--6.46179\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"\n",
|
||
"# Check and convert GeoJSON to WGS84 if needed\n",
|
||
"temp_gdf = gpd.read_file(str(geojson_file))\n",
|
||
"print(f\"GeoJSON CRS: {temp_gdf.crs}\")\n",
|
||
"print(f\"GeoJSON bounds: {temp_gdf.total_bounds}\")\n",
|
||
"\n",
|
||
"if temp_gdf.crs is None:\n",
|
||
" print(\"⚠️ WARNING: GeoJSON has no CRS defined. Assuming WGS84.\")\n",
|
||
" temp_gdf = temp_gdf.set_crs('EPSG:4326')\n",
|
||
"elif temp_gdf.crs != 'EPSG:4326':\n",
|
||
" print(f\"Converting from {temp_gdf.crs} to WGS84...\")\n",
|
||
" temp_gdf = temp_gdf.to_crs('EPSG:4326')\n",
|
||
" # Write the converted GeoJSON back\n",
|
||
" import tempfile\n",
|
||
" import shutil\n",
|
||
" with tempfile.NamedTemporaryFile(mode='w', suffix='.geojson', delete=False) as tmp:\n",
|
||
" temp_path = tmp.name\n",
|
||
" temp_gdf.to_file(temp_path, driver='GeoJSON')\n",
|
||
" shutil.move(temp_path, geojson_file)\n",
|
||
" print(f\"✓ GeoJSON converted to WGS84 and saved\")\n",
|
||
"else:\n",
|
||
" print(\"✓ GeoJSON is already in WGS84\")\n",
|
||
"\n",
|
||
"print(f\"WGS84 bounds (lon/lat): LON={temp_gdf.total_bounds[0]:.5f}-{temp_gdf.total_bounds[2]:.5f}, LAT={temp_gdf.total_bounds[1]:.5f}-{temp_gdf.total_bounds[3]:.5f}\")\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 43,
|
||
"id": "3e44fc64",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"geometries = [Geometry(geometry, crs=CRS.WGS84) for geometry in geo_json.geometry]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 44,
|
||
"id": "50419beb",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"shapely_geometries = [geometry.geometry for geometry in geometries]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 45,
|
||
"id": "308089ac",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Area extent: 45622m × 127221m\n",
|
||
"Max bbox size: 7500m (2500px @ 3m resolution)\n",
|
||
"Dynamic grid: 7×17 (119 total tiles)\n",
|
||
"Area bounding box: BBox(((37.02846082508326, -7.604631600467031), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"def calculate_dynamic_grid(shapely_geometries, resolution=3, max_pixels=2500):\n",
|
||
" \"\"\"\n",
|
||
" Calculate optimal grid size based on area extent and pixel limits.\n",
|
||
" \n",
|
||
" Goal: Minimize API calls while respecting SentinelHub's ~2500px limit per request.\n",
|
||
" Smaller areas get fewer bboxes, larger areas get dynamically scaled grids.\n",
|
||
" \n",
|
||
" Args:\n",
|
||
" shapely_geometries: List of field polygon geometries\n",
|
||
" resolution: Target resolution in meters\n",
|
||
" max_pixels: Maximum pixels per download (~2500 for SentinelHub)\n",
|
||
" \n",
|
||
" Returns:\n",
|
||
" grid_size: Tuple (nx, ny) for BBoxSplitter\n",
|
||
" \"\"\"\n",
|
||
" from shapely.geometry import MultiPolygon\n",
|
||
" \n",
|
||
" # Flatten MultiPolygons to Polygons\n",
|
||
" flattened_geoms = []\n",
|
||
" for geom in shapely_geometries:\n",
|
||
" if isinstance(geom, MultiPolygon):\n",
|
||
" flattened_geoms.extend(list(geom.geoms))\n",
|
||
" else:\n",
|
||
" flattened_geoms.append(geom)\n",
|
||
" \n",
|
||
" # Get overall bounds\n",
|
||
" if len(flattened_geoms) == 1:\n",
|
||
" bounds = flattened_geoms[0].bounds\n",
|
||
" else:\n",
|
||
" # Combine all geometries\n",
|
||
" multi = MultiPolygon(flattened_geoms)\n",
|
||
" bounds = multi.bounds\n",
|
||
" \n",
|
||
" minx, miny, maxx, maxy = bounds\n",
|
||
" \n",
|
||
" # Convert to rough meters (11132 m per degree at equator, valid for Kenya)\n",
|
||
" width_m = (maxx - minx) * 111320\n",
|
||
" height_m = (maxy - miny) * 111320\n",
|
||
" \n",
|
||
" # Calculate max bbox size allowed\n",
|
||
" max_size_m = max_pixels * resolution\n",
|
||
" \n",
|
||
" # Calculate grid needed to stay under max_size_m per tile\n",
|
||
" nx = max(1, int(np.ceil(width_m / max_size_m)))\n",
|
||
" ny = max(1, int(np.ceil(height_m / max_size_m)))\n",
|
||
" \n",
|
||
" print(f\"Area extent: {width_m:.0f}m × {height_m:.0f}m\")\n",
|
||
" print(f\"Max bbox size: {max_size_m:.0f}m ({max_pixels}px @ {resolution}m resolution)\")\n",
|
||
" print(f\"Dynamic grid: {nx}×{ny} ({nx*ny} total tiles)\")\n",
|
||
" \n",
|
||
" return (nx, ny)\n",
|
||
"\n",
|
||
"# Calculate optimal grid size dynamically instead of hardcoded 5x5\n",
|
||
"grid_size = calculate_dynamic_grid(shapely_geometries, resolution=resolution)\n",
|
||
"\n",
|
||
"bbox_splitter = BBoxSplitter(\n",
|
||
" shapely_geometries, CRS.WGS84, grid_size, reduce_bbox_sizes=True\n",
|
||
") # Dynamic grid based on area size, respects ~2500px limit per tile\n",
|
||
"\n",
|
||
"# based on https://github.com/sentinel-hub/sentinelhub-py/blob/master/examples/large_area_utilities.ipynb \n",
|
||
"\n",
|
||
"print(\"Area bounding box: {}\\n\".format(bbox_splitter.get_area_bbox().__repr__()))\n",
|
||
"\n",
|
||
"bbox_list = bbox_splitter.get_bbox_list()\n",
|
||
"info_list = bbox_splitter.get_info_list()\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 46,
|
||
"id": "8e330d6b",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/svg+xml": [
|
||
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"100.0\" height=\"100.0\" viewBox=\"37.02778170518377 -7.605310720366517 0.015883076656976414 0.018336237286110446\" preserveAspectRatio=\"xMinYMin meet\"><g transform=\"matrix(1,0,0,-1,0,-15.192285203446923)\"><g><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.00036672474572220894\" opacity=\"0.6\" d=\"M 37.03127332738373,-7.603362345745893 L 37.032082528613714,-7.603489681980053 L 37.03184428662722,-7.604631600467031 L 37.031684089429405,-7.604623385226117 L 37.031684089429405,-7.604298883210033 L 37.03155675319525,-7.603888121164358 L 37.03127332738373,-7.603362345745893 z\" /><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.00036672474572220894\" opacity=\"0.6\" d=\"M 37.03011515592744,-7.604557088636638 L 37.02846082508326,-7.604350152990968 L 37.02864618780851,-7.603788842764814 L 37.02882569134903,-7.602211147243937 L 37.030543167803074,-7.602534403291528 L 37.03011515592744,-7.604557088636638 z\" /><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.00036672474572220894\" opacity=\"0.6\" d=\"M 37.03976293851512,-7.591130905967991 L 37.03993688426538,-7.590728121751192 L 37.040772394180586,-7.591235701153601 L 37.040919962911346,-7.591044645985279 L 37.041302786140406,-7.591328733614295 L 37.04123720003785,-7.591411429134912 L 37.04108321527532,-7.591525491921971 L 37.040649776684496,-7.591688031393529 L 37.03976293851512,-7.591130905967991 z\" /><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.00036672474572220894\" opacity=\"0.6\" d=\"M 37.04298566194126,-7.587728222392593 L 37.042769265644424,-7.588355025459285 L 37.042545407406315,-7.588290355301611 L 37.04274687982061,-7.587653602979892 L 37.04298566194126,-7.587728222392593 z\" /></g></g></svg>"
|
||
],
|
||
"text/plain": [
|
||
"<MULTIPOLYGON (((37.031 -7.603, 37.032 -7.603, 37.032 -7.605, 37.032 -7.605,...>"
|
||
]
|
||
},
|
||
"execution_count": 46,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"geometry_list = bbox_splitter.get_geometry_list()\n",
|
||
"\n",
|
||
"geometry_list[0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 47,
|
||
"id": "8d686f8e",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Will attempt download for all 38 slots\n",
|
||
"(Download function will skip any missing data)\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Use all slots - let the download function handle missing data\n",
|
||
"# (Catalog availability check is unreliable, so we skip it)\n",
|
||
"available_slots = slots\n",
|
||
"print(f\"Will attempt download for all {len(available_slots)} slots\")\n",
|
||
"print(\"(Download function will skip any missing data)\")\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 48,
|
||
"id": "8536fb09",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"['2025-12-01', '2025-12-02', '2025-12-03', '2025-12-04', '2025-12-05', '2025-12-06', '2025-12-07', '2025-12-08', '2025-12-09', '2025-12-10', '2025-12-11', '2025-12-12', '2025-12-13', '2025-12-14', '2025-12-15', '2025-12-16', '2025-12-17', '2025-12-18', '2025-12-19', '2025-12-20', '2025-12-21', '2025-12-22', '2025-12-23', '2025-12-24', '2025-12-25', '2025-12-26', '2025-12-27', '2025-12-28', '2025-12-29', '2025-12-30', '2025-12-31', '2026-01-01', '2026-01-02', '2026-01-03', '2026-01-04', '2026-01-05', '2026-01-06', '2026-01-07']\n",
|
||
"Total slots: 38\n",
|
||
"Available slots: 38\n",
|
||
"Will attempt download for all 38 slots\n",
|
||
"\n",
|
||
"Note: Slots with no data will fail gracefully and be skipped during merge.\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(available_slots)\n",
|
||
"print(f\"Total slots: {len(slots)}\")\n",
|
||
"print(f\"Available slots: {len(available_slots)}\")\n",
|
||
"print(f\"Will attempt download for all {len(available_slots)} slots\")\n",
|
||
"print(\"\\nNote: Slots with no data will fail gracefully and be skipped during merge.\")\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "950f29ae",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 49,
|
||
"id": "5059aa6e",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def show_splitter(splitter, alpha=0.2, area_buffer=0.2, show_legend=False):\n",
|
||
" area_bbox = splitter.get_area_bbox()\n",
|
||
" minx, miny, maxx, maxy = area_bbox\n",
|
||
" lng, lat = area_bbox.middle\n",
|
||
" w, h = maxx - minx, maxy - miny\n",
|
||
" minx = minx - area_buffer * w\n",
|
||
" miny = miny - area_buffer * h\n",
|
||
" maxx = maxx + area_buffer * w\n",
|
||
" maxy = maxy + area_buffer * h\n",
|
||
"\n",
|
||
" fig = plt.figure(figsize=(10, 10))\n",
|
||
" ax = fig.add_subplot(111)\n",
|
||
"\n",
|
||
" base_map = Basemap(\n",
|
||
" projection=\"mill\",\n",
|
||
" lat_0=lat,\n",
|
||
" lon_0=lng,\n",
|
||
" llcrnrlon=minx,\n",
|
||
" llcrnrlat=miny,\n",
|
||
" urcrnrlon=maxx,\n",
|
||
" urcrnrlat=maxy,\n",
|
||
" resolution=\"l\",\n",
|
||
" epsg=4326,\n",
|
||
" )\n",
|
||
" base_map.drawcoastlines(color=(0, 0, 0, 0))\n",
|
||
"\n",
|
||
" area_shape = splitter.get_area_shape()\n",
|
||
"\n",
|
||
" if isinstance(area_shape, Polygon):\n",
|
||
" polygon_iter = [area_shape]\n",
|
||
" elif isinstance(area_shape, MultiPolygon):\n",
|
||
" polygon_iter = area_shape.geoms\n",
|
||
" else:\n",
|
||
" raise ValueError(f\"Geometry of type {type(area_shape)} is not supported\")\n",
|
||
"\n",
|
||
" for polygon in polygon_iter:\n",
|
||
" if isinstance(polygon.boundary, MultiLineString):\n",
|
||
" for linestring in polygon.boundary:\n",
|
||
" ax.add_patch(PltPolygon(np.array(linestring), closed=True, facecolor=(0, 0, 0, 0), edgecolor=\"red\"))\n",
|
||
" else:\n",
|
||
" ax.add_patch(\n",
|
||
" PltPolygon(np.array(polygon.boundary.coords), closed=True, facecolor=(0, 0, 0, 0), edgecolor=\"red\")\n",
|
||
" )\n",
|
||
"\n",
|
||
" bbox_list = splitter.get_bbox_list()\n",
|
||
" info_list = splitter.get_info_list()\n",
|
||
"\n",
|
||
" cm = plt.get_cmap(\"jet\", len(bbox_list))\n",
|
||
" legend_shapes = []\n",
|
||
" for i, bbox in enumerate(bbox_list):\n",
|
||
" wgs84_bbox = bbox.transform(CRS.WGS84).get_polygon()\n",
|
||
"\n",
|
||
" tile_color = tuple(list(cm(i))[:3] + [alpha])\n",
|
||
" ax.add_patch(PltPolygon(np.array(wgs84_bbox), closed=True, facecolor=tile_color, edgecolor=\"green\"))\n",
|
||
"\n",
|
||
" if show_legend:\n",
|
||
" legend_shapes.append(plt.Rectangle((0, 0), 1, 1, fc=cm(i)))\n",
|
||
"\n",
|
||
" if show_legend:\n",
|
||
" legend_names = []\n",
|
||
" for info in info_list:\n",
|
||
" legend_name = \"{},{}\".format(info[\"index_x\"], info[\"index_y\"])\n",
|
||
"\n",
|
||
" for prop in [\"grid_index\", \"tile\"]:\n",
|
||
" if prop in info:\n",
|
||
" legend_name = \"{},{}\".format(info[prop], legend_name)\n",
|
||
"\n",
|
||
" legend_names.append(legend_name)\n",
|
||
"\n",
|
||
" plt.legend(legend_shapes, legend_names)\n",
|
||
" plt.tight_layout()\n",
|
||
" plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 50,
|
||
"id": "39fda909",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Slot 2025-12-02 already has 2 file(s), skipping download\n",
|
||
"✓ Slot 2025-12-03 already has 2 file(s), skipping download\n",
|
||
"\n",
|
||
"Downloading for 36 slots (skipping 2 already downloaded)\n",
|
||
"✓ Downloaded image for 2025-12-01 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-01 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-04 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-04 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-05 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-05 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-06 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-06 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-07 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-07 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-08 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-08 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-09 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-09 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-10 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-10 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-11 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-11 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-12 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-12 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-13 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-13 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-14 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-14 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-15 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-15 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-16 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-16 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-17 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-17 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-18 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-18 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-19 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-19 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-20 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-20 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-21 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-21 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-22 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-22 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-23 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-23 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-24 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-24 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-25 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-25 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-26 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-26 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-27 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-27 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-28 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-28 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-29 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-29 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-30 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-30 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-31 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2025-12-31 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2026-01-01 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2026-01-01 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2026-01-02 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2026-01-02 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2026-01-03 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2026-01-03 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2026-01-04 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2026-01-04 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2026-01-05 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2026-01-05 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2026-01-06 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2026-01-06 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2026-01-07 and bbox BBox(((37.02846082508326, -7.604631600467031), (37.04298566194126, -7.587653602979892)), crs=CRS('4326'))\n",
|
||
"✓ Downloaded image for 2026-01-07 and bbox BBox(((37.43285869734749, -6.478278779770056), (37.43829050915359, -6.461793876007774)), crs=CRS('4326'))\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Check which slots already have downloaded data to avoid re-downloading\n",
|
||
"slots_to_download = []\n",
|
||
"for slot in available_slots:\n",
|
||
" slot_dir = Path(BASE_PATH_SINGLE_IMAGES / slot)\n",
|
||
" existing_files = list(slot_dir.rglob('response.tiff')) if slot_dir.exists() else []\n",
|
||
" if not existing_files:\n",
|
||
" slots_to_download.append(slot)\n",
|
||
" else:\n",
|
||
" print(f\"✓ Slot {slot} already has {len(existing_files)} file(s), skipping download\")\n",
|
||
"\n",
|
||
"print(f\"\\nDownloading for {len(slots_to_download)} slots (skipping {len(available_slots) - len(slots_to_download)} already downloaded)\")\n",
|
||
"\n",
|
||
"resolution = 3\n",
|
||
"for slot in slots_to_download:\n",
|
||
" for bbox in bbox_list:\n",
|
||
" size = bbox_to_dimensions(bbox, resolution=resolution)\n",
|
||
" download_function(slot, bbox, size)\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 51,
|
||
"id": "b7df8a5a",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-01\\15afacca7c58d0b43c0f48bd093d975b\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-01\\c49446a99eca7a892cc7957eea7c56ac\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-01\\15afacca7c58d0b43c0f48bd093d975b\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-01\\c49446a99eca7a892cc7957eea7c56ac\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-01 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-01.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-02\\0dfe54dc2afc65f7097495b4fcc6b29d\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-02\\565811a890156a7023611bd11601e8f5\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-02\\565811a890156a7023611bd11601e8f5\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-02\\0dfe54dc2afc65f7097495b4fcc6b29d\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-02 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-02.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-03\\623f59aa02b17a6e4f87802b6ee444c8\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-03\\8a5407d14079afc10b4bde5fc97536fa\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-03\\623f59aa02b17a6e4f87802b6ee444c8\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-03\\8a5407d14079afc10b4bde5fc97536fa\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-03 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-03.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-04\\90ce5410c0f6551a6070164000277bd5\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-04\\a7a351a4f0091b55ccc1f83fd72fdf57\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-04\\a7a351a4f0091b55ccc1f83fd72fdf57\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-04\\90ce5410c0f6551a6070164000277bd5\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-04 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-04.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-05\\cd10793ad958d960e49dc87f0b370df2\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-05\\d3e6b6d67121ea00f51cc67051221ae1\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-05\\cd10793ad958d960e49dc87f0b370df2\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-05\\d3e6b6d67121ea00f51cc67051221ae1\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-05 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-05.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-06\\34f13102228bda2759ddf710085127b0\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-06\\4a8dbd2f443f698245b68410b2caa40e\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-06\\4a8dbd2f443f698245b68410b2caa40e\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-06\\34f13102228bda2759ddf710085127b0\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-06 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-06.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-07\\0e8a74a4db6dbb293963949bbb1f611a\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-07\\8b03b8920baccb988f1189cfc176432e\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-07\\8b03b8920baccb988f1189cfc176432e\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-07\\0e8a74a4db6dbb293963949bbb1f611a\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-07 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-07.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-08\\743365032e7b6316925735b4a56532c0\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-08\\f6bea4a44d9112c23dc1dc5addd2c7a6\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-08\\743365032e7b6316925735b4a56532c0\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-08\\f6bea4a44d9112c23dc1dc5addd2c7a6\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-08 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-08.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-09\\312204c77fda82b76dad5ed0c84d9738\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-09\\5669a1e6842209a2c6266e08a7698261\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-09\\5669a1e6842209a2c6266e08a7698261\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-09\\312204c77fda82b76dad5ed0c84d9738\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-09 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-09.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-10\\a1b2ea74c28249e86f186c73357fa2f4\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-10\\ea85de2d4d10b74027a0ced0e6d4fa35\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-10\\ea85de2d4d10b74027a0ced0e6d4fa35\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-10\\a1b2ea74c28249e86f186c73357fa2f4\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-10 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-10.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-11\\7206335a356534484c01d78485f75a2f\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-11\\926b3b51e58b37d5cf0d526d9adb0795\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-11\\7206335a356534484c01d78485f75a2f\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-11\\926b3b51e58b37d5cf0d526d9adb0795\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-11 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-11.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-12\\ae18025a893ca0daa2d4d6dcb0bc6a5f\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-12\\d5a01159952f6d3247710ab007a66a82\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-12\\d5a01159952f6d3247710ab007a66a82\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-12\\ae18025a893ca0daa2d4d6dcb0bc6a5f\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-12 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-12.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-13\\034f1c179cceb483681e7bbd0199bf6c\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-13\\6acb78dce9d3f434dd930183f1996922\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-13\\034f1c179cceb483681e7bbd0199bf6c\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-13\\6acb78dce9d3f434dd930183f1996922\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-13 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-13.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-14\\1b4a80a046e431727b12942491d28064\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-14\\851fc4cf1bb129bc97208ddfa1924761\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-14\\851fc4cf1bb129bc97208ddfa1924761\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-14\\1b4a80a046e431727b12942491d28064\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-14 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-14.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-15\\3e372eb40ffc8eaf8f729677f2d95605\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-15\\b8ddb25d8701898959920655ff20d186\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-15\\3e372eb40ffc8eaf8f729677f2d95605\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-15\\b8ddb25d8701898959920655ff20d186\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-15 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-15.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-16\\c1ba86175e1303a35137d6a743658f0d\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-16\\d26163dd35b173eb2aaccabbf207d80b\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-16\\c1ba86175e1303a35137d6a743658f0d\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-16\\d26163dd35b173eb2aaccabbf207d80b\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-16 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-16.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-17\\39884dd7d33604bae7821c506fa79ba4\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-17\\95a2dc942ecf74b3934c322114e9eb43\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-17\\39884dd7d33604bae7821c506fa79ba4\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-17\\95a2dc942ecf74b3934c322114e9eb43\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-17 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-17.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-18\\4e33f32855d1ebc3eb46c73c64c3bfc2\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-18\\70399de432a732e6b6b4a20a3c23b604\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-18\\70399de432a732e6b6b4a20a3c23b604\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-18\\4e33f32855d1ebc3eb46c73c64c3bfc2\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-18 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-18.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-19\\50c192581ca74b7b7a11c4fb9a7c07aa\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-19\\81dcbfe5ab13ba158125bc6bee0ba9d4\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-19\\50c192581ca74b7b7a11c4fb9a7c07aa\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-19\\81dcbfe5ab13ba158125bc6bee0ba9d4\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-19 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-19.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-20\\65c633501cef467978ef67ac0a8bfbeb\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-20\\d1b06c39468bfe0b6da84babf2707f84\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-20\\d1b06c39468bfe0b6da84babf2707f84\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-20\\65c633501cef467978ef67ac0a8bfbeb\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-20 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-20.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-21\\2cd605cb645e431ab33f3e43182e9546\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-21\\d470270e67127f365a636494abecbe45\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-21\\2cd605cb645e431ab33f3e43182e9546\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-21\\d470270e67127f365a636494abecbe45\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-21 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-21.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-22\\0c5809b2b79845e6d30a55c12dce42e2\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-22\\26d8699d672d2f278e7613b0545db83c\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-22\\0c5809b2b79845e6d30a55c12dce42e2\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-22\\26d8699d672d2f278e7613b0545db83c\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-22 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-22.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-23\\1284fa22af1cdc69e40563f32980625d\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-23\\e8d5435d113e86866a7a8be950c7f4b8\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-23\\e8d5435d113e86866a7a8be950c7f4b8\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-23\\1284fa22af1cdc69e40563f32980625d\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-23 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-23.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-24\\38380c3219495487c1776bac459fbe53\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-24\\b95c7cce7996656444399706223ee77a\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-24\\b95c7cce7996656444399706223ee77a\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-24\\38380c3219495487c1776bac459fbe53\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-24 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-24.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-25\\44b94cbbbfc3bf4f13b4cd980bccd683\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-25\\97be4a84abcccdbae245a1419f273503\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-25\\44b94cbbbfc3bf4f13b4cd980bccd683\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-25\\97be4a84abcccdbae245a1419f273503\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-25 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-25.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-26\\611df9adc5de1c1d77d428fa700fd310\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-26\\70046cfe64437eaf2912d3991bc6887c\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-26\\70046cfe64437eaf2912d3991bc6887c\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-26\\611df9adc5de1c1d77d428fa700fd310\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-26 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-26.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-27\\3099c51e8426c7ca530b36f49434c674\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-27\\c9f4e580ed54e0863f16cb102ad07f05\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-27\\c9f4e580ed54e0863f16cb102ad07f05\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-27\\3099c51e8426c7ca530b36f49434c674\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-27 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-27.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-28\\77b94e280592208d5089ca8583048111\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-28\\cf779564a02174e045bb5bdebcc36a4d\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-28\\77b94e280592208d5089ca8583048111\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-28\\cf779564a02174e045bb5bdebcc36a4d\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-28 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-28.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-29\\41a2ef211a319253ef22a34070fbf577\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-29\\8ece06bc7a5fada0aaa07f71bfbb7a6d\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-29\\8ece06bc7a5fada0aaa07f71bfbb7a6d\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-29\\41a2ef211a319253ef22a34070fbf577\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-29 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-29.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-30\\228452a4e27c60fd75cd1c39a4d45fce\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-30\\ca9fe4737bf56f34f83e9729a047145c\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-30\\ca9fe4737bf56f34f83e9729a047145c\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-30\\228452a4e27c60fd75cd1c39a4d45fce\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-30 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-30.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-31\\23436b937cddc8965ce508b6298b8f7f\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-31\\ec75440a30c08694ff22bdd7785f21f1\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-31\\23436b937cddc8965ce508b6298b8f7f\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2025-12-31\\ec75440a30c08694ff22bdd7785f21f1\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2025-12-31 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2025-12-31.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-01\\c46e4b9ebc5975a914261fdb5d56d307\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-01\\d77c2a1976fae6138b3fef7bc62ac583\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-01\\d77c2a1976fae6138b3fef7bc62ac583\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-01\\c46e4b9ebc5975a914261fdb5d56d307\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2026-01-01 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2026-01-01.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-02\\3818940b2779a5cbadcc5d1dbf7a942a\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-02\\e78a5b8868fb3aa907fc71b1459fcfc8\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-02\\e78a5b8868fb3aa907fc71b1459fcfc8\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-02\\3818940b2779a5cbadcc5d1dbf7a942a\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2026-01-02 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2026-01-02.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-03\\13c79f22a5491869dc7c471a4fc13f98\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-03\\ae3f485f145066e97318af2e33ae0fa2\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-03\\13c79f22a5491869dc7c471a4fc13f98\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-03\\ae3f485f145066e97318af2e33ae0fa2\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2026-01-03 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2026-01-03.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-04\\1c6f3f6e303f2d11dff76aeccf85b0b0\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-04\\46d1c9046559fecfded50f6eb9e00218\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-04\\46d1c9046559fecfded50f6eb9e00218\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-04\\1c6f3f6e303f2d11dff76aeccf85b0b0\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2026-01-04 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2026-01-04.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-05\\1f7d10f890a1959b31b7b2d4a651af5d\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-05\\77b1492739070925da650236a3698803\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-05\\1f7d10f890a1959b31b7b2d4a651af5d\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-05\\77b1492739070925da650236a3698803\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2026-01-05 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2026-01-05.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-06\\04bac9a2a64602892055777af03fb215\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-06\\73cdbf69eeae4369d9a89a66272fcaed\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-06\\73cdbf69eeae4369d9a89a66272fcaed\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-06\\04bac9a2a64602892055777af03fb215\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2026-01-06 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2026-01-06.tif\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-07\\855522a75f645b724be33cddeb10cdaa\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4939: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-07\\fa5cd4932fbe316b0b7abd3ceb87f4d3\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.BuildVRTInternalNames(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-07\\fa5cd4932fbe316b0b7abd3ceb87f4d3\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n",
|
||
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\osgeo\\gdal.py:4793: RuntimeWarning: ..\\laravel_app\\storage\\app\\tz_nik\\single_images_8b\\2026-01-07\\855522a75f645b724be33cddeb10cdaa\\response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n",
|
||
" return _gdal.TranslateInternal(*args)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"✓ Successfully merged 2 tiles for slot 2026-01-07 into ..\\laravel_app\\storage\\app\\tz_nik\\merged_tif_8b\\2026-01-07.tif\n",
|
||
"\n",
|
||
"✓ Successfully merged 38 out of 38 slots\n",
|
||
" Slots with data: ['2025-12-01', '2025-12-02', '2025-12-03', '2025-12-04', '2025-12-05', '2025-12-06', '2025-12-07', '2025-12-08', '2025-12-09', '2025-12-10', '2025-12-11', '2025-12-12', '2025-12-13', '2025-12-14', '2025-12-15', '2025-12-16', '2025-12-17', '2025-12-18', '2025-12-19', '2025-12-20', '2025-12-21', '2025-12-22', '2025-12-23', '2025-12-24', '2025-12-25', '2025-12-26', '2025-12-27', '2025-12-28', '2025-12-29', '2025-12-30', '2025-12-31', '2026-01-01', '2026-01-02', '2026-01-03', '2026-01-04', '2026-01-05', '2026-01-06', '2026-01-07']\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"successful_slots = []\n",
|
||
"for slot in available_slots:\n",
|
||
" if merge_files(slot):\n",
|
||
" successful_slots.append(slot)\n",
|
||
"\n",
|
||
"print(f\"\\n✓ Successfully merged {len(successful_slots)} out of {len(available_slots)} slots\")\n",
|
||
"if successful_slots:\n",
|
||
" print(f\" Slots with data: {successful_slots}\")\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "4274d8e7-1ea3-46db-9528-069ede0b2132",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"#### Delete intermediate files\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 62,
|
||
"id": "cb3fa856-a550-4899-844a-e69209bba3ad",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Cleaning folder: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\n",
|
||
"Deleted file: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\\merged2025-12-11.vrt\n",
|
||
"Deleted file: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\\merged2025-12-12.vrt\n",
|
||
"Deleted file: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\\merged2025-12-13.vrt\n",
|
||
"Deleted file: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\\merged2025-12-14.vrt\n",
|
||
"Deleted file: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\\merged2025-12-15.vrt\n",
|
||
"Deleted file: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\\merged2025-12-16.vrt\n",
|
||
"Deleted file: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\\merged2025-12-17.vrt\n",
|
||
"Deleted file: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\\merged2025-12-18.vrt\n",
|
||
"Deleted file: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\\merged2025-12-19.vrt\n",
|
||
"Deleted file: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\\merged2025-12-20.vrt\n",
|
||
"Deleted file: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\\merged2025-12-21.vrt\n",
|
||
"Deleted file: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\\merged2025-12-22.vrt\n",
|
||
"Deleted file: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\\merged2025-12-23.vrt\n",
|
||
"Deleted file: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\\merged2025-12-24.vrt\n",
|
||
"Emptied folder: ..\\laravel_app\\storage\\app\\angata\\merged_virtual_8b\n",
|
||
"Cleaning folder: ..\\laravel_app\\storage\\app\\angata\\single_images_8b\n",
|
||
"Error deleting ..\\laravel_app\\storage\\app\\angata\\single_images_8b\\2025-12-11: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\angata\\\\single_images_8b\\\\2025-12-11\\\\01812150cf6938c44cd3aaf9199950d5'\n",
|
||
"Error deleting ..\\laravel_app\\storage\\app\\angata\\single_images_8b\\2025-12-12: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\angata\\\\single_images_8b\\\\2025-12-12\\\\0062660dba673a37e9353b247e219690'\n",
|
||
"Error deleting ..\\laravel_app\\storage\\app\\angata\\single_images_8b\\2025-12-13: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\angata\\\\single_images_8b\\\\2025-12-13\\\\012fddcaaef15b306d3d8c887357a02f'\n",
|
||
"Error deleting ..\\laravel_app\\storage\\app\\angata\\single_images_8b\\2025-12-14: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\angata\\\\single_images_8b\\\\2025-12-14\\\\0f6be38e6a90d6f0fd08f8e155d04499'\n",
|
||
"Error deleting ..\\laravel_app\\storage\\app\\angata\\single_images_8b\\2025-12-15: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\angata\\\\single_images_8b\\\\2025-12-15\\\\01dfa8c50d2b8c323733492d977da6b3'\n",
|
||
"Error deleting ..\\laravel_app\\storage\\app\\angata\\single_images_8b\\2025-12-16: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\angata\\\\single_images_8b\\\\2025-12-16\\\\03d002d1f80ca45cc3c66e614a646f68'\n",
|
||
"Error deleting ..\\laravel_app\\storage\\app\\angata\\single_images_8b\\2025-12-17: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\angata\\\\single_images_8b\\\\2025-12-17\\\\015afc5dc5349c56bcdd685bead0a5f1'\n",
|
||
"Error deleting ..\\laravel_app\\storage\\app\\angata\\single_images_8b\\2025-12-18: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\angata\\\\single_images_8b\\\\2025-12-18\\\\00fc0888e05065f7d9d379fe85316dc7'\n",
|
||
"Error deleting ..\\laravel_app\\storage\\app\\angata\\single_images_8b\\2025-12-19: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\angata\\\\single_images_8b\\\\2025-12-19\\\\036f33da47ae7d1d2a877e6f8997350e'\n",
|
||
"Error deleting ..\\laravel_app\\storage\\app\\angata\\single_images_8b\\2025-12-20: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\angata\\\\single_images_8b\\\\2025-12-20\\\\03c07fe5804be03938016d5306342f52'\n",
|
||
"Error deleting ..\\laravel_app\\storage\\app\\angata\\single_images_8b\\2025-12-21: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\angata\\\\single_images_8b\\\\2025-12-21\\\\047017d10a992f4839d3850e7cb5341f'\n",
|
||
"Error deleting ..\\laravel_app\\storage\\app\\angata\\single_images_8b\\2025-12-22: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\angata\\\\single_images_8b\\\\2025-12-22\\\\043619f46b5fcf4bd22ab111766ebfd1'\n",
|
||
"Error deleting ..\\laravel_app\\storage\\app\\angata\\single_images_8b\\2025-12-23: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\angata\\\\single_images_8b\\\\2025-12-23\\\\08e6c805da8542cf69fe0703cc570b64'\n",
|
||
"Error deleting ..\\laravel_app\\storage\\app\\angata\\single_images_8b\\2025-12-24: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\angata\\\\single_images_8b\\\\2025-12-24\\\\0d0ff574f3ba4dd3cdd937f6c14ef930'\n",
|
||
"Emptied folder: ..\\laravel_app\\storage\\app\\angata\\single_images_8b\n",
|
||
"Cleanup complete.\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# List of folder names\n",
|
||
"\n",
|
||
"folders_to_empty = [Path(folder_for_virtual_raster), BASE_PATH_SINGLE_IMAGES]\n",
|
||
" \n",
|
||
"# Function to empty folders\n",
|
||
"\n",
|
||
"def empty_folders(folders, run=True):\n",
|
||
" if not run:\n",
|
||
" print(\"Skipping empty_folders function.\")\n",
|
||
" return\n",
|
||
" \n",
|
||
" for folder in folders:\n",
|
||
" folder = Path(folder)\n",
|
||
" print(f\"Cleaning folder: {folder}\")\n",
|
||
" try:\n",
|
||
" if not folder.exists():\n",
|
||
" print(f\"Folder {folder} does not exist, skipping.\")\n",
|
||
" continue\n",
|
||
" for filename in folder.iterdir():\n",
|
||
" file_path = folder / filename.name\n",
|
||
" try:\n",
|
||
" if file_path.is_file():\n",
|
||
" file_path.unlink()\n",
|
||
" print(f\"Deleted file: {file_path}\")\n",
|
||
" elif file_path.is_dir():\n",
|
||
" shutil.rmtree(file_path)\n",
|
||
" print(f\"Deleted directory: {file_path}\")\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"Error deleting {file_path}: {e}\")\n",
|
||
" print(f\"Emptied folder: {folder}\")\n",
|
||
" except OSError as e:\n",
|
||
" print(f\"Error: {e}\")\n",
|
||
"\n",
|
||
"# Call the function to empty folders only if the 'run' parameter is set to True\n",
|
||
"empty_folders(folders_to_empty, run=empty_folder_question)\n",
|
||
"print('Cleanup complete.')\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 63,
|
||
"id": "0145b399-dfad-448a-9f0d-fa975fb01ad2",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"True"
|
||
]
|
||
},
|
||
"execution_count": 63,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"empty_folder_question"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "base",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.12.3"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|