Automatización en Topografía: Por qué deberías aprender Python o LISP

La topografía moderna es, en esencia, un problema de gestión de datos. Pasamos el 40% del tiempo midiendo en campo y el 60% en la oficina procesando, dibujando y ordenando archivos. ¿Te pasas horas uniendo puntos en AutoCAD? ¿Renombrando cientos de fotos manualmente? ¿Copiando coordenadas de un Excel a otro? Estás perdiendo dinero.

La automatización no es solo para programadores de Silicon Valley. Es la herramienta secreta del topógrafo productivo para salir temprano de la oficina y evitar la tendinitis del clic.

1. AutoLISP: La magia dentro de AutoCAD

LISP es un lenguaje de programación antiguo, pero sigue vivo dentro de AutoCAD y Civil 3D. Permite crear comandos personalizados (rutinas) para automatizar tareas repetitivas de dibujo.

Ejemplos de rutinas salvavidas:

  • Unir puntos por código: Una rutina que busca todos los puntos con la descripción «CERCO» y dibuja una polilínea uniéndolos automáticamente en el layer correcto.
  • Acotar automáticamente: Seleccionar todas las líneas de un layer y ponerles la distancia y el azimut con un clic.
  • Grilla automática: Generar la cuadrícula de coordenadas y los textos marginales en el Layout.

Lo mejor es que no necesitas ser programador. Existen miles de rutinas LISP gratuitas en foros como CADTutor o Autodesk Community listas para descargar. Solo usa el comando APPLOAD y cárgalas.

2. Python: El rey de los datos y el GIS

Python se ha convertido en el lenguaje estándar de la ciencia de datos y la geomática. Con librerías gratuitas como pandas, geopandas, laspy o rasterio, puedes hacer magia.

  • Gestión de archivos: Tienes 50 carpetas con datos RINEX de todo un año. Necesitas descomprimirlas, convertirlas a otro formato y renombrarlas por fecha. Hacerlo a mano toma días. Un script de Python de 20 líneas lo hace en 1 minuto.
  • Procesamiento LiDAR: Usando PDAL (Point Data Abstraction Library) vía Python, puedes filtrar, clasificar y recortar nubes de puntos masivas sin siquiera abrir un software visual pesado.
  • Automatización en QGIS: QGIS tiene una consola de Python (PyQGIS) integrada. Puedes programar scripts que generen mapas PDF automáticamente para 100 parcelas diferentes con un solo clic.

3. Dynamo para Civil 3D: Programación Visual

Si el código de texto te asusta, Dynamo es la solución. Es un entorno de «Programación Visual» donde conectas «nodos» con cables para crear lógica. Viene instalado con Civil 3D.

¿Qué puedes hacer?

  • Colocar automáticamente bloques de farolas cada 30 metros a lo largo de un eje de carretera, siguiendo la elevación de la superficie y rotados perpendicularmente al eje.
  • Exportar tablas de reportes personalizados a Excel con el formato exacto que pide el cliente.
  • Renombrar tuberías en una red de saneamiento siguiendo una lógica secuencial compleja.

4. ChatGPT y la IA como copiloto

No necesitas saber escribir el código desde cero. Hoy en día, puedes pedirle a una IA: «Escribe una rutina LISP para AutoCAD que sume la longitud de todas las líneas seleccionadas». La IA te dará el código listo para copiar y pegar. La barrera de entrada ha desaparecido.

Conclusión

Automatizar no es pereza, es inteligencia. Cada minuto que ahorras en tareas repetitivas es un minuto que puedes dedicar a analizar la calidad de los datos o a buscar nuevos clientes. Aprender lo básico de LISP o Python es la mejor inversión de tiempo que un topógrafo de gabinete puede hacer en 2026.

Script de Python para Renombrar Fotos de Dron

Un caso de uso real: Tienes 1,000 fotos de dron llamadas «DJI_001.JPG». Quieres que se llamen con la fecha y hora: «2026-10-05_14-30-01.JPG».

Hacerlo a mano es imposible. Con Python y la librería exifread, puedes crear un script de 10 líneas que lea la hora interna de la foto y cambie el nombre del archivo en 3 segundos. Esta es la automatización que diferencia al profesional.

Consejos Avanzados: Casos de Uso Reales de Python en Topografía

Python no es solo para programadores. Con 50 líneas de código puedes ahorrar días de trabajo manual.

Caso 1: Renombrar 1,000 Fotos de Dron por Timestamp

Problema: Tienes DJI_0001.JPG hasta DJI_1000.JPG y necesitas que se llamen por fecha/hora.

import os
from PIL import Image
from PIL.ExifTags import TAGS

for filename in os.listdir("./fotos"):
    img = Image.open(os.path.join("./fotos", filename))
    exif = img._getexif()
    timestamp = exif.get(36867)  # DateTimeOriginal
    new_name = timestamp.replace(":", "-").replace(" ", "_") + ".JPG"
    os.rename(os.path.join("./fotos", filename), os.path.join("./fotos", new_name))

En 10 segundos, 1,000 fotos renombradas automáticamente.

Caso 2: Validar Coordenadas de 500 Puntos

Problema: Tienes un CSV con 500 puntos y necesitas verificar que todos están dentro del polígono del proyecto.

import pandas as pd
from shapely.geometry import Point, Polygon

# Cargar puntos
df = pd.read_csv("puntos.csv")
puntos = [Point(row['Este'], row['Norte']) for _, row in df.iterrows()]

# Definir polígono del proyecto
proyecto = Polygon([(500000, 9000000), (501000, 9000000), (501000, 9001000), (500000, 9001000)])

# Verificar
fuera = [i for i, p in enumerate(puntos) if not proyecto.contains(p)]
print(f"Puntos fuera del área: {fuera}")

Detecta errores antes de procesar los datos en software costoso.

Caso 3: Generar DXF desde CSV sin Abrir AutoCAD

Librería ezdxf permite crear archivos DXF programáticamente:

import ezdxf
import pandas as pd

# Cargar puntos
df = pd.read_csv("levantamiento.csv")

# Crear DXF
doc = ezdxf.new('R2010')
msp = doc.modelspace()

for _, row in df.iterrows():
    msp.add_point((row['Este'], row['Norte'], row['Cota']))
    msp.add_text(row['ID'], dxfattribs={'height': 0.5}).set_pos((row['Este'], row['Norte']))

doc.saveas("puntos.dxf")

Útil para enviar datos a clientes que solo aceptan DXF.

Caso 4: Análisis de Precisión de Red

Calcular la desviación estándar de mediciones redundantes:

import numpy as np

# Mediciones repetidas de una distancia (en metros)
mediciones = [123.456, 123.452, 123.461, 123.450, 123.458]

promedio = np.mean(mediciones)
desv_est = np.std(mediciones, ddof=1)  # ddof=1 para muestra
precision = 1.96 * desv_est  # 95% de confianza

print(f"Distancia: {promedio:.3f} ± {precision:.3f} m")
# Output: Distancia: 123.455 ± 0.008 m

Recursos para Aprender

  • Librerías esenciales: pandas (datos tabulares), numpy (cálculos), shapely (geometría), ezdxf (CAD), laspy (nubes de puntos LAS).
  • Cursos gratuitos: Python.org tutorial, Kaggle Learn, YouTube (Corey Schafer para fundamentos).
  • Práctica: Empieza automatizando tareas repetitivas de tu trabajo diario. Cada script que escribes es aprendizaje.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Are you human? Please solve:Captcha


Scroll al inicio