Visión por computadora · GIS · clima · Python

De un código postal a un mapa vivo del arbolado.

Usé el código postal 07042, en New Jersey, como punto de partida para convertir imágenes aéreas y satelitales en resultados georreferenciados. El proyecto localiza candidatos de árbol, estudia la estacionalidad de la copa y combina esa señal con el clima diario para estimar cómo cambia la carga de hojas a lo largo del otoño.

Imagen aérea real del código postal 07042 en New Jersey con candidatos de árbol marcados mediante cajas rojas
Resultado real sobre la imagen aérea del área 07042. Cada caja roja representa un candidato de árbol conservado después del filtrado por vegetación.
07042código postal de New Jersey procesado
4.312detecciones iniciales propuestas por el modelo
1.986candidatos respaldados por evidencia de vegetación
0,87 mresolución aproximada por píxel de la imagen
Resultado 07042

Una consulta territorial convertida en cuatro salidas utilizables.

El análisis produjo una imagen anotada para inspección visual, un GeoJSON con las cajas georreferenciadas, un CSV de coordenadas y un resumen de ejecución. De 4.312 propuestas iniciales, el filtro conservó 1.986 candidatos con suficiente señal de vegetación y descartó 2.326 detecciones durante el control de calidad.

El puente central: DeepForest encuentra los objetos en píxeles; la señal NIR ayuda a confirmar vegetación; Rasterio y GeoPandas convierten cada resultado en una geometría con coordenadas y puntaje de confianza.
Pipeline

Conservar la geografía después de inferir en píxeles.

Adquirir el raster

El flujo trabaja con un mosaico NAIP de aproximadamente 0,87 metros por píxel para el área definida por el código postal 07042.

Detectar por teselas

DeepForest procesa parches de 800 píxeles con 25% de solapamiento para reducir pérdidas donde una copa cruza el borde.

Transformar coordenadas

Rasterio convierte xmin, ymin, xmax e ymax desde píxeles al CRS del GeoTIFF. GeoPandas reproyecta el resultado a WGS84.

Exportar e inspeccionar

El prototipo escribe un GeoJSON de cajas, un CSV de coordenadas y una imagen con cada resultado dibujado sobre el territorio.

Cómo se construyó

La detección es solo la primera capa del análisis.

El primer desafío fue hacer compatible un detector de copas con un raster urbano de gran tamaño sin perder posición geográfica. El mosaico de 4.733 × 5.312 píxeles se divide en teselas de 800 píxeles con 25% de solapamiento. Esa superposición evita que una copa desaparezca por quedar partida justo en el borde de dos ventanas. Luego, las cajas repetidas se consolidan antes de volver al sistema de coordenadas del archivo.

La imagen NAIP tiene cuatro bandas. Además de RGB, la banda infrarroja cercana permite calcular NDVI y sumar evidencia independiente de vegetación. Cada propuesta recibe confianza del modelo, mediana y percentil 75 de NDVI, fracción de píxeles vegetados y fracción de datos válidos. Con umbrales explícitos, el pipeline conserva las detecciones más consistentes y registra por qué se rechaza cada una. En 07042, ese control redujo 4.312 propuestas a 1.986 candidatos respaldados por señal vegetal.

El resultado no termina en una imagen bonita. La transformación affine del GeoTIFF lleva cada caja de píxeles a coordenadas reales; GeoPandas la convierte en geometría y la reproyecta a WGS84. Así, la misma detección puede verse sobre la fotografía, abrirse en QGIS, cruzarse con calles o parcelas y exportarse como GeoJSON o CSV.

La habilidad detrás del prototipo: conectar visión por computadora, procesamiento raster, control de calidad espectral y datos vectoriales dentro de un proceso que conserva trazabilidad desde la predicción hasta el mapa.
Decisiones técnicas

Una herramienta pequeña con responsabilidades separadas.

Modelo

DeepForest como punto de partida

El script integra weecology/deepforest-tree para llevar un detector especializado a un flujo geoespacial propio.

Raster

Georreferencia preservada

La transformación se lee del archivo de entrada, de modo que cada caja vuelve al espacio geográfico en lugar de quedar atrapada en coordenadas de imagen.

Vector

GeoJSON interoperable

Las cajas se guardan como polígonos con score y CRS normalizado, listos para explorar y revisar en QGIS.

QA visual

Imagen anotada

OpenCV dibuja rectángulos y puntajes de confianza sobre el raster para revisar rápidamente cómo respondió el detector.

Rendimiento

Trabajo por bloques

El tileado divide rasters grandes en unidades manejables y abre una ruta directa hacia procesamiento con GPU.

Integración

De una detección a un mapa

La salida combina ubicación, geometría y confianza para que cada objeto pueda filtrarse, visualizarse y conectarse con otros datos territoriales.

Estación y fenología

Pasar de “dónde hay árboles” a “cómo cambia su copa durante el año”.

La segunda parte del proyecto compara observaciones de momentos distintos. Para una consulta por código postal, el sistema obtiene el límite geográfico de Census TIGERweb, usa ESA WorldCover como máscara inicial de arbolado y busca escenas Sentinel-2 L2A con poca nubosidad. En el hemisferio norte toma una ventana sin hojas entre enero y marzo, una ventana con hojas entre julio y agosto y una tercera observación cercana a la fecha elegida.

La diferencia estacional de NDVI ayuda a separar señales compatibles con vegetación caducifolia y perenne. Cuando también hay LiDAR, la altura de copa, la penetración de retornos y la forma de la corona agregan otra perspectiva. En la ejecución detallada de New Jersey, doce archivos LiDAR cubrieron 98,6% del área y produjeron 20.987 coronas provisionales: 2.930 quedaron inclinadas a caducifolias, 2.929 a perennes y 15.128 en una zona intermedia. Mantener esa categoría intermedia hace que el mapa exprese la fuerza real de la evidencia.

Hoja presente

Verano como referencia

Las escenas de julio y agosto muestran el vigor máximo de la vegetación y establecen la señal de copa con hojas.

Hoja ausente

Invierno como contraste

Las escenas de enero a marzo permiten observar qué parte de esa señal se conserva y cuál cae con la estación.

Fecha objetivo

Una consulta situada en el tiempo

La tercera ventana conecta el patrón estacional con el día que se quiere analizar, en lugar de devolver una clasificación estática.

Clima y caída de hojas

El calendario aporta contexto; el tiempo diario mueve la simulación.

El modelo recorre cada día desde el comienzo de la temporada otoñal hasta la fecha elegida. La duración del día y el frío acumulado controlan la senescencia; la temperatura media y mínima, la humedad y la lluvia de los catorce días previos modifican el estrés; el viento, las ráfagas, la lluvia y las heladas influyen en el desprendimiento. La dirección meteorológica se transforma para estimar hacia dónde se desplaza el material una vez que deja la copa.

Dentro de cada celda de 100 metros, el sistema sigue cinco estados: copa verde adherida, copa senescente adherida, caída nueva, carga presente en el suelo y material removido, degradado o desplazado fuera del área. El usuario puede elegir código postal, fecha, tamaño de celda y una vida media de limpieza. Los datos diarios llegan de Open-Meteo y quedan en caché para repetir una consulta sin volver a descargar todo.

Para 07042 y el 15 de noviembre de 2025, la corrida histórica comenzó el 1 de agosto. El índice encontró el mayor pulso de caída y la mayor carga estimada sobre el suelo el 13 de octubre. Ese día acumulaba 47,9% del ciclo de caída y un equivalente espacial máximo de 1,42 millones de m²; para el 15 de noviembre, el acumulado llegaba a 97,2% y la carga presente había bajado a unos 554.000 m² por limpieza, dispersión y degradación.

100 mresolución de la grilla temporal para no simular una precisión climática falsa
13 oct.pico del replay histórico de 07042 para 2025
47,9%caída acumulada en el momento del pico
1,42 M m²equivalente de carga foliar máxima en el índice espacial
Qué entrega: mapa por celda, GeoJSON, CSV, GeoTIFF, serie diaria, clima utilizado y resumen JSON. No es una animación decorativa: es un resultado que puede auditarse, descargarse y compararse entre fechas.
Aplicaciones comerciales

Convertir el contexto ambiental en una señal para planificación y creatividad.

Al estar organizado por lugar y fecha, el resultado puede integrarse en decisiones de comunicación que dependan del entorno. Una marca de jardinería, herramientas, limpieza exterior, seguros, movilidad o servicios para el hogar podría identificar zonas y semanas donde la caída de hojas tiene mayor relevancia, adaptar el mensaje a ese momento y coordinar la pauta con condiciones observables.

Segmentación geográfica

Priorizar mercados por señal

Los códigos postales pueden compararse por superficie arbolada, componente caducifolio y progresión estacional para decidir dónde una campaña tiene más contexto.

Calendario de medios

Elegir el momento creativo

La serie diaria permite alinear mensajes sobre limpieza, mantenimiento, jardín o conducción con el ascenso, pico y descenso de la carga foliar.

Contenido dinámico

Traducir datos a una pieza local

El estado de la temporada puede alimentar variantes creativas por ciudad: anticipación antes del pico, respuesta durante la caída y mantenimiento después.

OOH y territorio

Entender el entorno físico

Al cruzar celdas con calles, parcelas o ubicaciones publicitarias se puede añadir contexto ambiental a la selección de soportes.

Investigación

Comparar hipótesis

Las salidas históricas permiten estudiar si clima, estacionalidad y respuesta comercial se mueven juntos en distintos mercados.

Operación

Planificar recursos

El mismo mapa también ayuda a ordenar inspecciones, mantenimiento urbano o recorridos de servicio antes de convertir el hallazgo en comunicación.

La idea comercial: no usar “otoño” como una etiqueta genérica, sino transformar territorio, vegetación, fecha y clima en una señal concreta para decidir dónde, cuándo y con qué mensaje aparecer.
Producto final

Un sistema que puede consultarse, repetirse y ampliar su escala.

  • Interfaz por código postal: una consulta recibe ubicación, fecha, tamaño de grilla y ritmo de limpieza, y devuelve mapa, evolución temporal, clima y descargas.
  • Dos niveles de detalle: NAIP y LiDAR permiten estudiar coronas individuales donde existen; Sentinel-2 y WorldCover hacen posible una lectura territorial para nuevos códigos postales.
  • Reproducción histórica: el clima guardado permite volver a una fecha y entender qué factores empujaron el cambio diario.
  • Salidas interoperables: los resultados viajan como imagen, CSV, GeoJSON, GeoTIFF y JSON para integrarse con mapas, dashboards o análisis posteriores.
  • Arquitectura extensible: las fuentes, el modelo de caída y la capa de presentación están separadas para poder ajustar una parte sin rehacer el resto.
Código fuente

Visión, geografía y clima en un proceso inspeccionable.

Software usado o relacionado

  • Python
  • DeepForest
  • rasterio
  • GeoPandas
  • QGIS

Temas

  • Análisis geoespacial
  • Visión por computadora
  • Detección de copas de árboles
  • GIS
  • Teledetección
  • Análisis de datos con Python

Trabajo relacionado

Siguiente paso

¿Querés aplicar este enfoque en tu marca o equipo?

Agendá una llamada de 30 minutos, revisá mi CV o escribime.