Changelog#
All notable changes to the ndvi2gif package will be documented in this file.
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.3.0] - 2026-06-14#
Added#
π± SpatialPhenologyAnalyzer: New GEE-native module that produces per-pixel phenology rasters (Start/Peak/End of Season and derived metrics) for the whole ROI, entirely server-side. Complements the point-based phenology of
TimeSeriesAnalyzer.Output bands:
sos,pos,eos,los,amplitude,peak_value,baseline,growth_rate,senescence_rate(SOS/POS/EOS/LOS in day-of-year).Three server-side methods:
threshold(amplitude crossing),derivative(steepest rate of change) andharmonic(per-pixel Fourier regression β smooth curve β threshold extraction). Theharmonicmethod is the Earth Engine-native replacement for the client-side double-logistic fit, which relies onscipy.optimize.curve_fitand cannot run server-side.Two outputs:
extract_phenology_rasters()returns one image per year (ee.ImageCollection);phenology_summary()returns a single multi-year aggregate (ee.Image).Export to local GeoTIFF (band names embedded via
rasterio) or Google Drive (batch task, band names preserved by Earth Engine) throughexport_target='local'|'drive'.
New documentation section βPer-pixel spatial phenologyβ in
book/advanced/time_series.mdand example notebookexamples_notebooks/Spatial_Phenology.ipynb.
Changed#
Added
rasterioto the runtime dependencies (used to embed band names in locally exported GeoTIFFs).
No Breaking Changes#
Full backward compatibility with v1.2.x.
[1.2.0] - 2026-04-12#
Added#
π§ HydroperiodAnalyzer: New GEE-native module for wetland and floodplain hydroperiod analysis.
Computes flood duration per pixel (days/year) entirely server-side using the midpoint temporal weighting method, based on the methodology of phydroperiod.
Output bands:
hydroperiod,valid_days,normalized,first_flood_doy,last_flood_doy.Multi-year support:
compute_all_cycles()andcompute_anomalies().IRT (Irreplaceable Resource Taxonomy) metrics: global (
compute_irt_global()) and per-pixel (compute_irt_image()).Export to Google Drive and Earth Engine Assets.
SCL cloud masking for Sentinel-2: New
scl_mask=Trueparameter inNdviSeasonalityandmask_s2_scl()method. Uses the Scene Classification Layer for more accurate cloud, shadow and cirrus detection. Setscl_mask=Falseto restore legacy QA60 behaviour.
Fixed#
Removed
numpy<2.0pin β numpy 2.x is now fully supported (numpy>=1.24).
No Breaking Changes#
Full backward compatibility with v1.1.0. scl_mask=True is the new default for Sentinel-2 cloud masking; set scl_mask=False to restore previous behaviour.
[1.0.0] - 2025-12-28#
π FIRST STABLE RELEASE - JOSS PUBLICATION#
This milestone release marks ndvi2gif as production-ready with comprehensive climate reanalysis data support (ERA5-Land and CHIRPS), expanding the library beyond vegetation monitoring into integrated climate-vegetation analysis. The library now supports 88 variables across 7 different satellite/reanalysis platforms, with intelligent handling of climate vs. vegetation data in time series analysis.
NEW in 1.0.0: Complete Jupyter Book documentation for JOSS (Journal of Open Source Software) submission, including comprehensive API reference, dataset guides, and usage tutorials.
β¨ New Features#
π‘οΈ ERA5-Land Climate Reanalysis Support (NEW)#
NEW DATASET: Complete integration with ECMWF ERA5-Land Daily Aggregated dataset
NEW: 47 climate variables spanning 1950-present at ~11km resolution:
Temperature (24 variables):
Basic:
temperature_2m,dewpoint_temperature_2m,skin_temperature,soil_temperature_level_1Daily min/max variants (8 variables with
_minand_maxsuffixes)Celsius conversions (12 variables with
_celsiussuffix)
Precipitation & Water Balance (11 variables):
Meters:
total_precipitation_sum,total_evaporation_sum,potential_evaporation_sum,runoff_sum,surface_runoff_sumL/mΒ² conversions (6 variables with
_lm2suffix for intuitive units)
Soil Moisture (4 variables):
volumetric_soil_water_layer_1throughlayer_4Radiation (3 variables): Solar radiation and heat flux measurements
Wind & Pressure (3 variables): Wind components and surface pressure
Snow (2 variables): Snow depth and snowfall
NEW: Unit conversion functions for user-friendly values:
Temperature: Kelvin to Celsius (K - 273.15)
Precipitation: Meters to L/mΒ² (m Γ 1000)
NEW: Support for daily aggregated statistics (mean, min, max, sum, median, percentile)
π§οΈ CHIRPS Precipitation Dataset (NEW)#
NEW DATASET: Integration with UCSB Climate Hazards Group CHIRPS Daily precipitation
NEW: High-resolution precipitation monitoring (1981-present, ~5.5km resolution)
NEW: Global coverage from 50Β°S to 50Β°N latitude
NEW: Combines satellite imagery with in-situ station data for improved accuracy
NEW: Ideal for drought monitoring, precipitation climatology, and trend analysis
π Enhanced Statistical Methods#
NEW:
sumstatistic for temporal aggregation (essential for precipitation totals)NEW:
minstatistic for minimum value extraction (temperature minimums, etc.)IMPROVED: All statistical reducers now work with climate variables
π§ Time Series Analysis Improvements#
NEW: Intelligent climate data detection in
TimeSeriesAnalyzerNEW: Climate-specific summary statistics panel (replaces vegetation phenology for ERA5/CHIRPS)
NEW: Seasonal climate statistics (winter, spring, summer, autumn averages)
NEW: Annual mean and range calculations for climate variables
IMPROVED: Dashboard automatically adapts display based on data type (vegetation vs. climate)
π Bug Fixes#
π Critical: Inclusive Year Range#
FIXED:
end_yearparameter is now inclusive instead of exclusiveBefore:
start_year=2023, end_year=2023would return NO dataAfter:
start_year=2023, end_year=2023correctly includes all of 2023
FIXED: Updated all year range calculations throughout the codebase
FIXED: Corrected documentation to reflect inclusive behavior
IMPACT: This is a breaking change for users who worked around the old exclusive behavior
πΊοΈ Geometry Operations#
FIXED: ROI centroid calculation now includes
maxError=1parameter to prevent geometry operation errorsFIXED: Improved error handling for centroid-based extractions in time series analysis
π°οΈ Sentinel-3 Band Naming#
FIXED: Corrected uppercase/lowercase inconsistency in Sentinel-3 band names
FIXED: Changed
'NIR'to'Nir'for consistency with index calculationsIMPACT: Sentinel-3 indices now work correctly without band selection errors
π Documentation Updates#
π README Enhancements#
ADDED: Complete ERA5-Land variable documentation with units and descriptions
ADDED: CHIRPS dataset documentation with coverage and use cases
ADDED: Unit conversion examples (Celsius, L/mΒ²)
UPDATED: Supported datasets section with climate reanalysis platforms
UPDATED: Project statistics reflecting 7 sensors and 88 total variables
π§ͺ Testing#
ADDED: Unit tests for ERA5 variable availability
ADDED: Unit tests for CHIRPS precipitation integration
ADDED: Tests for CHIRPS in satellite validation suite
UPDATED: Satellite options tests to include ERA5 and CHIRPS
π Project Statistics (v1.0.0)#
Supported Sensors: 7 (S1, S2, S3, Landsat, MODIS, ERA5-Land, CHIRPS)
Total Variables: 88
40+ vegetation and environmental indices
47 ERA5-Land climate variables
1 CHIRPS precipitation variable
Temporal Coverage: 1950-present (ERA5) and 1981-present (CHIRPS)
Spatial Resolutions: 10m (S2) to ~11km (ERA5) to ~5.5km (CHIRPS)
ML Algorithms: 8 (5 supervised, 3 unsupervised)
π API Changes#
Breaking Changes#
β οΈ BREAKING: end_year parameter behavior changed from exclusive to inclusive
# Before v1.0.0 (exclusive)
NdviSeasonality(start_year=2020, end_year=2023) # Processed 2020, 2021, 2022
# After v1.0.0 (inclusive)
NdviSeasonality(start_year=2020, end_year=2023) # Processes 2020, 2021, 2022, 2023
New Parameters#
# ERA5 climate data
processor = NdviSeasonality(
sat='ERA5',
index='temperature_2m_celsius', # or any of 47 ERA5 variables
key='mean', # or 'min', 'max', 'sum', 'median', 'percentile'
start_year=2020,
end_year=2023 # Now inclusive!
)
# CHIRPS precipitation
chirps = NdviSeasonality(
sat='CHIRPS',
index='precipitation',
key='sum', # Monthly/seasonal totals
start_year=2020,
end_year=2023
)
π Example Use Cases#
Climate Analysis with ERA5#
import ee
from ndvi2gif import NdviSeasonality
from ndvi2gif.timeseries import TimeSeriesAnalyzer
ee.Initialize()
# Temperature analysis
temp = NdviSeasonality(
roi=ee.Geometry.Point([-6.48, 37.13]).buffer(5000),
sat='ERA5',
index='temperature_2m_celsius',
periods=12,
start_year=2020,
end_year=2023,
key='mean'
)
# Extract time series and analyze trends
analyzer = TimeSeriesAnalyzer(temp)
df = analyzer.extract_time_series()
trends = analyzer.analyze_trend(df=df)
fig = analyzer.plot_comprehensive_analysis() # Shows climate stats, not phenology
Precipitation Monitoring with CHIRPS#
# Monthly precipitation totals
precip = NdviSeasonality(
roi=roi,
sat='CHIRPS',
index='precipitation',
periods=12,
start_year=2020,
end_year=2023,
key='sum' # Sum for monthly totals
)
# Analyze drought patterns
analyzer = TimeSeriesAnalyzer(precip)
df = analyzer.extract_time_series()
trends = analyzer.analyze_trend(df=df, method='mann_kendall')
π Acknowledgments#
ERA5-Land: ECMWF Climate Reanalysis (dataset)
CHIRPS: UCSB Climate Hazards Center (Funk et al., 2015)
[0.6.0] - 2025-09-15#
π§ MACHINE LEARNING & CLASSIFICATION RELEASE#
This release introduces comprehensive land cover classification capabilities and enhanced export functionality, positioning ndvi2gif as a complete remote sensing analysis suite. The library continues to mature toward v1.0.0 with advanced documentation and expanded analytical capabilities.
β¨ New Features#
π§ Land Cover Classification Module (NEW)#
NEW MODULE: Complete
LandCoverClassifierclass for supervised and unsupervised classificationNEW: Cloud masking options for Sentinel-2 and Landsat collections
NEW: Multi-temporal feature stack generation with automatic normalization
NEW: Support for multiple classification algorithms:
Random Forest (with feature importance)
Support Vector Machine (SVM)
Classification and Regression Trees (CART)
Naive Bayes
Gradient Tree Boost
NEW: Unsupervised clustering algorithms:
K-means
Cascade K-means
Latent Dirichlet Allocation (LDA)
NEW: Comprehensive accuracy assessment with confusion matrices
NEW: Training data support from shapefiles, GeoJSON, and point/polygon sampling
NEW: Feature importance analysis for Random Forest models
NEW: Visualization tools for confusion matrices and accuracy reports
π Enhanced Export Capabilities#
NEW:
export_to_drive()- Batch export to Google Drive with full parameter controlNEW:
export_to_asset()- Export to Earth Engine Assets with pyramiding policiesNEW:
_default_scale_for_sat()- Automatic scale selection based on sensorNEW: Advanced export options including:
Custom pyramiding policies for classification data
Overwrite protection for assets
Format-specific options (compression, file per band)
Maximum pixel limits and CRS control
π Time Series Analysis Enhancements (Updated)#
IMPROVED: Enhanced documentation with complete examples
IMPROVED: Better error handling and user feedback
IMPROVED: More robust phenology extraction methods
IMPROVED: Advanced visualization capabilities with publication-ready plots
π§ Major Improvements#
π Documentation Overhaul#
IMPROVED: Complete Sphinx-style docstrings for all classes and methods
IMPROVED: Comprehensive parameter documentation with types and examples
IMPROVED: Scientific references added to all spectral indices
IMPROVED: Detailed usage examples in docstrings
IMPROVED: Better error descriptions with suggested solutions
IMPROVED: Cross-references between related methods
π°οΈ SAR Processing Enhancements#
IMPROVED: Enhanced error handling in
S1ARDProcessorIMPROVED: Better documentation for terrain correction parameters
IMPROVED: More detailed method descriptions with scientific references
IMPROVED: Improved parameter validation and user feedback
π API Consistency#
IMPROVED: Consistent parameter naming across all modules
IMPROVED: Standardized return types and error handling
IMPROVED: Better integration between
NdviSeasonalityand new modulesIMPROVED: More informative console output and progress tracking
π API Changes & Enhancements#
π¦ Module Structure#
# NEW imports available in v0.6.0
from ndvi2gif import (
NdviSeasonality, # Core functionality (enhanced)
S1ARDProcessor, # SAR preprocessing (improved docs)
TimeSeriesAnalyzer, # Time series analysis (enhanced)
SpatialTrendAnalyzer, # Spatial analysis (enhanced)
LandCoverClassifier, # NEW: Classification workflows
)
π New Method Signatures#
# NEW: Enhanced export methods
processor.export_to_drive(
image=classified_map,
description="landcover_2023",
folder="ndvi2gif_results",
scale=30,
crs="EPSG:4326"
)
processor.export_to_asset(
image=classification,
asset_id="users/yourname/landcover_2023",
pyramiding_policy={"class": "mode"},
overwrite=True
)
# NEW: Classification workflow
classifier = LandCoverClassifier(processor)
features = classifier.create_feature_stack(
indices=['ndvi', 'evi', 'ndwi'],
include_statistics=True,
normalize=True
)
classifier.add_training_data('training_points.shp')
result = classifier.classify_supervised('random_forest')
π οΈ Under the Hood#
π§ Code Quality#
IMPROVED: Consistent error handling with informative messages
IMPROVED: Better type hints throughout the codebase
IMPROVED: More robust parameter validation
IMPROVED: Enhanced memory efficiency in large-area processing
IMPROVED: Better handling of edge cases and invalid inputs
π Performance#
OPTIMIZED: Feature stack generation for classification
OPTIMIZED: Memory usage in multi-temporal processing
OPTIMIZED: Export operations with better chunking strategies
π Bug Fixes#
FIXED: Improved error handling when no satellite data is available
FIXED: Better validation of ROI inputs and coordinate systems
FIXED: Enhanced handling of edge cases in temporal compositing
FIXED: More robust processing of incomplete time series
FIXED: Better handling of mixed sensor collections
π Examples & Use Cases#
πΎ Agricultural Monitoring#
# Multi-temporal crop classification
processor = NdviSeasonality(
roi='farm_boundaries.shp',
sat='S2', periods=12,
start_year=2022, end_year=2024
)
classifier = LandCoverClassifier(processor)
features = classifier.create_feature_stack(['ndvi', 'evi', 'ndre'])
classifier.add_training_data('crop_samples.shp')
crop_map = classifier.classify_supervised('random_forest')
π Water Quality Assessment#
# Sentinel-3 water quality with export to Drive
processor = NdviSeasonality(
roi='lake_boundary.shp',
sat='S3', index='turbidity',
periods=24 # Bi-monthly
)
composites = processor.get_year_composite()
processor.export_to_drive(
image=composites.first(),
description="lake_turbidity_2024",
folder="water_quality"
)
ποΈ SAR Forest Monitoring#
# Advanced SAR processing with classification
processor = NdviSeasonality(
sat='S1', index='rvi',
use_sar_ard=True,
sar_speckle_filter='REFINED_LEE',
sar_terrain_correction=True
)
classifier = LandCoverClassifier(processor)
forest_map = classifier.classify_unsupervised('kmeans', n_clusters=5)
β οΈ No Breaking Changes#
Full backward compatibility maintained with v0.5.x. All existing code continues to work unchanged.
π Migration Guide#
From v0.5.x to v0.6.0#
No breaking changes! All existing code will continue to work. New features are additive:
# v0.5.x code continues to work unchanged
processor = NdviSeasonality(sat='S2', index='ndvi')
processor.get_gif('animation.gif')
# v0.6.0 adds new capabilities
classifier = LandCoverClassifier(processor) # NEW
processor.export_to_drive(image, "export") # NEW
π― Future Roadmap#
v1.0.0 (Planned) - Complete Climate Analysis Platform#
π Jupyter Book: Interactive documentation with comprehensive tutorials and examples
π‘οΈ Climate Datasets: Integration with ERA5, CHIRPS, TerraClimate, and other climate model datasets
π Climate Analysis: Advanced tools for climate change impact assessment and adaptation planning
π Statistics#
New classes: 1 (
LandCoverClassifier)New methods: 15+ (classification, enhanced exports, utilities)
Enhanced methods: 20+ (improved documentation and error handling)
Lines of code: ~3,500 β ~4,800 (+37%)
Documentation coverage: 95%+ (comprehensive docstrings)
π Acknowledgments#
Special thanks to the Google Earth Engine team and the open-source remote sensing community for their continued support and feedback that made this release possible.
π Documentation#
Complete documentation with tutorials available at: GitHub Repository
Full Changelog: https://github.com/Digdgeo/Ndvi2Gif/compare/v0.5.0β¦v0.6.0
[0.5.0] - 2025-08-28#
Added#
π°οΈ Sentinel-1 ARD Processor: New
S1ARDProcessormodule for advanced SAR preprocessing:Radiometric terrain correction (angular method, Vollrath et al. 2020).
Configurable speckle filters: Boxcar, Lee, Refined Lee, Gamma-MAP, Lee Sigma.
Flexible DEM options (Copernicus 30/90, SRTM 30/90).
π TimeSeriesAnalyzer: New module for time series and phenological analysis:
Robust extraction of temporal profiles from points or polygons.
Trend analysis (Mann-Kendall, Linear regression, Senβs slope).
Comprehensive dashboards (trend, seasonality, autocorrelation, quality).
Phenological metrics (SOS, EOS, POS, LOS, amplitude, growth/senescence rates).
π± NdviSeasonality improvements:
Extended ROI handling: DEIMS sites, Sentinel-2 MGRS tiles, Landsat WRS path/row, shapefiles, GeoJSON.
Flexible temporal periods (4, 12, 24, or custom definitions).
Optional SAR normalization and enhanced orbit handling.
More robust sensor-index validation.
Changed#
Visualization: Unified plotting style with Seaborn/Matplotlib, clearer layouts.
Documentation: Updated examples covering SAR and time series analysis.
Fixed#
More robust handling of null/NaN values in temporal extraction.
Minor bug fixes in period generation and export routines.
[0.4.1] - 2025-07-21#
Added#
Just fixing some bugs in Readme.md
[0.4.0] - 2025-07-21#
Added#
π°οΈ Sentinel-3 OLCI Support: Revolutionary addition with 21 spectral bands and daily global coverage
π Advanced Water Quality Indices: 10 specialized aquatic indices including OCI, TSI, CDOM, turbidity, SPM, KD490, floating algae detection
π¬ Enhanced Sentinel-2: Complete Red Edge implementation with Surface Reflectance for superior data quality
π§ Cyanobacteria Detection: New NDCI index for harmful algal bloom monitoring and water quality assessment
βοΈ SAR Orbit Control: Precise control over Sentinel-1 ascending/descending orbits for geometric consistency
π― 40+ Specialized Indices: Comprehensive coverage with intelligent sensor-index validation
π Professional Architecture: Clean, extensible design with enhanced error handling and documentation
New Sentinel-3 Indices#
OCI - OLCI Chlorophyll Index (optimized for S3)
TSI - Trophic State Index (water quality assessment)
CDOM - Colored Dissolved Organic Matter Index
Turbidity - Water Turbidity Index (sediment monitoring)
SPM - Suspended Particulate Matter Index
KD490 - Diffuse Attenuation Coefficient at 490nm
Floating Algae - Floating Algae Index (bloom detection)
Red Edge Position - OLCI-optimized red edge position
Fluorescence Height - Chlorophyll fluorescence detection
Water Leaving Reflectance - Aquatic reflectance analysis
New SAR Indices#
RFDI - Radar Forest Degradation Index (deforestation monitoring)
VSDI - Vegetation Scattering Diversity Index (structural diversity)
Enhanced Features#
Intelligent Validation: Smart index-sensor compatibility checking prevents invalid combinations
Orbit Parameter: Fine control over Sentinel-1 orbit selection (BOTH/ASCENDING/DESCENDING)
Advanced Use Cases: Support for pseudo-invariant area radiometric normalization workflows
Changed#
Sentinel-2 to Surface Reflectance: Upgraded from TOA to Surface Reflectance for better scientific quality
Simplified Architecture: Removed unnecessary complexity while maintaining full functionality
Enhanced Documentation: Professional-grade docstrings and examples
Technical Improvements#
Modular sensor setup with clean separation of concerns
Comprehensive sensor-index mapping and validation
Enhanced error messages for better user experience
Support for advanced radiometric normalization workflows
[0.3.0] - 2025-07-17#
Added#
New SAR Indices: RVI (Radar Vegetation Index), VV/VH ratio, VH, VV, DPSVI for Sentinel-1
Flexible Percentiles: Support for any percentile value (1-99) instead of fixed 90/95
Enhanced Sentinel-1: VV+VH dual polarization with speckle filtering
Robust ROI Handling: Support for drawn features, lists of features, and improved geometry conversion
Incomplete Year Support: Automatic detection and processing of available periods for current/incomplete years
Enhanced Dependencies: Added pycrs and deims as core dependencies (now available in conda)
Example Notebooks: Comprehensive examples in
examples_notebooks/folder
Fixed#
ROI conversion for drawn geometries and feature lists from geemap
Speckle filter now preserves temporal properties (system:time_start)
Band naming consistency for SAR indices
Error handling for missing data periods
Dependency issues with pycrs and deims
Improved#
More robust error handling throughout the library
Better documentation and examples
Enhanced support for agricultural monitoring workflows
Simplified installation process
[0.2.0] - 2025-01-27#
Added#
Dynamic period generation: Support for any number of temporal periods (4, 6, 8, 12, 24, 52, or any custom number).
Flexible temporal analysis: Easy configuration from traditional 4 seasons to 52 weekly periods or any custom division.
Enhanced extensibility: Adding new satellites and datasets is now trivial with the unified architecture.
Changed#
Major code refactoring: Eliminated over 90% of code duplication by replacing 40+ individual period functions with a single dynamic system.
Improved maintainability: Reduced codebase from ~3,000 lines to ~400 lines while maintaining all functionality.
Enhanced performance: Streamlined period generation and composite creation.
Technical Details#
Replaced hardcoded period definitions with dynamic
_generate_periods()method.Consolidated all
get_winter(),get_january(),get_p1()throughget_p24()functions into a singleget_period_composite()method.Maintained full backward compatibility - all existing code works without changes.
Added comprehensive leap year handling to prevent date-related errors.
Breaking Changes#
None - this release maintains 100% backward compatibility.
[0.1.5] - 2025-05-26#
Fixed#
Fixing bug with MNDWI index.
[0.1.4] - 2025-05-25#
Fixed#
Nothing really changes, just a f* problem with release version management.
[0.1.3] - 2025-05-25#
Fixed#
Nothing really changes, just a f* problem with release version management.
[0.1.2] - 2025-05-25#
Added#
Complete rework and translation of the README into Markdown format.
Included new seasonal/statistical methods and updated docstrings in English.
Added support for region input via Sentinel-2 tiles and Landsat path/row.
Added rich ROI input documentation with tabular summary.
Added
deimsdependency as optional to avoid conda forge problems
Changed#
Clarified the purpose of the library as a broader seasonal analysis tool, not just for GIF generation.
Cleaned and validated
setup.cfgandpyproject.toml.Added extra requirements group for
deims.
[0.1.1] - 2025-05-21#
Fixed#
Fixed rendering issue in
README.rstthat caused PyPI upload failure.Rebuilt and republished the package with correct long description format.
[0.1.0] - 2025-05-21#
Added#
Compatibility with Conda packaging and
conda-forgeecosystem.Included
MANIFEST.into ensureLICENSEandREADME.rstare bundled in source distribution.Improved
README.rstformatting to comply with PyPI rendering rules.
Changed#
Switched versioning to semantic 0.x.y style for future compatibility.
Cleaned and validated metadata to allow upload to both PyPI and Conda Forge.
Note#
This is a technical release β no changes to the core functionality.
[0.0.9] - 2025-05-20#
Changed#
Version bump to align
setup.cfg, PyPI and GitHub release.No functional changes from version 0.0.7.
[0.0.7] - 2025-05-20#
Added#
New method
get_ndmi()to compute the Normalized Difference Moisture Index (NDMI).New (old) method
get_gif()to download a gif for the selected index/bands.Package structure modernized:
Added
setup.cfgandpyproject.toml(PEP 517/518 compliant).Optional removal of legacy
setup.py.
Updated dependencies:
geemappinned to version0.29.5.numpyconstrained to<2.0for compatibility.
Fixed#
Compatibility issues with recent versions of
geemap,xarray, andnumpy.Resolved import error caused by the removal of
np.unicode_in NumPy 2.0.
[0.0.6] - 2023-03-10#
Added#
Initial public release of the
ndvi2gifpackage.Generate seasonal composites and extract statistical summaries from several remote sensing index using Google Earth Engine and geemap.
Export to animated GIF and GeoTIFF format.