948 lines
45 KiB
Plaintext
948 lines
45 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": 1,
|
|
"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": null,
|
|
"id": "80dc31ce",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "330c967c-2742-4a7a-9a61-28bfdaf8eeca",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#pip install pipreqs"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"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": 4,
|
|
"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": 5,
|
|
"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": 6,
|
|
"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 = 'citrus_brazil_trial' #or xinavane or chemba_test_8b\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "d5a99e68",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Adjust the number of days needed\n",
|
|
"days = 200 #change back to 28 which is the default. 3 years is 1095 days."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"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": 9,
|
|
"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')\n",
|
|
"folder_for_merged_tifs = str(BASE_PATH / 'merged_tif')\n",
|
|
"folder_for_virtual_raster = str(BASE_PATH / 'merged_virtual')\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": 10,
|
|
"id": "244b5752-4f02-4347-9278-f6a0a46b88f4",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"evalscript_true_color = \"\"\"\n",
|
|
" //VERSION=3\n",
|
|
"\n",
|
|
" function setup() {\n",
|
|
" return {\n",
|
|
" input: [{\n",
|
|
" bands: \n",
|
|
" [\"CoastalBlue\", \"Blue\", \"Green\", \"GreenI\", \"Yellow\", \"Red\", \n",
|
|
" \"RedEdge\", \"NIR\", \"udm1\" ]\n",
|
|
" }],\n",
|
|
" output: {\n",
|
|
" bands: 8\n",
|
|
" //sampleType: \"FLOAT32\"\n",
|
|
" }\n",
|
|
" };\n",
|
|
" }\n",
|
|
"\n",
|
|
" function evaluatePixel(sample) {\n",
|
|
" var scaledBlue = [2.5 * sample.Blue / 10000];\n",
|
|
" var scaledGreen = [2.5 * sample.Green / 10000];\n",
|
|
" var scaledRed = [2.5 * sample.Red / 10000];\n",
|
|
" var scaledCoastalBlue = [2.5 * sample.CoastalBlue / 10000];\n",
|
|
" var scaledGreenI = [2.5 * sample.GreenI / 10000];\n",
|
|
" var scaledYellow = [2.5 * sample.Yellow / 10000];\n",
|
|
" var scaledRedEdge = [2.5 * sample.RedEdge / 10000];\n",
|
|
" var scaledNIR = [2.5 * sample.NIR / 10000];\n",
|
|
" \n",
|
|
" // Output the scaled bands\n",
|
|
" \n",
|
|
" // if (sample.udm1 == 0) { \n",
|
|
" return [\n",
|
|
" scaledCoastalBlue,\n",
|
|
" scaledBlue,\n",
|
|
" scaledGreen,\n",
|
|
" scaledGreenI,\n",
|
|
" scaledYellow,\n",
|
|
" scaledRed, \n",
|
|
" scaledRedEdge,\n",
|
|
" scaledNIR,\n",
|
|
" ]\n",
|
|
" // } else {\n",
|
|
" // return [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN]}\n",
|
|
" \n",
|
|
" } \n",
|
|
"\n",
|
|
"\"\"\"\n",
|
|
"\n",
|
|
"def get_true_color_request_day(time_interval, bbox, size):\n",
|
|
" return SentinelHubRequest(\n",
|
|
" evalscript=evalscript_true_color,\n",
|
|
" input_data=[\n",
|
|
" SentinelHubRequest.input_data(\n",
|
|
" data_collection=DataCollection.planet_data_8b,\n",
|
|
" time_interval=(time_interval, time_interval)\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 / time_interval),\n",
|
|
"\n",
|
|
" )\n",
|
|
"\n",
|
|
"def download_function(slot, bbox, size):\n",
|
|
" # create a list of requests\n",
|
|
" list_of_requests = [get_true_color_request_day(slot, bbox, size)]\n",
|
|
" list_of_requests = [request.download_list[0] for request in list_of_requests]\n",
|
|
"\n",
|
|
" # download data chemba west with multiple threads\n",
|
|
" data = SentinelHubDownloadClient(config=config).download(list_of_requests, max_threads=15)\n",
|
|
" print(f' Image downloaded for ' +slot)\n",
|
|
" \n",
|
|
" time.sleep(.1)\n",
|
|
"\n",
|
|
"def merge_files(slot):\n",
|
|
" \n",
|
|
" # List the downloaded Tiffs in the different subfolders with pathlib (native library)\n",
|
|
" file_list = [f\"{x}/response.tiff\" for x in Path(BASE_PATH_SINGLE_IMAGES / slot).iterdir()]\n",
|
|
" \n",
|
|
" #print(file_list)\n",
|
|
"\n",
|
|
" folder_for_merged_tifs = str(BASE_PATH / 'merged_tif' / f\"{slot}.tif\")\n",
|
|
" folder_for_virtual_raster = str(BASE_PATH / 'merged_virtual' / f\"merged{slot}.vrt\")\n",
|
|
"\n",
|
|
" # Create a virtual raster\n",
|
|
" vrt_all = gdal.BuildVRT(folder_for_virtual_raster, file_list)\n",
|
|
" vrt_all = gdal.BuildVRT(folder_for_virtual_raster, file_list)\n",
|
|
"\n",
|
|
" # Convert to JPEG\n",
|
|
" gdal.Translate(folder_for_merged_tifs,folder_for_virtual_raster)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"id": "848dc773-70d6-4ae6-b05c-d6ebfb41624d",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Monthly time windows:\n",
|
|
"\n",
|
|
"2024-09-06\n",
|
|
"2024-09-07\n",
|
|
"2024-09-08\n",
|
|
"...\n",
|
|
"2025-03-22\n",
|
|
"2025-03-23\n",
|
|
"2025-03-24\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": "f8ea846f-783b-4460-a951-7b522273555f",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### Download images\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"id": "f145bdd1",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"geo_json = gpd.read_file(str(geojson_file))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "3e44fc64",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"geometries = [Geometry(geometry, crs=CRS.WGS84) for geometry in geo_json.geometry]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"id": "50419beb",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"shapely_geometries = [geometry.geometry for geometry in geometries]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"id": "308089ac",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Area bounding box: BBox(((-47.09879025717693, -22.67132809994226), (-47.09188307701802, -22.66813642658124)), crs=CRS('4326'))\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"bbox_splitter = BBoxSplitter(\n",
|
|
" shapely_geometries, CRS.WGS84, (1,1), reduce_bbox_sizes=True\n",
|
|
") # bounding box will be split into a grid of 5x4 bounding boxes\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": 16,
|
|
"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=\"-47.099066544383284 -22.67160438714862 0.007459754571620181 0.003744247773738607\" preserveAspectRatio=\"xMinYMin meet\"><g transform=\"matrix(1,0,0,-1,0,-45.3394645265235)\"><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.0001491950914324036\" opacity=\"0.6\" d=\"M -47.09805445286413,-22.66952337246588 L -47.09805851961499,-22.66952341396605 L -47.09831201628566,-22.6690573104498 L -47.09766248207074,-22.66894403661208 L -47.09743890798767,-22.66939352730967 L -47.09657817105054,-22.66896681839171 L -47.09661812458065,-22.66888004886227 L -47.09641381961848,-22.66877614597339 L -47.09612449194931,-22.66859711606797 L -47.09571930155018,-22.66905895027618 L -47.09517701850205,-22.66872806847029 L -47.0953727761646,-22.66834852803528 L -47.09494883808294,-22.66813642658124 L -47.09485879660592,-22.66814374727666 L -47.09188307701802,-22.66992047488275 L -47.09492613354303,-22.67132809994226 L -47.09500594723228,-22.67052749753276 L -47.09528028649954,-22.67029991687096 L -47.09556711980924,-22.67036970371914 L -47.09625642655305,-22.6700797885789 L -47.09785156654067,-22.67029446957762 L -47.09858155006654,-22.67039939171653 L -47.09879025717693,-22.66990727091475 L -47.09805445286413,-22.66952337246588 z\" /></g></svg>"
|
|
],
|
|
"text/plain": [
|
|
"<POLYGON Z ((-47.098 -22.67 0, -47.098 -22.67 0, -47.098 -22.669 0, -47.098 ...>"
|
|
]
|
|
},
|
|
"execution_count": 16,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"geometry_list = bbox_splitter.get_geometry_list()\n",
|
|
"\n",
|
|
"geometry_list[0]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"id": "62bc676c",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Function to check if images are available for a given date\n",
|
|
"def is_image_available(date):\n",
|
|
" for bbox in bbox_list:\n",
|
|
" search_iterator = catalog.search(\n",
|
|
" collection=byoc,\n",
|
|
" bbox=bbox, # Define your bounding box\n",
|
|
" time=(date, date)\n",
|
|
" )\n",
|
|
" if len(list(search_iterator)) > 0:\n",
|
|
" return True\n",
|
|
" return False\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"id": "8d686f8e",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Filter slots to only include dates with available images\n",
|
|
"available_slots = [slot for slot in slots if is_image_available(slot)]\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"id": "8536fb09",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"['2024-09-06', '2024-09-07', '2024-09-08', '2024-09-09', '2024-09-10', '2024-09-11', '2024-09-12', '2024-09-13', '2024-09-14', '2024-09-17', '2024-09-18', '2024-09-19', '2024-09-20', '2024-09-22', '2024-09-23', '2024-09-25', '2024-09-26', '2024-09-27', '2024-09-28', '2024-09-29', '2024-09-30', '2024-10-01', '2024-10-03', '2024-10-08', '2024-10-13', '2024-10-15', '2024-10-16', '2024-10-18', '2024-10-22', '2024-10-23', '2024-10-29', '2024-10-30', '2024-10-31', '2024-11-01', '2024-11-05', '2024-11-06', '2024-11-09', '2024-11-10', '2024-11-11', '2024-11-13', '2024-11-14', '2024-11-15', '2024-11-17', '2024-11-19', '2024-11-20', '2024-11-24', '2024-11-25', '2024-11-26', '2024-11-27', '2024-12-01', '2024-12-02', '2024-12-04', '2024-12-05', '2024-12-06', '2024-12-07', '2024-12-08', '2024-12-09', '2024-12-10', '2024-12-11', '2024-12-15', '2024-12-17', '2024-12-18', '2024-12-19', '2024-12-21', '2024-12-24', '2024-12-25', '2024-12-28', '2024-12-29', '2024-12-30', '2025-01-01', '2025-01-02', '2025-01-04', '2025-01-05', '2025-01-06', '2025-01-07', '2025-01-08', '2025-01-09', '2025-01-10', '2025-01-11', '2025-01-12', '2025-01-13', '2025-01-14', '2025-01-15', '2025-01-16', '2025-01-19', '2025-01-20', '2025-01-21', '2025-01-22', '2025-01-23', '2025-01-24', '2025-01-25', '2025-01-27', '2025-01-28', '2025-01-30', '2025-02-05', '2025-02-06', '2025-02-08', '2025-02-10', '2025-02-12', '2025-02-13', '2025-02-14', '2025-02-15', '2025-02-16', '2025-02-17', '2025-02-18', '2025-02-20', '2025-02-21', '2025-02-22', '2025-02-23', '2025-02-25', '2025-02-27', '2025-03-01', '2025-03-02', '2025-03-03', '2025-03-04', '2025-03-05', '2025-03-06', '2025-03-07', '2025-03-08', '2025-03-09', '2025-03-11', '2025-03-12', '2025-03-14', '2025-03-15', '2025-03-16', '2025-03-17', '2025-03-18', '2025-03-19', '2025-03-20', '2025-03-21', '2025-03-22', '2025-03-23']\n",
|
|
"Total slots: 200\n",
|
|
"Available slots: 132\n",
|
|
"Excluded slots due to clouds: 68\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(available_slots)\n",
|
|
"print(f\"Total slots: {len(slots)}\")\n",
|
|
"print(f\"Available slots: {len(available_slots)}\")\n",
|
|
"print(f\"Excluded slots due to clouds: {len(slots) - len(available_slots)}\")\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 20,
|
|
"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": 21,
|
|
"id": "39fda909",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\sentinelhub\\geometry.py:137: SHDeprecationWarning: Initializing `BBox` objects from `BBox` objects will no longer be possible in future versions.\n",
|
|
" return cls._tuple_from_bbox(bbox)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" Image downloaded for 2024-09-06\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"c:\\Users\\timon\\anaconda3\\Lib\\site-packages\\sentinelhub\\geometry.py:137: SHDeprecationWarning: Initializing `BBox` objects from `BBox` objects will no longer be possible in future versions.\n",
|
|
" return cls._tuple_from_bbox(bbox)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" Image downloaded for 2024-09-07\n",
|
|
" Image downloaded for 2024-09-08\n",
|
|
" Image downloaded for 2024-09-09\n",
|
|
" Image downloaded for 2024-09-10\n",
|
|
" Image downloaded for 2024-09-11\n",
|
|
" Image downloaded for 2024-09-12\n",
|
|
" Image downloaded for 2024-09-13\n",
|
|
" Image downloaded for 2024-09-14\n",
|
|
" Image downloaded for 2024-09-17\n",
|
|
" Image downloaded for 2024-09-18\n",
|
|
" Image downloaded for 2024-09-19\n",
|
|
" Image downloaded for 2024-09-20\n",
|
|
" Image downloaded for 2024-09-22\n",
|
|
" Image downloaded for 2024-09-23\n",
|
|
" Image downloaded for 2024-09-25\n",
|
|
" Image downloaded for 2024-09-26\n",
|
|
" Image downloaded for 2024-09-27\n",
|
|
" Image downloaded for 2024-09-28\n",
|
|
" Image downloaded for 2024-09-29\n",
|
|
" Image downloaded for 2024-09-30\n",
|
|
" Image downloaded for 2024-10-01\n",
|
|
" Image downloaded for 2024-10-03\n",
|
|
" Image downloaded for 2024-10-08\n",
|
|
" Image downloaded for 2024-10-13\n",
|
|
" Image downloaded for 2024-10-15\n",
|
|
" Image downloaded for 2024-10-16\n",
|
|
" Image downloaded for 2024-10-18\n",
|
|
" Image downloaded for 2024-10-22\n",
|
|
" Image downloaded for 2024-10-23\n",
|
|
" Image downloaded for 2024-10-29\n",
|
|
" Image downloaded for 2024-10-30\n",
|
|
" Image downloaded for 2024-10-31\n",
|
|
" Image downloaded for 2024-11-01\n",
|
|
" Image downloaded for 2024-11-05\n",
|
|
" Image downloaded for 2024-11-06\n",
|
|
" Image downloaded for 2024-11-09\n",
|
|
" Image downloaded for 2024-11-10\n",
|
|
" Image downloaded for 2024-11-11\n",
|
|
" Image downloaded for 2024-11-13\n",
|
|
" Image downloaded for 2024-11-14\n",
|
|
" Image downloaded for 2024-11-15\n",
|
|
" Image downloaded for 2024-11-17\n",
|
|
" Image downloaded for 2024-11-19\n",
|
|
" Image downloaded for 2024-11-20\n",
|
|
" Image downloaded for 2024-11-24\n",
|
|
" Image downloaded for 2024-11-25\n",
|
|
" Image downloaded for 2024-11-26\n",
|
|
" Image downloaded for 2024-11-27\n",
|
|
" Image downloaded for 2024-12-01\n",
|
|
" Image downloaded for 2024-12-02\n",
|
|
" Image downloaded for 2024-12-04\n",
|
|
" Image downloaded for 2024-12-05\n",
|
|
" Image downloaded for 2024-12-06\n",
|
|
" Image downloaded for 2024-12-07\n",
|
|
" Image downloaded for 2024-12-08\n",
|
|
" Image downloaded for 2024-12-09\n",
|
|
" Image downloaded for 2024-12-10\n",
|
|
" Image downloaded for 2024-12-11\n",
|
|
" Image downloaded for 2024-12-15\n",
|
|
" Image downloaded for 2024-12-17\n",
|
|
" Image downloaded for 2024-12-18\n",
|
|
" Image downloaded for 2024-12-19\n",
|
|
" Image downloaded for 2024-12-21\n",
|
|
" Image downloaded for 2024-12-24\n",
|
|
" Image downloaded for 2024-12-25\n",
|
|
" Image downloaded for 2024-12-28\n",
|
|
" Image downloaded for 2024-12-29\n",
|
|
" Image downloaded for 2024-12-30\n",
|
|
" Image downloaded for 2025-01-01\n",
|
|
" Image downloaded for 2025-01-02\n",
|
|
" Image downloaded for 2025-01-04\n",
|
|
" Image downloaded for 2025-01-05\n",
|
|
" Image downloaded for 2025-01-06\n",
|
|
" Image downloaded for 2025-01-07\n",
|
|
" Image downloaded for 2025-01-08\n",
|
|
" Image downloaded for 2025-01-09\n",
|
|
" Image downloaded for 2025-01-10\n",
|
|
" Image downloaded for 2025-01-11\n",
|
|
" Image downloaded for 2025-01-12\n",
|
|
" Image downloaded for 2025-01-13\n",
|
|
" Image downloaded for 2025-01-14\n",
|
|
" Image downloaded for 2025-01-15\n",
|
|
" Image downloaded for 2025-01-16\n",
|
|
" Image downloaded for 2025-01-19\n",
|
|
" Image downloaded for 2025-01-20\n",
|
|
" Image downloaded for 2025-01-21\n",
|
|
" Image downloaded for 2025-01-22\n",
|
|
" Image downloaded for 2025-01-23\n",
|
|
" Image downloaded for 2025-01-24\n",
|
|
" Image downloaded for 2025-01-25\n",
|
|
" Image downloaded for 2025-01-27\n",
|
|
" Image downloaded for 2025-01-28\n",
|
|
" Image downloaded for 2025-01-30\n",
|
|
" Image downloaded for 2025-02-05\n",
|
|
" Image downloaded for 2025-02-06\n",
|
|
" Image downloaded for 2025-02-08\n",
|
|
" Image downloaded for 2025-02-10\n",
|
|
" Image downloaded for 2025-02-12\n",
|
|
" Image downloaded for 2025-02-13\n",
|
|
" Image downloaded for 2025-02-14\n",
|
|
" Image downloaded for 2025-02-15\n",
|
|
" Image downloaded for 2025-02-16\n",
|
|
" Image downloaded for 2025-02-17\n",
|
|
" Image downloaded for 2025-02-18\n",
|
|
" Image downloaded for 2025-02-20\n",
|
|
" Image downloaded for 2025-02-21\n",
|
|
" Image downloaded for 2025-02-22\n",
|
|
" Image downloaded for 2025-02-23\n",
|
|
" Image downloaded for 2025-02-25\n",
|
|
" Image downloaded for 2025-02-27\n",
|
|
" Image downloaded for 2025-03-01\n",
|
|
" Image downloaded for 2025-03-02\n",
|
|
" Image downloaded for 2025-03-03\n",
|
|
" Image downloaded for 2025-03-04\n",
|
|
" Image downloaded for 2025-03-05\n",
|
|
" Image downloaded for 2025-03-06\n",
|
|
" Image downloaded for 2025-03-07\n",
|
|
" Image downloaded for 2025-03-08\n",
|
|
" Image downloaded for 2025-03-09\n",
|
|
" Image downloaded for 2025-03-11\n",
|
|
" Image downloaded for 2025-03-12\n",
|
|
" Image downloaded for 2025-03-14\n",
|
|
" Image downloaded for 2025-03-15\n",
|
|
" Image downloaded for 2025-03-16\n",
|
|
" Image downloaded for 2025-03-17\n",
|
|
" Image downloaded for 2025-03-18\n",
|
|
" Image downloaded for 2025-03-19\n",
|
|
" Image downloaded for 2025-03-20\n",
|
|
" Image downloaded for 2025-03-21\n",
|
|
" Image downloaded for 2025-03-22\n",
|
|
" Image downloaded for 2025-03-23\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Load areas outside the loop if they remain constant\n",
|
|
"#bbox_area = json.dumps(chosen_area)\n",
|
|
"#areas = json.loads(os.getenv('BBOX', bbox_area))\n",
|
|
"resolution = 3\n",
|
|
"\n",
|
|
"for slot in available_slots:\n",
|
|
" for bbox in bbox_list:\n",
|
|
" bbox = BBox(bbox=bbox, crs=CRS.WGS84)\n",
|
|
" size = bbox_to_dimensions(bbox, resolution=resolution)\n",
|
|
" download_function(slot, bbox, size)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"id": "b7df8a5a",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"for slot in available_slots:\n",
|
|
" merge_files(slot)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4274d8e7-1ea3-46db-9528-069ede0b2132",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"#### Delete intermediate files\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"id": "cb3fa856-a550-4899-844a-e69209bba3ad",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Emptied folder: ..\\laravel_app\\storage\\app\\citrus_brazil_trial\\merged_virtual\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-06\\\\b043cc2d8d4c16ad7136d80bc773d9a6'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-07\\\\0c7fd3960f4f89065e4763012ee2d5bf'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-08\\\\863975cad69c994bee3cbcf8c4c66969'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-09\\\\71cb610837ce5a64d07e0ecedcf8a1f4'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-10\\\\4612a3bd3f125c866f0a5ac03be77d7d'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-11\\\\e1b17c3480bfbcc90893a4922e34ee75'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-12\\\\2ae0d2333c294e6c756ed52d156a0847'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-13\\\\3c30518183fb168f51b5642df92d386e'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-14\\\\14ca5b977611b62d8175b2eadf79b9a4'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-17\\\\5feb7fd93dc82d95616ca072e0092e48'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-18\\\\2c3c82d1217e30ba8b784d2006dc6eda'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-19\\\\0c82b031dacac3898a0d9b201832fe58'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-20\\\\8184249ce19d16a5eb46849fb71735f9'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-22\\\\11aed9763515aa396b91af85196cdae9'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-23\\\\88fe8d2633709c6e133667bd4b40899f'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-25\\\\cf8b1c1ffd3fef5752ceb69750b27547'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-26\\\\f7ca306f684f53ed384fac004491a613'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-27\\\\9d3276f2df5feae36237bf88882d5653'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-28\\\\6cbcccc4dfa89b7b1adbe765d676a970'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-29\\\\b452dd0597eac790f3556266165cf6eb'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-09-30\\\\bd77c0078ff31b690f18b7e47120cbe2'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-10-01\\\\674447e677f39c5fd90cf16d1532762b'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-10-03\\\\8a621381e180b7c6561d63463c98f6c6'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-10-08\\\\d774ecb97260c424f0ee978e9ad60ffc'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-10-13\\\\8b199b4d58832a4423030090e4fc0b73'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-10-15\\\\d40037ddaf70ecfdb7bc129935829f4a'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-10-16\\\\e16a77670903d84d205c6696e76463d7'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-10-18\\\\c39346f991a2ce0d049626064bcb81b7'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-10-22\\\\49104dad0d9cd58782679ab9f2fbe0f6'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-10-23\\\\b90dda221ad426daca9ebb7848558f4d'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-10-29\\\\e1b930c1d8a4ea4348d6283bb88b1605'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-10-30\\\\403e7bd13f7e7095ed52d444b99f77a2'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-10-31\\\\c2f7e70356620fd6c0a8acb428629b2b'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-01\\\\3a5fd53572d0739709008f079db0141d'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-05\\\\6d7966d56889b59ab95e6d8dd07e1629'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-06\\\\7f0d3dff7bcce30ba35b3fe948b94d06'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-09\\\\1bfaabaa18d20650876f3f0f837fc464'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-10\\\\4df7433c53fb91d39fbd8d6eb203a15f'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-11\\\\4a85241d10149b508127c5c42c58ce99'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-13\\\\4fee940f019c897926febd3ce122242d'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-14\\\\9870499724f5f8a700d5c9b71256c62f'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-15\\\\4d05dbbb8da72096ca77c283e804a022'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-17\\\\e6272d213276d0dde53704378704c813'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-19\\\\af8d29be427d674b55748ec8903848da'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-20\\\\793f4696d7ea76612f7f1cf673301505'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-24\\\\5f6e5af6b78179063b799391c6597d61'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-25\\\\208ea4f8505eab64fd572e25093a8f4b'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-26\\\\fac9b5276038bea8718b3f571336c3cf'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-11-27\\\\3d6409a209cda70e048113cf83da1c90'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-01\\\\7ac210da516cb232e9d76267f8ee39c7'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-02\\\\700b4040e3e2b720a1dbf7b25faf9059'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-04\\\\641f5a937bd11cfd6d24d85654f734e9'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-05\\\\eaeec4515a330c2343940e91620860a0'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-06\\\\f0bd756aa6772d9c3ff9f84af6434cb4'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-07\\\\94ad9369c6400b1acbdf8b894b1cb1c8'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-08\\\\284dd45d9d1813a2329460cc42cfdb4c'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-09\\\\aeeaa22f6830a9c85b45dd9c7f4c0d50'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-10\\\\0fe500fdba20435186533274c3209605'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-11\\\\9def53810a174b79a049ad9e1efec24e'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-15\\\\47195abd1c0e772244cf441056f5e991'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-17\\\\34982fe049a0fc1dbbe2f30f05705e6c'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-18\\\\eb4436f4ddfa0e59bf26c03183bd15eb'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-19\\\\f8c1b9e189ec749d62bee897ba91f10f'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-21\\\\ab2d84cebe8244281e0ff7d9006f0fb5'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-24\\\\b6e260c9430f266d1c8fd733c7a12c1e'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-25\\\\bd1b758761ac2ba6c943b00b5163bc2a'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-28\\\\dc365a6a3662767d6322833d515a1761'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-29\\\\67852f7ef1f65898221ce463ea2f51a2'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2024-12-30\\\\df1ffaa3e2ef4a0a56d4fddb87b02cd0'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-01\\\\914a1eedf54d698ded4481193249be40'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-02\\\\12e7c086459b3546676025cd992bc2ec'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-04\\\\9a345a95b91a71ca0d097d867aa0caf9'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-05\\\\d9662fb43eac4f6c78a99d8f18ad5615'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-06\\\\b5464b7cca316a27176c22bd43c77310'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-07\\\\ff8b06ca380223236930942f024e8c9d'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-08\\\\cd5476dfb101f204fee49eb4b3a6f009'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-09\\\\9fb60730334264b42a496aa1e050620d'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-10\\\\b26157b68926589158b98a1b0969f3f4'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-11\\\\af7aa729b49095a402cbdf11cf017297'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-12\\\\234bc64b3c483c4748f6246243614a88'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-13\\\\54748c54f681b300b70e2883fec8ea96'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-14\\\\df8c9ba68dfab8d405f80bc8dc26db88'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-15\\\\99b61d572a1be3143a067f74eff66079'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-16\\\\e1e1d6b5aaca9fba11e7bf62579a14ec'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-19\\\\f417a4934ae7a1e36f08c3d6489f17b8'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-20\\\\c8b490408b2264c6448192f12e792a75'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-21\\\\43dd07df050993853e78b63d6d956fe8'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-22\\\\7597b91f9fef0a84f0259802912723ac'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-23\\\\477ff86feb1c2850f1a24ee962f6f6ec'\n",
|
|
"Error: [WinError 5] Toegang geweigerd: '..\\\\laravel_app\\\\storage\\\\app\\\\citrus_brazil_trial\\\\single_images\\\\2025-01-24\\\\bee206b01468e0cc104bf60fdfe33874'\n",
|
|
"Emptied folder: ..\\laravel_app\\storage\\app\\citrus_brazil_trial\\single_images\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# List of folder names\n",
|
|
"\n",
|
|
"folders_to_empty = [BASE_PATH / 'merged_virtual', BASE_PATH_SINGLE_IMAGES]\n",
|
|
" \n",
|
|
"# Function to empty folders\n",
|
|
"\n",
|
|
"# Function to empty folders\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",
|
|
" try:\n",
|
|
" for filename in os.listdir(folder):\n",
|
|
" file_path = os.path.join(folder, filename)\n",
|
|
" try:\n",
|
|
" if os.path.isfile(file_path):\n",
|
|
" os.unlink(file_path)\n",
|
|
" elif os.path.isdir(file_path):\n",
|
|
" shutil.rmtree(file_path)\n",
|
|
" except Exception as e:\n",
|
|
" print(f\"Error: {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"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 24,
|
|
"id": "0145b399-dfad-448a-9f0d-fa975fb01ad2",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"True"
|
|
]
|
|
},
|
|
"execution_count": 24,
|
|
"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
|
|
}
|