Skip to content
r.cfdtools edited this page Apr 1, 2023 · 74 revisions

R.GISPython
Algoritmos y programación GIS para análisis de datos espaciales usando Python by r.cfdtools@gmail.com

Introducción

Python es un potente lenguaje de programación interpretado con licencia de código abierto que soporta orientación a objetos y es comúnmente utilizado para la automatización de tareas en herramientas geográficas en ArcGIS Desktop, ArcGIS Pro y QGIS. Las herramientas que hacen parte de Python están disponibles en versiones de 32 y 64 bits, existiendo una limitante de hasta máximo 2GB en el tamaño de los archivos que pueden ser cargados en memoria para sistemas de 32 bits. Para el procesamiento profesional de grandes volúmenes de datos se recomienda que el sistema operativo, la aplicación GIS y Python sean de 64 bits. Para el desarrollo de los ejercicios se puede utilizar cualquier versión.

A través de las actividades disponibles en este repositorio, aprenderá los conceptos básicos de Python y su aplicabilidad e integración con sistemas de información geográfica - SIG.

Versiones de Python en ArcGIS y QGIS

  • En ArcGIS for Desktop (p.e, 10.2.2), la versión integrada de Python es 2.7.5 y por defecto se instala en Microsoft Windows en el directorio C:\Python27.
  • En ArcGIS Pro (p.e, 2.9.0), la versión integrada de Python es 3.7.11, por defecto se instala en C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3 y por clonación en el directorio de usuario (p.e, Admin) en C:\Users\Admin\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone.
  • En QGIS (p.e, 3.22.1), la versión integrada de Python es la 3.9.5, por defecto se instalan en Microsoft Windows en el directorio de archivos de programa localizado en C:\Program Files\QGIS 3.10\apps cuando se trata de versiones de 64 bits.

¿Qué es un Script en Python?

Un script en Python, es un archivo que contiene diferentes instrucciones o código que pueden ser ejecutadas por el intérprete de comandos. Generalmente los archivos son almacenados con la extensión .py y son usados para ejecutar o automatizar tareas repetitivas. Para la creación de scripts, es recomendable utilizar un editor de código que permita identificar con facilidad la estructura y escritura propia del lenguaje o un entorno de desarrollo de aplicaciones (IDE), por ejemplo, Notepad++, Sublime Text, Gedit, Anaconda o PyCharm. En QGIS (p.e, 3.10), desde la consola de Python es posible acceder al editor de scripts, desde el cual se puede crear, abrir, editar y ejecutar directamente este tipo de archivos. En ArcGIS for Desktop, es posible editar y ejecutar archivos .py directamente desde el ambiente integrado de desarrollo o IDLE de Python incorporado.

Requerimientos

Requerimientos específicos adicionales son indicados en cada script o en cada microcontenido.

Intérpretes de Python en PyCharm

En el siguiente cuadro se indican algunos de los nombres y rutas asociadas en PyCharm que son utilizadas durante el desarrollo de los microcontenidos de este repositorio. En PyCharm, oprimir Ctrl+Alt+S para ingresar a Settings, seleccionar el proyecto y definir los intérpretes de Python.

Nombre y versión de Python Ruta asociada
Python 2.7.5 ArcGIS for Desktop 10.2.2 C:\Python27\ArcGIS10.2\python.exe
Python 3.7.11 ArcGIS Pro 2.9.1 C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe
Python 3.10.2 Standalone C:\Python310\python.exe
Python 3.9.5 QGIS 3.22.3 C:\Program Files\QGIS 3.22.3\apps\Python39\python.exe
Python 3.8.10 Standalone C:\Python381\python.exe

Las versiones indicadas pueden variar dependiendo de las actualizaciones y nuevas versiones de las herramientas y librerías utilizadas.

Para la actualización de librerías existentes o la instalación de librerías adicionales, se recomienda la creación y uso de ambientes virtuales para no modificar las versiones originales de Python instaladas sobre ArcGIS for Desktop, ArcGIS Pro y QGIS.

Tema 1. Fundamentos generales de Python

Este tema presenta los fundamentos básicos generales necesarios para la comprensión de la sintaxis propia de este lenguaje, requerida para la ejecución de instrucciones por consola o para la codificación de scripts.

Microcontenido Alcance
Identificar y ejecutar cualquier versión de Python instalada En el sistema operativo pueden existir y convivir, además de las versiones integradas a las herramientas GIS, otras versiones de Python registradas y una como versión por defecto. Identificar las versiones instaladas le permitirá realizar pruebas de ejecución de comandos por consola o a través de scripts.
Definir la versión por defecto de Python en el OS y configurar PyCharm Definir una versión por defecto de Python en el CMD de Microsoft Windows, le permitirá lanzar este intérprete de comandos desde cualquier directorio de su sistema operativo y sin tener que ingresar la ruta completa del ejecutable Python.exe. La configuración de intérpretes en PyCharm, le permitirá ejecutar scripts de un proyecto utilizando una versión predefinida de Python.
Ayuda, palabras reservadas y módulos disponibles Dependiendo de la versión de Python instalada, dispondrá de algunas librerías o módulos preinstalados. Python además, al igual que otros lenguajes de programación, dispone de palabras reservadas que no podrán ser utilizadas para definir variables u objetos de usuario.
Usar Python como una calculadora Desde la consola de Python, es posible realizar operaciones matemáticas simples o complejas, definir variables, listas, tuplas, funciones, llamar módulos y en general utilizar cualquier elemento integrado al lenguaje.
Script básico Un script en Python, es un archivo que contiene diferentes instrucciones que pueden ser ejecutadas por el intérprete de comandos. Generalmente los archivos son almacenados con la extensión .py, y son usados para ejecutar o automatizar tareas repetitivas. Ejemplo usando PyCharm, Command CMD, ArcGIS For Desktop, ArcGIS Pro y QGIS.
Scripts interactivos Los scripts en Python permiten la entrada directa de datos desde la consola de comandos o desde el intérprete de comandos, para ello puede utilizar el comando input(). En la interfaz gráfica de QGIS, las entradas de usuario se pueden realizar mediante QInputDialog.getText() y en ArcGIS Pro, la ejecución de este tipo de scripts puede ser realizada directamente desde Python Notebook.
Creación de scripts interactivos e iterativos con funciones y pruebas lógicas simples Python dispone de múltiples estructuras para la ejecución de procesos iterativos, como while, for y range.
Instalación, actualización de paquetes y creación de gráficas básicas usando matplotlib Complementariamente a las librerías obtenidas con la instalación de Python, es posible adicionar nuevas librerías que posteriormente podrán ser invocadas desde la consola o desde scripts y también se pueden actualizar las librerías preinstaladas. El procedimiento más común de instalación automatizada se realiza a través del comando de consola pip disponible en el directorio Scripts de Python.
Control de excepción de errores En el evento de que el usuario ingrese valores nulos o fuera de rango, el código deberá ser capaz de controlar estas excepciones para no devolver al usuario valores errados. Algunos controles de ejecución pueden ser implementados usando condicionales para la validación de los datos ingresados, o a través de los controles de ejecución propios de Python.
Script con archivo log de ejecución y resultados Al ejecutar scripts, los resultados son mostrados en la consola del entorno de desarrollo o en el Command del sistema operativo. Los resultados también pueden ser volcados en un archivo de registro que puede ser creado y actualizado directamente desde el código. Para este procedimiento utilizaremos la instrucción .write().
Introducción a pandas - Representación estadística de Municipios de Colombia Pandas es una librería complementaria al lenguaje de programación Python que permite leer, representar y manipular datos almacenados en diferentes formatos, p.ej, en archivos de texto separados por comas .csv (CSV - Comma separated values) y archivos en formatos de libro de cálculo electrónico como Microsoft Excel en formato .xls y .xlsx.

Tema 2 - Procesamiento de tablas geocodificadas

Las tablas geo-codificadas contienen columnas de atributos que hacen referencia a la localización espacial de puntos o sucesiones de puntos (utilizados para el trazado de polilíneas o polígonos), su procesamiento permite representar y crear espacialmente diferentes geometrías.

Microcontenido Alcance
Catálogo nacional de estaciones hidrometeorológicas del IDEAM - Colombia, descarga y análisis usando Python El Instituto de Hidrología, Meteorología y Estudios Ambientales - IDEAM de Colombia, adscrito al Ministerio de Medio Ambiente - Minambiente, es la entidad nacional encargada registrar y mantener la información hidrometeorológica del país, incluida la localización y clasificación de la red de estaciones que hace parte del Catálogo Nacional de Estaciones - CNE. A través del servicio de Solicitud de Información o a través del portal DHIME del IDEAM desde la pestaña Recursos, personas naturales o jurídicas, pueden obtener no solamente los catálogos, sino también las capas geográficas y los registros discretos registrados en cada estación. El código desarrollado en Python por r.cfdtools, descarga de forma directa el archivo del catálogo nacional de estaciones y realiza un análisis estadístico detallado a través de los diferentes atributos registrados.
Obtención y análisis de datos climatológicos utilizando la API de openweathermap.org y el Catálogo nacional de estaciones hidrometeorológicas - CNE del IDEAM - Colombia A partir de la localización geográfica de estaciones hidrometeorológicas y utilizando la interfaz de programación de aplicaciones - API del portal openweathermap.org, obtener datos históricos o datos de pronóstico para las variables climatológicas: temperatura, sensación térmica, punto de rocío, nubosidad, humedad, presión atmosférica, dirección del viento, velocidad del viento, velocidad de ráfagas de viento, precipitación, visibilidad e índice ultravioleta - UVI.
Generador de rampas de color para representación de grillas en ArcGIS for Desktop y ArcGIS Pro Las rampas de color son utilizadas para representar los valores de celdas o pixeles contenidos dentro de una grilla o mapa raster. Esri ArcGIS for Desktop y ArcGIS Pro, dispone de múltiples estilos de representación y a partir de la versión Desktop 10.6, estos estilos pueden ser creados por el usuario a través del administrador de estilos disponible en el menú Personalización; sin embargo, la creación de estilos en versiones anteriores y el reescalamiento y representación de grillas interpolas de resultados en una serie temporal, requieren de la creación manual de archivos .clr que luego pueden ser asociados a cada grilla de salida, perimitiendo de esta forma representar un mismo valor de celda en diferentes grillas con un mismo color. El propósito principal de este microcontenido, es crear estilos personalizados que luego serán utilizados en las actividades relacionadas con Interpolación y representación espacial de series de datos meteorológicos con simbología de rampa única.
Interpolación y representación espacial de series de datos meteorológicos con simbología de rampa única A partir de series de datos diarias o mensuales contenidas en registros discretos dentro de archivos de texto separados por comas o CSV, interpolar y representar espacialmente datos hidrometeorológicos usando re-escalamiento a rampa única de color. Para representar correctamente la serie temporal de la variable en estudio y poder visualizar bidimensional o tridimensionalmente las grillas de resultados, es necesario re-escalar los valores de todas las grillas a mapas de colores únicos a partir del mínimo y máximo encontrado en toda la serie de datos de entrada; de esta forma, en la representación, un valor discreto (p.ej, 100 milímetros de lluvia) existente en múltiples grillas será representado con el mismo color en la visualización.

Tema 3 - Procesamiento y análisis de capas geográficas y datasets

En el desarrollo de proyectos con componente geográfico, es necesario conocer los datos y metadatos de las diferentes capas que se utilizarán en los análisis, de esta forma, al ejecutar los diferentes geoprocesos, el analista podrá definir fácilmente los parámetros de entrada y entender como serán generadas las capas resultantes.

Microcontenido Alcance
Consulta de metadatos, propiedades y atributos en capas vectoriales de proyectos geográficos Esta actividad contiene scripts en Python que permiten listar todas las capas geográficas (en formato shapefile) disponibles en el directorio de datos local de un proyecto de ArcGIS o en las capas cargadas en un mapa de QGIS, consultar los atributos disponibles en cada capa, sus tipos, filtrar a partir de un campo específico y graficar los valores encontrados a partir de dos campos específicos definidos por el usuario.
Estadísticos de una capa geográfica con comparación por filtrado A partir de una capa geográfica en formato shapefile o feature class dentro de una Geodatabase, obtener los estadísticos de un campo de atributos determinado y estadísticos por filtrado a partir de un valor de corte en ArcGIS y QGIS.
Zonificación hidrográfica de Colombia - Análisis de forma y densidad usando Python Estudiar la forma y densidad de las áreas, zonas y subzonas hidrográficas de Colombia a partir de la delimitación geográfica realizada por el Instituto de Hidrología, Meteorología y Estudios Ambientales - IDEAM de Colombia, adscrito al Ministerio de Medio Ambiente - Minambiente y la red de drenajes sencillos digitalizada a escala 1:100k por el Instituto Geográfico Agustín Codazzi - IGAC.
Unión de múltiples tablas de datos hidro-climatológicos en un dataset único Isolated time-series file parameters, has to be joined in a unique table if you want to use dynamic ArcGIS map views related with gauge stations or basin polygons through an ETL process. Current ETL scripts include the datasets CAMELS-BR, ANA-BR & CAR-CO.
Convertir una tabla o dataset dinámico en una tabla de registros apilados Este script permite crear una tabla de registros apilados de series de tiempo para cargue masivo y visualización en GIS.

Enlaces de interés