miércoles, 21 de enero de 2026

Análisis geoespacial con Python - Parte 1 - Introduccion

Análisis Geoespacial con Python - Capítulo 1
Python // Geospatial Analysis

Análisis Geoespacial con Python

Aprende los fundamentos del análisis geoespacial y construye tu primer GIS con Python puro

La tecnología geoespacial está impactando nuestro mundo al cambiar nuestro conocimiento de la historia humana. En este capítulo, exploraremos la historia del análisis geoespacial, que precede a las computadoras e incluso a los mapas de papel.

Examinaremos por qué querrías aprender a usar un lenguaje de programación como analista geoespacial, en lugar de simplemente usar aplicaciones GIS. Esto nos ayudará a comprender la importancia de hacer el análisis geoespacial tan accesible como sea posible para tantas personas como sea posible.

MÓDULO_01

Análisis Geoespacial y Nuestro Mundo

En la década de 1880, los exploradores británicos comenzaron a aplicar rigor científico a la excavación de sitios culturales antiguos. El campo de la arqueología es una tarea frustrante, costosa y a menudo peligrosa que requiere paciencia y una buena dosis de suerte.

La Tierra es notablemente buena guardando secretos y borrando la historia de los esfuerzos humanos. Ríos cambiantes, inundaciones, volcanes, tormentas de polvo, huracanes, terremotos, incendios y otros eventos tragan ciudades enteras en el paisaje circundante.

El Descubrimiento de la Dra. Sarah Parcak

En 2007, la arqueóloga Dra. Sarah Parcak, de la Universidad de Alabama en Birmingham, comenzó a persuadir a nuestra obstinada Tierra para que revelara sus secretos sobre dónde han estado los humanos y qué han hecho.

ARQUEOLOGÍA ESPACIAL
Uso de imágenes satelitales para descubrir sitios arqueológicos ocultos
PROCESAMIENTO DE IMÁGENES
Interpretación visual y técnicas de mapeo GIS
PRESERVACIÓN
Monitoreo de sitios arqueológicos amenazados por saqueo
El análisis geoespacial puede encontrarse en casi todas las industrias: bienes raíces, petróleo y gas, agricultura, defensa, gestión de desastres, salud, transporte y oceanografía, por nombrar algunas.
MÓDULO_02

Historia del Análisis Geoespacial

El análisis geoespacial puede rastrearse hasta hace 15,000 años, en la cueva de Lascaux en el suroeste de Francia. En esta cueva, artistas paleolíticos pintaron animales comúnmente cazados y lo que muchos expertos creen son mapas estelares astronómicos.

15000 AC
Cueva de Lascaux
Primeros mapas estelares y modelos abstractos del mundo
1832
Charles Picquet - París
Mapa de muertes por cólera usando tonos de gris
1854
Dr. John Snow - Londres
Mapeo de brote de cólera rastreando fatalidades
1960s
Dr. Roger Tomlinson - CGIS
Sistema de Información Geográfica de Canadá
1967
Howard Fisher - SYMAP
Harvard Laboratory for Computer Graphics

El Padre del GIS

El Dr. Roger Tomlinson es conocido como "el padre del GIS" por su trabajo creando el Sistema de Información Geográfica de Canadá (CGIS) en la década de 1960. CGIS es el punto de partida del análisis geoespacial moderno.

Howard Fisher produjo una película en 1967 usando la salida de SYMAP para mostrar la expansión urbana de Lansing, Michigan, desde 1850 hasta 1965. Este análisis tomó meses, pero ahora tomaría solo unos minutos recrearlo gracias a las herramientas modernas.
MÓDULO_03

GIS y Teledetección

Existen dos campos principales en el análisis geoespacial: los Sistemas de Información Geográfica (GIS) y la Teledetección (Remote Sensing). Aunque comparten muchas similitudes, tienen enfoques distintos.

GIS
→ Datos vectoriales (puntos, líneas, polígonos)
→ Modelado y análisis espacial
→ Consultas de atributos
→ Mapas temáticos
→ Gestión de bases de datos geoespaciales
TELEDETECCIÓN
→ Datos raster (imágenes satelitales)
→ Procesamiento de imágenes
→ Clasificación de superficies
→ Detección de cambios
→ Análisis espectral

Datos de Elevación

Los datos de elevación pueden existir en formato vectorial o raster. Un tipo común de dato de elevación proviene de la misión SRTM (Shuttle Radar Topography Mission), que mapeó la mayoría de la superficie terrestre de la Tierra.

PUNTOS
LÍNEAS
POLÍGONOS
RASTER
MÓDULO_04

Conceptos GIS Comunes

Comprender los conceptos fundamentales de GIS es esencial para cualquier analista geoespacial. Estos conceptos forman la base de todas las operaciones de análisis espacial.

Estructuras de Datos Vectoriales

Los datos vectoriales GIS usan coordenadas que consisten, como mínimo, en un valor x horizontal y un valor y vertical para representar una ubicación en la Tierra. Los puntos, líneas y polígonos modelan objetos del mundo real.

Estructuras de Datos Geoespaciales
Coordenadas (x, y)
Puntos / Líneas / Polígonos
Features GIS

Reglas de Polígonos

MÍNIMO 4 PUNTOS
El primer y último punto deben ser idénticos
SIN SUPERPOSICIÓN
El límite del polígono no debe superponerse consigo mismo
HUECOS PERMITIDOS
Un polígono dentro de otro se considera un hueco

Operaciones Espaciales Comunes

BUFFER
Crea un polígono alrededor de un objeto a una distancia especificada. Se usa para análisis de proximidad, como establecer zonas de seguridad.
DISSOLVE
Combina polígonos adyacentes en un solo polígono. Útil para simplificar datos extraídos de teledetección.
INTERSECTION
Determina si una parte de una feature intersecta con otras. Se usa para consultas espaciales y análisis de proximidad.
UNION
Combina dos o más polígonos superpuestos en una sola forma. Útil para limpiar datasets generados automáticamente.
El bounding box es el cuadro más pequeño que puede contener todos los puntos de un dataset. El convex hull es similar, pero es el polígono más pequeño posible que puede contener el dataset.
MÓDULO_05

Conceptos de Teledetección

La teledetección implica la recolección de información sobre un objeto sin hacer contacto físico con él. En el contexto del análisis geoespacial, ese objeto generalmente es la Tierra.

Imágenes como Datos

En teledetección, las imágenes digitales se representan como arrays de valores de píxeles. Cada píxel contiene información sobre la reflectancia de la luz en diferentes longitudes de onda.

Procesamiento de Imágenes
Imagen Satelital
Band Math
Histograma
Clasificación

Operaciones Raster Comunes

BAND MATH
Operaciones matemáticas entre bandas espectrales para crear índices como NDVI
CHANGE DETECTION
Comparación de imágenes de diferentes fechas para detectar cambios
CLASSIFICATION
Agrupación de píxeles por características espectrales similares
Un histograma muestra la distribución estadística de valores en un dataset. Es clave para operaciones como mejorar el contraste, clasificación de objetos y comparación de imágenes.
MÓDULO_06

Construyendo SimpleGIS

Ahora que tenemos una mejor comprensión del análisis geoespacial, el siguiente paso es construir un GIS simple llamado SimpleGIS usando Python. Este pequeño programa será un GIS técnicamente completo con un modelo de datos geográficos y la capacidad de renderizar datos como un mapa temático visual.

Arquitectura del Sistema

Componentes de SimpleGIS
Modelo de Datos
Conversión Coordenadas
Renderizado

Configuración del Modelo de Datos

simplegis.py - Importaciones y Constantes
import turtle as t

# Constantes para acceder a índices de listas
NAME = 0
POINTS = 1
POP = 2

# Estado de Colorado: nombre, puntos del polígono, población
state = ["COLORADO", 
         [[-109, 37], [-109, 41], 
          [-102, 41], [-102, 37]], 
         5187582]

# Lista de ciudades: nombre, coordenadas, población
cities = []
cities.append(["DENVER", [-104.98, 39.74], 634265])
cities.append(["BOULDER", [-105.27, 40.02], 98889])
cities.append(["DURANGO", [-107.88, 37.28], 17069])

Configuración del Mapa

simplegis.py - Cálculo de Bounding Box
# Dimensiones del mapa
map_width = 400
map_height = 300

# Calcular el bounding box del estado
minx = 180
maxx = -180
miny = 90
maxy = -90

for x, y in state[POINTS]:
    if x < minx:
        minx = x
    elif x > maxx:
        maxx = x
    if y < miny:
        miny = y
    elif y > maxy:
        maxy = y

# Calcular ratios de escala
dist_x = maxx - minx
dist_y = maxy - miny
x_ratio = map_width / dist_x
y_ratio = map_height / dist_y

Función de Conversión de Coordenadas

simplegis.py - Conversión de Coordenadas
def convert(point):
    """Convierte coordenadas geográficas a píxeles."""
    lon = point[0]
    lat = point[1]
    
    # Transformar a coordenadas de pantalla
    x = map_width - ((maxx - lon) * x_ratio)
    y = map_height - ((maxy - lat) * y_ratio)
    
    # Ajustar para el origen centrado de turtle
    x = x - (map_width / 2)
    y = y - (map_height / 2)
    
    return [x, y]
La función convert() es fundamental en todo programa geoespacial. Transforma coordenadas del mundo real (longitud/latitud) en coordenadas de píxeles para visualización.

Renderizado del Mapa

simplegis.py - Dibujar Estado y Ciudades
# Dibujar el estado de Colorado
t.up()
first_pixel = None

for point in state[POINTS]:
    pixel = convert(point)
    if not first_pixel:
        first_pixel = pixel
    t.goto(pixel)
    t.down()

# Cerrar el polígono
t.goto(first_pixel)
t.up()

# Etiquetar el estado
t.goto([0, 0])
t.write(state[NAME], align="center", 
        font=("Arial", 16, "bold"))

# Dibujar las ciudades
for city in cities:
    pixel = convert(city[POINTS])
    t.up()
    t.goto(pixel)
    t.dot(10)  # Dibujar punto
    t.write(city[NAME] + ", Pop.: " + 
           str(city[POP]), align="left")
    t.up()

Consultas Espaciales

simplegis.py - Consultas de Atributos
# Consulta: ¿Cuál ciudad tiene mayor población?
biggest_city = max(cities, key=lambda city: city[POP])
t.goto(0, -200)
t.write("La ciudad más grande es: " + biggest_city[NAME])

# Consulta: ¿Cuál ciudad está más al oeste?
western_city = min(cities, key=lambda city: city[POINTS])
t.goto(0, -220)
t.write("La ciudad más occidental es: " + western_city[NAME])

# Finalizar
t.pen(shown=False)
t.done()
Resultado de las Consultas
La ciudad más grande es: DENVER
La ciudad más occidental es: DURANGO
SimpleGIS :: Mapa de Colorado
COLORADO
¡Felicitaciones! Has seguido los pasos de los cazadores paleolíticos, el padre del GIS Dr. Roger Tomlinson, el pionero Howard Fisher y los programadores humanitarios para crear un sistema de información geográfica funcional, extensible y técnicamente completo en menos de 60 líneas de código Python puro.
MÓDULO_07

Expansiones Posibles

SimpleGIS puede expandirse de muchas maneras. El sistema básico que hemos construido sirve como plataforma para funcionalidades más avanzadas.

MAPA OVERVIEW
Agregar un mapa de contexto mostrando la ubicación de Colorado en EE.UU.
COLORES
Añadir colores para mayor atractivo visual y claridad
LEYENDA
Crear una leyenda del mapa para diferentes features

Si deseas agregar más capas de datos, puedes crear más listas, pero estas se volverán difíciles de manejar. En ese caso, puedes usar el módulo SQLite de Python, que proporciona una base de datos tipo SQL que puede guardarse en disco o ejecutarse en memoria.

Por Qué Programar para Análisis Geoespacial

CONTROL TOTAL
AUTOMATIZACIÓN
PORTABILIDAD
APRENDIZAJE
La industria geoespacial se está moviendo gradualmente de flujos de trabajo tradicionales donde equipos de analistas usan software de escritorio costoso, hacia procesos automatizados que residen en la nube.

Resumen del Capítulo

01 // Historia Geoespacial

Desde las cuevas de Lascaux hasta los sistemas GIS modernos, el análisis geoespacial ha evolucionado durante 15,000 años.

02 // GIS vs Teledetección

Dos campos complementarios: GIS para datos vectoriales y modelado, teledetección para imágenes satelitales.

03 // Operaciones Espaciales

Buffer, Dissolve, Intersection y Union son las operaciones fundamentales del análisis espacial.

04 // SimpleGIS en Python

Un GIS completo en menos de 60 líneas de código Python puro, demostrando el poder del lenguaje.

Basado en "Python Geospatial Analysis" // Joel Lawhead

Capítulo 1: Learning about Geospatial Analysis with Python