Una librería para detección de cambios forestales usando CCDC con Google Earth Engine
Project description
CCDC Forest Change Detector
Una librería de Python para la detección de cambios forestales utilizando el algoritmo CCDC (Continuous Change Detection and Classification) con Google Earth Engine.
Características
- Detección de cambios temporales en cobertura forestal usando CCDC
- Procesamiento de imágenes Sentinel-2 con enmascaramiento de nubes (Cloud Score Plus)
- Visualización interactiva con mapas duales
- Análisis de NDVI temporal
- Configuración flexible de áreas de estudio y parámetros
- Exportación de resultados y visualizaciones
Instalación
pip install ccdc-forest-change-detector
Requisitos previos
- Google Earth Engine: Necesitas tener una cuenta de Google Earth Engine y autenticación configurada
- Jupyter Notebook/Lab: Recomendado para visualizaciones interactivas
Configuración de Google Earth Engine
import ee
ee.Authenticate() # Solo la primera vez
ee.Initialize(project='tu-proyecto-gee') # Opcional: especifica tu proyecto
Uso básico
Ejemplo 1: Análisis completo con áreas predefinidas
from ccdc_forest_detector import CCDCForestDetector, ForestVisualization
import ee
# Inicializar detector
detector = CCDCForestDetector(project_id='tu-proyecto-gee')
detector.initialize_ee()
# Cargar límites administrativos (opcional)
distritos = ee.FeatureCollection("projects/tu-proyecto/assets/Lim_Distrito")
corregimientos = ee.FeatureCollection("projects/tu-proyecto/assets/Lim_Corregimiento")
# Establecer área de estudio usando feature collections
detector.set_study_area(
feature_collection=corregimientos,
filter_field='LMCO_NOMB',
filter_values=['Paso Ancho', 'Cerro Punta']
)
# Crear visualizador
visualizer = ForestVisualization(detector)
# Ejecutar análisis completo
display_widget = visualizer.create_complete_analysis_display(
data_start_date='2023-01-01',
data_end_date='2025-08-20',
change_start_date='2025-01-01',
change_end_date='2025-08-31',
title="Detección de Cambios - Chiriquí (Paso Ancho | Cerro Punta)",
distrito_fc=distritos,
corregimiento_fc=corregimientos
)
# Mostrar visualización
display(display_widget)
Ejemplo 2: Análisis con coordenadas personalizadas
from ccdc_forest_detector import CCDCForestDetector, ForestVisualization
# Inicializar detector
detector = CCDCForestDetector()
detector.initialize_ee()
# Establecer área usando coordenadas [xmin, ymin, xmax, ymax]
coords = [-82.6150, 8.8900, -82.5850, 8.9100]
detector.set_study_area(coords=coords)
# Cargar datos Sentinel-2
detector.load_sentinel2_data(
date_start='2023-01-01',
date_end='2025-08-20',
cloud_threshold=0.8
)
# Ejecutar CCDC con parámetros personalizados
ccdc_params = {
'minObservations': 6,
'chiSquareProbability': 0.95,
'minNumOfObservations': 0.8,
'minNumOfSegments': 2,
'recoveryThreshold': 50,
'lambda_value': 25000
}
detector.run_ccdc(ccdc_params)
# Obtener capa de cambios
change_layer = detector.get_change_layer('2025-01-01', '2025-08-31')
# Crear visualización
visualizer = ForestVisualization(detector)
layout, map1, map2 = visualizer.create_dual_map_display(
coords=coords,
zoom=12,
title="Análisis de Cambios Personalizado"
)
# Agregar capas manualmente
visualizer.add_monthly_rgb_layers(map1, 2025, 1, 8)
visualizer.add_monthly_ndvi_layers(map2, 2025, 1, 8)
visualizer.add_change_layer(map1, change_layer, 2025, 1, 8)
visualizer.add_change_layer(map2, change_layer, 2025, 1, 8)
display(layout)
Ejemplo 3: Análisis solo NDVI
from ccdc_forest_detector import CCDCForestDetector, ForestVisualization
detector = CCDCForestDetector()
detector.initialize_ee()
detector.set_study_area(coords=[-82.6150, 8.8900, -82.5850, 8.9100])
# Cargar datos
detector.load_sentinel2_data('2025-01-01', '2025-08-31')
# Crear visualización solo NDVI
visualizer = ForestVisualization(detector)
ndvi_map = visualizer.create_simple_ndvi_display(
year=2025,
start_month=1,
end_month=8,
title="Análisis NDVI 2025"
)
ndvi_map
Parámetros de configuración
Parámetros CCDC
ccdc_params = {
'minObservations': 8, # Mínimo de observaciones por segmento
'chiSquareProbability': 0.90, # Probabilidad chi-cuadrado
'minNumOfObservations': 0.80, # Proporción mínima de observaciones
'minNumOfSegments': 2, # Mínimo número de segmentos
'recoveryThreshold': 50, # Umbral de recuperación
'lambda_value': 35000 # Parámetro lambda para regularización
}
Parámetros de visualización
La librería incluye paletas de colores predefinidas:
- RGB: Visualización en color verdadero
- NDVI: Gradiente verde para índice de vegetación
- Cambios: 8 colores para diferentes meses de cambio
Métodos principales
CCDCForestDetector
initialize_ee(): Inicializar Google Earth Engineset_study_area(): Establecer área de estudioload_sentinel2_data(): Cargar y procesar datos Sentinel-2run_ccdc(): Ejecutar análisis CCDCget_change_layer(): Obtener capa de cambiosmonthly_rgb_median(): Generar compuesto RGB mensualmonthly_ndvi_median(): Generar compuesto NDVI mensual
ForestVisualization
create_complete_analysis_display(): Análisis completo automatizadocreate_dual_map_display(): Crear visualización con dos mapasadd_monthly_rgb_layers(): Agregar capas RGB mensualesadd_monthly_ndvi_layers(): Agregar capas NDVI mensualesadd_change_layer(): Agregar capa de detección de cambios
Casos de uso
- Monitoreo de deforestación: Detectar pérdida de cobertura forestal
- Análisis temporal de vegetación: Seguimiento de cambios estacionales
- Evaluación de recuperación forestal: Identificar áreas de regeneración
- Estudios de impacto ambiental: Análisis antes/después de intervenciones
- Planificación territorial: Apoyo en toma de decisiones sobre uso del suelo
Contribuir
Las contribuciones son bienvenidas. Por favor:
- Fork del repositorio
- Crear branch para nueva funcionalidad
- Agregar tests
- Enviar pull request
Licencia
MIT License - ver archivo LICENSE para detalles.
Soporte
- GitHub Issues: Reportar problemas
- Documentación: Wiki del proyecto
- Google Earth Engine: Documentación oficial
Cita
Si usas esta librería en tu investigación, por favor cita:
Elvis Garcia (2025). CCDC Forest Change Detector: A Python library for forest change detection using Google Earth Engine.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ccdc-forest-change-detector-1.0.0.tar.gz.
File metadata
- Download URL: ccdc-forest-change-detector-1.0.0.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65a40f50d9e3364680fd0ef36df5fccd8bb57921646177926c81ac64c3f40b66
|
|
| MD5 |
d807e9c0b40c107ef4399a47df2581a2
|
|
| BLAKE2b-256 |
b6ba15535b001521c76a2fae22f1a756be655892298d3603c0d5fee5e37c7500
|
File details
Details for the file ccdc_forest_change_detector-1.0.0-py3-none-any.whl.
File metadata
- Download URL: ccdc_forest_change_detector-1.0.0-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3c46acd6458f0c3af7016f7304d9a657675b438170c1e4168f8042f50347656
|
|
| MD5 |
c87888d3eb8ad60b35597aeb94d034a2
|
|
| BLAKE2b-256 |
fd586d4a79d130d11638cf49ada4f8e14416224a1229f82f47a1da3c011e0a8c
|