
Este código hace uso de la biblioteca Geopandas, que es una biblioteca de Python para trabajar con datos geoespaciales. Geopandas combina la funcionalidad de Pandas (una biblioteca para el manejo y análisis de datos) con otras bibliotecas como shapely (para el manejo de formas geoespaciales) y fiona (para leer y escribir datos geoespaciales). Aquí te explico cada línea:
import geopandas as gpd
Esta línea está importando la biblioteca Geopandas y asignándole el alias `gpd` para que podamos referirnos a ella más fácilmente en el código. Este es un alias comúnmente usado para Geopandas.
lca = gpd.read_file("C:/archivos_st_py/vector/PNLCampana.shp")
Esta línea está usando la función `read_file()` de Geopandas para cargar un archivo de tipo "shapefile" en un GeoDataFrame. Un "shapefile" es un formato popular para datos geoespaciales, creado por ESRI, y es ampliamente utilizado en sistemas de información geográfica (GIS) como ArcGIS y QGIS. El "shapefile" contiene información geográfica, como las coordenadas de puntos, líneas o polígonos, así como atributos de estos elementos, como nombres, tipos, etc. En este caso, el archivo se encuentra en la ruta especificada ("C:/archivos_st_py/vector/PNLCampana.shp") y se almacena en la variable `lca`. Si estás trabajando en un sistema operativo diferente al indicado en la ruta, es posible que necesites ajustar los slash (de `/` a `\` o viceversa) para que Python pueda leer correctamente la ruta del archivo.
lca
Esta línea está imprimiendo el contenido de la variable `lca`, que es un GeoDataFrame. Los GeoDataFrames son similares a los DataFrames de Pandas, pero con funcionalidad adicional para trabajar con datos geoespaciales. Cuando imprimes un GeoDataFrame, obtienes una tabla donde cada fila representa una entidad geoespacial (como un punto, una línea o un polígono) y las columnas representan los atributos de esas entidades, así como una columna especial que contiene las formas geoespaciales.
Por tanto, este código está leyendo un archivo de datos geoespaciales y luego mostrando los datos en forma tabular. Sin embargo, este código solo muestra el comienzo de lo que puedes hacer con Geopandas: también puedes realizar operaciones espaciales, como uniones y cruces, calcular áreas y distancias, reproyectar tus datos a diferentes sistemas de coordenadas, y mucho más.
Este código realiza una operación conocida como reclasificación de un archivo ráster utilizando la biblioteca `osgeo`, que es una biblioteca de Python para trabajar con datos geoespaciales. Un archivo ráster es una estructura de datos de cuadrícula que puede representar una variedad de variables geoespaciales, como un mapa de elevación o un mapa de temperatura.
Vamos a desglosar cada línea del código:
from osgeo import gdal
Esta línea importa el módulo `gdal` de la biblioteca `osgeo`. GDAL (Geospatial Data Abstraction Library) es una biblioteca de código abierto para leer y escribir formatos de datos geoespaciales.
driver = gdal.GetDriverByName('GTiff')
Esta línea está obteniendo un controlador GDAL para trabajar con archivos GeoTIFF. Un controlador es un objeto que puede interactuar con un tipo específico de archivo o servicio de datos. En este caso, el controlador es para el formato GeoTIFF, que es un tipo de archivo ráster.
file = gdal.Open("C:/archivos_st_py/raster/dem.tif")
Aquí, la función `gdal.Open()` se utiliza para abrir el archivo ráster especificado en la ruta. El archivo se asigna a la variable `file`.
band = file.GetRasterBand(1)
Los datos ráster se pueden almacenar en varias bandas, cada una de las cuales representa una variable diferente. Esta línea está obteniendo la primera banda del archivo ráster.
lista = band.ReadAsArray()
La función `ReadAsArray()` se utiliza para leer los datos de la banda ráster en un array de numpy. Este array se asigna a la variable `lista`.
Luego tenemos un bucle doble que recorre cada píxel en la imagen ráster. La función `RasterXSize` devuelve el número de columnas en el ráster, y `RasterYSize` devuelve el número de filas.
Dentro de este bucle, se realiza una reclasificación de los datos. Esto implica cambiar los valores de los píxeles en la imagen ráster basándose en ciertos criterios. En este caso, los valores de los píxeles se cambian en función de su valor actual. Por ejemplo, si el valor del píxel es menor a 1300, se cambia a 1.
file2 = driver.Create( 'dem_recl.tif', file.RasterXSize , file.RasterYSize , 1)
Aquí se crea un nuevo archivo ráster con el mismo tamaño que el archivo original. El argumento '1' indica que el nuevo ráster tendrá una sola banda.
file2.GetRasterBand(1).WriteArray(lista)
Esta línea escribe los datos de la matriz `lista` en la primera banda del nuevo archivo ráster.
proj = file.GetProjection()
Obtiene la proyección del archivo ráster original y la guarda en la variable `proj`.
georef = file.GetGeoTransform()
Obtiene la geotransformación del archivo ráster original y la guarda en la variable `georef`. La geotransformación es una serie de valores que definen la relación espacial entre los píxeles de la imagen y las coordenadas geográficas en el mundo real.
file2.SetProjection(proj)
Establece la proyección del nuevo archivo ráster como la misma que la del archivo ráster original.
file2.SetGeoTransform(georef)
Establece la geotransformación del nuevo archivo ráster como la misma que la del archivo ráster original.
file2.FlushCache()
Esta línea asegura que cualquier cambio realizado en el archivo ráster sea escrito en el disco. Es especialmente importante cuando se modifican los datos, ya que los cambios pueden almacenarse en la memoria hasta que se llame a `FlushCache()`.
En resumen, este script de Python abre un archivo ráster, lee los datos en un array, realiza una reclasificación de los valores en ese array, y luego escribe los datos reclasificados en un nuevo archivo ráster. Asegura que el nuevo archivo ráster tenga la misma proyección y geotransformación que el archivo original. La reclasificación es un proceso común en el análisis de datos geoespaciales, y este script proporciona un ejemplo de cómo se puede realizar con Python y GDAL.
Hola! Te invito a inscribirte en mi curso sobre SIG y teledetección usando el lenguaje de programación Python, el cual podrás combinar de manera perfecta con QGIS, ARCGIS, Google Earth Engine, entre otros.
Dale un giro a tu carrera profesional con una nueva habilidad que te pondrá un escalón arriba de los demás, ya que la programación aplicada a los SIG y a la teledetección vino para quedarse!
Python es un lenguaje de programación muy usado en todo el mundo y facilita la forma de analizar los datos satelitales. Olvídate de pasar horas procesando una imagen o un archivo vectorial. Aumenta tu productividad y no llenes de memoria innecesariamente a tu computador.
Olvídate de tener que realizar el mismo procedimiento una y otra vez de forma lenta y agotadora. Crea tus propios códigos de programación, dándoles tu toque especial, ya que la programación es un arte y fusionada con los SIG y la teledetección se crea una obra maestra.
Bienvenido al mundo de la investigación reproducible, donde a través de códigos de programación podrás replicar tareas y funciones especificas todas las veces que quieras y de una forma fácil.
Se parte de la comunidad mundial de Python, donde todos y todas se ayudan con fin de aprender lo más posible.
Qué esperas! solo depende de ti sumarte al mundo del Big Data en la teledetección!
Inscríbete al curso y te prometo que no te arrepentirás!
Nos vemos en clases!
Andrés.