From c77a46bd749636f146d78df6a89a426ba2ec3c7b Mon Sep 17 00:00:00 2001 From: nbgitpuller Date: Wed, 29 Oct 2025 13:26:56 +0000 Subject: [PATCH 01/14] Automatic commit by nbgitpuller --- Jupyterhub/simple_disaster_template.ipynb | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Jupyterhub/simple_disaster_template.ipynb b/Jupyterhub/simple_disaster_template.ipynb index de47501..0d796c7 100644 --- a/Jupyterhub/simple_disaster_template.ipynb +++ b/Jupyterhub/simple_disaster_template.ipynb @@ -54,16 +54,18 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 1, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Event: 202408_TropicalStorm_Debby\n", - "Source: s3://nasa-disasters/geotiffs_to_convert/202408_TropicalStorm_Debby/landsat8\n", - "Destination: s3://nasa-disasters/drcs_activations_new/\n" + "ename": "NameError", + "evalue": "name 'EVENT_NAME' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 22\u001b[39m\n\u001b[32m 19\u001b[39m VERIFY = \u001b[38;5;28;01mTrue\u001b[39;00m \u001b[38;5;66;03m# Set to True to verify results after processing\u001b[39;00m\n\u001b[32m 20\u001b[39m SAVE_RESULTS = \u001b[38;5;28;01mTrue\u001b[39;00m \u001b[38;5;66;03m# Set to False to skip saving results CSV to /output directory\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m22\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mEvent: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[43mEVENT_NAME\u001b[49m\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n\u001b[32m 23\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mSource: s3://\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mBUCKET\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mSOURCE_PATH\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n\u001b[32m 24\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mDestination: s3://\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mBUCKET\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mDESTINATION_BASE\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m/\u001b[39m\u001b[33m\"\u001b[39m)\n", + "\u001b[31mNameError\u001b[39m: name 'EVENT_NAME' is not defined" ] } ], From 9594d52f5d17e6fb5cdd6284a15f5bc42141e36c Mon Sep 17 00:00:00 2001 From: nbgitpuller Date: Wed, 29 Oct 2025 13:41:04 +0000 Subject: [PATCH 02/14] Automatic commit by nbgitpuller --- Jupyterhub/simple_disaster_template.ipynb | 48 ++++++++--------------- 1 file changed, 17 insertions(+), 31 deletions(-) diff --git a/Jupyterhub/simple_disaster_template.ipynb b/Jupyterhub/simple_disaster_template.ipynb index be6aab7..bac8c4d 100644 --- a/Jupyterhub/simple_disaster_template.ipynb +++ b/Jupyterhub/simple_disaster_template.ipynb @@ -54,18 +54,16 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, "metadata": {}, "outputs": [ { - "ename": "NameError", - "evalue": "name 'EVENT_NAME' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 22\u001b[39m\n\u001b[32m 19\u001b[39m VERIFY = \u001b[38;5;28;01mTrue\u001b[39;00m \u001b[38;5;66;03m# Set to True to verify results after processing\u001b[39;00m\n\u001b[32m 20\u001b[39m SAVE_RESULTS = \u001b[38;5;28;01mTrue\u001b[39;00m \u001b[38;5;66;03m# Set to False to skip saving results CSV to /output directory\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m22\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mEvent: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[43mEVENT_NAME\u001b[49m\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n\u001b[32m 23\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mSource: s3://\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mBUCKET\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mSOURCE_PATH\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n\u001b[32m 24\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mDestination: s3://\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mBUCKET\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mDESTINATION_BASE\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m/\u001b[39m\u001b[33m\"\u001b[39m)\n", - "\u001b[31mNameError\u001b[39m: name 'EVENT_NAME' is not defined" + "name": "stdout", + "output_type": "stream", + "text": [ + "Event: drcs_activations\n", + "Source: s3://nasa-disasters/drcs_activations/202510_Flood_AK/aria\n", + "Destination: s3://nasa-disasters/drcs_activations_new/\n" ] } ], @@ -107,30 +105,18 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 7, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "🌐 Connecting to S3...\n", - "✅ Connected to S3\n", - "\n", - "📂 Files in s3://nasa-disasters/drcs_activations/202510_Flood_AK/aria:\n", - "============================================================\n", - "Found 6 .tif files:\n", - "\n", - " 1. OPERA_L3_DSWX-S1_V1_WTR_2025-10-08_mosaic.tif (0.01 GB)\n", - " 2. OPERA_L3_DSWX-S1_V1_WTR_2025-10-10_mosaic.tif (0.03 GB)\n", - " 3. OPERA_L3_DSWX-S1_V1_WTR_2025-10-12_mosaic.tif (0.03 GB)\n", - " 4. OPERA_L3_DSWX-S1_V1_WTR_2025-10-15_mosaic.tif (0.02 GB)\n", - " 5. OPERA_L3_DSWX-HLS_V1_WTR_2025-10-08_mosaic.tif (0.01 GB)\n", - " 6. OPERA_L3_DSWX-HLS_V1_WTR_2025-10-13_mosaic.tif (0.01 GB)\n", - "\n", - "============================================================\n", - "\n", - "💡 Use this information to create filename functions in Step 3\n" + "ename": "ModuleNotFoundError", + "evalue": "No module named 'core'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[7]\u001b[39m\u001b[32m, line 10\u001b[39m\n\u001b[32m 7\u001b[39m sys.path.insert(\u001b[32m0\u001b[39m, \u001b[38;5;28mstr\u001b[39m(Path(\u001b[33m'\u001b[39m\u001b[33mdisasters-aws-conversion\u001b[39m\u001b[33m'\u001b[39m).resolve()))\n\u001b[32m 9\u001b[39m \u001b[38;5;66;03m# Import S3 operations\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m10\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcore\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01ms3_operations\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[32m 11\u001b[39m initialize_s3_client,\n\u001b[32m 12\u001b[39m list_s3_files,\n\u001b[32m 13\u001b[39m get_file_size_from_s3\n\u001b[32m 14\u001b[39m )\n\u001b[32m 16\u001b[39m \u001b[38;5;66;03m# Initialize S3 client\u001b[39;00m\n\u001b[32m 17\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33m\"\u001b[39m\u001b[33m🌐 Connecting to S3...\u001b[39m\u001b[33m\"\u001b[39m)\n", + "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'core'" ] } ], @@ -141,7 +127,7 @@ "from pathlib import Path\n", "\n", "# Add parent directory to path for importing functions\n", - "sys.path.insert(0, str(Path('..').resolve()))\n", + "sys.path.insert(0, str(Path('disasters-aws-conversion').resolve()))\n", "\n", "# Import S3 operations\n", "from core.s3_operations import (\n", From 79ed6ddd895a134453f2a02fde6bf1159eb3736f Mon Sep 17 00:00:00 2001 From: nbgitpuller Date: Wed, 29 Oct 2025 13:52:29 +0000 Subject: [PATCH 03/14] Automatic commit by nbgitpuller --- Jupyterhub/simple_disaster_template.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Jupyterhub/simple_disaster_template.ipynb b/Jupyterhub/simple_disaster_template.ipynb index bac8c4d..2c352f5 100644 --- a/Jupyterhub/simple_disaster_template.ipynb +++ b/Jupyterhub/simple_disaster_template.ipynb @@ -54,7 +54,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -105,7 +105,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -115,7 +115,7 @@ "traceback": [ "\u001b[31m---------------------------------------------------------------------------\u001b[39m", "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[7]\u001b[39m\u001b[32m, line 10\u001b[39m\n\u001b[32m 7\u001b[39m sys.path.insert(\u001b[32m0\u001b[39m, \u001b[38;5;28mstr\u001b[39m(Path(\u001b[33m'\u001b[39m\u001b[33mdisasters-aws-conversion\u001b[39m\u001b[33m'\u001b[39m).resolve()))\n\u001b[32m 9\u001b[39m \u001b[38;5;66;03m# Import S3 operations\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m10\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcore\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01ms3_operations\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[32m 11\u001b[39m initialize_s3_client,\n\u001b[32m 12\u001b[39m list_s3_files,\n\u001b[32m 13\u001b[39m get_file_size_from_s3\n\u001b[32m 14\u001b[39m )\n\u001b[32m 16\u001b[39m \u001b[38;5;66;03m# Initialize S3 client\u001b[39;00m\n\u001b[32m 17\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33m\"\u001b[39m\u001b[33m🌐 Connecting to S3...\u001b[39m\u001b[33m\"\u001b[39m)\n", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[13]\u001b[39m\u001b[32m, line 10\u001b[39m\n\u001b[32m 7\u001b[39m sys.path.insert(\u001b[32m0\u001b[39m, \u001b[38;5;28mstr\u001b[39m(Path(\u001b[33m'\u001b[39m\u001b[33mdisasters-aws-conversion\u001b[39m\u001b[33m'\u001b[39m).resolve()))\n\u001b[32m 9\u001b[39m \u001b[38;5;66;03m# Import S3 operations\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m10\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcore\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01ms3_operations\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[32m 11\u001b[39m initialize_s3_client,\n\u001b[32m 12\u001b[39m list_s3_files,\n\u001b[32m 13\u001b[39m get_file_size_from_s3\n\u001b[32m 14\u001b[39m )\n\u001b[32m 16\u001b[39m \u001b[38;5;66;03m# Initialize S3 client\u001b[39;00m\n\u001b[32m 17\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33m\"\u001b[39m\u001b[33m🌐 Connecting to S3...\u001b[39m\u001b[33m\"\u001b[39m)\n", "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'core'" ] } From d457ce2ca191472eb5f1cce8ac1c4e23390e4b00 Mon Sep 17 00:00:00 2001 From: nbgitpuller Date: Wed, 29 Oct 2025 13:57:58 +0000 Subject: [PATCH 04/14] Automatic commit by nbgitpuller --- Jupyterhub/simple_disaster_template.ipynb | 69 ++++++++++++++++++----- 1 file changed, 55 insertions(+), 14 deletions(-) diff --git a/Jupyterhub/simple_disaster_template.ipynb b/Jupyterhub/simple_disaster_template.ipynb index 8cf5556..5531dc5 100644 --- a/Jupyterhub/simple_disaster_template.ipynb +++ b/Jupyterhub/simple_disaster_template.ipynb @@ -54,9 +54,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "📥 Cloning disasters-aws-conversion repository...\n", + "✅ Successfully cloned disasters-aws-conversion\n" + ] + } + ], "source": [ "import os\n", "import subprocess\n", @@ -69,7 +78,7 @@ " print(f\"📥 Cloning {repo_name} repository...\")\n", " try:\n", " result = subprocess.run(\n", - " [\"git\", \"clone\", repo_url, f\"../{repo_name}\"],\n", + " [\"git\", \"clone\", repo_url, f\"{repo_name}\"],\n", " capture_output=True,\n", " text=True,\n", " check=True\n", @@ -92,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -143,18 +152,30 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 20, "metadata": {}, "outputs": [ { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'core'", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[13]\u001b[39m\u001b[32m, line 10\u001b[39m\n\u001b[32m 7\u001b[39m sys.path.insert(\u001b[32m0\u001b[39m, \u001b[38;5;28mstr\u001b[39m(Path(\u001b[33m'\u001b[39m\u001b[33mdisasters-aws-conversion\u001b[39m\u001b[33m'\u001b[39m).resolve()))\n\u001b[32m 9\u001b[39m \u001b[38;5;66;03m# Import S3 operations\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m10\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcore\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01ms3_operations\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[32m 11\u001b[39m initialize_s3_client,\n\u001b[32m 12\u001b[39m list_s3_files,\n\u001b[32m 13\u001b[39m get_file_size_from_s3\n\u001b[32m 14\u001b[39m )\n\u001b[32m 16\u001b[39m \u001b[38;5;66;03m# Initialize S3 client\u001b[39;00m\n\u001b[32m 17\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33m\"\u001b[39m\u001b[33m🌐 Connecting to S3...\u001b[39m\u001b[33m\"\u001b[39m)\n", - "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'core'" + "name": "stdout", + "output_type": "stream", + "text": [ + "🌐 Connecting to S3...\n", + "✅ Connected to S3\n", + "\n", + "📂 Files in s3://nasa-disasters/drcs_activations/202510_Flood_AK/aria:\n", + "============================================================\n", + "Found 6 .tif files:\n", + "\n", + " 1. OPERA_L3_DSWX-S1_V1_WTR_2025-10-08_mosaic.tif (0.01 GB)\n", + " 2. OPERA_L3_DSWX-S1_V1_WTR_2025-10-10_mosaic.tif (0.03 GB)\n", + " 3. OPERA_L3_DSWX-S1_V1_WTR_2025-10-12_mosaic.tif (0.03 GB)\n", + " 4. OPERA_L3_DSWX-S1_V1_WTR_2025-10-15_mosaic.tif (0.02 GB)\n", + " 5. OPERA_L3_DSWX-HLS_V1_WTR_2025-10-08_mosaic.tif (0.01 GB)\n", + " 6. OPERA_L3_DSWX-HLS_V1_WTR_2025-10-13_mosaic.tif (0.01 GB)\n", + "\n", + "============================================================\n", + "\n", + "💡 Use this information to create filename functions in Step 3\n" ] } ], @@ -165,7 +186,7 @@ "from pathlib import Path\n", "\n", "# Add parent directory to path for importing functions\n", - "sys.path.insert(0, str(Path('disasters-aws-conversion').resolve()))\n", + "sys.path.insert(0, str(Path('../disasters-aws-conversion').resolve()))\n", "\n", "# Import S3 operations\n", "from core.s3_operations import (\n", @@ -210,6 +231,26 @@ " files = []" ] }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/home/jovyan/disasters-docs/Jupyterhub'" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "os.getcwd()\n" + ] + }, { "cell_type": "markdown", "metadata": {}, From 8a9f4ebd177c7623c646595d3ad41aceb5f78af5 Mon Sep 17 00:00:00 2001 From: nbgitpuller Date: Wed, 29 Oct 2025 15:34:38 +0000 Subject: [PATCH 05/14] Automatic commit by nbgitpuller --- Jupyterhub/simple_disaster_template.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jupyterhub/simple_disaster_template.ipynb b/Jupyterhub/simple_disaster_template.ipynb index 5531dc5..de10447 100644 --- a/Jupyterhub/simple_disaster_template.ipynb +++ b/Jupyterhub/simple_disaster_template.ipynb @@ -54,7 +54,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "metadata": {}, "outputs": [ { From 0851ef31b98fd82804e48f23c3021cac3bc2456c Mon Sep 17 00:00:00 2001 From: nbgitpuller Date: Fri, 14 Nov 2025 17:36:00 +0000 Subject: [PATCH 06/14] Automatic commit by nbgitpuller --- .../New_Mexico_Fire_2025.ipynb | 188 +++++++++--------- 1 file changed, 94 insertions(+), 94 deletions(-) diff --git a/user_data_notebooks/New_Mexico_Fire_2025.ipynb b/user_data_notebooks/New_Mexico_Fire_2025.ipynb index 6c7239b..6d46a12 100644 --- a/user_data_notebooks/New_Mexico_Fire_2025.ipynb +++ b/user_data_notebooks/New_Mexico_Fire_2025.ipynb @@ -123,7 +123,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 1, "id": "728bcdf2-f81c-4122-8808-cd46782153fa", "metadata": {}, "outputs": [], @@ -165,7 +165,7 @@ }, { "cell_type": "code", - "execution_count": 131, + "execution_count": 2, "id": "df4cbcbf-ca63-42e4-8903-845cc2396f75", "metadata": {}, "outputs": [], @@ -180,7 +180,7 @@ }, { "cell_type": "code", - "execution_count": 132, + "execution_count": 3, "id": "91886850-d2ea-43c2-8516-8c8302b21614", "metadata": {}, "outputs": [ @@ -2446,7 +2446,7 @@ "" ] }, - "execution_count": 132, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -2469,7 +2469,7 @@ }, { "cell_type": "code", - "execution_count": 133, + "execution_count": 4, "id": "06444ab8-537d-4bd5-a0d6-711b81f65a87", "metadata": {}, "outputs": [ @@ -2494,7 +2494,7 @@ }, { "cell_type": "code", - "execution_count": 134, + "execution_count": 5, "id": "9e242647-3700-4aa6-ab24-ec08aedee89a", "metadata": {}, "outputs": [ @@ -5939,7 +5939,7 @@ "" ] }, - "execution_count": 134, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -5953,7 +5953,7 @@ }, { "cell_type": "code", - "execution_count": 135, + "execution_count": 6, "id": "8b9743e9-1926-4dc0-9bed-4d25a60eed3c", "metadata": {}, "outputs": [], @@ -5973,7 +5973,7 @@ }, { "cell_type": "code", - "execution_count": 136, + "execution_count": 7, "id": "28dae225-10a4-4fb1-a07e-bba3236ec87c", "metadata": {}, "outputs": [], @@ -5999,7 +5999,7 @@ }, { "cell_type": "code", - "execution_count": 137, + "execution_count": 8, "id": "39765c05-2b88-40ad-b481-35603564ba05", "metadata": {}, "outputs": [], @@ -6010,7 +6010,7 @@ }, { "cell_type": "code", - "execution_count": 138, + "execution_count": 9, "id": "0618f6e2-793c-4574-8dfe-55260114f707", "metadata": {}, "outputs": [ @@ -6088,7 +6088,7 @@ " 'valid_percent': 87.95561863327674}}]" ] }, - "execution_count": 138, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -6107,7 +6107,7 @@ }, { "cell_type": "code", - "execution_count": 139, + "execution_count": 10, "id": "a7a4b0ef-41ec-46fd-abd5-7addf88d606f", "metadata": {}, "outputs": [ @@ -9552,7 +9552,7 @@ "" ] }, - "execution_count": 139, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -9563,7 +9563,7 @@ }, { "cell_type": "code", - "execution_count": 140, + "execution_count": 11, "id": "04961b73-c15e-45d2-af88-71b5a3c26ae4", "metadata": {}, "outputs": [ @@ -9583,7 +9583,7 @@ " 'center': [-107.92606117542319, 32.92221525662006, 0]}" ] }, - "execution_count": 140, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -9601,7 +9601,7 @@ }, { "cell_type": "code", - "execution_count": 141, + "execution_count": 12, "id": "75d7d58c-be57-4960-85ca-d69e2db27800", "metadata": {}, "outputs": [ @@ -9621,7 +9621,7 @@ " 'center': [-107.9261023710369, 32.922251929595305, 0]}" ] }, - "execution_count": 141, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -9663,7 +9663,7 @@ }, { "cell_type": "code", - "execution_count": 116, + "execution_count": 13, "id": "89cb22fc-03e3-46a7-9961-03ce96574e5a", "metadata": {}, "outputs": [ @@ -9689,7 +9689,7 @@ " <meta name="viewport" content="width=device-width,\n", " initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />\n", " <style>\n", - " #map_2ff1c7734f0037c8c97daeace6576b6c {\n", + " #map_a9443ee0114295fd854372f4ac10e294 {\n", " position: absolute;\n", " width: 50.0%;\n", " height: 100.0%;\n", @@ -9726,7 +9726,7 @@ " <meta name="viewport" content="width=device-width,\n", " initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />\n", " <style>\n", - " #map_d1897f21164892392e615d6ab2c00de0 {\n", + " #map_4369f9cb03221c96a10bd803b52aa5db {\n", " position: absolute;\n", " width: 50.0%;\n", " height: 100.0%;\n", @@ -9777,17 +9777,17 @@ "Sentinel-2 Imagery Pre Fire (2025-06-09) and Post Fire (2025-06-29)\n", "</div>\n", " \n", - " <div class="folium-map" id="map_2ff1c7734f0037c8c97daeace6576b6c" ></div>\n", + " <div class="folium-map" id="map_a9443ee0114295fd854372f4ac10e294" ></div>\n", " \n", " \n", - " <div class="folium-map" id="map_d1897f21164892392e615d6ab2c00de0" ></div>\n", + " <div class="folium-map" id="map_4369f9cb03221c96a10bd803b52aa5db" ></div>\n", " \n", "</body>\n", "<script>\n", " \n", " \n", - " var map_2ff1c7734f0037c8c97daeace6576b6c = L.map(\n", - " "map_2ff1c7734f0037c8c97daeace6576b6c",\n", + " var map_a9443ee0114295fd854372f4ac10e294 = L.map(\n", + " "map_a9443ee0114295fd854372f4ac10e294",\n", " {\n", " center: [32.97, -108.15],\n", " crs: L.CRS.EPSG3857,\n", @@ -9804,7 +9804,7 @@ "\n", " \n", " \n", - " var tile_layer_ae98a92583c3edce7b80ac507076824a = L.tileLayer(\n", + " var tile_layer_3c26a1bbf58e4284dfbf31ef60afa15b = L.tileLayer(\n", " "https://tile.openstreetmap.org/{z}/{x}/{y}.png",\n", " {\n", " "minZoom": 0,\n", @@ -9821,10 +9821,10 @@ " );\n", " \n", " \n", - " tile_layer_ae98a92583c3edce7b80ac507076824a.addTo(map_2ff1c7734f0037c8c97daeace6576b6c);\n", + " tile_layer_3c26a1bbf58e4284dfbf31ef60afa15b.addTo(map_a9443ee0114295fd854372f4ac10e294);\n", " \n", " \n", - " var tile_layer_436f9fc67d2a03429ff3e194f8b96796 = L.tileLayer(\n", + " var tile_layer_db6a6694dca435db807ce6ca82c35eea = L.tileLayer(\n", " "https://dev.openveda.cloud/api/raster/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-09/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=colorIR",\n", " {\n", " "minZoom": 0,\n", @@ -9841,11 +9841,11 @@ " );\n", " \n", " \n", - " tile_layer_436f9fc67d2a03429ff3e194f8b96796.addTo(map_2ff1c7734f0037c8c97daeace6576b6c);\n", + " tile_layer_db6a6694dca435db807ce6ca82c35eea.addTo(map_a9443ee0114295fd854372f4ac10e294);\n", " \n", " \n", - " var map_d1897f21164892392e615d6ab2c00de0 = L.map(\n", - " "map_d1897f21164892392e615d6ab2c00de0",\n", + " var map_4369f9cb03221c96a10bd803b52aa5db = L.map(\n", + " "map_4369f9cb03221c96a10bd803b52aa5db",\n", " {\n", " center: [32.97, -108.15],\n", " crs: L.CRS.EPSG3857,\n", @@ -9862,7 +9862,7 @@ "\n", " \n", " \n", - " var tile_layer_261a4269badb3187d09ffd6733f230fc = L.tileLayer(\n", + " var tile_layer_f5a7e27313dc52368c24cfe945c88e26 = L.tileLayer(\n", " "https://tile.openstreetmap.org/{z}/{x}/{y}.png",\n", " {\n", " "minZoom": 0,\n", @@ -9879,10 +9879,10 @@ " );\n", " \n", " \n", - " tile_layer_261a4269badb3187d09ffd6733f230fc.addTo(map_d1897f21164892392e615d6ab2c00de0);\n", + " tile_layer_f5a7e27313dc52368c24cfe945c88e26.addTo(map_4369f9cb03221c96a10bd803b52aa5db);\n", " \n", " \n", - " var tile_layer_557cef07d7e90386151322fefea8ed5f = L.tileLayer(\n", + " var tile_layer_d4de486b8ff640396729fdeb6f47a395 = L.tileLayer(\n", " "https://dev.openveda.cloud/api/raster/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-29/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=colorIR",\n", " {\n", " "minZoom": 0,\n", @@ -9899,20 +9899,20 @@ " );\n", " \n", " \n", - " tile_layer_557cef07d7e90386151322fefea8ed5f.addTo(map_d1897f21164892392e615d6ab2c00de0);\n", + " tile_layer_d4de486b8ff640396729fdeb6f47a395.addTo(map_4369f9cb03221c96a10bd803b52aa5db);\n", " \n", " \n", - " map_2ff1c7734f0037c8c97daeace6576b6c.sync(map_d1897f21164892392e615d6ab2c00de0);\n", - " map_d1897f21164892392e615d6ab2c00de0.sync(map_2ff1c7734f0037c8c97daeace6576b6c);\n", + " map_a9443ee0114295fd854372f4ac10e294.sync(map_4369f9cb03221c96a10bd803b52aa5db);\n", + " map_4369f9cb03221c96a10bd803b52aa5db.sync(map_a9443ee0114295fd854372f4ac10e294);\n", " \n", "</script>\n", "</html>\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen>" ], "text/plain": [ - "" + "" ] }, - "execution_count": 116, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -9991,7 +9991,7 @@ }, { "cell_type": "code", - "execution_count": 143, + "execution_count": 14, "id": "a092616d-b2ed-447a-8e0b-d2e284062f4b", "metadata": {}, "outputs": [ @@ -11269,7 +11269,7 @@ "" ] }, - "execution_count": 143, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -11285,7 +11285,7 @@ }, { "cell_type": "code", - "execution_count": 144, + "execution_count": 15, "id": "0ddc9fa1-f259-4132-ba8b-b558245ab245", "metadata": {}, "outputs": [ @@ -11310,7 +11310,7 @@ }, { "cell_type": "code", - "execution_count": 145, + "execution_count": 16, "id": "6427feb8-d688-424f-98de-dc153f490d0d", "metadata": {}, "outputs": [ @@ -12765,7 +12765,7 @@ "" ] }, - "execution_count": 145, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -12779,7 +12779,7 @@ }, { "cell_type": "code", - "execution_count": 146, + "execution_count": 17, "id": "30c1bc97-865a-4b37-9399-7af090df6296", "metadata": {}, "outputs": [], @@ -12791,7 +12791,7 @@ }, { "cell_type": "code", - "execution_count": 147, + "execution_count": 18, "id": "63823181-3c00-4961-bd7c-5b426f83f163", "metadata": {}, "outputs": [], @@ -12817,7 +12817,7 @@ }, { "cell_type": "code", - "execution_count": 148, + "execution_count": 19, "id": "251dd290-78e1-4835-9df3-39dad69be341", "metadata": {}, "outputs": [], @@ -12836,7 +12836,7 @@ }, { "cell_type": "code", - "execution_count": 149, + "execution_count": 20, "id": "bd057b3b-177c-4157-a332-6adf6c54627e", "metadata": {}, "outputs": [ @@ -12859,7 +12859,7 @@ " 'valid_percent': 99.24179101642272}}]" ] }, - "execution_count": 149, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -12878,7 +12878,7 @@ }, { "cell_type": "code", - "execution_count": 163, + "execution_count": 21, "id": "b768dac6-f095-430d-99c5-583781439c4a", "metadata": {}, "outputs": [ @@ -12902,7 +12902,7 @@ }, { "cell_type": "code", - "execution_count": 164, + "execution_count": 22, "id": "8856722f-e9e5-43f0-a8ab-d0263994ccf5", "metadata": {}, "outputs": [], @@ -12915,7 +12915,7 @@ }, { "cell_type": "code", - "execution_count": 165, + "execution_count": 23, "id": "8ec78018-ddd5-4b47-b574-0c3cbd7ff526", "metadata": {}, "outputs": [ @@ -12935,7 +12935,7 @@ " 'center': [-108.12659906928377, 32.95762424115675, 0]}" ] }, - "execution_count": 165, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -12965,7 +12965,7 @@ }, { "cell_type": "code", - "execution_count": 166, + "execution_count": 24, "id": "548d82a3-7a13-4031-a530-9e3e0b9c56d7", "metadata": {}, "outputs": [ @@ -12973,7 +12973,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_84/1287173695.py:37: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.\n", + "/tmp/ipykernel_218/1287173695.py:37: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.\n", " mpl_colormap = mpl_cm.get_cmap(color_map.lower())\n" ] }, @@ -12999,7 +12999,7 @@ " <meta name="viewport" content="width=device-width,\n", " initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />\n", " <style>\n", - " #map_1f67354b1cdd06f0931c34bbd59be464 {\n", + " #map_d3085cbbeab647bb172403cf3ac4258d {\n", " position: relative;\n", " width: 100.0%;\n", " height: 100.0%;\n", @@ -13059,14 +13059,14 @@ "<svg height="40" width="450"><line x1="0" y1="15" x2="0" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="1" y1="15" x2="1" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="2" y1="15" x2="2" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="3" y1="15" x2="3" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="4" y1="15" x2="4" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="5" y1="15" x2="5" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="6" y1="15" x2="6" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="7" y1="15" x2="7" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="8" y1="15" x2="8" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="9" y1="15" x2="9" y2="27" style="stroke:#02010cff;stroke-width:2;" /><line x1="10" y1="15" x2="10" y2="27" style="stroke:#02010cff;stroke-width:2;" /><line x1="11" y1="15" x2="11" y2="27" style="stroke:#02010cff;stroke-width:2;" /><line x1="12" y1="15" x2="12" y2="27" style="stroke:#02010cff;stroke-width:2;" /><line x1="13" y1="15" x2="13" y2="27" style="stroke:#02010cff;stroke-width:2;" /><line x1="14" y1="15" x2="14" y2="27" style="stroke:#02010cff;stroke-width:2;" /><line x1="15" y1="15" x2="15" y2="27" style="stroke:#02010cff;stroke-width:2;" /><line x1="16" y1="15" x2="16" y2="27" style="stroke:#02010cff;stroke-width:2;" /><line x1="17" y1="15" x2="17" y2="27" style="stroke:#02010cff;stroke-width:2;" /><line x1="18" y1="15" x2="18" y2="27" style="stroke:#050417ff;stroke-width:2;" /><line x1="19" y1="15" x2="19" y2="27" style="stroke:#050417ff;stroke-width:2;" /><line x1="20" y1="15" x2="20" y2="27" style="stroke:#050417ff;stroke-width:2;" /><line x1="21" y1="15" x2="21" y2="27" style="stroke:#050417ff;stroke-width:2;" /><line x1="22" y1="15" x2="22" y2="27" style="stroke:#050417ff;stroke-width:2;" /><line x1="23" y1="15" x2="23" y2="27" style="stroke:#050417ff;stroke-width:2;" /><line x1="24" y1="15" x2="24" y2="27" style="stroke:#050417ff;stroke-width:2;" /><line x1="25" y1="15" x2="25" y2="27" style="stroke:#050417ff;stroke-width:2;" /><line x1="26" y1="15" x2="26" y2="27" style="stroke:#050417ff;stroke-width:2;" /><line x1="27" y1="15" x2="27" y2="27" style="stroke:#0a0623ff;stroke-width:2;" /><line x1="28" y1="15" x2="28" y2="27" style="stroke:#0a0623ff;stroke-width:2;" /><line x1="29" y1="15" x2="29" y2="27" style="stroke:#0a0623ff;stroke-width:2;" /><line x1="30" y1="15" x2="30" y2="27" style="stroke:#0a0623ff;stroke-width:2;" /><line x1="31" y1="15" x2="31" y2="27" style="stroke:#0a0623ff;stroke-width:2;" /><line x1="32" y1="15" x2="32" y2="27" style="stroke:#0a0623ff;stroke-width:2;" /><line x1="33" y1="15" x2="33" y2="27" style="stroke:#0a0623ff;stroke-width:2;" /><line x1="34" y1="15" x2="34" y2="27" style="stroke:#0a0623ff;stroke-width:2;" /><line x1="35" y1="15" x2="35" y2="27" style="stroke:#0a0623ff;stroke-width:2;" /><line x1="36" y1="15" x2="36" y2="27" style="stroke:#10092fff;stroke-width:2;" /><line x1="37" y1="15" x2="37" y2="27" style="stroke:#10092fff;stroke-width:2;" /><line x1="38" y1="15" x2="38" y2="27" style="stroke:#10092fff;stroke-width:2;" /><line x1="39" y1="15" x2="39" y2="27" style="stroke:#10092fff;stroke-width:2;" /><line x1="40" y1="15" x2="40" y2="27" style="stroke:#10092fff;stroke-width:2;" /><line x1="41" y1="15" x2="41" y2="27" style="stroke:#10092fff;stroke-width:2;" /><line x1="42" y1="15" x2="42" y2="27" style="stroke:#10092fff;stroke-width:2;" /><line x1="43" y1="15" x2="43" y2="27" style="stroke:#10092fff;stroke-width:2;" /><line x1="44" y1="15" x2="44" y2="27" style="stroke:#10092fff;stroke-width:2;" /><line x1="45" y1="15" x2="45" y2="27" style="stroke:#170b3cff;stroke-width:2;" /><line x1="46" y1="15" x2="46" y2="27" style="stroke:#170b3cff;stroke-width:2;" /><line x1="47" y1="15" x2="47" y2="27" style="stroke:#170b3cff;stroke-width:2;" /><line x1="48" y1="15" x2="48" y2="27" style="stroke:#170b3cff;stroke-width:2;" /><line x1="49" y1="15" x2="49" y2="27" style="stroke:#170b3cff;stroke-width:2;" /><line x1="50" y1="15" x2="50" y2="27" style="stroke:#170b3cff;stroke-width:2;" /><line x1="51" y1="15" x2="51" y2="27" style="stroke:#170b3cff;stroke-width:2;" /><line x1="52" y1="15" x2="52" y2="27" style="stroke:#170b3cff;stroke-width:2;" /><line x1="53" y1="15" x2="53" y2="27" style="stroke:#170b3cff;stroke-width:2;" /><line x1="54" y1="15" x2="54" y2="27" style="stroke:#1f0c48ff;stroke-width:2;" /><line x1="55" y1="15" x2="55" y2="27" style="stroke:#1f0c48ff;stroke-width:2;" /><line x1="56" y1="15" x2="56" y2="27" style="stroke:#1f0c48ff;stroke-width:2;" /><line x1="57" y1="15" x2="57" y2="27" style="stroke:#1f0c48ff;stroke-width:2;" /><line x1="58" y1="15" x2="58" y2="27" style="stroke:#1f0c48ff;stroke-width:2;" /><line x1="59" y1="15" x2="59" y2="27" style="stroke:#1f0c48ff;stroke-width:2;" /><line x1="60" y1="15" x2="60" y2="27" style="stroke:#1f0c48ff;stroke-width:2;" /><line x1="61" y1="15" x2="61" y2="27" style="stroke:#1f0c48ff;stroke-width:2;" /><line x1="62" y1="15" x2="62" y2="27" style="stroke:#1f0c48ff;stroke-width:2;" /><line x1="63" y1="15" x2="63" y2="27" style="stroke:#280b54ff;stroke-width:2;" /><line x1="64" y1="15" x2="64" y2="27" style="stroke:#280b54ff;stroke-width:2;" /><line x1="65" y1="15" x2="65" y2="27" style="stroke:#280b54ff;stroke-width:2;" /><line x1="66" y1="15" x2="66" y2="27" style="stroke:#280b54ff;stroke-width:2;" /><line x1="67" y1="15" x2="67" y2="27" style="stroke:#280b54ff;stroke-width:2;" /><line x1="68" y1="15" x2="68" y2="27" style="stroke:#280b54ff;stroke-width:2;" /><line x1="69" y1="15" x2="69" y2="27" style="stroke:#280b54ff;stroke-width:2;" /><line x1="70" y1="15" x2="70" y2="27" style="stroke:#280b54ff;stroke-width:2;" /><line x1="71" y1="15" x2="71" y2="27" style="stroke:#280b54ff;stroke-width:2;" /><line x1="72" y1="15" x2="72" y2="27" style="stroke:#31095dff;stroke-width:2;" /><line x1="73" y1="15" x2="73" y2="27" style="stroke:#31095dff;stroke-width:2;" /><line x1="74" y1="15" x2="74" y2="27" style="stroke:#31095dff;stroke-width:2;" /><line x1="75" y1="15" x2="75" y2="27" style="stroke:#31095dff;stroke-width:2;" /><line x1="76" y1="15" x2="76" y2="27" style="stroke:#31095dff;stroke-width:2;" /><line x1="77" y1="15" x2="77" y2="27" style="stroke:#31095dff;stroke-width:2;" /><line x1="78" y1="15" x2="78" y2="27" style="stroke:#31095dff;stroke-width:2;" /><line x1="79" y1="15" x2="79" y2="27" style="stroke:#31095dff;stroke-width:2;" /><line x1="80" y1="15" x2="80" y2="27" style="stroke:#31095dff;stroke-width:2;" /><line x1="81" y1="15" x2="81" y2="27" style="stroke:#3a0964ff;stroke-width:2;" /><line x1="82" y1="15" x2="82" y2="27" style="stroke:#3a0964ff;stroke-width:2;" /><line x1="83" y1="15" x2="83" y2="27" style="stroke:#3a0964ff;stroke-width:2;" /><line x1="84" y1="15" x2="84" y2="27" style="stroke:#3a0964ff;stroke-width:2;" /><line x1="85" y1="15" x2="85" y2="27" style="stroke:#3a0964ff;stroke-width:2;" /><line x1="86" y1="15" x2="86" y2="27" style="stroke:#3a0964ff;stroke-width:2;" /><line x1="87" y1="15" x2="87" y2="27" style="stroke:#3a0964ff;stroke-width:2;" /><line x1="88" y1="15" x2="88" y2="27" style="stroke:#3a0964ff;stroke-width:2;" /><line x1="89" y1="15" x2="89" y2="27" style="stroke:#3a0964ff;stroke-width:2;" /><line x1="90" y1="15" x2="90" y2="27" style="stroke:#430a68ff;stroke-width:2;" /><line x1="91" y1="15" x2="91" y2="27" style="stroke:#430a68ff;stroke-width:2;" /><line x1="92" y1="15" x2="92" y2="27" style="stroke:#430a68ff;stroke-width:2;" /><line x1="93" y1="15" x2="93" y2="27" style="stroke:#430a68ff;stroke-width:2;" /><line x1="94" y1="15" x2="94" y2="27" style="stroke:#430a68ff;stroke-width:2;" /><line x1="95" y1="15" x2="95" y2="27" style="stroke:#430a68ff;stroke-width:2;" /><line x1="96" y1="15" x2="96" y2="27" style="stroke:#430a68ff;stroke-width:2;" /><line x1="97" y1="15" x2="97" y2="27" style="stroke:#430a68ff;stroke-width:2;" /><line x1="98" y1="15" x2="98" y2="27" style="stroke:#430a68ff;stroke-width:2;" /><line x1="99" y1="15" x2="99" y2="27" style="stroke:#4c0c6bff;stroke-width:2;" /><line x1="100" y1="15" x2="100" y2="27" style="stroke:#4c0c6bff;stroke-width:2;" /><line x1="101" y1="15" x2="101" y2="27" style="stroke:#4c0c6bff;stroke-width:2;" /><line x1="102" y1="15" x2="102" y2="27" style="stroke:#4c0c6bff;stroke-width:2;" /><line x1="103" y1="15" x2="103" y2="27" style="stroke:#4c0c6bff;stroke-width:2;" /><line x1="104" y1="15" x2="104" y2="27" style="stroke:#4c0c6bff;stroke-width:2;" /><line x1="105" y1="15" x2="105" y2="27" style="stroke:#4c0c6bff;stroke-width:2;" /><line x1="106" y1="15" x2="106" y2="27" style="stroke:#4c0c6bff;stroke-width:2;" /><line x1="107" y1="15" x2="107" y2="27" style="stroke:#4c0c6bff;stroke-width:2;" /><line x1="108" y1="15" x2="108" y2="27" style="stroke:#540f6dff;stroke-width:2;" /><line x1="109" y1="15" x2="109" y2="27" style="stroke:#540f6dff;stroke-width:2;" /><line x1="110" y1="15" x2="110" y2="27" style="stroke:#540f6dff;stroke-width:2;" /><line x1="111" y1="15" x2="111" y2="27" style="stroke:#540f6dff;stroke-width:2;" /><line x1="112" y1="15" x2="112" y2="27" style="stroke:#540f6dff;stroke-width:2;" /><line x1="113" y1="15" x2="113" y2="27" style="stroke:#540f6dff;stroke-width:2;" /><line x1="114" y1="15" x2="114" y2="27" style="stroke:#540f6dff;stroke-width:2;" /><line x1="115" y1="15" x2="115" y2="27" style="stroke:#540f6dff;stroke-width:2;" /><line x1="116" y1="15" x2="116" y2="27" style="stroke:#540f6dff;stroke-width:2;" /><line x1="117" y1="15" x2="117" y2="27" style="stroke:#5d126eff;stroke-width:2;" /><line x1="118" y1="15" x2="118" y2="27" style="stroke:#5d126eff;stroke-width:2;" /><line x1="119" y1="15" x2="119" y2="27" style="stroke:#5d126eff;stroke-width:2;" /><line x1="120" y1="15" x2="120" y2="27" style="stroke:#5d126eff;stroke-width:2;" /><line x1="121" y1="15" x2="121" y2="27" style="stroke:#5d126eff;stroke-width:2;" /><line x1="122" y1="15" x2="122" y2="27" style="stroke:#5d126eff;stroke-width:2;" /><line x1="123" y1="15" x2="123" y2="27" style="stroke:#5d126eff;stroke-width:2;" /><line x1="124" y1="15" x2="124" y2="27" style="stroke:#5d126eff;stroke-width:2;" /><line x1="125" y1="15" x2="125" y2="27" style="stroke:#5d126eff;stroke-width:2;" /><line x1="126" y1="15" x2="126" y2="27" style="stroke:#65156eff;stroke-width:2;" /><line x1="127" y1="15" x2="127" y2="27" style="stroke:#65156eff;stroke-width:2;" /><line x1="128" y1="15" x2="128" y2="27" style="stroke:#65156eff;stroke-width:2;" /><line x1="129" y1="15" x2="129" y2="27" style="stroke:#65156eff;stroke-width:2;" /><line x1="130" y1="15" x2="130" y2="27" style="stroke:#65156eff;stroke-width:2;" /><line x1="131" y1="15" x2="131" y2="27" style="stroke:#65156eff;stroke-width:2;" /><line x1="132" y1="15" x2="132" y2="27" style="stroke:#65156eff;stroke-width:2;" /><line x1="133" y1="15" x2="133" y2="27" style="stroke:#65156eff;stroke-width:2;" /><line x1="134" y1="15" x2="134" y2="27" style="stroke:#65156eff;stroke-width:2;" /><line x1="135" y1="15" x2="135" y2="27" style="stroke:#6d186eff;stroke-width:2;" /><line x1="136" y1="15" x2="136" y2="27" style="stroke:#6d186eff;stroke-width:2;" /><line x1="137" y1="15" x2="137" y2="27" style="stroke:#6d186eff;stroke-width:2;" /><line x1="138" y1="15" x2="138" y2="27" style="stroke:#6d186eff;stroke-width:2;" /><line x1="139" y1="15" x2="139" y2="27" style="stroke:#6d186eff;stroke-width:2;" /><line x1="140" y1="15" x2="140" y2="27" style="stroke:#6d186eff;stroke-width:2;" /><line x1="141" y1="15" x2="141" y2="27" style="stroke:#6d186eff;stroke-width:2;" /><line x1="142" y1="15" x2="142" y2="27" style="stroke:#6d186eff;stroke-width:2;" /><line x1="143" y1="15" x2="143" y2="27" style="stroke:#6d186eff;stroke-width:2;" /><line x1="144" y1="15" x2="144" y2="27" style="stroke:#761b6dff;stroke-width:2;" /><line x1="145" y1="15" x2="145" y2="27" style="stroke:#761b6dff;stroke-width:2;" /><line x1="146" y1="15" x2="146" y2="27" style="stroke:#761b6dff;stroke-width:2;" /><line x1="147" y1="15" x2="147" y2="27" style="stroke:#761b6dff;stroke-width:2;" /><line x1="148" y1="15" x2="148" y2="27" style="stroke:#761b6dff;stroke-width:2;" /><line x1="149" y1="15" x2="149" y2="27" style="stroke:#761b6dff;stroke-width:2;" /><line x1="150" y1="15" x2="150" y2="27" style="stroke:#761b6dff;stroke-width:2;" /><line x1="151" y1="15" x2="151" y2="27" style="stroke:#761b6dff;stroke-width:2;" /><line x1="152" y1="15" x2="152" y2="27" style="stroke:#761b6dff;stroke-width:2;" /><line x1="153" y1="15" x2="153" y2="27" style="stroke:#7e1e6cff;stroke-width:2;" /><line x1="154" y1="15" x2="154" y2="27" style="stroke:#7e1e6cff;stroke-width:2;" /><line x1="155" y1="15" x2="155" y2="27" style="stroke:#7e1e6cff;stroke-width:2;" /><line x1="156" y1="15" x2="156" y2="27" style="stroke:#7e1e6cff;stroke-width:2;" /><line x1="157" y1="15" x2="157" y2="27" style="stroke:#7e1e6cff;stroke-width:2;" /><line x1="158" y1="15" x2="158" y2="27" style="stroke:#7e1e6cff;stroke-width:2;" /><line x1="159" y1="15" x2="159" y2="27" style="stroke:#7e1e6cff;stroke-width:2;" /><line x1="160" y1="15" x2="160" y2="27" style="stroke:#7e1e6cff;stroke-width:2;" /><line x1="161" y1="15" x2="161" y2="27" style="stroke:#7e1e6cff;stroke-width:2;" /><line x1="162" y1="15" x2="162" y2="27" style="stroke:#86216bff;stroke-width:2;" /><line x1="163" y1="15" x2="163" y2="27" style="stroke:#86216bff;stroke-width:2;" /><line x1="164" y1="15" x2="164" y2="27" style="stroke:#86216bff;stroke-width:2;" /><line x1="165" y1="15" x2="165" y2="27" style="stroke:#86216bff;stroke-width:2;" /><line x1="166" y1="15" x2="166" y2="27" style="stroke:#86216bff;stroke-width:2;" /><line x1="167" y1="15" x2="167" y2="27" style="stroke:#86216bff;stroke-width:2;" /><line x1="168" y1="15" x2="168" y2="27" style="stroke:#86216bff;stroke-width:2;" /><line x1="169" y1="15" x2="169" y2="27" style="stroke:#86216bff;stroke-width:2;" /><line x1="170" y1="15" x2="170" y2="27" style="stroke:#86216bff;stroke-width:2;" /><line x1="171" y1="15" x2="171" y2="27" style="stroke:#8f2469ff;stroke-width:2;" /><line x1="172" y1="15" x2="172" y2="27" style="stroke:#8f2469ff;stroke-width:2;" /><line x1="173" y1="15" x2="173" y2="27" style="stroke:#8f2469ff;stroke-width:2;" /><line x1="174" y1="15" x2="174" y2="27" style="stroke:#8f2469ff;stroke-width:2;" /><line x1="175" y1="15" x2="175" y2="27" style="stroke:#8f2469ff;stroke-width:2;" /><line x1="176" y1="15" x2="176" y2="27" style="stroke:#8f2469ff;stroke-width:2;" /><line x1="177" y1="15" x2="177" y2="27" style="stroke:#8f2469ff;stroke-width:2;" /><line x1="178" y1="15" x2="178" y2="27" style="stroke:#8f2469ff;stroke-width:2;" /><line x1="179" y1="15" x2="179" y2="27" style="stroke:#8f2469ff;stroke-width:2;" /><line x1="180" y1="15" x2="180" y2="27" style="stroke:#972766ff;stroke-width:2;" /><line x1="181" y1="15" x2="181" y2="27" style="stroke:#972766ff;stroke-width:2;" /><line x1="182" y1="15" x2="182" y2="27" style="stroke:#972766ff;stroke-width:2;" /><line x1="183" y1="15" x2="183" y2="27" style="stroke:#972766ff;stroke-width:2;" /><line x1="184" y1="15" x2="184" y2="27" style="stroke:#972766ff;stroke-width:2;" /><line x1="185" y1="15" x2="185" y2="27" style="stroke:#972766ff;stroke-width:2;" /><line x1="186" y1="15" x2="186" y2="27" style="stroke:#972766ff;stroke-width:2;" /><line x1="187" y1="15" x2="187" y2="27" style="stroke:#972766ff;stroke-width:2;" /><line x1="188" y1="15" x2="188" y2="27" style="stroke:#972766ff;stroke-width:2;" /><line x1="189" y1="15" x2="189" y2="27" style="stroke:#9f2a63ff;stroke-width:2;" /><line x1="190" y1="15" x2="190" y2="27" style="stroke:#9f2a63ff;stroke-width:2;" /><line x1="191" y1="15" x2="191" y2="27" style="stroke:#9f2a63ff;stroke-width:2;" /><line x1="192" y1="15" x2="192" y2="27" style="stroke:#9f2a63ff;stroke-width:2;" /><line x1="193" y1="15" x2="193" y2="27" style="stroke:#9f2a63ff;stroke-width:2;" /><line x1="194" y1="15" x2="194" y2="27" style="stroke:#9f2a63ff;stroke-width:2;" /><line x1="195" y1="15" x2="195" y2="27" style="stroke:#9f2a63ff;stroke-width:2;" /><line x1="196" y1="15" x2="196" y2="27" style="stroke:#9f2a63ff;stroke-width:2;" /><line x1="197" y1="15" x2="197" y2="27" style="stroke:#9f2a63ff;stroke-width:2;" /><line x1="198" y1="15" x2="198" y2="27" style="stroke:#a72d5fff;stroke-width:2;" /><line x1="199" y1="15" x2="199" y2="27" style="stroke:#a72d5fff;stroke-width:2;" /><line x1="200" y1="15" x2="200" y2="27" style="stroke:#a72d5fff;stroke-width:2;" /><line x1="201" y1="15" x2="201" y2="27" style="stroke:#a72d5fff;stroke-width:2;" /><line x1="202" y1="15" x2="202" y2="27" style="stroke:#a72d5fff;stroke-width:2;" /><line x1="203" y1="15" x2="203" y2="27" style="stroke:#a72d5fff;stroke-width:2;" /><line x1="204" y1="15" x2="204" y2="27" style="stroke:#a72d5fff;stroke-width:2;" /><line x1="205" y1="15" x2="205" y2="27" style="stroke:#a72d5fff;stroke-width:2;" /><line x1="206" y1="15" x2="206" y2="27" style="stroke:#a72d5fff;stroke-width:2;" /><line x1="207" y1="15" x2="207" y2="27" style="stroke:#af305bff;stroke-width:2;" /><line x1="208" y1="15" x2="208" y2="27" style="stroke:#af305bff;stroke-width:2;" /><line x1="209" y1="15" x2="209" y2="27" style="stroke:#af305bff;stroke-width:2;" /><line x1="210" y1="15" x2="210" y2="27" style="stroke:#af305bff;stroke-width:2;" /><line x1="211" y1="15" x2="211" y2="27" style="stroke:#af305bff;stroke-width:2;" /><line x1="212" y1="15" x2="212" y2="27" style="stroke:#af305bff;stroke-width:2;" /><line x1="213" y1="15" x2="213" y2="27" style="stroke:#af305bff;stroke-width:2;" /><line x1="214" y1="15" x2="214" y2="27" style="stroke:#af305bff;stroke-width:2;" /><line x1="215" y1="15" x2="215" y2="27" style="stroke:#af305bff;stroke-width:2;" /><line x1="216" y1="15" x2="216" y2="27" style="stroke:#b73457ff;stroke-width:2;" /><line x1="217" y1="15" x2="217" y2="27" style="stroke:#b73457ff;stroke-width:2;" /><line x1="218" y1="15" x2="218" y2="27" style="stroke:#b73457ff;stroke-width:2;" /><line x1="219" y1="15" x2="219" y2="27" style="stroke:#b73457ff;stroke-width:2;" /><line x1="220" y1="15" x2="220" y2="27" style="stroke:#b73457ff;stroke-width:2;" /><line x1="221" y1="15" x2="221" y2="27" style="stroke:#b73457ff;stroke-width:2;" /><line x1="222" y1="15" x2="222" y2="27" style="stroke:#b73457ff;stroke-width:2;" /><line x1="223" y1="15" x2="223" y2="27" style="stroke:#b73457ff;stroke-width:2;" /><line x1="224" y1="15" x2="224" y2="27" style="stroke:#b73457ff;stroke-width:2;" /><line x1="225" y1="15" x2="225" y2="27" style="stroke:#bf3952ff;stroke-width:2;" /><line x1="226" y1="15" x2="226" y2="27" style="stroke:#bf3952ff;stroke-width:2;" /><line x1="227" y1="15" x2="227" y2="27" style="stroke:#bf3952ff;stroke-width:2;" /><line x1="228" y1="15" x2="228" y2="27" style="stroke:#bf3952ff;stroke-width:2;" /><line x1="229" y1="15" x2="229" y2="27" style="stroke:#bf3952ff;stroke-width:2;" /><line x1="230" y1="15" x2="230" y2="27" style="stroke:#bf3952ff;stroke-width:2;" /><line x1="231" y1="15" x2="231" y2="27" style="stroke:#bf3952ff;stroke-width:2;" /><line x1="232" y1="15" x2="232" y2="27" style="stroke:#bf3952ff;stroke-width:2;" /><line x1="233" y1="15" x2="233" y2="27" style="stroke:#bf3952ff;stroke-width:2;" /><line x1="234" y1="15" x2="234" y2="27" style="stroke:#c63d4dff;stroke-width:2;" /><line x1="235" y1="15" x2="235" y2="27" style="stroke:#c63d4dff;stroke-width:2;" /><line x1="236" y1="15" x2="236" y2="27" style="stroke:#c63d4dff;stroke-width:2;" /><line x1="237" y1="15" x2="237" y2="27" style="stroke:#c63d4dff;stroke-width:2;" /><line x1="238" y1="15" x2="238" y2="27" style="stroke:#c63d4dff;stroke-width:2;" /><line x1="239" y1="15" x2="239" y2="27" style="stroke:#c63d4dff;stroke-width:2;" /><line x1="240" y1="15" x2="240" y2="27" style="stroke:#c63d4dff;stroke-width:2;" /><line x1="241" y1="15" x2="241" y2="27" style="stroke:#c63d4dff;stroke-width:2;" /><line x1="242" y1="15" x2="242" y2="27" style="stroke:#c63d4dff;stroke-width:2;" /><line x1="243" y1="15" x2="243" y2="27" style="stroke:#cd4247ff;stroke-width:2;" /><line x1="244" y1="15" x2="244" y2="27" style="stroke:#cd4247ff;stroke-width:2;" /><line x1="245" y1="15" x2="245" y2="27" style="stroke:#cd4247ff;stroke-width:2;" /><line x1="246" y1="15" x2="246" y2="27" style="stroke:#cd4247ff;stroke-width:2;" /><line x1="247" y1="15" x2="247" y2="27" style="stroke:#cd4247ff;stroke-width:2;" /><line x1="248" y1="15" x2="248" y2="27" style="stroke:#cd4247ff;stroke-width:2;" /><line x1="249" y1="15" x2="249" y2="27" style="stroke:#cd4247ff;stroke-width:2;" /><line x1="250" y1="15" x2="250" y2="27" style="stroke:#cd4247ff;stroke-width:2;" /><line x1="251" y1="15" x2="251" y2="27" style="stroke:#cd4247ff;stroke-width:2;" /><line x1="252" y1="15" x2="252" y2="27" style="stroke:#d44842ff;stroke-width:2;" /><line x1="253" y1="15" x2="253" y2="27" style="stroke:#d44842ff;stroke-width:2;" /><line x1="254" y1="15" x2="254" y2="27" style="stroke:#d44842ff;stroke-width:2;" /><line x1="255" y1="15" x2="255" y2="27" style="stroke:#d44842ff;stroke-width:2;" /><line x1="256" y1="15" x2="256" y2="27" style="stroke:#d44842ff;stroke-width:2;" /><line x1="257" y1="15" x2="257" y2="27" style="stroke:#d44842ff;stroke-width:2;" /><line x1="258" y1="15" x2="258" y2="27" style="stroke:#d44842ff;stroke-width:2;" /><line x1="259" y1="15" x2="259" y2="27" style="stroke:#d44842ff;stroke-width:2;" /><line x1="260" y1="15" x2="260" y2="27" style="stroke:#d44842ff;stroke-width:2;" /><line x1="261" y1="15" x2="261" y2="27" style="stroke:#db4e3cff;stroke-width:2;" /><line x1="262" y1="15" x2="262" y2="27" style="stroke:#db4e3cff;stroke-width:2;" /><line x1="263" y1="15" x2="263" y2="27" style="stroke:#db4e3cff;stroke-width:2;" /><line x1="264" y1="15" x2="264" y2="27" style="stroke:#db4e3cff;stroke-width:2;" /><line x1="265" y1="15" x2="265" y2="27" style="stroke:#db4e3cff;stroke-width:2;" /><line x1="266" y1="15" x2="266" y2="27" style="stroke:#db4e3cff;stroke-width:2;" /><line x1="267" y1="15" x2="267" y2="27" style="stroke:#db4e3cff;stroke-width:2;" /><line x1="268" y1="15" x2="268" y2="27" style="stroke:#db4e3cff;stroke-width:2;" /><line x1="269" y1="15" x2="269" y2="27" style="stroke:#db4e3cff;stroke-width:2;" /><line x1="270" y1="15" x2="270" y2="27" style="stroke:#e05536ff;stroke-width:2;" /><line x1="271" y1="15" x2="271" y2="27" style="stroke:#e05536ff;stroke-width:2;" /><line x1="272" y1="15" x2="272" y2="27" style="stroke:#e05536ff;stroke-width:2;" /><line x1="273" y1="15" x2="273" y2="27" style="stroke:#e05536ff;stroke-width:2;" /><line x1="274" y1="15" x2="274" y2="27" style="stroke:#e05536ff;stroke-width:2;" /><line x1="275" y1="15" x2="275" y2="27" style="stroke:#e05536ff;stroke-width:2;" /><line x1="276" y1="15" x2="276" y2="27" style="stroke:#e05536ff;stroke-width:2;" /><line x1="277" y1="15" x2="277" y2="27" style="stroke:#e05536ff;stroke-width:2;" /><line x1="278" y1="15" x2="278" y2="27" style="stroke:#e05536ff;stroke-width:2;" /><line x1="279" y1="15" x2="279" y2="27" style="stroke:#e65c2fff;stroke-width:2;" /><line x1="280" y1="15" x2="280" y2="27" style="stroke:#e65c2fff;stroke-width:2;" /><line x1="281" y1="15" x2="281" y2="27" style="stroke:#e65c2fff;stroke-width:2;" /><line x1="282" y1="15" x2="282" y2="27" style="stroke:#e65c2fff;stroke-width:2;" /><line x1="283" y1="15" x2="283" y2="27" style="stroke:#e65c2fff;stroke-width:2;" /><line x1="284" y1="15" x2="284" y2="27" style="stroke:#e65c2fff;stroke-width:2;" /><line x1="285" y1="15" x2="285" y2="27" style="stroke:#e65c2fff;stroke-width:2;" /><line x1="286" y1="15" x2="286" y2="27" style="stroke:#e65c2fff;stroke-width:2;" /><line x1="287" y1="15" x2="287" y2="27" style="stroke:#e65c2fff;stroke-width:2;" /><line x1="288" y1="15" x2="288" y2="27" style="stroke:#eb6329ff;stroke-width:2;" /><line x1="289" y1="15" x2="289" y2="27" style="stroke:#eb6329ff;stroke-width:2;" /><line x1="290" y1="15" x2="290" y2="27" style="stroke:#eb6329ff;stroke-width:2;" /><line x1="291" y1="15" x2="291" y2="27" style="stroke:#eb6329ff;stroke-width:2;" /><line x1="292" y1="15" x2="292" y2="27" style="stroke:#eb6329ff;stroke-width:2;" /><line x1="293" y1="15" x2="293" y2="27" style="stroke:#eb6329ff;stroke-width:2;" /><line x1="294" y1="15" x2="294" y2="27" style="stroke:#eb6329ff;stroke-width:2;" /><line x1="295" y1="15" x2="295" y2="27" style="stroke:#eb6329ff;stroke-width:2;" /><line x1="296" y1="15" x2="296" y2="27" style="stroke:#eb6329ff;stroke-width:2;" /><line x1="297" y1="15" x2="297" y2="27" style="stroke:#ef6c23ff;stroke-width:2;" /><line x1="298" y1="15" x2="298" y2="27" style="stroke:#ef6c23ff;stroke-width:2;" /><line x1="299" y1="15" x2="299" y2="27" style="stroke:#ef6c23ff;stroke-width:2;" /><line x1="300" y1="15" x2="300" y2="27" style="stroke:#ef6c23ff;stroke-width:2;" /><line x1="301" y1="15" x2="301" y2="27" style="stroke:#ef6c23ff;stroke-width:2;" /><line x1="302" y1="15" x2="302" y2="27" style="stroke:#ef6c23ff;stroke-width:2;" /><line x1="303" y1="15" x2="303" y2="27" style="stroke:#ef6c23ff;stroke-width:2;" /><line x1="304" y1="15" x2="304" y2="27" style="stroke:#ef6c23ff;stroke-width:2;" /><line x1="305" y1="15" x2="305" y2="27" style="stroke:#ef6c23ff;stroke-width:2;" /><line x1="306" y1="15" x2="306" y2="27" style="stroke:#f3741cff;stroke-width:2;" /><line x1="307" y1="15" x2="307" y2="27" style="stroke:#f3741cff;stroke-width:2;" /><line x1="308" y1="15" x2="308" y2="27" style="stroke:#f3741cff;stroke-width:2;" /><line x1="309" y1="15" x2="309" y2="27" style="stroke:#f3741cff;stroke-width:2;" /><line x1="310" y1="15" x2="310" y2="27" style="stroke:#f3741cff;stroke-width:2;" /><line x1="311" y1="15" x2="311" y2="27" style="stroke:#f3741cff;stroke-width:2;" /><line x1="312" y1="15" x2="312" y2="27" style="stroke:#f3741cff;stroke-width:2;" /><line x1="313" y1="15" x2="313" y2="27" style="stroke:#f3741cff;stroke-width:2;" /><line x1="314" y1="15" x2="314" y2="27" style="stroke:#f3741cff;stroke-width:2;" /><line x1="315" y1="15" x2="315" y2="27" style="stroke:#f67d15ff;stroke-width:2;" /><line x1="316" y1="15" x2="316" y2="27" style="stroke:#f67d15ff;stroke-width:2;" /><line x1="317" y1="15" x2="317" y2="27" style="stroke:#f67d15ff;stroke-width:2;" /><line x1="318" y1="15" x2="318" y2="27" style="stroke:#f67d15ff;stroke-width:2;" /><line x1="319" y1="15" x2="319" y2="27" style="stroke:#f67d15ff;stroke-width:2;" /><line x1="320" y1="15" x2="320" y2="27" style="stroke:#f67d15ff;stroke-width:2;" /><line x1="321" y1="15" x2="321" y2="27" style="stroke:#f67d15ff;stroke-width:2;" /><line x1="322" y1="15" x2="322" y2="27" style="stroke:#f67d15ff;stroke-width:2;" /><line x1="323" y1="15" x2="323" y2="27" style="stroke:#f67d15ff;stroke-width:2;" /><line x1="324" y1="15" x2="324" y2="27" style="stroke:#f8860eff;stroke-width:2;" /><line x1="325" y1="15" x2="325" y2="27" style="stroke:#f8860eff;stroke-width:2;" /><line x1="326" y1="15" x2="326" y2="27" style="stroke:#f8860eff;stroke-width:2;" /><line x1="327" y1="15" x2="327" y2="27" style="stroke:#f8860eff;stroke-width:2;" /><line x1="328" y1="15" x2="328" y2="27" style="stroke:#f8860eff;stroke-width:2;" /><line x1="329" y1="15" x2="329" y2="27" style="stroke:#f8860eff;stroke-width:2;" /><line x1="330" y1="15" x2="330" y2="27" style="stroke:#f8860eff;stroke-width:2;" /><line x1="331" y1="15" x2="331" y2="27" style="stroke:#f8860eff;stroke-width:2;" /><line x1="332" y1="15" x2="332" y2="27" style="stroke:#f8860eff;stroke-width:2;" /><line x1="333" y1="15" x2="333" y2="27" style="stroke:#fa8f08ff;stroke-width:2;" /><line x1="334" y1="15" x2="334" y2="27" style="stroke:#fa8f08ff;stroke-width:2;" /><line x1="335" y1="15" x2="335" y2="27" style="stroke:#fa8f08ff;stroke-width:2;" /><line x1="336" y1="15" x2="336" y2="27" style="stroke:#fa8f08ff;stroke-width:2;" /><line x1="337" y1="15" x2="337" y2="27" style="stroke:#fa8f08ff;stroke-width:2;" /><line x1="338" y1="15" x2="338" y2="27" style="stroke:#fa8f08ff;stroke-width:2;" /><line x1="339" y1="15" x2="339" y2="27" style="stroke:#fa8f08ff;stroke-width:2;" /><line x1="340" y1="15" x2="340" y2="27" style="stroke:#fa8f08ff;stroke-width:2;" /><line x1="341" y1="15" x2="341" y2="27" style="stroke:#fa8f08ff;stroke-width:2;" /><line x1="342" y1="15" x2="342" y2="27" style="stroke:#fc9906ff;stroke-width:2;" /><line x1="343" y1="15" x2="343" y2="27" style="stroke:#fc9906ff;stroke-width:2;" /><line x1="344" y1="15" x2="344" y2="27" style="stroke:#fc9906ff;stroke-width:2;" /><line x1="345" y1="15" x2="345" y2="27" style="stroke:#fc9906ff;stroke-width:2;" /><line x1="346" y1="15" x2="346" y2="27" style="stroke:#fc9906ff;stroke-width:2;" /><line x1="347" y1="15" x2="347" y2="27" style="stroke:#fc9906ff;stroke-width:2;" /><line x1="348" y1="15" x2="348" y2="27" style="stroke:#fc9906ff;stroke-width:2;" /><line x1="349" y1="15" x2="349" y2="27" style="stroke:#fc9906ff;stroke-width:2;" /><line x1="350" y1="15" x2="350" y2="27" style="stroke:#fc9906ff;stroke-width:2;" /><line x1="351" y1="15" x2="351" y2="27" style="stroke:#fca308ff;stroke-width:2;" /><line x1="352" y1="15" x2="352" y2="27" style="stroke:#fca308ff;stroke-width:2;" /><line x1="353" y1="15" x2="353" y2="27" style="stroke:#fca308ff;stroke-width:2;" /><line x1="354" y1="15" x2="354" y2="27" style="stroke:#fca308ff;stroke-width:2;" /><line x1="355" y1="15" x2="355" y2="27" style="stroke:#fca308ff;stroke-width:2;" /><line x1="356" y1="15" x2="356" y2="27" style="stroke:#fca308ff;stroke-width:2;" /><line x1="357" y1="15" x2="357" y2="27" style="stroke:#fca308ff;stroke-width:2;" /><line x1="358" y1="15" x2="358" y2="27" style="stroke:#fca308ff;stroke-width:2;" /><line x1="359" y1="15" x2="359" y2="27" style="stroke:#fca308ff;stroke-width:2;" /><line x1="360" y1="15" x2="360" y2="27" style="stroke:#fcad11ff;stroke-width:2;" /><line x1="361" y1="15" x2="361" y2="27" style="stroke:#fcad11ff;stroke-width:2;" /><line x1="362" y1="15" x2="362" y2="27" style="stroke:#fcad11ff;stroke-width:2;" /><line x1="363" y1="15" x2="363" y2="27" style="stroke:#fcad11ff;stroke-width:2;" /><line x1="364" y1="15" x2="364" y2="27" style="stroke:#fcad11ff;stroke-width:2;" /><line x1="365" y1="15" x2="365" y2="27" style="stroke:#fcad11ff;stroke-width:2;" /><line x1="366" y1="15" x2="366" y2="27" style="stroke:#fcad11ff;stroke-width:2;" /><line x1="367" y1="15" x2="367" y2="27" style="stroke:#fcad11ff;stroke-width:2;" /><line x1="368" y1="15" x2="368" y2="27" style="stroke:#fcad11ff;stroke-width:2;" /><line x1="369" y1="15" x2="369" y2="27" style="stroke:#fcb71bff;stroke-width:2;" /><line x1="370" y1="15" x2="370" y2="27" style="stroke:#fcb71bff;stroke-width:2;" /><line x1="371" y1="15" x2="371" y2="27" style="stroke:#fcb71bff;stroke-width:2;" /><line x1="372" y1="15" x2="372" y2="27" style="stroke:#fcb71bff;stroke-width:2;" /><line x1="373" y1="15" x2="373" y2="27" style="stroke:#fcb71bff;stroke-width:2;" /><line x1="374" y1="15" x2="374" y2="27" style="stroke:#fcb71bff;stroke-width:2;" /><line x1="375" y1="15" x2="375" y2="27" style="stroke:#fcb71bff;stroke-width:2;" /><line x1="376" y1="15" x2="376" y2="27" style="stroke:#fcb71bff;stroke-width:2;" /><line x1="377" y1="15" x2="377" y2="27" style="stroke:#fcb71bff;stroke-width:2;" /><line x1="378" y1="15" x2="378" y2="27" style="stroke:#fbc127ff;stroke-width:2;" /><line x1="379" y1="15" x2="379" y2="27" style="stroke:#fbc127ff;stroke-width:2;" /><line x1="380" y1="15" x2="380" y2="27" style="stroke:#fbc127ff;stroke-width:2;" /><line x1="381" y1="15" x2="381" y2="27" style="stroke:#fbc127ff;stroke-width:2;" /><line x1="382" y1="15" x2="382" y2="27" style="stroke:#fbc127ff;stroke-width:2;" /><line x1="383" y1="15" x2="383" y2="27" style="stroke:#fbc127ff;stroke-width:2;" /><line x1="384" y1="15" x2="384" y2="27" style="stroke:#fbc127ff;stroke-width:2;" /><line x1="385" y1="15" x2="385" y2="27" style="stroke:#fbc127ff;stroke-width:2;" /><line x1="386" y1="15" x2="386" y2="27" style="stroke:#fbc127ff;stroke-width:2;" /><line x1="387" y1="15" x2="387" y2="27" style="stroke:#f9cb34ff;stroke-width:2;" /><line x1="388" y1="15" x2="388" y2="27" style="stroke:#f9cb34ff;stroke-width:2;" /><line x1="389" y1="15" x2="389" y2="27" style="stroke:#f9cb34ff;stroke-width:2;" /><line x1="390" y1="15" x2="390" y2="27" style="stroke:#f9cb34ff;stroke-width:2;" /><line x1="391" y1="15" x2="391" y2="27" style="stroke:#f9cb34ff;stroke-width:2;" /><line x1="392" y1="15" x2="392" y2="27" style="stroke:#f9cb34ff;stroke-width:2;" /><line x1="393" y1="15" x2="393" y2="27" style="stroke:#f9cb34ff;stroke-width:2;" /><line x1="394" y1="15" x2="394" y2="27" style="stroke:#f9cb34ff;stroke-width:2;" /><line x1="395" y1="15" x2="395" y2="27" style="stroke:#f9cb34ff;stroke-width:2;" /><line x1="396" y1="15" x2="396" y2="27" style="stroke:#f7d642ff;stroke-width:2;" /><line x1="397" y1="15" x2="397" y2="27" style="stroke:#f7d642ff;stroke-width:2;" /><line x1="398" y1="15" x2="398" y2="27" style="stroke:#f7d642ff;stroke-width:2;" /><line x1="399" y1="15" x2="399" y2="27" style="stroke:#f7d642ff;stroke-width:2;" /><line x1="400" y1="15" x2="400" y2="27" style="stroke:#f7d642ff;stroke-width:2;" /><line x1="401" y1="15" x2="401" y2="27" style="stroke:#f7d642ff;stroke-width:2;" /><line x1="402" y1="15" x2="402" y2="27" style="stroke:#f7d642ff;stroke-width:2;" /><line x1="403" y1="15" x2="403" y2="27" style="stroke:#f7d642ff;stroke-width:2;" /><line x1="404" y1="15" x2="404" y2="27" style="stroke:#f7d642ff;stroke-width:2;" /><line x1="405" y1="15" x2="405" y2="27" style="stroke:#f4e053ff;stroke-width:2;" /><line x1="406" y1="15" x2="406" y2="27" style="stroke:#f4e053ff;stroke-width:2;" /><line x1="407" y1="15" x2="407" y2="27" style="stroke:#f4e053ff;stroke-width:2;" /><line x1="408" y1="15" x2="408" y2="27" style="stroke:#f4e053ff;stroke-width:2;" /><line x1="409" y1="15" x2="409" y2="27" style="stroke:#f4e053ff;stroke-width:2;" /><line x1="410" y1="15" x2="410" y2="27" style="stroke:#f4e053ff;stroke-width:2;" /><line x1="411" y1="15" x2="411" y2="27" style="stroke:#f4e053ff;stroke-width:2;" /><line x1="412" y1="15" x2="412" y2="27" style="stroke:#f4e053ff;stroke-width:2;" /><line x1="413" y1="15" x2="413" y2="27" style="stroke:#f4e053ff;stroke-width:2;" /><line x1="414" y1="15" x2="414" y2="27" style="stroke:#f2e966ff;stroke-width:2;" /><line x1="415" y1="15" x2="415" y2="27" style="stroke:#f2e966ff;stroke-width:2;" /><line x1="416" y1="15" x2="416" y2="27" style="stroke:#f2e966ff;stroke-width:2;" /><line x1="417" y1="15" x2="417" y2="27" style="stroke:#f2e966ff;stroke-width:2;" /><line x1="418" y1="15" x2="418" y2="27" style="stroke:#f2e966ff;stroke-width:2;" /><line x1="419" y1="15" x2="419" y2="27" style="stroke:#f2e966ff;stroke-width:2;" /><line x1="420" y1="15" x2="420" y2="27" style="stroke:#f2e966ff;stroke-width:2;" /><line x1="421" y1="15" x2="421" y2="27" style="stroke:#f2e966ff;stroke-width:2;" /><line x1="422" y1="15" x2="422" y2="27" style="stroke:#f2e966ff;stroke-width:2;" /><line x1="423" y1="15" x2="423" y2="27" style="stroke:#f2f27cff;stroke-width:2;" /><line x1="424" y1="15" x2="424" y2="27" style="stroke:#f2f27cff;stroke-width:2;" /><line x1="425" y1="15" x2="425" y2="27" style="stroke:#f2f27cff;stroke-width:2;" /><line x1="426" y1="15" x2="426" y2="27" style="stroke:#f2f27cff;stroke-width:2;" /><line x1="427" y1="15" x2="427" y2="27" style="stroke:#f2f27cff;stroke-width:2;" /><line x1="428" y1="15" x2="428" y2="27" style="stroke:#f2f27cff;stroke-width:2;" /><line x1="429" y1="15" x2="429" y2="27" style="stroke:#f2f27cff;stroke-width:2;" /><line x1="430" y1="15" x2="430" y2="27" style="stroke:#f2f27cff;stroke-width:2;" /><line x1="431" y1="15" x2="431" y2="27" style="stroke:#f2f27cff;stroke-width:2;" /><line x1="432" y1="15" x2="432" y2="27" style="stroke:#f6f991ff;stroke-width:2;" /><line x1="433" y1="15" x2="433" y2="27" style="stroke:#f6f991ff;stroke-width:2;" /><line x1="434" y1="15" x2="434" y2="27" style="stroke:#f6f991ff;stroke-width:2;" /><line x1="435" y1="15" x2="435" y2="27" style="stroke:#f6f991ff;stroke-width:2;" /><line x1="436" y1="15" x2="436" y2="27" style="stroke:#f6f991ff;stroke-width:2;" /><line x1="437" y1="15" x2="437" y2="27" style="stroke:#f6f991ff;stroke-width:2;" /><line x1="438" y1="15" x2="438" y2="27" style="stroke:#f6f991ff;stroke-width:2;" /><line x1="439" y1="15" x2="439" y2="27" style="stroke:#f6f991ff;stroke-width:2;" /><line x1="440" y1="15" x2="440" y2="27" style="stroke:#f6f991ff;stroke-width:2;" /><line x1="441" y1="15" x2="441" y2="27" style="stroke:#fdffa5ff;stroke-width:2;" /><line x1="442" y1="15" x2="442" y2="27" style="stroke:#fdffa5ff;stroke-width:2;" /><line x1="443" y1="15" x2="443" y2="27" style="stroke:#fdffa5ff;stroke-width:2;" /><line x1="444" y1="15" x2="444" y2="27" style="stroke:#fdffa5ff;stroke-width:2;" /><line x1="445" y1="15" x2="445" y2="27" style="stroke:#fdffa5ff;stroke-width:2;" /><line x1="446" y1="15" x2="446" y2="27" style="stroke:#fdffa5ff;stroke-width:2;" /><line x1="447" y1="15" x2="447" y2="27" style="stroke:#fdffa5ff;stroke-width:2;" /><line x1="448" y1="15" x2="448" y2="27" style="stroke:#fdffa5ff;stroke-width:2;" /><line x1="449" y1="15" x2="449" y2="27" style="stroke:#fdffa5ff;stroke-width:2;" /><text x="0" y="38" style="text-anchor:start; font-size:11px; font:Arial; fill:black">-0.1365383543458513</text><text x="75" y="38"; style="text-anchor:middle; font-size:11px; font:Arial; fill:black">0.0</text><text x="150" y="38"; style="text-anchor:middle; font-size:11px; font:Arial; fill:black">0.2</text><text x="225" y="38"; style="text-anchor:middle; font-size:11px; font:Arial; fill:black">0.4</text><text x="300" y="38"; style="text-anchor:middle; font-size:11px; font:Arial; fill:black">0.6</text><text x="375" y="38"; style="text-anchor:middle; font-size:11px; font:Arial; fill:black">0.8</text><text x="450" y="38" style="text-anchor:end; font-size:11px; font:Arial; fill:black">0.9816958355058069</text><text x="0" y="12" style="font-size:11px; font:Arial; fill:black">dNBR</text></svg>\n", "</div>\n", " \n", - " <div class="folium-map" id="map_1f67354b1cdd06f0931c34bbd59be464" ></div>\n", + " <div class="folium-map" id="map_d3085cbbeab647bb172403cf3ac4258d" ></div>\n", " \n", "</body>\n", "<script>\n", " \n", " \n", - " var map_1f67354b1cdd06f0931c34bbd59be464 = L.map(\n", - " "map_1f67354b1cdd06f0931c34bbd59be464",\n", + " var map_d3085cbbeab647bb172403cf3ac4258d = L.map(\n", + " "map_d3085cbbeab647bb172403cf3ac4258d",\n", " {\n", " center: [32.97, -108.15],\n", " crs: L.CRS.EPSG3857,\n", @@ -13083,7 +13083,7 @@ "\n", " \n", " \n", - " var tile_layer_b37ce4b0c99854dfdbc7afc471dd85f1 = L.tileLayer(\n", + " var tile_layer_27ae18128bb8f96d120cc1a9279c8387 = L.tileLayer(\n", " "https://tile.openstreetmap.org/{z}/{x}/{y}.png",\n", " {\n", " "minZoom": 0,\n", @@ -13100,10 +13100,10 @@ " );\n", " \n", " \n", - " tile_layer_b37ce4b0c99854dfdbc7afc471dd85f1.addTo(map_1f67354b1cdd06f0931c34bbd59be464);\n", + " tile_layer_27ae18128bb8f96d120cc1a9279c8387.addTo(map_d3085cbbeab647bb172403cf3ac4258d);\n", " \n", " \n", - " var tile_layer_c2aa7e2da23be80fbecf45702bce50c4 = L.tileLayer(\n", + " var tile_layer_52dc5eb0409be93238b9813439424b05 = L.tileLayer(\n", " "https://dev.openveda.cloud/api/raster/collections/opera-all-vars-subdaily/items/opera-2025-06-21T18:05:00/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=dnbr\\u0026color_formula=gamma+r+1.05\\u0026colormap_name=inferno\\u0026rescale=-0.1365383543458513%2C0.9816958355058067",\n", " {\n", " "minZoom": 0,\n", @@ -13120,16 +13120,16 @@ " );\n", " \n", " \n", - " tile_layer_c2aa7e2da23be80fbecf45702bce50c4.addTo(map_1f67354b1cdd06f0931c34bbd59be464);\n", + " tile_layer_52dc5eb0409be93238b9813439424b05.addTo(map_d3085cbbeab647bb172403cf3ac4258d);\n", " \n", "</script>\n", "</html>\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen>" ], "text/plain": [ - "" + "" ] }, - "execution_count": 166, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -13226,7 +13226,7 @@ }, { "cell_type": "code", - "execution_count": 168, + "execution_count": 25, "id": "7f7a4740-01a8-411e-93b1-0762859d0ea8", "metadata": {}, "outputs": [ @@ -16168,7 +16168,7 @@ "" ] }, - "execution_count": 168, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -16184,7 +16184,7 @@ }, { "cell_type": "code", - "execution_count": 169, + "execution_count": 26, "id": "493401d9-ed94-47a0-b4e3-a0f64859b0e0", "metadata": {}, "outputs": [ @@ -16209,7 +16209,7 @@ }, { "cell_type": "code", - "execution_count": 170, + "execution_count": 27, "id": "32be823a-e3d9-4025-82d2-fba4675e30b2", "metadata": {}, "outputs": [ @@ -17664,7 +17664,7 @@ "" ] }, - "execution_count": 170, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -17678,7 +17678,7 @@ }, { "cell_type": "code", - "execution_count": 171, + "execution_count": 28, "id": "0d893308-a7b1-48fe-a273-a56d73da74d5", "metadata": {}, "outputs": [], @@ -17698,7 +17698,7 @@ }, { "cell_type": "code", - "execution_count": 172, + "execution_count": 29, "id": "41dcbd5b-94d6-4103-81cb-72c4f537f8d4", "metadata": {}, "outputs": [], @@ -17716,7 +17716,7 @@ }, { "cell_type": "code", - "execution_count": 173, + "execution_count": 30, "id": "a46e907a-5c3e-45f4-a400-12478378c38f", "metadata": {}, "outputs": [], @@ -17726,7 +17726,7 @@ }, { "cell_type": "code", - "execution_count": 174, + "execution_count": 31, "id": "fdefb63a-3272-4b09-b1e9-ddee62f18954", "metadata": {}, "outputs": [ @@ -17749,7 +17749,7 @@ " 'valid_percent': 5.792476624015748}}]" ] }, - "execution_count": 174, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -17768,7 +17768,7 @@ }, { "cell_type": "code", - "execution_count": 175, + "execution_count": 32, "id": "e1fffb4c-076b-441c-a00e-a32483a5be09", "metadata": {}, "outputs": [ @@ -17792,7 +17792,7 @@ }, { "cell_type": "code", - "execution_count": 176, + "execution_count": 33, "id": "fd5be007-1576-4824-8046-166ba1b5baad", "metadata": {}, "outputs": [], @@ -17813,7 +17813,7 @@ }, { "cell_type": "code", - "execution_count": 177, + "execution_count": 34, "id": "00a9db9f-46b0-48ac-afb9-c460ca0634b4", "metadata": {}, "outputs": [ @@ -17833,7 +17833,7 @@ " 'center': [-107.9896895719003, 32.469441118100555, 0]}" ] }, - "execution_count": 177, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -17853,7 +17853,7 @@ }, { "cell_type": "code", - "execution_count": 178, + "execution_count": 35, "id": "42a38e9e-4b9c-4b9b-aa3d-75b008e68c68", "metadata": {}, "outputs": [], @@ -17867,7 +17867,7 @@ }, { "cell_type": "code", - "execution_count": 179, + "execution_count": 36, "id": "0e3accd2-4fdb-4fb0-812c-9eb8b3acbb2e", "metadata": {}, "outputs": [ @@ -17887,7 +17887,7 @@ " 'center': [-107.9896895719003, 32.469441118100555, 0]}" ] }, - "execution_count": 179, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -17912,7 +17912,7 @@ }, { "cell_type": "code", - "execution_count": 180, + "execution_count": 37, "id": "6707b871-2e7c-453c-b7a3-419d8b51107d", "metadata": {}, "outputs": [ @@ -17920,7 +17920,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_84/2684050226.py:36: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.\n", + "/tmp/ipykernel_218/2684050226.py:36: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.\n", " mpl_colormap = mpl_cm.get_cmap(color_map.lower())\n" ] }, @@ -17946,7 +17946,7 @@ " <meta name="viewport" content="width=device-width,\n", " initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />\n", " <style>\n", - " #map_4bc862ae9feec76e57cd948a5a9843c6 {\n", + " #map_f900e662354a1f61c74acdad4ca22449 {\n", " position: relative;\n", " width: 100.0%;\n", " height: 100.0%;\n", @@ -18006,14 +18006,14 @@ "<svg height="40" width="450"><line x1="0" y1="15" x2="0" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="1" y1="15" x2="1" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="2" y1="15" x2="2" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="3" y1="15" x2="3" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="4" y1="15" x2="4" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="5" y1="15" x2="5" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="6" y1="15" x2="6" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="7" y1="15" x2="7" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="8" y1="15" x2="8" y2="27" style="stroke:#000003ff;stroke-width:2;" /><line x1="9" y1="15" x2="9" y2="27" style="stroke:#02010bff;stroke-width:2;" /><line x1="10" y1="15" x2="10" y2="27" style="stroke:#02010bff;stroke-width:2;" /><line x1="11" y1="15" x2="11" y2="27" style="stroke:#02010bff;stroke-width:2;" /><line x1="12" y1="15" x2="12" y2="27" style="stroke:#02010bff;stroke-width:2;" /><line x1="13" y1="15" x2="13" y2="27" style="stroke:#02010bff;stroke-width:2;" /><line x1="14" y1="15" x2="14" y2="27" style="stroke:#02010bff;stroke-width:2;" /><line x1="15" y1="15" x2="15" y2="27" style="stroke:#02010bff;stroke-width:2;" /><line x1="16" y1="15" x2="16" y2="27" style="stroke:#02010bff;stroke-width:2;" /><line x1="17" y1="15" x2="17" y2="27" style="stroke:#02010bff;stroke-width:2;" /><line x1="18" y1="15" x2="18" y2="27" style="stroke:#050416ff;stroke-width:2;" /><line x1="19" y1="15" x2="19" y2="27" style="stroke:#050416ff;stroke-width:2;" /><line x1="20" y1="15" x2="20" y2="27" style="stroke:#050416ff;stroke-width:2;" /><line x1="21" y1="15" x2="21" y2="27" style="stroke:#050416ff;stroke-width:2;" /><line x1="22" y1="15" x2="22" y2="27" style="stroke:#050416ff;stroke-width:2;" /><line x1="23" y1="15" x2="23" y2="27" style="stroke:#050416ff;stroke-width:2;" /><line x1="24" y1="15" x2="24" y2="27" style="stroke:#050416ff;stroke-width:2;" /><line x1="25" y1="15" x2="25" y2="27" style="stroke:#050416ff;stroke-width:2;" /><line x1="26" y1="15" x2="26" y2="27" style="stroke:#050416ff;stroke-width:2;" /><line x1="27" y1="15" x2="27" y2="27" style="stroke:#090721ff;stroke-width:2;" /><line x1="28" y1="15" x2="28" y2="27" style="stroke:#090721ff;stroke-width:2;" /><line x1="29" y1="15" x2="29" y2="27" style="stroke:#090721ff;stroke-width:2;" /><line x1="30" y1="15" x2="30" y2="27" style="stroke:#090721ff;stroke-width:2;" /><line x1="31" y1="15" x2="31" y2="27" style="stroke:#090721ff;stroke-width:2;" /><line x1="32" y1="15" x2="32" y2="27" style="stroke:#090721ff;stroke-width:2;" /><line x1="33" y1="15" x2="33" y2="27" style="stroke:#090721ff;stroke-width:2;" /><line x1="34" y1="15" x2="34" y2="27" style="stroke:#090721ff;stroke-width:2;" /><line x1="35" y1="15" x2="35" y2="27" style="stroke:#090721ff;stroke-width:2;" /><line x1="36" y1="15" x2="36" y2="27" style="stroke:#0f0b2cff;stroke-width:2;" /><line x1="37" y1="15" x2="37" y2="27" style="stroke:#0f0b2cff;stroke-width:2;" /><line x1="38" y1="15" x2="38" y2="27" style="stroke:#0f0b2cff;stroke-width:2;" /><line x1="39" y1="15" x2="39" y2="27" style="stroke:#0f0b2cff;stroke-width:2;" /><line x1="40" y1="15" x2="40" y2="27" style="stroke:#0f0b2cff;stroke-width:2;" /><line x1="41" y1="15" x2="41" y2="27" style="stroke:#0f0b2cff;stroke-width:2;" /><line x1="42" y1="15" x2="42" y2="27" style="stroke:#0f0b2cff;stroke-width:2;" /><line x1="43" y1="15" x2="43" y2="27" style="stroke:#0f0b2cff;stroke-width:2;" /><line x1="44" y1="15" x2="44" y2="27" style="stroke:#0f0b2cff;stroke-width:2;" /><line x1="45" y1="15" x2="45" y2="27" style="stroke:#150e38ff;stroke-width:2;" /><line x1="46" y1="15" x2="46" y2="27" style="stroke:#150e38ff;stroke-width:2;" /><line x1="47" y1="15" x2="47" y2="27" style="stroke:#150e38ff;stroke-width:2;" /><line x1="48" y1="15" x2="48" y2="27" style="stroke:#150e38ff;stroke-width:2;" /><line x1="49" y1="15" x2="49" y2="27" style="stroke:#150e38ff;stroke-width:2;" /><line x1="50" y1="15" x2="50" y2="27" style="stroke:#150e38ff;stroke-width:2;" /><line x1="51" y1="15" x2="51" y2="27" style="stroke:#150e38ff;stroke-width:2;" /><line x1="52" y1="15" x2="52" y2="27" style="stroke:#150e38ff;stroke-width:2;" /><line x1="53" y1="15" x2="53" y2="27" style="stroke:#150e38ff;stroke-width:2;" /><line x1="54" y1="15" x2="54" y2="27" style="stroke:#1b1044ff;stroke-width:2;" /><line x1="55" y1="15" x2="55" y2="27" style="stroke:#1b1044ff;stroke-width:2;" /><line x1="56" y1="15" x2="56" y2="27" style="stroke:#1b1044ff;stroke-width:2;" /><line x1="57" y1="15" x2="57" y2="27" style="stroke:#1b1044ff;stroke-width:2;" /><line x1="58" y1="15" x2="58" y2="27" style="stroke:#1b1044ff;stroke-width:2;" /><line x1="59" y1="15" x2="59" y2="27" style="stroke:#1b1044ff;stroke-width:2;" /><line x1="60" y1="15" x2="60" y2="27" style="stroke:#1b1044ff;stroke-width:2;" /><line x1="61" y1="15" x2="61" y2="27" style="stroke:#1b1044ff;stroke-width:2;" /><line x1="62" y1="15" x2="62" y2="27" style="stroke:#1b1044ff;stroke-width:2;" /><line x1="63" y1="15" x2="63" y2="27" style="stroke:#231151ff;stroke-width:2;" /><line x1="64" y1="15" x2="64" y2="27" style="stroke:#231151ff;stroke-width:2;" /><line x1="65" y1="15" x2="65" y2="27" style="stroke:#231151ff;stroke-width:2;" /><line x1="66" y1="15" x2="66" y2="27" style="stroke:#231151ff;stroke-width:2;" /><line x1="67" y1="15" x2="67" y2="27" style="stroke:#231151ff;stroke-width:2;" /><line x1="68" y1="15" x2="68" y2="27" style="stroke:#231151ff;stroke-width:2;" /><line x1="69" y1="15" x2="69" y2="27" style="stroke:#231151ff;stroke-width:2;" /><line x1="70" y1="15" x2="70" y2="27" style="stroke:#231151ff;stroke-width:2;" /><line x1="71" y1="15" x2="71" y2="27" style="stroke:#231151ff;stroke-width:2;" /><line x1="72" y1="15" x2="72" y2="27" style="stroke:#2b115eff;stroke-width:2;" /><line x1="73" y1="15" x2="73" y2="27" style="stroke:#2b115eff;stroke-width:2;" /><line x1="74" y1="15" x2="74" y2="27" style="stroke:#2b115eff;stroke-width:2;" /><line x1="75" y1="15" x2="75" y2="27" style="stroke:#2b115eff;stroke-width:2;" /><line x1="76" y1="15" x2="76" y2="27" style="stroke:#2b115eff;stroke-width:2;" /><line x1="77" y1="15" x2="77" y2="27" style="stroke:#2b115eff;stroke-width:2;" /><line x1="78" y1="15" x2="78" y2="27" style="stroke:#2b115eff;stroke-width:2;" /><line x1="79" y1="15" x2="79" y2="27" style="stroke:#2b115eff;stroke-width:2;" /><line x1="80" y1="15" x2="80" y2="27" style="stroke:#2b115eff;stroke-width:2;" /><line x1="81" y1="15" x2="81" y2="27" style="stroke:#341069ff;stroke-width:2;" /><line x1="82" y1="15" x2="82" y2="27" style="stroke:#341069ff;stroke-width:2;" /><line x1="83" y1="15" x2="83" y2="27" style="stroke:#341069ff;stroke-width:2;" /><line x1="84" y1="15" x2="84" y2="27" style="stroke:#341069ff;stroke-width:2;" /><line x1="85" y1="15" x2="85" y2="27" style="stroke:#341069ff;stroke-width:2;" /><line x1="86" y1="15" x2="86" y2="27" style="stroke:#341069ff;stroke-width:2;" /><line x1="87" y1="15" x2="87" y2="27" style="stroke:#341069ff;stroke-width:2;" /><line x1="88" y1="15" x2="88" y2="27" style="stroke:#341069ff;stroke-width:2;" /><line x1="89" y1="15" x2="89" y2="27" style="stroke:#341069ff;stroke-width:2;" /><line x1="90" y1="15" x2="90" y2="27" style="stroke:#3d0f71ff;stroke-width:2;" /><line x1="91" y1="15" x2="91" y2="27" style="stroke:#3d0f71ff;stroke-width:2;" /><line x1="92" y1="15" x2="92" y2="27" style="stroke:#3d0f71ff;stroke-width:2;" /><line x1="93" y1="15" x2="93" y2="27" style="stroke:#3d0f71ff;stroke-width:2;" /><line x1="94" y1="15" x2="94" y2="27" style="stroke:#3d0f71ff;stroke-width:2;" /><line x1="95" y1="15" x2="95" y2="27" style="stroke:#3d0f71ff;stroke-width:2;" /><line x1="96" y1="15" x2="96" y2="27" style="stroke:#3d0f71ff;stroke-width:2;" /><line x1="97" y1="15" x2="97" y2="27" style="stroke:#3d0f71ff;stroke-width:2;" /><line x1="98" y1="15" x2="98" y2="27" style="stroke:#3d0f71ff;stroke-width:2;" /><line x1="99" y1="15" x2="99" y2="27" style="stroke:#460f77ff;stroke-width:2;" /><line x1="100" y1="15" x2="100" y2="27" style="stroke:#460f77ff;stroke-width:2;" /><line x1="101" y1="15" x2="101" y2="27" style="stroke:#460f77ff;stroke-width:2;" /><line x1="102" y1="15" x2="102" y2="27" style="stroke:#460f77ff;stroke-width:2;" /><line x1="103" y1="15" x2="103" y2="27" style="stroke:#460f77ff;stroke-width:2;" /><line x1="104" y1="15" x2="104" y2="27" style="stroke:#460f77ff;stroke-width:2;" /><line x1="105" y1="15" x2="105" y2="27" style="stroke:#460f77ff;stroke-width:2;" /><line x1="106" y1="15" x2="106" y2="27" style="stroke:#460f77ff;stroke-width:2;" /><line x1="107" y1="15" x2="107" y2="27" style="stroke:#460f77ff;stroke-width:2;" /><line x1="108" y1="15" x2="108" y2="27" style="stroke:#4e117bff;stroke-width:2;" /><line x1="109" y1="15" x2="109" y2="27" style="stroke:#4e117bff;stroke-width:2;" /><line x1="110" y1="15" x2="110" y2="27" style="stroke:#4e117bff;stroke-width:2;" /><line x1="111" y1="15" x2="111" y2="27" style="stroke:#4e117bff;stroke-width:2;" /><line x1="112" y1="15" x2="112" y2="27" style="stroke:#4e117bff;stroke-width:2;" /><line x1="113" y1="15" x2="113" y2="27" style="stroke:#4e117bff;stroke-width:2;" /><line x1="114" y1="15" x2="114" y2="27" style="stroke:#4e117bff;stroke-width:2;" /><line x1="115" y1="15" x2="115" y2="27" style="stroke:#4e117bff;stroke-width:2;" /><line x1="116" y1="15" x2="116" y2="27" style="stroke:#4e117bff;stroke-width:2;" /><line x1="117" y1="15" x2="117" y2="27" style="stroke:#56147dff;stroke-width:2;" /><line x1="118" y1="15" x2="118" y2="27" style="stroke:#56147dff;stroke-width:2;" /><line x1="119" y1="15" x2="119" y2="27" style="stroke:#56147dff;stroke-width:2;" /><line x1="120" y1="15" x2="120" y2="27" style="stroke:#56147dff;stroke-width:2;" /><line x1="121" y1="15" x2="121" y2="27" style="stroke:#56147dff;stroke-width:2;" /><line x1="122" y1="15" x2="122" y2="27" style="stroke:#56147dff;stroke-width:2;" /><line x1="123" y1="15" x2="123" y2="27" style="stroke:#56147dff;stroke-width:2;" /><line x1="124" y1="15" x2="124" y2="27" style="stroke:#56147dff;stroke-width:2;" /><line x1="125" y1="15" x2="125" y2="27" style="stroke:#56147dff;stroke-width:2;" /><line x1="126" y1="15" x2="126" y2="27" style="stroke:#5f177fff;stroke-width:2;" /><line x1="127" y1="15" x2="127" y2="27" style="stroke:#5f177fff;stroke-width:2;" /><line x1="128" y1="15" x2="128" y2="27" style="stroke:#5f177fff;stroke-width:2;" /><line x1="129" y1="15" x2="129" y2="27" style="stroke:#5f177fff;stroke-width:2;" /><line x1="130" y1="15" x2="130" y2="27" style="stroke:#5f177fff;stroke-width:2;" /><line x1="131" y1="15" x2="131" y2="27" style="stroke:#5f177fff;stroke-width:2;" /><line x1="132" y1="15" x2="132" y2="27" style="stroke:#5f177fff;stroke-width:2;" /><line x1="133" y1="15" x2="133" y2="27" style="stroke:#5f177fff;stroke-width:2;" /><line x1="134" y1="15" x2="134" y2="27" style="stroke:#5f177fff;stroke-width:2;" /><line x1="135" y1="15" x2="135" y2="27" style="stroke:#671b80ff;stroke-width:2;" /><line x1="136" y1="15" x2="136" y2="27" style="stroke:#671b80ff;stroke-width:2;" /><line x1="137" y1="15" x2="137" y2="27" style="stroke:#671b80ff;stroke-width:2;" /><line x1="138" y1="15" x2="138" y2="27" style="stroke:#671b80ff;stroke-width:2;" /><line x1="139" y1="15" x2="139" y2="27" style="stroke:#671b80ff;stroke-width:2;" /><line x1="140" y1="15" x2="140" y2="27" style="stroke:#671b80ff;stroke-width:2;" /><line x1="141" y1="15" x2="141" y2="27" style="stroke:#671b80ff;stroke-width:2;" /><line x1="142" y1="15" x2="142" y2="27" style="stroke:#671b80ff;stroke-width:2;" /><line x1="143" y1="15" x2="143" y2="27" style="stroke:#671b80ff;stroke-width:2;" /><line x1="144" y1="15" x2="144" y2="27" style="stroke:#6f1e81ff;stroke-width:2;" /><line x1="145" y1="15" x2="145" y2="27" style="stroke:#6f1e81ff;stroke-width:2;" /><line x1="146" y1="15" x2="146" y2="27" style="stroke:#6f1e81ff;stroke-width:2;" /><line x1="147" y1="15" x2="147" y2="27" style="stroke:#6f1e81ff;stroke-width:2;" /><line x1="148" y1="15" x2="148" y2="27" style="stroke:#6f1e81ff;stroke-width:2;" /><line x1="149" y1="15" x2="149" y2="27" style="stroke:#6f1e81ff;stroke-width:2;" /><line x1="150" y1="15" x2="150" y2="27" style="stroke:#6f1e81ff;stroke-width:2;" /><line x1="151" y1="15" x2="151" y2="27" style="stroke:#6f1e81ff;stroke-width:2;" /><line x1="152" y1="15" x2="152" y2="27" style="stroke:#6f1e81ff;stroke-width:2;" /><line x1="153" y1="15" x2="153" y2="27" style="stroke:#772181ff;stroke-width:2;" /><line x1="154" y1="15" x2="154" y2="27" style="stroke:#772181ff;stroke-width:2;" /><line x1="155" y1="15" x2="155" y2="27" style="stroke:#772181ff;stroke-width:2;" /><line x1="156" y1="15" x2="156" y2="27" style="stroke:#772181ff;stroke-width:2;" /><line x1="157" y1="15" x2="157" y2="27" style="stroke:#772181ff;stroke-width:2;" /><line x1="158" y1="15" x2="158" y2="27" style="stroke:#772181ff;stroke-width:2;" /><line x1="159" y1="15" x2="159" y2="27" style="stroke:#772181ff;stroke-width:2;" /><line x1="160" y1="15" x2="160" y2="27" style="stroke:#772181ff;stroke-width:2;" /><line x1="161" y1="15" x2="161" y2="27" style="stroke:#772181ff;stroke-width:2;" /><line x1="162" y1="15" x2="162" y2="27" style="stroke:#7f2482ff;stroke-width:2;" /><line x1="163" y1="15" x2="163" y2="27" style="stroke:#7f2482ff;stroke-width:2;" /><line x1="164" y1="15" x2="164" y2="27" style="stroke:#7f2482ff;stroke-width:2;" /><line x1="165" y1="15" x2="165" y2="27" style="stroke:#7f2482ff;stroke-width:2;" /><line x1="166" y1="15" x2="166" y2="27" style="stroke:#7f2482ff;stroke-width:2;" /><line x1="167" y1="15" x2="167" y2="27" style="stroke:#7f2482ff;stroke-width:2;" /><line x1="168" y1="15" x2="168" y2="27" style="stroke:#7f2482ff;stroke-width:2;" /><line x1="169" y1="15" x2="169" y2="27" style="stroke:#7f2482ff;stroke-width:2;" /><line x1="170" y1="15" x2="170" y2="27" style="stroke:#7f2482ff;stroke-width:2;" /><line x1="171" y1="15" x2="171" y2="27" style="stroke:#872781ff;stroke-width:2;" /><line x1="172" y1="15" x2="172" y2="27" style="stroke:#872781ff;stroke-width:2;" /><line x1="173" y1="15" x2="173" y2="27" style="stroke:#872781ff;stroke-width:2;" /><line x1="174" y1="15" x2="174" y2="27" style="stroke:#872781ff;stroke-width:2;" /><line x1="175" y1="15" x2="175" y2="27" style="stroke:#872781ff;stroke-width:2;" /><line x1="176" y1="15" x2="176" y2="27" style="stroke:#872781ff;stroke-width:2;" /><line x1="177" y1="15" x2="177" y2="27" style="stroke:#872781ff;stroke-width:2;" /><line x1="178" y1="15" x2="178" y2="27" style="stroke:#872781ff;stroke-width:2;" /><line x1="179" y1="15" x2="179" y2="27" style="stroke:#872781ff;stroke-width:2;" /><line x1="180" y1="15" x2="180" y2="27" style="stroke:#902a81ff;stroke-width:2;" /><line x1="181" y1="15" x2="181" y2="27" style="stroke:#902a81ff;stroke-width:2;" /><line x1="182" y1="15" x2="182" y2="27" style="stroke:#902a81ff;stroke-width:2;" /><line x1="183" y1="15" x2="183" y2="27" style="stroke:#902a81ff;stroke-width:2;" /><line x1="184" y1="15" x2="184" y2="27" style="stroke:#902a81ff;stroke-width:2;" /><line x1="185" y1="15" x2="185" y2="27" style="stroke:#902a81ff;stroke-width:2;" /><line x1="186" y1="15" x2="186" y2="27" style="stroke:#902a81ff;stroke-width:2;" /><line x1="187" y1="15" x2="187" y2="27" style="stroke:#902a81ff;stroke-width:2;" /><line x1="188" y1="15" x2="188" y2="27" style="stroke:#902a81ff;stroke-width:2;" /><line x1="189" y1="15" x2="189" y2="27" style="stroke:#982d80ff;stroke-width:2;" /><line x1="190" y1="15" x2="190" y2="27" style="stroke:#982d80ff;stroke-width:2;" /><line x1="191" y1="15" x2="191" y2="27" style="stroke:#982d80ff;stroke-width:2;" /><line x1="192" y1="15" x2="192" y2="27" style="stroke:#982d80ff;stroke-width:2;" /><line x1="193" y1="15" x2="193" y2="27" style="stroke:#982d80ff;stroke-width:2;" /><line x1="194" y1="15" x2="194" y2="27" style="stroke:#982d80ff;stroke-width:2;" /><line x1="195" y1="15" x2="195" y2="27" style="stroke:#982d80ff;stroke-width:2;" /><line x1="196" y1="15" x2="196" y2="27" style="stroke:#982d80ff;stroke-width:2;" /><line x1="197" y1="15" x2="197" y2="27" style="stroke:#982d80ff;stroke-width:2;" /><line x1="198" y1="15" x2="198" y2="27" style="stroke:#a12f7eff;stroke-width:2;" /><line x1="199" y1="15" x2="199" y2="27" style="stroke:#a12f7eff;stroke-width:2;" /><line x1="200" y1="15" x2="200" y2="27" style="stroke:#a12f7eff;stroke-width:2;" /><line x1="201" y1="15" x2="201" y2="27" style="stroke:#a12f7eff;stroke-width:2;" /><line x1="202" y1="15" x2="202" y2="27" style="stroke:#a12f7eff;stroke-width:2;" /><line x1="203" y1="15" x2="203" y2="27" style="stroke:#a12f7eff;stroke-width:2;" /><line x1="204" y1="15" x2="204" y2="27" style="stroke:#a12f7eff;stroke-width:2;" /><line x1="205" y1="15" x2="205" y2="27" style="stroke:#a12f7eff;stroke-width:2;" /><line x1="206" y1="15" x2="206" y2="27" style="stroke:#a12f7eff;stroke-width:2;" /><line x1="207" y1="15" x2="207" y2="27" style="stroke:#a9327dff;stroke-width:2;" /><line x1="208" y1="15" x2="208" y2="27" style="stroke:#a9327dff;stroke-width:2;" /><line x1="209" y1="15" x2="209" y2="27" style="stroke:#a9327dff;stroke-width:2;" /><line x1="210" y1="15" x2="210" y2="27" style="stroke:#a9327dff;stroke-width:2;" /><line x1="211" y1="15" x2="211" y2="27" style="stroke:#a9327dff;stroke-width:2;" /><line x1="212" y1="15" x2="212" y2="27" style="stroke:#a9327dff;stroke-width:2;" /><line x1="213" y1="15" x2="213" y2="27" style="stroke:#a9327dff;stroke-width:2;" /><line x1="214" y1="15" x2="214" y2="27" style="stroke:#a9327dff;stroke-width:2;" /><line x1="215" y1="15" x2="215" y2="27" style="stroke:#a9327dff;stroke-width:2;" /><line x1="216" y1="15" x2="216" y2="27" style="stroke:#b2357bff;stroke-width:2;" /><line x1="217" y1="15" x2="217" y2="27" style="stroke:#b2357bff;stroke-width:2;" /><line x1="218" y1="15" x2="218" y2="27" style="stroke:#b2357bff;stroke-width:2;" /><line x1="219" y1="15" x2="219" y2="27" style="stroke:#b2357bff;stroke-width:2;" /><line x1="220" y1="15" x2="220" y2="27" style="stroke:#b2357bff;stroke-width:2;" /><line x1="221" y1="15" x2="221" y2="27" style="stroke:#b2357bff;stroke-width:2;" /><line x1="222" y1="15" x2="222" y2="27" style="stroke:#b2357bff;stroke-width:2;" /><line x1="223" y1="15" x2="223" y2="27" style="stroke:#b2357bff;stroke-width:2;" /><line x1="224" y1="15" x2="224" y2="27" style="stroke:#b2357bff;stroke-width:2;" /><line x1="225" y1="15" x2="225" y2="27" style="stroke:#ba3878ff;stroke-width:2;" /><line x1="226" y1="15" x2="226" y2="27" style="stroke:#ba3878ff;stroke-width:2;" /><line x1="227" y1="15" x2="227" y2="27" style="stroke:#ba3878ff;stroke-width:2;" /><line x1="228" y1="15" x2="228" y2="27" style="stroke:#ba3878ff;stroke-width:2;" /><line x1="229" y1="15" x2="229" y2="27" style="stroke:#ba3878ff;stroke-width:2;" /><line x1="230" y1="15" x2="230" y2="27" style="stroke:#ba3878ff;stroke-width:2;" /><line x1="231" y1="15" x2="231" y2="27" style="stroke:#ba3878ff;stroke-width:2;" /><line x1="232" y1="15" x2="232" y2="27" style="stroke:#ba3878ff;stroke-width:2;" /><line x1="233" y1="15" x2="233" y2="27" style="stroke:#ba3878ff;stroke-width:2;" /><line x1="234" y1="15" x2="234" y2="27" style="stroke:#c33b75ff;stroke-width:2;" /><line x1="235" y1="15" x2="235" y2="27" style="stroke:#c33b75ff;stroke-width:2;" /><line x1="236" y1="15" x2="236" y2="27" style="stroke:#c33b75ff;stroke-width:2;" /><line x1="237" y1="15" x2="237" y2="27" style="stroke:#c33b75ff;stroke-width:2;" /><line x1="238" y1="15" x2="238" y2="27" style="stroke:#c33b75ff;stroke-width:2;" /><line x1="239" y1="15" x2="239" y2="27" style="stroke:#c33b75ff;stroke-width:2;" /><line x1="240" y1="15" x2="240" y2="27" style="stroke:#c33b75ff;stroke-width:2;" /><line x1="241" y1="15" x2="241" y2="27" style="stroke:#c33b75ff;stroke-width:2;" /><line x1="242" y1="15" x2="242" y2="27" style="stroke:#c33b75ff;stroke-width:2;" /><line x1="243" y1="15" x2="243" y2="27" style="stroke:#cb3e72ff;stroke-width:2;" /><line x1="244" y1="15" x2="244" y2="27" style="stroke:#cb3e72ff;stroke-width:2;" /><line x1="245" y1="15" x2="245" y2="27" style="stroke:#cb3e72ff;stroke-width:2;" /><line x1="246" y1="15" x2="246" y2="27" style="stroke:#cb3e72ff;stroke-width:2;" /><line x1="247" y1="15" x2="247" y2="27" style="stroke:#cb3e72ff;stroke-width:2;" /><line x1="248" y1="15" x2="248" y2="27" style="stroke:#cb3e72ff;stroke-width:2;" /><line x1="249" y1="15" x2="249" y2="27" style="stroke:#cb3e72ff;stroke-width:2;" /><line x1="250" y1="15" x2="250" y2="27" style="stroke:#cb3e72ff;stroke-width:2;" /><line x1="251" y1="15" x2="251" y2="27" style="stroke:#cb3e72ff;stroke-width:2;" /><line x1="252" y1="15" x2="252" y2="27" style="stroke:#d3426eff;stroke-width:2;" /><line x1="253" y1="15" x2="253" y2="27" style="stroke:#d3426eff;stroke-width:2;" /><line x1="254" y1="15" x2="254" y2="27" style="stroke:#d3426eff;stroke-width:2;" /><line x1="255" y1="15" x2="255" y2="27" style="stroke:#d3426eff;stroke-width:2;" /><line x1="256" y1="15" x2="256" y2="27" style="stroke:#d3426eff;stroke-width:2;" /><line x1="257" y1="15" x2="257" y2="27" style="stroke:#d3426eff;stroke-width:2;" /><line x1="258" y1="15" x2="258" y2="27" style="stroke:#d3426eff;stroke-width:2;" /><line x1="259" y1="15" x2="259" y2="27" style="stroke:#d3426eff;stroke-width:2;" /><line x1="260" y1="15" x2="260" y2="27" style="stroke:#d3426eff;stroke-width:2;" /><line x1="261" y1="15" x2="261" y2="27" style="stroke:#db476aff;stroke-width:2;" /><line x1="262" y1="15" x2="262" y2="27" style="stroke:#db476aff;stroke-width:2;" /><line x1="263" y1="15" x2="263" y2="27" style="stroke:#db476aff;stroke-width:2;" /><line x1="264" y1="15" x2="264" y2="27" style="stroke:#db476aff;stroke-width:2;" /><line x1="265" y1="15" x2="265" y2="27" style="stroke:#db476aff;stroke-width:2;" /><line x1="266" y1="15" x2="266" y2="27" style="stroke:#db476aff;stroke-width:2;" /><line x1="267" y1="15" x2="267" y2="27" style="stroke:#db476aff;stroke-width:2;" /><line x1="268" y1="15" x2="268" y2="27" style="stroke:#db476aff;stroke-width:2;" /><line x1="269" y1="15" x2="269" y2="27" style="stroke:#db476aff;stroke-width:2;" /><line x1="270" y1="15" x2="270" y2="27" style="stroke:#e24d66ff;stroke-width:2;" /><line x1="271" y1="15" x2="271" y2="27" style="stroke:#e24d66ff;stroke-width:2;" /><line x1="272" y1="15" x2="272" y2="27" style="stroke:#e24d66ff;stroke-width:2;" /><line x1="273" y1="15" x2="273" y2="27" style="stroke:#e24d66ff;stroke-width:2;" /><line x1="274" y1="15" x2="274" y2="27" style="stroke:#e24d66ff;stroke-width:2;" /><line x1="275" y1="15" x2="275" y2="27" style="stroke:#e24d66ff;stroke-width:2;" /><line x1="276" y1="15" x2="276" y2="27" style="stroke:#e24d66ff;stroke-width:2;" /><line x1="277" y1="15" x2="277" y2="27" style="stroke:#e24d66ff;stroke-width:2;" /><line x1="278" y1="15" x2="278" y2="27" style="stroke:#e24d66ff;stroke-width:2;" /><line x1="279" y1="15" x2="279" y2="27" style="stroke:#e95362ff;stroke-width:2;" /><line x1="280" y1="15" x2="280" y2="27" style="stroke:#e95362ff;stroke-width:2;" /><line x1="281" y1="15" x2="281" y2="27" style="stroke:#e95362ff;stroke-width:2;" /><line x1="282" y1="15" x2="282" y2="27" style="stroke:#e95362ff;stroke-width:2;" /><line x1="283" y1="15" x2="283" y2="27" style="stroke:#e95362ff;stroke-width:2;" /><line x1="284" y1="15" x2="284" y2="27" style="stroke:#e95362ff;stroke-width:2;" /><line x1="285" y1="15" x2="285" y2="27" style="stroke:#e95362ff;stroke-width:2;" /><line x1="286" y1="15" x2="286" y2="27" style="stroke:#e95362ff;stroke-width:2;" /><line x1="287" y1="15" x2="287" y2="27" style="stroke:#e95362ff;stroke-width:2;" /><line x1="288" y1="15" x2="288" y2="27" style="stroke:#ee5b5fff;stroke-width:2;" /><line x1="289" y1="15" x2="289" y2="27" style="stroke:#ee5b5fff;stroke-width:2;" /><line x1="290" y1="15" x2="290" y2="27" style="stroke:#ee5b5fff;stroke-width:2;" /><line x1="291" y1="15" x2="291" y2="27" style="stroke:#ee5b5fff;stroke-width:2;" /><line x1="292" y1="15" x2="292" y2="27" style="stroke:#ee5b5fff;stroke-width:2;" /><line x1="293" y1="15" x2="293" y2="27" style="stroke:#ee5b5fff;stroke-width:2;" /><line x1="294" y1="15" x2="294" y2="27" style="stroke:#ee5b5fff;stroke-width:2;" /><line x1="295" y1="15" x2="295" y2="27" style="stroke:#ee5b5fff;stroke-width:2;" /><line x1="296" y1="15" x2="296" y2="27" style="stroke:#ee5b5fff;stroke-width:2;" /><line x1="297" y1="15" x2="297" y2="27" style="stroke:#f3635cff;stroke-width:2;" /><line x1="298" y1="15" x2="298" y2="27" style="stroke:#f3635cff;stroke-width:2;" /><line x1="299" y1="15" x2="299" y2="27" style="stroke:#f3635cff;stroke-width:2;" /><line x1="300" y1="15" x2="300" y2="27" style="stroke:#f3635cff;stroke-width:2;" /><line x1="301" y1="15" x2="301" y2="27" style="stroke:#f3635cff;stroke-width:2;" /><line x1="302" y1="15" x2="302" y2="27" style="stroke:#f3635cff;stroke-width:2;" /><line x1="303" y1="15" x2="303" y2="27" style="stroke:#f3635cff;stroke-width:2;" /><line x1="304" y1="15" x2="304" y2="27" style="stroke:#f3635cff;stroke-width:2;" /><line x1="305" y1="15" x2="305" y2="27" style="stroke:#f3635cff;stroke-width:2;" /><line x1="306" y1="15" x2="306" y2="27" style="stroke:#f66c5cff;stroke-width:2;" /><line x1="307" y1="15" x2="307" y2="27" style="stroke:#f66c5cff;stroke-width:2;" /><line x1="308" y1="15" x2="308" y2="27" style="stroke:#f66c5cff;stroke-width:2;" /><line x1="309" y1="15" x2="309" y2="27" style="stroke:#f66c5cff;stroke-width:2;" /><line x1="310" y1="15" x2="310" y2="27" style="stroke:#f66c5cff;stroke-width:2;" /><line x1="311" y1="15" x2="311" y2="27" style="stroke:#f66c5cff;stroke-width:2;" /><line x1="312" y1="15" x2="312" y2="27" style="stroke:#f66c5cff;stroke-width:2;" /><line x1="313" y1="15" x2="313" y2="27" style="stroke:#f66c5cff;stroke-width:2;" /><line x1="314" y1="15" x2="314" y2="27" style="stroke:#f66c5cff;stroke-width:2;" /><line x1="315" y1="15" x2="315" y2="27" style="stroke:#f9765cff;stroke-width:2;" /><line x1="316" y1="15" x2="316" y2="27" style="stroke:#f9765cff;stroke-width:2;" /><line x1="317" y1="15" x2="317" y2="27" style="stroke:#f9765cff;stroke-width:2;" /><line x1="318" y1="15" x2="318" y2="27" style="stroke:#f9765cff;stroke-width:2;" /><line x1="319" y1="15" x2="319" y2="27" style="stroke:#f9765cff;stroke-width:2;" /><line x1="320" y1="15" x2="320" y2="27" style="stroke:#f9765cff;stroke-width:2;" /><line x1="321" y1="15" x2="321" y2="27" style="stroke:#f9765cff;stroke-width:2;" /><line x1="322" y1="15" x2="322" y2="27" style="stroke:#f9765cff;stroke-width:2;" /><line x1="323" y1="15" x2="323" y2="27" style="stroke:#f9765cff;stroke-width:2;" /><line x1="324" y1="15" x2="324" y2="27" style="stroke:#fb805eff;stroke-width:2;" /><line x1="325" y1="15" x2="325" y2="27" style="stroke:#fb805eff;stroke-width:2;" /><line x1="326" y1="15" x2="326" y2="27" style="stroke:#fb805eff;stroke-width:2;" /><line x1="327" y1="15" x2="327" y2="27" style="stroke:#fb805eff;stroke-width:2;" /><line x1="328" y1="15" x2="328" y2="27" style="stroke:#fb805eff;stroke-width:2;" /><line x1="329" y1="15" x2="329" y2="27" style="stroke:#fb805eff;stroke-width:2;" /><line x1="330" y1="15" x2="330" y2="27" style="stroke:#fb805eff;stroke-width:2;" /><line x1="331" y1="15" x2="331" y2="27" style="stroke:#fb805eff;stroke-width:2;" /><line x1="332" y1="15" x2="332" y2="27" style="stroke:#fb805eff;stroke-width:2;" /><line x1="333" y1="15" x2="333" y2="27" style="stroke:#fc8a62ff;stroke-width:2;" /><line x1="334" y1="15" x2="334" y2="27" style="stroke:#fc8a62ff;stroke-width:2;" /><line x1="335" y1="15" x2="335" y2="27" style="stroke:#fc8a62ff;stroke-width:2;" /><line x1="336" y1="15" x2="336" y2="27" style="stroke:#fc8a62ff;stroke-width:2;" /><line x1="337" y1="15" x2="337" y2="27" style="stroke:#fc8a62ff;stroke-width:2;" /><line x1="338" y1="15" x2="338" y2="27" style="stroke:#fc8a62ff;stroke-width:2;" /><line x1="339" y1="15" x2="339" y2="27" style="stroke:#fc8a62ff;stroke-width:2;" /><line x1="340" y1="15" x2="340" y2="27" style="stroke:#fc8a62ff;stroke-width:2;" /><line x1="341" y1="15" x2="341" y2="27" style="stroke:#fc8a62ff;stroke-width:2;" /><line x1="342" y1="15" x2="342" y2="27" style="stroke:#fd9466ff;stroke-width:2;" /><line x1="343" y1="15" x2="343" y2="27" style="stroke:#fd9466ff;stroke-width:2;" /><line x1="344" y1="15" x2="344" y2="27" style="stroke:#fd9466ff;stroke-width:2;" /><line x1="345" y1="15" x2="345" y2="27" style="stroke:#fd9466ff;stroke-width:2;" /><line x1="346" y1="15" x2="346" y2="27" style="stroke:#fd9466ff;stroke-width:2;" /><line x1="347" y1="15" x2="347" y2="27" style="stroke:#fd9466ff;stroke-width:2;" /><line x1="348" y1="15" x2="348" y2="27" style="stroke:#fd9466ff;stroke-width:2;" /><line x1="349" y1="15" x2="349" y2="27" style="stroke:#fd9466ff;stroke-width:2;" /><line x1="350" y1="15" x2="350" y2="27" style="stroke:#fd9466ff;stroke-width:2;" /><line x1="351" y1="15" x2="351" y2="27" style="stroke:#fe9d6cff;stroke-width:2;" /><line x1="352" y1="15" x2="352" y2="27" style="stroke:#fe9d6cff;stroke-width:2;" /><line x1="353" y1="15" x2="353" y2="27" style="stroke:#fe9d6cff;stroke-width:2;" /><line x1="354" y1="15" x2="354" y2="27" style="stroke:#fe9d6cff;stroke-width:2;" /><line x1="355" y1="15" x2="355" y2="27" style="stroke:#fe9d6cff;stroke-width:2;" /><line x1="356" y1="15" x2="356" y2="27" style="stroke:#fe9d6cff;stroke-width:2;" /><line x1="357" y1="15" x2="357" y2="27" style="stroke:#fe9d6cff;stroke-width:2;" /><line x1="358" y1="15" x2="358" y2="27" style="stroke:#fe9d6cff;stroke-width:2;" /><line x1="359" y1="15" x2="359" y2="27" style="stroke:#fe9d6cff;stroke-width:2;" /><line x1="360" y1="15" x2="360" y2="27" style="stroke:#ffa772ff;stroke-width:2;" /><line x1="361" y1="15" x2="361" y2="27" style="stroke:#ffa772ff;stroke-width:2;" /><line x1="362" y1="15" x2="362" y2="27" style="stroke:#ffa772ff;stroke-width:2;" /><line x1="363" y1="15" x2="363" y2="27" style="stroke:#ffa772ff;stroke-width:2;" /><line x1="364" y1="15" x2="364" y2="27" style="stroke:#ffa772ff;stroke-width:2;" /><line x1="365" y1="15" x2="365" y2="27" style="stroke:#ffa772ff;stroke-width:2;" /><line x1="366" y1="15" x2="366" y2="27" style="stroke:#ffa772ff;stroke-width:2;" /><line x1="367" y1="15" x2="367" y2="27" style="stroke:#ffa772ff;stroke-width:2;" /><line x1="368" y1="15" x2="368" y2="27" style="stroke:#ffa772ff;stroke-width:2;" /><line x1="369" y1="15" x2="369" y2="27" style="stroke:#ffb179ff;stroke-width:2;" /><line x1="370" y1="15" x2="370" y2="27" style="stroke:#ffb179ff;stroke-width:2;" /><line x1="371" y1="15" x2="371" y2="27" style="stroke:#ffb179ff;stroke-width:2;" /><line x1="372" y1="15" x2="372" y2="27" style="stroke:#ffb179ff;stroke-width:2;" /><line x1="373" y1="15" x2="373" y2="27" style="stroke:#ffb179ff;stroke-width:2;" /><line x1="374" y1="15" x2="374" y2="27" style="stroke:#ffb179ff;stroke-width:2;" /><line x1="375" y1="15" x2="375" y2="27" style="stroke:#ffb179ff;stroke-width:2;" /><line x1="376" y1="15" x2="376" y2="27" style="stroke:#ffb179ff;stroke-width:2;" /><line x1="377" y1="15" x2="377" y2="27" style="stroke:#ffb179ff;stroke-width:2;" /><line x1="378" y1="15" x2="378" y2="27" style="stroke:#ffba80ff;stroke-width:2;" /><line x1="379" y1="15" x2="379" y2="27" style="stroke:#ffba80ff;stroke-width:2;" /><line x1="380" y1="15" x2="380" y2="27" style="stroke:#ffba80ff;stroke-width:2;" /><line x1="381" y1="15" x2="381" y2="27" style="stroke:#ffba80ff;stroke-width:2;" /><line x1="382" y1="15" x2="382" y2="27" style="stroke:#ffba80ff;stroke-width:2;" /><line x1="383" y1="15" x2="383" y2="27" style="stroke:#ffba80ff;stroke-width:2;" /><line x1="384" y1="15" x2="384" y2="27" style="stroke:#ffba80ff;stroke-width:2;" /><line x1="385" y1="15" x2="385" y2="27" style="stroke:#ffba80ff;stroke-width:2;" /><line x1="386" y1="15" x2="386" y2="27" style="stroke:#ffba80ff;stroke-width:2;" /><line x1="387" y1="15" x2="387" y2="27" style="stroke:#ffc488ff;stroke-width:2;" /><line x1="388" y1="15" x2="388" y2="27" style="stroke:#ffc488ff;stroke-width:2;" /><line x1="389" y1="15" x2="389" y2="27" style="stroke:#ffc488ff;stroke-width:2;" /><line x1="390" y1="15" x2="390" y2="27" style="stroke:#ffc488ff;stroke-width:2;" /><line x1="391" y1="15" x2="391" y2="27" style="stroke:#ffc488ff;stroke-width:2;" /><line x1="392" y1="15" x2="392" y2="27" style="stroke:#ffc488ff;stroke-width:2;" /><line x1="393" y1="15" x2="393" y2="27" style="stroke:#ffc488ff;stroke-width:2;" /><line x1="394" y1="15" x2="394" y2="27" style="stroke:#ffc488ff;stroke-width:2;" /><line x1="395" y1="15" x2="395" y2="27" style="stroke:#ffc488ff;stroke-width:2;" /><line x1="396" y1="15" x2="396" y2="27" style="stroke:#fece90ff;stroke-width:2;" /><line x1="397" y1="15" x2="397" y2="27" style="stroke:#fece90ff;stroke-width:2;" /><line x1="398" y1="15" x2="398" y2="27" style="stroke:#fece90ff;stroke-width:2;" /><line x1="399" y1="15" x2="399" y2="27" style="stroke:#fece90ff;stroke-width:2;" /><line x1="400" y1="15" x2="400" y2="27" style="stroke:#fece90ff;stroke-width:2;" /><line x1="401" y1="15" x2="401" y2="27" style="stroke:#fece90ff;stroke-width:2;" /><line x1="402" y1="15" x2="402" y2="27" style="stroke:#fece90ff;stroke-width:2;" /><line x1="403" y1="15" x2="403" y2="27" style="stroke:#fece90ff;stroke-width:2;" /><line x1="404" y1="15" x2="404" y2="27" style="stroke:#fece90ff;stroke-width:2;" /><line x1="405" y1="15" x2="405" y2="27" style="stroke:#fed799ff;stroke-width:2;" /><line x1="406" y1="15" x2="406" y2="27" style="stroke:#fed799ff;stroke-width:2;" /><line x1="407" y1="15" x2="407" y2="27" style="stroke:#fed799ff;stroke-width:2;" /><line x1="408" y1="15" x2="408" y2="27" style="stroke:#fed799ff;stroke-width:2;" /><line x1="409" y1="15" x2="409" y2="27" style="stroke:#fed799ff;stroke-width:2;" /><line x1="410" y1="15" x2="410" y2="27" style="stroke:#fed799ff;stroke-width:2;" /><line x1="411" y1="15" x2="411" y2="27" style="stroke:#fed799ff;stroke-width:2;" /><line x1="412" y1="15" x2="412" y2="27" style="stroke:#fed799ff;stroke-width:2;" /><line x1="413" y1="15" x2="413" y2="27" style="stroke:#fed799ff;stroke-width:2;" /><line x1="414" y1="15" x2="414" y2="27" style="stroke:#fee1a2ff;stroke-width:2;" /><line x1="415" y1="15" x2="415" y2="27" style="stroke:#fee1a2ff;stroke-width:2;" /><line x1="416" y1="15" x2="416" y2="27" style="stroke:#fee1a2ff;stroke-width:2;" /><line x1="417" y1="15" x2="417" y2="27" style="stroke:#fee1a2ff;stroke-width:2;" /><line x1="418" y1="15" x2="418" y2="27" style="stroke:#fee1a2ff;stroke-width:2;" /><line x1="419" y1="15" x2="419" y2="27" style="stroke:#fee1a2ff;stroke-width:2;" /><line x1="420" y1="15" x2="420" y2="27" style="stroke:#fee1a2ff;stroke-width:2;" /><line x1="421" y1="15" x2="421" y2="27" style="stroke:#fee1a2ff;stroke-width:2;" /><line x1="422" y1="15" x2="422" y2="27" style="stroke:#fee1a2ff;stroke-width:2;" /><line x1="423" y1="15" x2="423" y2="27" style="stroke:#fdeaacff;stroke-width:2;" /><line x1="424" y1="15" x2="424" y2="27" style="stroke:#fdeaacff;stroke-width:2;" /><line x1="425" y1="15" x2="425" y2="27" style="stroke:#fdeaacff;stroke-width:2;" /><line x1="426" y1="15" x2="426" y2="27" style="stroke:#fdeaacff;stroke-width:2;" /><line x1="427" y1="15" x2="427" y2="27" style="stroke:#fdeaacff;stroke-width:2;" /><line x1="428" y1="15" x2="428" y2="27" style="stroke:#fdeaacff;stroke-width:2;" /><line x1="429" y1="15" x2="429" y2="27" style="stroke:#fdeaacff;stroke-width:2;" /><line x1="430" y1="15" x2="430" y2="27" style="stroke:#fdeaacff;stroke-width:2;" /><line x1="431" y1="15" x2="431" y2="27" style="stroke:#fdeaacff;stroke-width:2;" /><line x1="432" y1="15" x2="432" y2="27" style="stroke:#fdf4b5ff;stroke-width:2;" /><line x1="433" y1="15" x2="433" y2="27" style="stroke:#fdf4b5ff;stroke-width:2;" /><line x1="434" y1="15" x2="434" y2="27" style="stroke:#fdf4b5ff;stroke-width:2;" /><line x1="435" y1="15" x2="435" y2="27" style="stroke:#fdf4b5ff;stroke-width:2;" /><line x1="436" y1="15" x2="436" y2="27" style="stroke:#fdf4b5ff;stroke-width:2;" /><line x1="437" y1="15" x2="437" y2="27" style="stroke:#fdf4b5ff;stroke-width:2;" /><line x1="438" y1="15" x2="438" y2="27" style="stroke:#fdf4b5ff;stroke-width:2;" /><line x1="439" y1="15" x2="439" y2="27" style="stroke:#fdf4b5ff;stroke-width:2;" /><line x1="440" y1="15" x2="440" y2="27" style="stroke:#fdf4b5ff;stroke-width:2;" /><line x1="441" y1="15" x2="441" y2="27" style="stroke:#fcfdbfff;stroke-width:2;" /><line x1="442" y1="15" x2="442" y2="27" style="stroke:#fcfdbfff;stroke-width:2;" /><line x1="443" y1="15" x2="443" y2="27" style="stroke:#fcfdbfff;stroke-width:2;" /><line x1="444" y1="15" x2="444" y2="27" style="stroke:#fcfdbfff;stroke-width:2;" /><line x1="445" y1="15" x2="445" y2="27" style="stroke:#fcfdbfff;stroke-width:2;" /><line x1="446" y1="15" x2="446" y2="27" style="stroke:#fcfdbfff;stroke-width:2;" /><line x1="447" y1="15" x2="447" y2="27" style="stroke:#fcfdbfff;stroke-width:2;" /><line x1="448" y1="15" x2="448" y2="27" style="stroke:#fcfdbfff;stroke-width:2;" /><line x1="449" y1="15" x2="449" y2="27" style="stroke:#fcfdbfff;stroke-width:2;" /><text x="0" y="38" style="text-anchor:start; font-size:11px; font:Arial; fill:black">10.0</text><text x="75" y="38"; style="text-anchor:middle; font-size:11px; font:Arial; fill:black">50.8</text><text x="150" y="38"; style="text-anchor:middle; font-size:11px; font:Arial; fill:black">91.7</text><text x="225" y="38"; style="text-anchor:middle; font-size:11px; font:Arial; fill:black">132.5</text><text x="300" y="38"; style="text-anchor:middle; font-size:11px; font:Arial; fill:black">173.3</text><text x="375" y="38"; style="text-anchor:middle; font-size:11px; font:Arial; fill:black">214.2</text><text x="450" y="38" style="text-anchor:end; font-size:11px; font:Arial; fill:black">255.0</text><text x="0" y="12" style="font-size:11px; font:Arial; fill:black">Vegetation Loss (%)</text></svg>\n", "</div>\n", " \n", - " <div class="folium-map" id="map_4bc862ae9feec76e57cd948a5a9843c6" ></div>\n", + " <div class="folium-map" id="map_f900e662354a1f61c74acdad4ca22449" ></div>\n", " \n", "</body>\n", "<script>\n", " \n", " \n", - " var map_4bc862ae9feec76e57cd948a5a9843c6 = L.map(\n", - " "map_4bc862ae9feec76e57cd948a5a9843c6",\n", + " var map_f900e662354a1f61c74acdad4ca22449 = L.map(\n", + " "map_f900e662354a1f61c74acdad4ca22449",\n", " {\n", " center: [32.97, -108.15],\n", " crs: L.CRS.EPSG3857,\n", @@ -18030,7 +18030,7 @@ "\n", " \n", " \n", - " var tile_layer_30d927e5e0316aaf787a4caddeb797bc = L.tileLayer(\n", + " var tile_layer_9d26282261d262d03cbd291caffe9415 = L.tileLayer(\n", " "https://tile.openstreetmap.org/{z}/{x}/{y}.png",\n", " {\n", " "minZoom": 0,\n", @@ -18047,10 +18047,10 @@ " );\n", " \n", " \n", - " tile_layer_30d927e5e0316aaf787a4caddeb797bc.addTo(map_4bc862ae9feec76e57cd948a5a9843c6);\n", + " tile_layer_9d26282261d262d03cbd291caffe9415.addTo(map_f900e662354a1f61c74acdad4ca22449);\n", " \n", " \n", - " var tile_layer_2f476bd641cf6e2331881ac86cf09888 = L.tileLayer(\n", + " var tile_layer_ba4cdf5f80ffd25ff18b6491c048d9ca = L.tileLayer(\n", " "https://dev.openveda.cloud/api/raster/collections/opera-all-vars-daily/items/opera-2025-06-24/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=VEG-ANOM-MAX\\u0026color_formula=gamma+r+1.05\\u0026colormap_name=magma\\u0026rescale=10%2C100",\n", " {\n", " "minZoom": 0,\n", @@ -18067,16 +18067,16 @@ " );\n", " \n", " \n", - " tile_layer_2f476bd641cf6e2331881ac86cf09888.addTo(map_4bc862ae9feec76e57cd948a5a9843c6);\n", + " tile_layer_ba4cdf5f80ffd25ff18b6491c048d9ca.addTo(map_f900e662354a1f61c74acdad4ca22449);\n", " \n", "</script>\n", "</html>\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen>" ], "text/plain": [ - "" + "" ] }, - "execution_count": 180, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } From 96954628d0c8ee0a71d1ddc01d27231c2867f146 Mon Sep 17 00:00:00 2001 From: nbgitpuller Date: Mon, 24 Nov 2025 19:44:17 +0000 Subject: [PATCH 07/14] Automatic commit by nbgitpuller --- user_data_notebooks/New_Mexico_Fire_2025.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/user_data_notebooks/New_Mexico_Fire_2025.ipynb b/user_data_notebooks/New_Mexico_Fire_2025.ipynb index a4522a6..d101e71 100644 --- a/user_data_notebooks/New_Mexico_Fire_2025.ipynb +++ b/user_data_notebooks/New_Mexico_Fire_2025.ipynb @@ -18092,7 +18092,7 @@ ], "metadata": { "kernelspec": { - "display_name": "base", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -18106,7 +18106,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.2" + "version": "3.12.11" } }, "nbformat": 4, From a32845bf948a3ae68b305ba82f9ba944245052b4 Mon Sep 17 00:00:00 2001 From: nbgitpuller Date: Tue, 9 Dec 2025 18:01:23 +0000 Subject: [PATCH 08/14] Automatic commit by nbgitpuller --- Jupyterhub/clone_conversion_repo.ipynb | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Jupyterhub/clone_conversion_repo.ipynb b/Jupyterhub/clone_conversion_repo.ipynb index b8b3bd2..0d87e6e 100644 --- a/Jupyterhub/clone_conversion_repo.ipynb +++ b/Jupyterhub/clone_conversion_repo.ipynb @@ -48,9 +48,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cloning disasters-aws-conversion repository...\n", + "Successfully cloned disasters-aws-conversion\n" + ] + } + ], "source": [ "import os\n", "import subprocess\n", @@ -74,6 +83,13 @@ "else:\n", " print(f\"{repo_name} repository already exists\")" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From 7720b92dde643e25b440e7f0bd22ad766018e720 Mon Sep 17 00:00:00 2001 From: nbgitpuller Date: Thu, 22 Jan 2026 23:00:21 +0000 Subject: [PATCH 09/14] Automatic commit by nbgitpuller --- .github/workflows/deploy-with-password.yml | 0 .github/workflows/preview.yml | 0 .github/workflows/quarto-publish.yml | 0 .gitignore | 0 AWS/AWS_SSO_Remote_Server.qmd | 0 AWS/AWS_SSO_Setup_Guide.qmd | 0 AWS/aws-mfa-setup.qmd | 0 AWS/aws-s3-commands-guide.qmd | 0 DataIngestion/stac-collection.ipynb | 0 GitHub/commands.qmd | 0 GitHub/resources.qmd | 0 GitHub/setup.qmd | 0 GitHub/veda-preview.qmd | 0 Jupyterhub/clone_conversion_repo.ipynb | 0 Jupyterhub/jupyterhub-training-guide.qmd | 0 Jupyterhub/simple_disaster_template.ipynb | 0 LICENSE | 0 Presentations/aws-cost-management.qmd | 0 Presentations/aws-grafana-tutorial.qmd | 0 Presentations/disasters-powerpoint-template.qmd | 0 .../jupyterhub-data-conversions-tutorial.qmd | 0 Presentations/stac-airflow-tutorial.qmd | 0 README.md | 0 SIMPLE_PASSWORD_SETUP.md | 0 _quarto.yml | 0 advanceduser.qmd | 0 auth-check.js | 0 aws.qmd | 0 cog_transformation/__pycache__/date.cpython-39.pyc | Bin .../casagfed-carbonflux-monthgrid-v3.ipynb | 0 cog_transformation/cmip6-transformation.py | 0 cog_transformation/ct-ch4-monthgrid-v2023.ipynb | 0 .../eccodarwin-co2flux-monthgrid-v5.ipynb | 0 cog_transformation/emit-ch4plume-v1.ipynb | 0 .../epa-ch4emission-grid-v2express.ipynb | 0 ...a-ch4emission-grid-v2express_layers_update.ipynb | 0 .../epa-ch4emission-monthgrid-v2.ipynb | 0 cog_transformation/goes-ch4plume-v1.ipynb | 0 .../gosat-based-ch4budget-yeargrid-v1.ipynb | 0 cog_transformation/gra2pes-ghg-monthgrid-v1.ipynb | 0 .../influx-testbed-ghg-concentrations.ipynb | 0 .../lam-testbed-ghg-concentrations.ipynb | 0 .../lpjwsl-wetlandch4-daygrid-v1.ipynb | 0 .../lpjwsl-wetlandch4-monthgrid-v1.ipynb | 0 .../nec-testbed-ghg-concentrations.ipynb | 0 cog_transformation/noaa-gggrn-concentrations.ipynb | 0 .../oco2-mip-co2budget-yeargrid-v1.ipynb | 0 cog_transformation/oco2geos-co2-daygrid-v10r.ipynb | 0 .../odiac-ffco2-monthgrid-v2022.ipynb | 0 .../odiac-ffco2-monthgrid-v2023.ipynb | 0 .../odiac-ffco2-monthgrid-v2024.ipynb | 0 .../sedac-popdensity-yeargrid5yr-v4.11.ipynb | 0 cog_transformation/vulcan-ffco2-yeargrid-v4.ipynb | 0 contentcuration.qmd | 0 data_transformation_plugins/README.md | 0 data_transformation_plugins/__init__.py | 0 .../ecco_darwin_transformation.py | 0 .../geos_oco2_transformation.py | 0 .../gosat_ch4_transformation.py | 0 data_transformation_plugins/gpw_transformation.py | 0 data_transformation_plugins/push_to_s3.py | 0 .../sample_transformation.ipynb | 0 .../tm5_4dvar_update_noaa_transformation.py | 0 data_workflow/ct-ch4-monthgrid-v2023_Data_Flow.qmd | 0 .../eccodarwin-co2flux-monthgrid-v5_Data_Flow.qmd | 0 data_workflow/emit-ch4plume-v1_Data_Flow.qmd | 0 .../epa-ch4emission-grid-v2express_Data_Flow.qmd | 0 data_workflow/goes-ch4plume-v1_Data_Flow.qmd | 0 .../gosat-based-ch4budget-yeargrid-v1_Data_Flow.qmd | 0 .../gra2pes-ghg-monthgrid-v1_Data_Flow.qmd | 0 .../influx-testbed-ghg-concentrations_Data_Flow.qmd | 0 .../lam-testbed-ghg-concentrations_Data_Flow.qmd | 0 .../lpjeosim-wetlandch4-grid-v1_Data_Flow.qmd | 0 data_workflow/media/.png | Bin .../media/ceos-ch4budget-yeargrid-v1_Data_Flow.png | Bin .../media/ceos-co2budget-yeargrid-v1_Data_Flow.png | Bin .../media/ct-ch4-monthgrid-v2023_Data_Flow.png | Bin .../eccodarwin-co2flux-monthgrid-v5_Data_Flow.png | Bin data_workflow/media/emit-ch4plume-v1_Data_Flow.png | Bin .../epa-ch4emission-grid-v2express_Data_Flow.png | Bin data_workflow/media/goes-ch4plume-v1_Data_Flow.png | Bin .../gosat-based-ch4budget-yeargrid-v1_Data_Flow.png | Bin .../media/gra2pes-ghg-monthgrid-v1_Data_Flow.png | Bin .../influx-testbed-ghg-concentrations_Data_Flow.png | Bin .../lam-testbed-ghg-concentrations_Data_Flow.png | Bin .../media/lpjeosim-wetlandch4-grid-v2_Data_Flow.png | Bin .../micasa-carbonflux-daygrid-v1_Data_Flow.png | Bin .../nec-testbed-ghg-concentrations_Data_Flow.png | Bin .../noaa-gggrn-ch4-concentrations_Data_Flow.png | Bin .../noaa-gggrn-co2-concentrations_Data_Flow.png | Bin .../media/oco2geos-co2-daygrid-v10r_Data_Flow.png | Bin .../media/odiac-ffco2-monthgrid-v2023_Data_Flow.png | Bin .../media/odiac-ffco2-monthgrid-v2024_Data_Flow.png | Bin ...sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.png | Bin .../media/vulcan-ffco2-yeargrid-v4_Data_Flow.png | Bin .../micasa-carbonflux-daygrid-v1_Data_Flow.qmd | 0 .../nec-testbed-ghg-concentrations_Data_Flow.qmd | 0 .../noaa-gggrn-ch4-concentrations_Data_Flow.qmd | 0 .../noaa-gggrn-co2-concentrations_Data_Flow.qmd | 0 .../oco2-mip-co2budget-yeargrid-v1_Data_Flow.qmd | 0 .../oco2geos-co2-daygrid-v10r_Data_Flow.qmd | 0 .../odiac-ffco2-monthgrid-v2024_Data_Flow.qmd | 0 ...sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.qmd | 0 .../vulcan-ffco2-yeargrid-v4_Data_Flow.qmd | 0 data_workflow2/NRT_data_download.qmd | 0 data_workflow2/NRT_directory_structure.qmd | 0 data_workflow2/media/NRT_data.png | Bin data_workflow2/media/NRT_dir.png | Bin datasetingestion.qmd | 0 datatransformationcode.qmd | 0 datausage.qmd | 0 git-github-comprehensive-guide.qmd | 0 index.qmd | 0 jupyterhub.qmd | 0 logo/disasters-logo.svg | 0 logo/disasters_logo.png | Bin logo/ghgc-logo-dark.svg | 0 logo/ghgc-logo-light.svg | 0 password-protect.html | 0 processingreport.qmd | 0 quarto-guide.qmd | 0 requirements.txt | 0 services/apis.qmd | 0 services/jupyterhub.qmd | 0 styles.css | 0 user_data_notebooks/New_Mexico_Fire_2025.ipynb | 0 user_data_notebooks/Texas_Flood_2025.ipynb | 0 utility.qmd | 0 workflow.qmd | 0 129 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .github/workflows/deploy-with-password.yml mode change 100644 => 100755 .github/workflows/preview.yml mode change 100644 => 100755 .github/workflows/quarto-publish.yml mode change 100644 => 100755 .gitignore mode change 100644 => 100755 AWS/AWS_SSO_Remote_Server.qmd mode change 100644 => 100755 AWS/AWS_SSO_Setup_Guide.qmd mode change 100644 => 100755 AWS/aws-mfa-setup.qmd mode change 100644 => 100755 AWS/aws-s3-commands-guide.qmd mode change 100644 => 100755 DataIngestion/stac-collection.ipynb mode change 100644 => 100755 GitHub/commands.qmd mode change 100644 => 100755 GitHub/resources.qmd mode change 100644 => 100755 GitHub/setup.qmd mode change 100644 => 100755 GitHub/veda-preview.qmd mode change 100644 => 100755 Jupyterhub/clone_conversion_repo.ipynb mode change 100644 => 100755 Jupyterhub/jupyterhub-training-guide.qmd mode change 100644 => 100755 Jupyterhub/simple_disaster_template.ipynb mode change 100644 => 100755 LICENSE mode change 100644 => 100755 Presentations/aws-cost-management.qmd mode change 100644 => 100755 Presentations/aws-grafana-tutorial.qmd mode change 100644 => 100755 Presentations/disasters-powerpoint-template.qmd mode change 100644 => 100755 Presentations/jupyterhub-data-conversions-tutorial.qmd mode change 100644 => 100755 Presentations/stac-airflow-tutorial.qmd mode change 100644 => 100755 README.md mode change 100644 => 100755 SIMPLE_PASSWORD_SETUP.md mode change 100644 => 100755 _quarto.yml mode change 100644 => 100755 advanceduser.qmd mode change 100644 => 100755 auth-check.js mode change 100644 => 100755 aws.qmd mode change 100644 => 100755 cog_transformation/__pycache__/date.cpython-39.pyc mode change 100644 => 100755 cog_transformation/casagfed-carbonflux-monthgrid-v3.ipynb mode change 100644 => 100755 cog_transformation/cmip6-transformation.py mode change 100644 => 100755 cog_transformation/ct-ch4-monthgrid-v2023.ipynb mode change 100644 => 100755 cog_transformation/eccodarwin-co2flux-monthgrid-v5.ipynb mode change 100644 => 100755 cog_transformation/emit-ch4plume-v1.ipynb mode change 100644 => 100755 cog_transformation/epa-ch4emission-grid-v2express.ipynb mode change 100644 => 100755 cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb mode change 100644 => 100755 cog_transformation/epa-ch4emission-monthgrid-v2.ipynb mode change 100644 => 100755 cog_transformation/goes-ch4plume-v1.ipynb mode change 100644 => 100755 cog_transformation/gosat-based-ch4budget-yeargrid-v1.ipynb mode change 100644 => 100755 cog_transformation/gra2pes-ghg-monthgrid-v1.ipynb mode change 100644 => 100755 cog_transformation/influx-testbed-ghg-concentrations.ipynb mode change 100644 => 100755 cog_transformation/lam-testbed-ghg-concentrations.ipynb mode change 100644 => 100755 cog_transformation/lpjwsl-wetlandch4-daygrid-v1.ipynb mode change 100644 => 100755 cog_transformation/lpjwsl-wetlandch4-monthgrid-v1.ipynb mode change 100644 => 100755 cog_transformation/nec-testbed-ghg-concentrations.ipynb mode change 100644 => 100755 cog_transformation/noaa-gggrn-concentrations.ipynb mode change 100644 => 100755 cog_transformation/oco2-mip-co2budget-yeargrid-v1.ipynb mode change 100644 => 100755 cog_transformation/oco2geos-co2-daygrid-v10r.ipynb mode change 100644 => 100755 cog_transformation/odiac-ffco2-monthgrid-v2022.ipynb mode change 100644 => 100755 cog_transformation/odiac-ffco2-monthgrid-v2023.ipynb mode change 100644 => 100755 cog_transformation/odiac-ffco2-monthgrid-v2024.ipynb mode change 100644 => 100755 cog_transformation/sedac-popdensity-yeargrid5yr-v4.11.ipynb mode change 100644 => 100755 cog_transformation/vulcan-ffco2-yeargrid-v4.ipynb mode change 100644 => 100755 contentcuration.qmd mode change 100644 => 100755 data_transformation_plugins/README.md mode change 100644 => 100755 data_transformation_plugins/__init__.py mode change 100644 => 100755 data_transformation_plugins/ecco_darwin_transformation.py mode change 100644 => 100755 data_transformation_plugins/geos_oco2_transformation.py mode change 100644 => 100755 data_transformation_plugins/gosat_ch4_transformation.py mode change 100644 => 100755 data_transformation_plugins/gpw_transformation.py mode change 100644 => 100755 data_transformation_plugins/push_to_s3.py mode change 100644 => 100755 data_transformation_plugins/sample_transformation.ipynb mode change 100644 => 100755 data_transformation_plugins/tm5_4dvar_update_noaa_transformation.py mode change 100644 => 100755 data_workflow/ct-ch4-monthgrid-v2023_Data_Flow.qmd mode change 100644 => 100755 data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.qmd mode change 100644 => 100755 data_workflow/emit-ch4plume-v1_Data_Flow.qmd mode change 100644 => 100755 data_workflow/epa-ch4emission-grid-v2express_Data_Flow.qmd mode change 100644 => 100755 data_workflow/goes-ch4plume-v1_Data_Flow.qmd mode change 100644 => 100755 data_workflow/gosat-based-ch4budget-yeargrid-v1_Data_Flow.qmd mode change 100644 => 100755 data_workflow/gra2pes-ghg-monthgrid-v1_Data_Flow.qmd mode change 100644 => 100755 data_workflow/influx-testbed-ghg-concentrations_Data_Flow.qmd mode change 100644 => 100755 data_workflow/lam-testbed-ghg-concentrations_Data_Flow.qmd mode change 100644 => 100755 data_workflow/lpjeosim-wetlandch4-grid-v1_Data_Flow.qmd mode change 100644 => 100755 data_workflow/media/.png mode change 100644 => 100755 data_workflow/media/ceos-ch4budget-yeargrid-v1_Data_Flow.png mode change 100644 => 100755 data_workflow/media/ceos-co2budget-yeargrid-v1_Data_Flow.png mode change 100644 => 100755 data_workflow/media/ct-ch4-monthgrid-v2023_Data_Flow.png mode change 100644 => 100755 data_workflow/media/eccodarwin-co2flux-monthgrid-v5_Data_Flow.png mode change 100644 => 100755 data_workflow/media/emit-ch4plume-v1_Data_Flow.png mode change 100644 => 100755 data_workflow/media/epa-ch4emission-grid-v2express_Data_Flow.png mode change 100644 => 100755 data_workflow/media/goes-ch4plume-v1_Data_Flow.png mode change 100644 => 100755 data_workflow/media/gosat-based-ch4budget-yeargrid-v1_Data_Flow.png mode change 100644 => 100755 data_workflow/media/gra2pes-ghg-monthgrid-v1_Data_Flow.png mode change 100644 => 100755 data_workflow/media/influx-testbed-ghg-concentrations_Data_Flow.png mode change 100644 => 100755 data_workflow/media/lam-testbed-ghg-concentrations_Data_Flow.png mode change 100644 => 100755 data_workflow/media/lpjeosim-wetlandch4-grid-v2_Data_Flow.png mode change 100644 => 100755 data_workflow/media/micasa-carbonflux-daygrid-v1_Data_Flow.png mode change 100644 => 100755 data_workflow/media/nec-testbed-ghg-concentrations_Data_Flow.png mode change 100644 => 100755 data_workflow/media/noaa-gggrn-ch4-concentrations_Data_Flow.png mode change 100644 => 100755 data_workflow/media/noaa-gggrn-co2-concentrations_Data_Flow.png mode change 100644 => 100755 data_workflow/media/oco2geos-co2-daygrid-v10r_Data_Flow.png mode change 100644 => 100755 data_workflow/media/odiac-ffco2-monthgrid-v2023_Data_Flow.png mode change 100644 => 100755 data_workflow/media/odiac-ffco2-monthgrid-v2024_Data_Flow.png mode change 100644 => 100755 data_workflow/media/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.png mode change 100644 => 100755 data_workflow/media/vulcan-ffco2-yeargrid-v4_Data_Flow.png mode change 100644 => 100755 data_workflow/micasa-carbonflux-daygrid-v1_Data_Flow.qmd mode change 100644 => 100755 data_workflow/nec-testbed-ghg-concentrations_Data_Flow.qmd mode change 100644 => 100755 data_workflow/noaa-gggrn-ch4-concentrations_Data_Flow.qmd mode change 100644 => 100755 data_workflow/noaa-gggrn-co2-concentrations_Data_Flow.qmd mode change 100644 => 100755 data_workflow/oco2-mip-co2budget-yeargrid-v1_Data_Flow.qmd mode change 100644 => 100755 data_workflow/oco2geos-co2-daygrid-v10r_Data_Flow.qmd mode change 100644 => 100755 data_workflow/odiac-ffco2-monthgrid-v2024_Data_Flow.qmd mode change 100644 => 100755 data_workflow/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.qmd mode change 100644 => 100755 data_workflow/vulcan-ffco2-yeargrid-v4_Data_Flow.qmd mode change 100644 => 100755 data_workflow2/NRT_data_download.qmd mode change 100644 => 100755 data_workflow2/NRT_directory_structure.qmd mode change 100644 => 100755 data_workflow2/media/NRT_data.png mode change 100644 => 100755 data_workflow2/media/NRT_dir.png mode change 100644 => 100755 datasetingestion.qmd mode change 100644 => 100755 datatransformationcode.qmd mode change 100644 => 100755 datausage.qmd mode change 100644 => 100755 git-github-comprehensive-guide.qmd mode change 100644 => 100755 index.qmd mode change 100644 => 100755 jupyterhub.qmd mode change 100644 => 100755 logo/disasters-logo.svg mode change 100644 => 100755 logo/disasters_logo.png mode change 100644 => 100755 logo/ghgc-logo-dark.svg mode change 100644 => 100755 logo/ghgc-logo-light.svg mode change 100644 => 100755 password-protect.html mode change 100644 => 100755 processingreport.qmd mode change 100644 => 100755 quarto-guide.qmd mode change 100644 => 100755 requirements.txt mode change 100644 => 100755 services/apis.qmd mode change 100644 => 100755 services/jupyterhub.qmd mode change 100644 => 100755 styles.css mode change 100644 => 100755 user_data_notebooks/New_Mexico_Fire_2025.ipynb mode change 100644 => 100755 user_data_notebooks/Texas_Flood_2025.ipynb mode change 100644 => 100755 utility.qmd mode change 100644 => 100755 workflow.qmd diff --git a/.github/workflows/deploy-with-password.yml b/.github/workflows/deploy-with-password.yml old mode 100644 new mode 100755 diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml old mode 100644 new mode 100755 diff --git a/.github/workflows/quarto-publish.yml b/.github/workflows/quarto-publish.yml old mode 100644 new mode 100755 diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/AWS/AWS_SSO_Remote_Server.qmd b/AWS/AWS_SSO_Remote_Server.qmd old mode 100644 new mode 100755 diff --git a/AWS/AWS_SSO_Setup_Guide.qmd b/AWS/AWS_SSO_Setup_Guide.qmd old mode 100644 new mode 100755 diff --git a/AWS/aws-mfa-setup.qmd b/AWS/aws-mfa-setup.qmd old mode 100644 new mode 100755 diff --git a/AWS/aws-s3-commands-guide.qmd b/AWS/aws-s3-commands-guide.qmd old mode 100644 new mode 100755 diff --git a/DataIngestion/stac-collection.ipynb b/DataIngestion/stac-collection.ipynb old mode 100644 new mode 100755 diff --git a/GitHub/commands.qmd b/GitHub/commands.qmd old mode 100644 new mode 100755 diff --git a/GitHub/resources.qmd b/GitHub/resources.qmd old mode 100644 new mode 100755 diff --git a/GitHub/setup.qmd b/GitHub/setup.qmd old mode 100644 new mode 100755 diff --git a/GitHub/veda-preview.qmd b/GitHub/veda-preview.qmd old mode 100644 new mode 100755 diff --git a/Jupyterhub/clone_conversion_repo.ipynb b/Jupyterhub/clone_conversion_repo.ipynb old mode 100644 new mode 100755 diff --git a/Jupyterhub/jupyterhub-training-guide.qmd b/Jupyterhub/jupyterhub-training-guide.qmd old mode 100644 new mode 100755 diff --git a/Jupyterhub/simple_disaster_template.ipynb b/Jupyterhub/simple_disaster_template.ipynb old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/Presentations/aws-cost-management.qmd b/Presentations/aws-cost-management.qmd old mode 100644 new mode 100755 diff --git a/Presentations/aws-grafana-tutorial.qmd b/Presentations/aws-grafana-tutorial.qmd old mode 100644 new mode 100755 diff --git a/Presentations/disasters-powerpoint-template.qmd b/Presentations/disasters-powerpoint-template.qmd old mode 100644 new mode 100755 diff --git a/Presentations/jupyterhub-data-conversions-tutorial.qmd b/Presentations/jupyterhub-data-conversions-tutorial.qmd old mode 100644 new mode 100755 diff --git a/Presentations/stac-airflow-tutorial.qmd b/Presentations/stac-airflow-tutorial.qmd old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/SIMPLE_PASSWORD_SETUP.md b/SIMPLE_PASSWORD_SETUP.md old mode 100644 new mode 100755 diff --git a/_quarto.yml b/_quarto.yml old mode 100644 new mode 100755 diff --git a/advanceduser.qmd b/advanceduser.qmd old mode 100644 new mode 100755 diff --git a/auth-check.js b/auth-check.js old mode 100644 new mode 100755 diff --git a/aws.qmd b/aws.qmd old mode 100644 new mode 100755 diff --git a/cog_transformation/__pycache__/date.cpython-39.pyc b/cog_transformation/__pycache__/date.cpython-39.pyc old mode 100644 new mode 100755 diff --git a/cog_transformation/casagfed-carbonflux-monthgrid-v3.ipynb b/cog_transformation/casagfed-carbonflux-monthgrid-v3.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/cmip6-transformation.py b/cog_transformation/cmip6-transformation.py old mode 100644 new mode 100755 diff --git a/cog_transformation/ct-ch4-monthgrid-v2023.ipynb b/cog_transformation/ct-ch4-monthgrid-v2023.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/eccodarwin-co2flux-monthgrid-v5.ipynb b/cog_transformation/eccodarwin-co2flux-monthgrid-v5.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/emit-ch4plume-v1.ipynb b/cog_transformation/emit-ch4plume-v1.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/epa-ch4emission-grid-v2express.ipynb b/cog_transformation/epa-ch4emission-grid-v2express.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb b/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/epa-ch4emission-monthgrid-v2.ipynb b/cog_transformation/epa-ch4emission-monthgrid-v2.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/goes-ch4plume-v1.ipynb b/cog_transformation/goes-ch4plume-v1.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/gosat-based-ch4budget-yeargrid-v1.ipynb b/cog_transformation/gosat-based-ch4budget-yeargrid-v1.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/gra2pes-ghg-monthgrid-v1.ipynb b/cog_transformation/gra2pes-ghg-monthgrid-v1.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/influx-testbed-ghg-concentrations.ipynb b/cog_transformation/influx-testbed-ghg-concentrations.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/lam-testbed-ghg-concentrations.ipynb b/cog_transformation/lam-testbed-ghg-concentrations.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/lpjwsl-wetlandch4-daygrid-v1.ipynb b/cog_transformation/lpjwsl-wetlandch4-daygrid-v1.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/lpjwsl-wetlandch4-monthgrid-v1.ipynb b/cog_transformation/lpjwsl-wetlandch4-monthgrid-v1.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/nec-testbed-ghg-concentrations.ipynb b/cog_transformation/nec-testbed-ghg-concentrations.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/noaa-gggrn-concentrations.ipynb b/cog_transformation/noaa-gggrn-concentrations.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/oco2-mip-co2budget-yeargrid-v1.ipynb b/cog_transformation/oco2-mip-co2budget-yeargrid-v1.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/oco2geos-co2-daygrid-v10r.ipynb b/cog_transformation/oco2geos-co2-daygrid-v10r.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/odiac-ffco2-monthgrid-v2022.ipynb b/cog_transformation/odiac-ffco2-monthgrid-v2022.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/odiac-ffco2-monthgrid-v2023.ipynb b/cog_transformation/odiac-ffco2-monthgrid-v2023.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/odiac-ffco2-monthgrid-v2024.ipynb b/cog_transformation/odiac-ffco2-monthgrid-v2024.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/sedac-popdensity-yeargrid5yr-v4.11.ipynb b/cog_transformation/sedac-popdensity-yeargrid5yr-v4.11.ipynb old mode 100644 new mode 100755 diff --git a/cog_transformation/vulcan-ffco2-yeargrid-v4.ipynb b/cog_transformation/vulcan-ffco2-yeargrid-v4.ipynb old mode 100644 new mode 100755 diff --git a/contentcuration.qmd b/contentcuration.qmd old mode 100644 new mode 100755 diff --git a/data_transformation_plugins/README.md b/data_transformation_plugins/README.md old mode 100644 new mode 100755 diff --git a/data_transformation_plugins/__init__.py b/data_transformation_plugins/__init__.py old mode 100644 new mode 100755 diff --git a/data_transformation_plugins/ecco_darwin_transformation.py b/data_transformation_plugins/ecco_darwin_transformation.py old mode 100644 new mode 100755 diff --git a/data_transformation_plugins/geos_oco2_transformation.py b/data_transformation_plugins/geos_oco2_transformation.py old mode 100644 new mode 100755 diff --git a/data_transformation_plugins/gosat_ch4_transformation.py b/data_transformation_plugins/gosat_ch4_transformation.py old mode 100644 new mode 100755 diff --git a/data_transformation_plugins/gpw_transformation.py b/data_transformation_plugins/gpw_transformation.py old mode 100644 new mode 100755 diff --git a/data_transformation_plugins/push_to_s3.py b/data_transformation_plugins/push_to_s3.py old mode 100644 new mode 100755 diff --git a/data_transformation_plugins/sample_transformation.ipynb b/data_transformation_plugins/sample_transformation.ipynb old mode 100644 new mode 100755 diff --git a/data_transformation_plugins/tm5_4dvar_update_noaa_transformation.py b/data_transformation_plugins/tm5_4dvar_update_noaa_transformation.py old mode 100644 new mode 100755 diff --git a/data_workflow/ct-ch4-monthgrid-v2023_Data_Flow.qmd b/data_workflow/ct-ch4-monthgrid-v2023_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.qmd b/data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/emit-ch4plume-v1_Data_Flow.qmd b/data_workflow/emit-ch4plume-v1_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/epa-ch4emission-grid-v2express_Data_Flow.qmd b/data_workflow/epa-ch4emission-grid-v2express_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/goes-ch4plume-v1_Data_Flow.qmd b/data_workflow/goes-ch4plume-v1_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/gosat-based-ch4budget-yeargrid-v1_Data_Flow.qmd b/data_workflow/gosat-based-ch4budget-yeargrid-v1_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/gra2pes-ghg-monthgrid-v1_Data_Flow.qmd b/data_workflow/gra2pes-ghg-monthgrid-v1_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/influx-testbed-ghg-concentrations_Data_Flow.qmd b/data_workflow/influx-testbed-ghg-concentrations_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/lam-testbed-ghg-concentrations_Data_Flow.qmd b/data_workflow/lam-testbed-ghg-concentrations_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/lpjeosim-wetlandch4-grid-v1_Data_Flow.qmd b/data_workflow/lpjeosim-wetlandch4-grid-v1_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/media/.png b/data_workflow/media/.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/ceos-ch4budget-yeargrid-v1_Data_Flow.png b/data_workflow/media/ceos-ch4budget-yeargrid-v1_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/ceos-co2budget-yeargrid-v1_Data_Flow.png b/data_workflow/media/ceos-co2budget-yeargrid-v1_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/ct-ch4-monthgrid-v2023_Data_Flow.png b/data_workflow/media/ct-ch4-monthgrid-v2023_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/eccodarwin-co2flux-monthgrid-v5_Data_Flow.png b/data_workflow/media/eccodarwin-co2flux-monthgrid-v5_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/emit-ch4plume-v1_Data_Flow.png b/data_workflow/media/emit-ch4plume-v1_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/epa-ch4emission-grid-v2express_Data_Flow.png b/data_workflow/media/epa-ch4emission-grid-v2express_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/goes-ch4plume-v1_Data_Flow.png b/data_workflow/media/goes-ch4plume-v1_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/gosat-based-ch4budget-yeargrid-v1_Data_Flow.png b/data_workflow/media/gosat-based-ch4budget-yeargrid-v1_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/gra2pes-ghg-monthgrid-v1_Data_Flow.png b/data_workflow/media/gra2pes-ghg-monthgrid-v1_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/influx-testbed-ghg-concentrations_Data_Flow.png b/data_workflow/media/influx-testbed-ghg-concentrations_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/lam-testbed-ghg-concentrations_Data_Flow.png b/data_workflow/media/lam-testbed-ghg-concentrations_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/lpjeosim-wetlandch4-grid-v2_Data_Flow.png b/data_workflow/media/lpjeosim-wetlandch4-grid-v2_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/micasa-carbonflux-daygrid-v1_Data_Flow.png b/data_workflow/media/micasa-carbonflux-daygrid-v1_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/nec-testbed-ghg-concentrations_Data_Flow.png b/data_workflow/media/nec-testbed-ghg-concentrations_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/noaa-gggrn-ch4-concentrations_Data_Flow.png b/data_workflow/media/noaa-gggrn-ch4-concentrations_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/noaa-gggrn-co2-concentrations_Data_Flow.png b/data_workflow/media/noaa-gggrn-co2-concentrations_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/oco2geos-co2-daygrid-v10r_Data_Flow.png b/data_workflow/media/oco2geos-co2-daygrid-v10r_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/odiac-ffco2-monthgrid-v2023_Data_Flow.png b/data_workflow/media/odiac-ffco2-monthgrid-v2023_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/odiac-ffco2-monthgrid-v2024_Data_Flow.png b/data_workflow/media/odiac-ffco2-monthgrid-v2024_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.png b/data_workflow/media/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/media/vulcan-ffco2-yeargrid-v4_Data_Flow.png b/data_workflow/media/vulcan-ffco2-yeargrid-v4_Data_Flow.png old mode 100644 new mode 100755 diff --git a/data_workflow/micasa-carbonflux-daygrid-v1_Data_Flow.qmd b/data_workflow/micasa-carbonflux-daygrid-v1_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/nec-testbed-ghg-concentrations_Data_Flow.qmd b/data_workflow/nec-testbed-ghg-concentrations_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/noaa-gggrn-ch4-concentrations_Data_Flow.qmd b/data_workflow/noaa-gggrn-ch4-concentrations_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/noaa-gggrn-co2-concentrations_Data_Flow.qmd b/data_workflow/noaa-gggrn-co2-concentrations_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/oco2-mip-co2budget-yeargrid-v1_Data_Flow.qmd b/data_workflow/oco2-mip-co2budget-yeargrid-v1_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/oco2geos-co2-daygrid-v10r_Data_Flow.qmd b/data_workflow/oco2geos-co2-daygrid-v10r_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/odiac-ffco2-monthgrid-v2024_Data_Flow.qmd b/data_workflow/odiac-ffco2-monthgrid-v2024_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.qmd b/data_workflow/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow/vulcan-ffco2-yeargrid-v4_Data_Flow.qmd b/data_workflow/vulcan-ffco2-yeargrid-v4_Data_Flow.qmd old mode 100644 new mode 100755 diff --git a/data_workflow2/NRT_data_download.qmd b/data_workflow2/NRT_data_download.qmd old mode 100644 new mode 100755 diff --git a/data_workflow2/NRT_directory_structure.qmd b/data_workflow2/NRT_directory_structure.qmd old mode 100644 new mode 100755 diff --git a/data_workflow2/media/NRT_data.png b/data_workflow2/media/NRT_data.png old mode 100644 new mode 100755 diff --git a/data_workflow2/media/NRT_dir.png b/data_workflow2/media/NRT_dir.png old mode 100644 new mode 100755 diff --git a/datasetingestion.qmd b/datasetingestion.qmd old mode 100644 new mode 100755 diff --git a/datatransformationcode.qmd b/datatransformationcode.qmd old mode 100644 new mode 100755 diff --git a/datausage.qmd b/datausage.qmd old mode 100644 new mode 100755 diff --git a/git-github-comprehensive-guide.qmd b/git-github-comprehensive-guide.qmd old mode 100644 new mode 100755 diff --git a/index.qmd b/index.qmd old mode 100644 new mode 100755 diff --git a/jupyterhub.qmd b/jupyterhub.qmd old mode 100644 new mode 100755 diff --git a/logo/disasters-logo.svg b/logo/disasters-logo.svg old mode 100644 new mode 100755 diff --git a/logo/disasters_logo.png b/logo/disasters_logo.png old mode 100644 new mode 100755 diff --git a/logo/ghgc-logo-dark.svg b/logo/ghgc-logo-dark.svg old mode 100644 new mode 100755 diff --git a/logo/ghgc-logo-light.svg b/logo/ghgc-logo-light.svg old mode 100644 new mode 100755 diff --git a/password-protect.html b/password-protect.html old mode 100644 new mode 100755 diff --git a/processingreport.qmd b/processingreport.qmd old mode 100644 new mode 100755 diff --git a/quarto-guide.qmd b/quarto-guide.qmd old mode 100644 new mode 100755 diff --git a/requirements.txt b/requirements.txt old mode 100644 new mode 100755 diff --git a/services/apis.qmd b/services/apis.qmd old mode 100644 new mode 100755 diff --git a/services/jupyterhub.qmd b/services/jupyterhub.qmd old mode 100644 new mode 100755 diff --git a/styles.css b/styles.css old mode 100644 new mode 100755 diff --git a/user_data_notebooks/New_Mexico_Fire_2025.ipynb b/user_data_notebooks/New_Mexico_Fire_2025.ipynb old mode 100644 new mode 100755 diff --git a/user_data_notebooks/Texas_Flood_2025.ipynb b/user_data_notebooks/Texas_Flood_2025.ipynb old mode 100644 new mode 100755 diff --git a/utility.qmd b/utility.qmd old mode 100644 new mode 100755 diff --git a/workflow.qmd b/workflow.qmd old mode 100644 new mode 100755 From fa157b2d68eb01168fface5ef33126540351f6c7 Mon Sep 17 00:00:00 2001 From: nbgitpuller Date: Fri, 6 Feb 2026 20:14:01 +0000 Subject: [PATCH 10/14] Automatic commit by nbgitpuller --- .../sentinel2_workflow-testUpdates.ipynb | 6037 +---------------- 1 file changed, 28 insertions(+), 6009 deletions(-) diff --git a/Jupyterhub/sentinel2_workflow-testUpdates.ipynb b/Jupyterhub/sentinel2_workflow-testUpdates.ipynb index eeeb719..d088160 100644 --- a/Jupyterhub/sentinel2_workflow-testUpdates.ipynb +++ b/Jupyterhub/sentinel2_workflow-testUpdates.ipynb @@ -95,7 +95,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -103,7 +103,7 @@ "output_type": "stream", "text": [ "Configuration Updated:\n", - " Output Directory: /home/jovyan/shared-readwrite/process_sentinel2/202601_WinterWx_US_s2\n", + " Output Directory: /home/jovyan/disasters-docs/Jupyterhub/process_sentinel2/202601_WinterWx_US_s2\n", " Search Range: 20251230 to 20251230\n", " Processing Level: L2A\n", " Products: true, swir\n", @@ -124,8 +124,8 @@ "COP_PASS = \"^d8#KhU_SDj~V5_\" # Update with your account password\n", "\n", "# --- UPDATED: Download parameters (Using a range to find data) ---\n", - "#TILE_ID = \"T17RLN\" # Sentinel-2 tile ID\n", - "POLYGON = os.path.expanduser(f\"~/shared-readwrite/process_sentinel2/AOI/Jan2026_WinterStorm_LS_S2_AOI.shp\")\n", + "TILE_ID = \"T17RLN\" # Sentinel-2 tile ID\n", + "# POLYGON = os.path.expanduser(f\"~/shared-readwrite/process_sentinel2/AOI/Jan2026_WinterStorm_LS_S2_AOI.shp\")\n", "# Using a window to catch the Nov 13th overpass\n", "DOWNLOAD_DATE = [\"20251230\"]#, \"20260101\", \"20260118\"] \n", "PROCESSING_LEVEL = \"2\" # 1 = L1C, 2 = L2A\n", @@ -148,7 +148,7 @@ "DST_CRS = 'EPSG:4326'\n", "\n", "# Output directory for downloaded and processed data\n", - "OUTPUT_DIR = os.path.expanduser(f\"~/shared-readwrite/process_sentinel2/{EVENT_NAME}_s2\")\n", + "OUTPUT_DIR = os.path.expanduser(f\"/home/jovyan/disasters-docs/Jupyterhub/process_sentinel2/{EVENT_NAME}_s2\")\n", "\n", "# Create output directory\n", "os.makedirs(OUTPUT_DIR, exist_ok=True)\n", @@ -178,5785 +178,27 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - } - }, + "execution_count": 4, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "--- DOWNLOADING DATA ---\n", - "Credentials received via arguments.\n", - "\n", - "Output directory: /home/jovyan/shared-readwrite/process_sentinel2/202601_WinterWx_US_s2\n", - "Level: L2A\n", - "Date: 2025-12-30\n", - "Polygon: Jan2026_WinterStorm_LS_S2_AOI.shp\n", - "\n", - "Number of products to download: 5\n", - "Confirmation skipped (-y provided).\n", - "\n", - "\n", - "\n", - "Downloading files: 0%| | 0/5 [00:00 \u001b[39m\u001b[32m18\u001b[39m process = \u001b[43msubprocess\u001b[49m\u001b[43m.\u001b[49m\u001b[43mPopen\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 19\u001b[39m \u001b[43m \u001b[49m\u001b[43mdownload_cmd\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 20\u001b[39m \u001b[43m \u001b[49m\u001b[43mstdout\u001b[49m\u001b[43m=\u001b[49m\u001b[43msubprocess\u001b[49m\u001b[43m.\u001b[49m\u001b[43mPIPE\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 21\u001b[39m \u001b[43m \u001b[49m\u001b[43mstderr\u001b[49m\u001b[43m=\u001b[49m\u001b[43msubprocess\u001b[49m\u001b[43m.\u001b[49m\u001b[43mSTDOUT\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 22\u001b[39m \u001b[43m \u001b[49m\u001b[43muniversal_newlines\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[32m 23\u001b[39m \u001b[43m \u001b[49m\u001b[43mbufsize\u001b[49m\u001b[43m=\u001b[49m\u001b[32;43m1\u001b[39;49m\n\u001b[32m 24\u001b[39m \u001b[43m)\u001b[49m\n\u001b[32m 26\u001b[39m \u001b[38;5;66;03m# Print output in real-time\u001b[39;00m\n\u001b[32m 27\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m line \u001b[38;5;129;01min\u001b[39;00m process.stdout:\n", + "\u001b[36mFile \u001b[39m\u001b[32m/srv/conda/envs/notebook/lib/python3.12/subprocess.py:1026\u001b[39m, in \u001b[36mPopen.__init__\u001b[39m\u001b[34m(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, user, group, extra_groups, encoding, errors, text, umask, pipesize, process_group)\u001b[39m\n\u001b[32m 1022\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m.text_mode:\n\u001b[32m 1023\u001b[39m \u001b[38;5;28mself\u001b[39m.stderr = io.TextIOWrapper(\u001b[38;5;28mself\u001b[39m.stderr,\n\u001b[32m 1024\u001b[39m encoding=encoding, errors=errors)\n\u001b[32m-> \u001b[39m\u001b[32m1026\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_execute_child\u001b[49m\u001b[43m(\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mexecutable\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpreexec_fn\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mclose_fds\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1027\u001b[39m \u001b[43m \u001b[49m\u001b[43mpass_fds\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcwd\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43menv\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1028\u001b[39m \u001b[43m \u001b[49m\u001b[43mstartupinfo\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcreationflags\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mshell\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1029\u001b[39m \u001b[43m \u001b[49m\u001b[43mp2cread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mp2cwrite\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1030\u001b[39m \u001b[43m \u001b[49m\u001b[43mc2pread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mc2pwrite\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1031\u001b[39m \u001b[43m \u001b[49m\u001b[43merrread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43merrwrite\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1032\u001b[39m \u001b[43m \u001b[49m\u001b[43mrestore_signals\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1033\u001b[39m \u001b[43m \u001b[49m\u001b[43mgid\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgids\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43muid\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mumask\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1034\u001b[39m \u001b[43m \u001b[49m\u001b[43mstart_new_session\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprocess_group\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 1035\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m:\n\u001b[32m 1036\u001b[39m \u001b[38;5;66;03m# Cleanup if the child failed starting.\u001b[39;00m\n\u001b[32m 1037\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m f \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mfilter\u001b[39m(\u001b[38;5;28;01mNone\u001b[39;00m, (\u001b[38;5;28mself\u001b[39m.stdin, \u001b[38;5;28mself\u001b[39m.stdout, \u001b[38;5;28mself\u001b[39m.stderr)):\n", + "\u001b[36mFile \u001b[39m\u001b[32m/srv/conda/envs/notebook/lib/python3.12/subprocess.py:1955\u001b[39m, in \u001b[36mPopen._execute_child\u001b[39m\u001b[34m(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group)\u001b[39m\n\u001b[32m 1953\u001b[39m err_msg = os.strerror(errno_num)\n\u001b[32m 1954\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m err_filename \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m1955\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m child_exception_type(errno_num, err_msg, err_filename)\n\u001b[32m 1956\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 1957\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m child_exception_type(errno_num, err_msg)\n", + "\u001b[31mFileNotFoundError\u001b[39m: [Errno 2] No such file or directory: 'download_sentinel2'" ] } ], @@ -5966,8 +208,8 @@ "download_cmd = [\n", " \"download_sentinel2\",\n", " OUTPUT_DIR,\n", - " #\"-tile\", TILE_ID,\n", - " \"-polygon\", POLYGON,\n", + " \"-tile\", TILE_ID,\n", + " # \"-polygon\", POLYGON,\n", " \"-date\", *DOWNLOAD_DATE, \n", " \"-level\", PROCESSING_LEVEL,\n", " \"-u\", COP_USER, \n", @@ -6019,60 +261,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--- HELPER FLAG ARGUMENTS ---\n", - "usage: process_sentinel2.py input [-h] [-p [P ...]] [-we_nstd [WE_NSTD ...]] [-date [DATE ...]] [-tile [TILE ...]] [-merge] [-mask] [-force] [-unzip_only] [-tif_only] [-nodata NODATA] [-compression COMPRESSION] [-compression_level LEVEL] [-event EVENT]\n", - "\n", - "This script unzips and processes Sentinel-2 L2A data and produces true color,\n", - "natural color, color infrared NDWI, MNDWI, NDVI, NBR, or Water Extent.\n", - "\n", - "positional arguments:\n", - " input Path to directory containing the .zip files (e.g. /dat\n", - " a/esops/eventData/2023/TurkeyEarthquake/sentinel2).\n", - "\n", - "options:\n", - " -h, --help show this help message and exit\n", - " -p [P ...] List of products to produce (all = everything, true =\n", - " true color, nat = natural, colorIR = color infrared,\n", - " swir = shortwave infrared, ndwi = NDWI, mndwi = MNDWI,\n", - " ndvi = NDVI, nbr = NBR, we = water extent\n", - " -we_nstd [WE_NSTD ...]\n", - " Produce water extents with given number(s) of standard\n", - " deviations (default is 1). More standard deviations =\n", - " higher NIR threshold = more pixels classified as\n", - " water.\n", - " -date [DATE ...] Date(s) (e.g. 20230116). If no date(s) or tile(s) is\n", - " entered, all dates found will be processed.\n", - " -tile [TILE ...] Identifier (e.g. T36SYD) for specific tile(s), If no\n", - " tile(s) or date(s) is entered, all tiles found will be\n", - " processed.\n", - " -merge Merge all images by date and product.\n", - " -mask Generate cloud mask and mask all images (non-masked\n", - " version preserved as well).\n", - " -force Force overwrite existing products.\n", - " -unzip_only Just unzip all .zip files. Do not process.\n", - " -tif_only Skip COG conversion and keep regular GeoTIFF format\n", - " (COG is default).\n", - " -nodata NODATA No-data value for COG outputs (auto-detected if not\n", - " specified).\n", - " -compression COMPRESSION\n", - " Compression type for COG (default: ZSTD).\n", - " -compression_level COMPRESSION_LEVEL\n", - " Compression level for COG (default: 22 for ZSTD).\n", - " -dst_crs DST_CRS Target CRS for COG output (default: EPSG:4326, use\n", - " \"native\" to preserve original CRS).\n", - " -event EVENT Event name for filename prefix (e.g.,\n", - " 202512_Flood_WA). Adds formatted date suffix.\n", - "CompletedProcess(args=['process_sentinel2', '-h'], returncode=0)\n" - ] - } - ], + "outputs": [], "source": [ "print(\"--- HELPER FLAG ARGUMENTS ---\")\n", "# Build processing command\n", @@ -6090,123 +281,7 @@ "cell_type": "code", "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing Sentinel-2 data...\n", - "Command: process_sentinel2 /home/jovyan/shared-readwrite/process_sentinel2/202601_WinterWx_US_s2 -p true swir -event 202601_WinterWx_US -compression ZSTD -compression_level 22 -dst_crs EPSG:4326 -event 202601_WinterWx_US -date 20251230 -merge -force -nodata 0\n", - "\n", - "\n", - "Input: /home/jovyan/shared-readwrite/process_sentinel2/202601_WinterWx_US_s2\n", - "Product(s) to produce: ['true', 'swir']\n", - "Processing date(s): ['20251230']\n", - "Processing all tiles\n", - "\n", - "Number of .zip files: 10\n", - "\tS2B_MSIL2A_20251230T164619_N0511_R126_T16SCC_20251230T215228.SAFE.zip already unzipped.\n", - "\tS2B_MSIL2A_20251230T164619_N0511_R126_T16SCD_20251230T215228.SAFE.zip already unzipped.\n", - "\tS2B_MSIL2A_20251230T164619_N0511_R126_T15SXS_20251230T215228.SAFE.zip already unzipped.\n", - "\tS2B_MSIL2A_20251230T164619_N0511_R126_T15SYR_20251230T215228.SAFE.zip already unzipped.\n", - "\tS2A_MSIL2A_20251230T165741_N0511_R026_T15SXS_20251230T202215.SAFE.zip already unzipped.\n", - "\n", - "Unzipping: S2B_MSIL2A_20251230T164619_N0511_R126_T16SDE_20251230T215228.SAFE.zip\n", - "\n", - "7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21\n", - "p7zip Version 16.02 (locale=C.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs x64)\n", - "\n", - "Scanning the drive for archives:\n", - "1 file, 77683387 bytes (75 MiB)\n", - "\n", - "Extracting archive: /home/jovyan/shared-readwrite/process_sentinel2/202601_WinterWx_US_s2/S2B_MSIL2A_20251230T164619_N0511_R126_T16SDE_20251230T215228.SAFE.zip\n", - "--\n", - "Path = /home/jovyan/shared-readwrite/process_sentinel2/202601_WinterWx_US_s2/S2B_MSIL2A_20251230T164619_N0511_R126_T16SDE_20251230T215228.SAFE.zip\n", - "Type = zip\n", - "Physical Size = 77683387\n", - "\n", - "Everything is Ok\n", - "\n", - "Files: 95\n", - "Size: 77648401\n", - "Compressed: 77683387\n", - "\n", - "Unzipping: S2B_MSIL2A_20251230T164619_N0511_R126_T15SYS_20251230T215228.SAFE.zip\n", - "\n", - "7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21\n", - "p7zip Version 16.02 (locale=C.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs x64)\n", - "\n", - "Scanning the drive for archives:\n", - "1 file, 1180481421 bytes (1126 MiB)\n", - "\n", - "Extracting archive: /home/jovyan/shared-readwrite/process_sentinel2/202601_WinterWx_US_s2/S2B_MSIL2A_20251230T164619_N0511_R126_T15SYS_20251230T215228.SAFE.zip\n", - "--\n", - "Path = /home/jovyan/shared-readwrite/process_sentinel2/202601_WinterWx_US_s2/S2B_MSIL2A_20251230T164619_N0511_R126_T15SYS_20251230T215228.SAFE.zip\n", - "Type = zip\n", - "Physical Size = 1180481421\n", - "\n", - "Everything is Ok\n", - "\n", - "Files: 95\n", - "Size: 1180446435\n", - "Compressed: 1180481421\n", - "\tS2B_MSIL2A_20251230T164619_N0511_R126_T16SCB_20251230T215228.SAFE.zip already unzipped.\n", - "\n", - "Unzipping: S2B_MSIL2A_20251230T164619_N0511_R126_T15SWS_20251230T215228.SAFE.zip\n", - "\n", - "7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21\n", - "p7zip Version 16.02 (locale=C.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs x64)\n", - "\n", - "Scanning the drive for archives:\n", - "1 file, 366261395 bytes (350 MiB)\n", - "\n", - "Extracting archive: /home/jovyan/shared-readwrite/process_sentinel2/202601_WinterWx_US_s2/S2B_MSIL2A_20251230T164619_N0511_R126_T15SWS_20251230T215228.SAFE.zip\n", - "--\n", - "Path = /home/jovyan/shared-readwrite/process_sentinel2/202601_WinterWx_US_s2/S2B_MSIL2A_20251230T164619_N0511_R126_T15SWS_20251230T215228.SAFE.zip\n", - "Type = zip\n", - "Physical Size = 366261395\n", - "\n", - "Everything is Ok\n", - "\n", - "Files: 95\n", - "Size: 366226409\n", - "Compressed: 366261395\n", - "\n", - "Unzipping: S2B_MSIL2A_20251230T164619_N0511_R126_T16SDF_20251230T215228.SAFE.zip\n", - "\n", - "7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21\n", - "p7zip Version 16.02 (locale=C.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs x64)\n", - "\n", - "Scanning the drive for archives:\n", - "1 file, 346562999 bytes (331 MiB)\n", - "\n", - "Extracting archive: /home/jovyan/shared-readwrite/process_sentinel2/202601_WinterWx_US_s2/S2B_MSIL2A_20251230T164619_N0511_R126_T16SDF_20251230T215228.SAFE.zip\n", - "--\n", - "Path = /home/jovyan/shared-readwrite/process_sentinel2/202601_WinterWx_US_s2/S2B_MSIL2A_20251230T164619_N0511_R126_T16SDF_20251230T215228.SAFE.zip\n", - "Type = zip\n", - "Physical Size = 346562999\n", - "\n", - "Everything is Ok\n", - "\n", - "Files: 95\n", - "Size: 346528013\n", - "Compressed: 346562999\n", - "\n", - "Number of directories to process: 10\n", - "\n", - "Processing scenes: 0%| | 0/10 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "File Details:\n", - "==================================================\n", - "\n", - "shortwaveInfrared:\n", - " - S2A_MSIL2A_shortwaveInfrared_20251230_165741_T15SXS.tif (86.3 MB)\n", - " - S2B_MSIL2A_shortwaveInfrared_20251230_164619_T15SWS.tif (86.3 MB)\n", - " - S2B_MSIL2A_shortwaveInfrared_20251230_164619_T15SXS.tif (86.3 MB)\n", - " - S2B_MSIL2A_shortwaveInfrared_20251230_164619_T15SYR.tif (86.3 MB)\n", - " - S2B_MSIL2A_shortwaveInfrared_20251230_164619_T15SYS.tif (86.3 MB)\n", - " - S2B_MSIL2A_shortwaveInfrared_20251230_164619_T16SCC.tif (86.3 MB)\n", - " - S2B_MSIL2A_shortwaveInfrared_20251230_164619_T16SCD.tif (86.3 MB)\n", - " - S2B_MSIL2A_shortwaveInfrared_20251230_164619_T16SDE.tif (86.3 MB)\n", - " - S2B_MSIL2A_shortwaveInfrared_20251230_164619_T16SDF.tif (86.3 MB)\n", - "\n", - "trueColor:\n", - " - S2A_MSIL2A_trueColor_20251230_165741_T15SXS.tif (384.2 MB)\n", - " - S2A_trueColor_20251230_merged.tif (10006.3 MB)\n", - " - S2B_MSIL2A_trueColor_20251230_164619_T15SWS.tif (384.2 MB)\n", - " - S2B_MSIL2A_trueColor_20251230_164619_T15SXS.tif (384.2 MB)\n", - " - S2B_MSIL2A_trueColor_20251230_164619_T15SYR.tif (383.3 MB)\n", - " - S2B_MSIL2A_trueColor_20251230_164619_T15SYS.tif (384.2 MB)\n", - " - S2B_MSIL2A_trueColor_20251230_164619_T16SCB.tif (345.0 MB)\n", - " - S2B_MSIL2A_trueColor_20251230_164619_T16SCC.tif (345.0 MB)\n", - " - S2B_MSIL2A_trueColor_20251230_164619_T16SCD.tif (345.0 MB)\n", - " - S2B_MSIL2A_trueColor_20251230_164619_T16SDE.tif (345.0 MB)\n", - " - S2B_MSIL2A_trueColor_20251230_164619_T16SDF.tif (345.0 MB)\n", - " - tmp6cgf6udj.tif (2347.0 MB)\n" - ] - } - ], + "outputs": [], "source": [ "import glob\n", "import os\n", From 6c28c2841dafe45cf7768d5cc29fd0a2ac55eac9 Mon Sep 17 00:00:00 2001 From: nbgitpuller Date: Mon, 9 Feb 2026 14:21:06 +0000 Subject: [PATCH 11/14] Automatic commit by nbgitpuller --- Jupyterhub/sentinel2_workflow-testUpdates.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jupyterhub/sentinel2_workflow-testUpdates.ipynb b/Jupyterhub/sentinel2_workflow-testUpdates.ipynb index d088160..d0d991f 100644 --- a/Jupyterhub/sentinel2_workflow-testUpdates.ipynb +++ b/Jupyterhub/sentinel2_workflow-testUpdates.ipynb @@ -483,7 +483,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.11" + "version": "3.12.12" } }, "nbformat": 4, From 986ace71a4eca8262e80f9ba2d727bd36107cba6 Mon Sep 17 00:00:00 2001 From: nbgitpuller Date: Tue, 17 Mar 2026 14:46:47 +0000 Subject: [PATCH 12/14] Automatic commit by nbgitpuller --- user_data_notebooks/Texas_Flood_2025.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user_data_notebooks/Texas_Flood_2025.ipynb b/user_data_notebooks/Texas_Flood_2025.ipynb index 15b55ea..be5a265 100755 --- a/user_data_notebooks/Texas_Flood_2025.ipynb +++ b/user_data_notebooks/Texas_Flood_2025.ipynb @@ -112168,7 +112168,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.11" + "version": "3.12.12" } }, "nbformat": 4, From c4961dbb3ac9873f2c7909db3a1bb85f7ce00686 Mon Sep 17 00:00:00 2001 From: Kyle Lesinger Date: Tue, 17 Mar 2026 15:18:15 +0000 Subject: [PATCH 13/14] update notebook --- Jupyterhub/extract_eventname_metadata.ipynb | 61 ++++++++++++++------- 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/Jupyterhub/extract_eventname_metadata.ipynb b/Jupyterhub/extract_eventname_metadata.ipynb index 50afc26..d9147d3 100644 --- a/Jupyterhub/extract_eventname_metadata.ipynb +++ b/Jupyterhub/extract_eventname_metadata.ipynb @@ -41,7 +41,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -59,6 +59,23 @@ "DELETE_AFTER_MOVE = False # Set to True to delete original files after successful processing" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Metadata options" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "HAZARD = None\n", + "LOCATION = None" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -103,7 +120,7 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -143,7 +160,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -152,8 +169,8 @@ "text": [ "Current AWS Identity:\n", " Account: 515966502221\n", - " ARN: arn:aws:sts::515966502221:assumed-role/disasters-prod/botocore-session-1773693036\n", - " User ID: AROAXQIQAAVGWA2LHXCPW:botocore-session-1773693036\n", + " ARN: arn:aws:sts::515966502221:assumed-role/disasters-prod/botocore-session-1773760456\n", + " User ID: AROAXQIQAAVGWA2LHXCPW:botocore-session-1773760456\n", "\n", "S3 client created successfully\n" ] @@ -187,7 +204,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -329,7 +346,7 @@ " return False, {'is_cog': False, 'errors': [str(e)], 'warnings': []}\n", "\n", "\n", - "def add_metadata_and_create_cog(file_bytes: bytes, event_metadata: Dict[str, str]) -> bytes:\n", + "def add_metadata_and_create_cog(file_bytes: bytes, event_metadata: Dict[str, str], HAZARD: List[str], LOCATION: List[str], ) -> bytes:\n", " \"\"\"\n", " Rebuild GeoTIFF as a valid COG with metadata using rio-cogeo library.\n", " \n", @@ -374,11 +391,13 @@ " tags = {\n", " 'ACTIVATION_EVENT': f\"{event_metadata['year_month']}_{event_metadata['hazard']}_{event_metadata['location']}\",\n", " 'YEAR_MONTH': event_metadata['year_month'],\n", - " 'HAZARD': event_metadata['hazard'],\n", - " 'LOCATION': event_metadata['location'],\n", + " 'HAZARD': HAZARD if HAZARD is not None else event_metadata['hazard'],\n", + " 'LOCATION': LOCATION if LOCATION is not None else event_metadata['location'],\n", " 'PROCESSING_DATE': datetime.utcnow().isoformat(),\n", " 'PROCESSOR': 'S3 GeoTIFF COG Processor v1.0'\n", " }\n", + " print(f'Hazard tag {HAZARD}')\n", + " print(f'Location tag {LOCATION}')\n", " \n", " # Create COG profile using original compression settings\n", " cog_profile = {\n", @@ -408,7 +427,7 @@ " dst_path=output_path,\n", " dst_kwargs=cog_profile,\n", " add_mask=False,\n", - " overview_level=4,\n", + " overview_level=5,\n", " overview_resampling='average',\n", " web_optimized=True,\n", " additional_cog_metadata=tags,\n", @@ -514,7 +533,7 @@ }, { "cell_type": "code", - "execution_count": 81, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -561,7 +580,7 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -603,7 +622,7 @@ }, { "cell_type": "code", - "execution_count": 83, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -633,7 +652,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_1272/2684847193.py:178: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).\n", + "/tmp/ipykernel_205/1171966028.py:178: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).\n", " 'PROCESSING_DATE': datetime.utcnow().isoformat(),\n", "Reading input: /vsimem/input.tif\n", "\n" @@ -645,7 +664,9 @@ "text": [ " Reading original file settings...\n", " Original settings: compress=zstd, predictor=None, level=None\n", - " Rebuilding as COG (preserving original compression settings)...\n" + " Rebuilding as COG (preserving original compression settings)...\n", + "Hazard tag None\n", + "Location tag None\n" ] }, { @@ -662,14 +683,14 @@ "output_type": "stream", "text": [ " COG creation complete with embedded metadata\n", - " Output size: 150,638,215 bytes\n", - " Output size: 150,638,215 bytes\n", - " Size change: -4.8%\n", + " Output size: 150,769,442 bytes\n", + " Output size: 150,769,442 bytes\n", + " Size change: -4.7%\n", " Validating output COG structure...\n", " ✓ Output is valid COG\n", " Compression: ZSTD\n", " Tile size: [512, 512]\n", - " Overviews: 4 levels\n", + " Overviews: 5 levels\n", " Uploading to s3://nasa-disasters-dev/ProgramData/Landsat/burnRatio/202501_Fire_CA_LC09_NBR_182831_041036_2025-01-14_day.tif...\n", " ✓ Upload successful\n", "\n", @@ -730,7 +751,7 @@ " \n", " # Step 3: Add metadata and create/optimize COG\n", " print(\" Creating COG with metadata and ZSTD compression...\")\n", - " modified_bytes = add_metadata_and_create_cog(file_bytes, event_metadata)\n", + " modified_bytes = add_metadata_and_create_cog(file_bytes, event_metadata, HAZARD, LOCATION)\n", " print(f\" Output size: {len(modified_bytes):,} bytes\")\n", " \n", " size_change = ((len(modified_bytes) - len(file_bytes)) / len(file_bytes)) * 100\n", From d960902d5266a2f72c9958c1969ddba10ef88917 Mon Sep 17 00:00:00 2001 From: Kyle Lesinger Date: Tue, 17 Mar 2026 15:33:46 +0000 Subject: [PATCH 14/14] update notebook --- Jupyterhub/extract_eventname_metadata.ipynb | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Jupyterhub/extract_eventname_metadata.ipynb b/Jupyterhub/extract_eventname_metadata.ipynb index d9147d3..f860267 100644 --- a/Jupyterhub/extract_eventname_metadata.ipynb +++ b/Jupyterhub/extract_eventname_metadata.ipynb @@ -533,7 +533,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -542,6 +542,7 @@ "text": [ "Testing pattern detection:\n", "\n", + "Remainder = Turkey_UNW_2022-04-06_to_2023-02-08_day\n", "✓ 202302_Earthquake_Turkiye_Turkey_UNW_2022-04-06_to_2023-02-08_day.tif\n", " Year/Month: 202302\n", " Location: Turkiye\n", @@ -560,6 +561,7 @@ "print(\"Testing pattern detection:\\n\")\n", "for filename in test_filenames:\n", " result = detect_activation_event(filename)\n", + " print(f'Remainder = {result[\"remainder\"]}')\n", " if result:\n", " print(f\"✓ {filename}\")\n", " print(f\" Year/Month: {result['year_month']}\")\n", @@ -622,7 +624,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -691,7 +693,7 @@ " Compression: ZSTD\n", " Tile size: [512, 512]\n", " Overviews: 5 levels\n", - " Uploading to s3://nasa-disasters-dev/ProgramData/Landsat/burnRatio/202501_Fire_CA_LC09_NBR_182831_041036_2025-01-14_day.tif...\n", + " Uploading to s3://nasa-disasters-dev/ProgramData/Landsat/burnRatio/LC09_NBR_182831_041036_2025-01-14_day.tif...\n", " ✓ Upload successful\n", "\n", "================================================================================\n", @@ -718,6 +720,7 @@ " \n", " # Step 1: Detect activation event pattern\n", " event_metadata = detect_activation_event(filename)\n", + " final_filename = f'{event_metadata[\"remainder\"]}.tif'\n", " \n", " if not event_metadata:\n", " result['message'] = 'No activation event pattern detected - skipping'\n", @@ -775,7 +778,7 @@ " result['cog_valid'] = False\n", " \n", " # Step 4: Upload to destination\n", - " dest_key = DESTINATION_PREFIX + filename\n", + " dest_key = DESTINATION_PREFIX + final_filename\n", " print(f\" Uploading to s3://{DESTINATION_BUCKET}/{dest_key}...\")\n", " \n", " if upload_to_s3(modified_bytes, DESTINATION_BUCKET, dest_key):\n",