From 15fae61e2e7eed2513fee0c8779704742bf22284 Mon Sep 17 00:00:00 2001 From: GRUPO3_HACKATHON <ydory007@gmail.com> Date: Mon, 31 Jul 2023 04:08:50 +0000 Subject: [PATCH] Update file hackathon.ipynb --- docs/hackathon.ipynb | 353 ------------------------------------------- 1 file changed, 353 deletions(-) delete mode 100644 docs/hackathon.ipynb diff --git a/docs/hackathon.ipynb b/docs/hackathon.ipynb deleted file mode 100644 index 86d13fa..0000000 --- a/docs/hackathon.ipynb +++ /dev/null @@ -1,353 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "bf1e1f14-3a8f-4346-9268-0638f16257f2", - "metadata": {}, - "source": [ - "# Agricultura Familiar Conectada: Plataforma Web para Optimizar Cultivos con NDVI y NDWI" - ] - }, - { - "cell_type": "markdown", - "id": "d9e05d42-0175-41fd-a589-680e8354f145", - "metadata": {}, - "source": [ - "### Casos de estudio\n", - "\n", - "* Cuenca del rÃo Grande en el área Central de Panamá" - ] - }, - { - "cell_type": "markdown", - "id": "ae13de6f-8a8f-4bbe-995e-b1e1750b9999", - "metadata": {}, - "source": [ - "### Objetivo General\n", - "\n", - "\"Desarrollar una plataforma web innovadora y accesible para agricultores familiares, basada en cálculos de los Ãndices NDVI y NDWI, que les permita mejorar la toma de decisiones y optimizar el manejo de cultivos mediante el monitoreo de la salud de las plantas y la disponibilidad de agua en sus terrenos agrÃcolas ee identificar posibles zonas inundables en el area.\"" - ] - }, - { - "cell_type": "markdown", - "id": "622f4ddd-b1ce-447d-83c4-b0f5c8538271", - "metadata": {}, - "source": [ - "### Objetivos EspecÃficos\n", - "\n", - "* Desarrollar la plataforma web: Crear una plataforma en lÃnea que sea intuitiva, fácil de usar y accesible desde diversos dispositivos (como computadoras, tabletas y teléfonos móviles) para garantizar que los agricultores familiares puedan acceder a ella y utilizarla de manera efectiva.\n", - "* Integrar datos de teledetección: Automatizar la descarga de datos de los satilites y delimitados por las parcelas que el usuario seleccione.\n", - "* Identificar la calidad de la cobertura vegetal\n", - "* Identificar las potencialidades de concentración de agua superficial\n", - "* Definir los principales usos de suelo\n", - "* Delimitación de áreas de inundación por influencia topográfica\n", - "* Establecer bases de datos de parcelas agrÃcolas\n", - "* Implementar alertas y notificaciones cuando se detecten cambios significativos en los Ãndices NDVI y NDWI, señalando posibles situaciones de estrés hÃdrico o problemas en el crecimiento de los cultivos.\n", - "* Facilitar la interacción y colaboración al implementar funciones de interacción social en la plataforma para que los agricultores familiares puedan compartir experiencias, hacer preguntas y recibir asesoramiento de otros agricultores y expertos agrÃcolas." - ] - }, - { - "cell_type": "markdown", - "id": "5c773f94-cbd3-4bc4-9a9c-73f23173ca1d", - "metadata": {}, - "source": [ - "## MetodologÃa\n", - "\n", - "### Planteamiento del problema\n", - "\n", - "Las áreas geográficas de provincias centrales en Panamá presentan caracterÃsticas naturales morfológicas favorables para los procesos de inundaciones. Estas áreas geográficas presentan importantes actividades económicas de explotación del sector primario y sobresalientes ecosistemas.\n", - "De igual manera nuestros agricultores se enfrentan a retos nunca antes vistos, fenómenos climáticos extremos como sequias, inundaciones, Ciclones tropicales, degradación de la tierra, entre otros. Estos fenómenos naturales alteran en gran medida los valores nutricionales y quÃmicos de los suelos en que los cultivos regularmente se desarrollan. \n", - "\n", - "Mediante el presente análisis, se proyecta identificar las áreas potenciales de concentración de agua superficial como datos relevantes para delimitar áreas de inundación por la naturaleza del territorio y como potencialidad para el aprovechamiento del recursos hÃdricos para actividades económicas importantes como la agricultura." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "4d5b2e96-7255-487f-81f9-ab9ecc136d17", - "metadata": {}, - "source": [ - "## Procedimiento\n", - "\n", - "1. Delimitacion de Zonas agricolas mediante el uso de mapa de cobertura boscosa y uso de suelo gestionando de información de carácter satelital del sitio de Copernicus y procesadas en QGIS 3.22" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "595feab2-b299-4eed-89d6-629021683bdc", - "metadata": {}, - "source": [ - "<img src=\"./img/landcover.png\" />" - ] - }, - { - "cell_type": "markdown", - "id": "9c2060e1-9132-425d-be8f-a43790e150b3", - "metadata": {}, - "source": [ - "# for Raster files 'tiff' manipulation\n", - "import rasterio\n", - "# libraries for array manipulation\n", - "import numpy as np\n", - "import pandas as pd" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "c177b48b", - "metadata": {}, - "outputs": [], - "source": [ - "def readTiffBand(tiff_file, band_number):\n", - " \"\"\"\n", - " Reading the specific band from the 'tiff' file.\n", - " \"\"\"\n", - " with rasterio.open(tiff_file) as dataset:\n", - " band = dataset.read(band_number)\n", - " return band" - ] - }, - { - "cell_type": "markdown", - "id": "a18e63b6-1b41-4f15-aeca-676956e3d3cb", - "metadata": {}, - "source": [ - "2. Calculamos el Ãndice Normalizado de Diferencia de Vegetación, utilizando codigos en Python\n", - "\n", - "NDVI = (NIR-Red) / (NIR+Red)\n", - "\n", - "NIR= luz del infrarrojo cercano y \n", - "Rojo= luz roja visible\n", - "\n", - "Entre los valores de referencia de Ãndice que se interpretarán calculando el NDVI, se encuentran los siguientes:\n", - "\n", - " | Min | Max | State |\n", - "|------|------|-----------------------------|\n", - "| 0.1 | 0.2 | Suelo desnudo |\n", - "| 0.2 | 1 | Plantas |\n", - "| 0.5 | 0.5 | Vegetación densa y saludable|\n", - "| 0.2 | 0.5 | Vegetación dispersa |\n", - "\n", - "Valores negativos = Concentración de agua, estructuras artificiales y rocas entre otros.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "5868bef0", - "metadata": {}, - "outputs": [], - "source": [ - "def calculateNDVI(band_red, band_nir):\n", - " \"\"\"\n", - " Calculating NDVI index given the red and near infrared band.\n", - " \"\"\"\n", - " \n", - " # In case you don't have cero values over the bands\n", - " #ndvi = (band_nir - band_red) / (band_nir + band_red)\n", - " \n", - " # Cero values won't be valid\n", - " element1 = (band_nir - band_red)\n", - " element2 = (band_nir + band_red)\n", - " \n", - " ndvi = np.divide(element1, element2, out=np.zeros_like(element1), where=element2!=0)\n", - " \n", - " return ndvi" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "64302660-61a1-445b-a35c-3ebfafb71c8a", - "metadata": {}, - "source": [ - "<img src=\"./img/NDVI.png\" />" - ] - }, - { - "cell_type": "markdown", - "id": "c87217b4-0fcd-46c5-a492-4d99c8be0be6", - "metadata": {}, - "source": [ - "4. Cálculo de Ãndice de Agua de Diferencia Normalizada (NDWI), con la finalidad de identificar concentraciones de agua sobre la superficie de la tierra. Se aplicará la siguiente fórmula\n", - "\n", - "NDWI = (Green – NIR)/(Green + NIR)\n", - "\n", - "Green = luz de banda verde\n", - "NIR = luz del infrarrojo cercano\n", - "| Min | Max | State |\n", - "|------|-----|--------------------------------------|\n", - "| 0.2 | 1 | Superficie del agua |\n", - "| 0,0 | 0,2 | Inundación, humedad |\n", - "|- 0,3 | 0,0 | SequÃa moderada, superficies sin agua| \n", - "| -1 | -0,3| SequÃa, superficies sin agua |\n" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "6a97d07d", - "metadata": {}, - "outputs": [], - "source": [ - "def calculateNDWI(band_green, band_nir):\n", - " \"\"\"\n", - " Calculating NDWI index given the green and near infrared band.\n", - " \"\"\"\n", - " \n", - " # In case you don't have cero values over the bands\n", - " #ndwi = (band_green - band_nir) / (band_green + band_nir)\n", - " \n", - " \n", - " # Cero values won't be valid\n", - " element1 = (band_green - band_nir)\n", - " element2 = (band_green + band_nir)\n", - " \n", - " ndwi = np.divide(element1, element2, out=np.zeros_like(element1), where=element2!=0)\n", - " \n", - " return ndwi" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "71134f4a-04fe-4976-9f16-4b2bea08db92", - "metadata": {}, - "source": [ - "<img src=\"./img/NDWI.png\" />" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "3ba41e31", - "metadata": {}, - "outputs": [], - "source": [ - "def write_index_to_tiff(index_array, output_tiff_file, tiff_metadata):\n", - " \"\"\"\n", - " Write the computed index array to the new 'tiff' file with the same metadata as the input 'tiff' file.\n", - " \"\"\"\n", - " \n", - " with rasterio.open(output_tiff_file, 'w', **tiff_metadata) as dst:\n", - " dst.write(index_array, 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "d8bdbf9f", - "metadata": {}, - "outputs": [], - "source": [ - "def update_index_metadata(band_file, name_index, index_array):\n", - " \"\"\"\n", - " Update metada from the computed index array\n", - " \"\"\"\n", - " \n", - " # Reading metadata from 'tiff' file\n", - " with rasterio.open(band_file) as dataset:\n", - " tiff_metadata = dataset.profile\n", - "\n", - " # Updating metadata from computed index array\n", - " tiff_metadata.update(count=1, dtype=str(index_array.dtype))\n", - "\n", - " # Saving computed index array to a 'tiff' file\n", - " output_index_tiff = f'./outputs/output_{name_index}.tif'\n", - " write_index_to_tiff(index_array, output_index_tiff, tiff_metadata)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "6a1e0f4f", - "metadata": {}, - "outputs": [], - "source": [ - "# Reading green band (band 3), red band (band 4) and near infrared band (band 8) from 'tiff' files\n", - "band3_file = './sentinel_2/banda_3/T17PNK20230427T155529B03_10m.tif'\n", - "band4_file = './sentinel_2/banda_4/T17PNK20230427T155529B04_10m.tif'\n", - "band8_file = './sentinel_2/banda_8/T17PNK20230427T155529B08_10m.tif'\n", - "\n", - "band_green = readTiffBand(band3_file, 1).astype('float64')\n", - "band_red = readTiffBand(band4_file, 1).astype('float64')\n", - "band_nir = readTiffBand(band8_file, 1).astype('float64')\n", - "\n", - "\n", - "# Calculating NDVI\n", - "ndvi = calculateNDVI(band_red, band_nir)\n", - "update_index_metadata(band8_file, \"ndvi\", ndvi)\n", - "\n", - "\n", - "# Calculating NDWI\n", - "ndwi = calculateNDWI(band_green, band_nir)\n", - "update_index_metadata(band8_file, \"ndwi\", ndwi)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "75bcf2dd", - "metadata": {}, - "outputs": [], - "source": [ - "#Dataset for the calculated ndvi index\n", - "df_ndvi = pd.DataFrame(ndvi)\n", - "df_ndvi.to_csv(\"ndvi_index.csv\", index=False)\n", - "#df_ndvi" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "3d50f7f7", - "metadata": {}, - "outputs": [], - "source": [ - "#Dataset for the calculated ndwi index\n", - "df_ndwi = pd.DataFrame(ndwi)\n", - "df_ndwi.to_csv(\"ndwi_index.csv\", index=False)\n", - "#df_ndwi" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "889a6819", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "836a614b-9dcb-44c6-8114-dd96b52fd513", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} -- GitLab