Changelog
All notable changes to Open Geodata API will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
### Added - Performance optimizations for large dataset processing - Advanced error recovery mechanisms - Enhanced CLI workflows and batch processing - Integration examples with popular ML frameworks
### Changed - Improved memory management for large collections - Enhanced URL caching mechanisms - Optimized search performance
### Fixed - URL expiration handling edge cases - Memory leaks in batch processing - CLI progress bar display issues
[0.1.0] - 2025-06-22
### Added - Core STAC Classes: Complete implementation of STACItem, STACItemCollection, and STACAsset - Multi-Provider Support: Unified access to Planetary Computer and EarthSearch APIs - Automatic URL Management: Intelligent URL signing, validation, and expiration handling - Comprehensive CLI: Full command-line interface with collections, search, download, and utility commands - Smart Download System: Intelligent downloading with progress tracking, resume capability, and folder organization - Filtering Utilities: Cloud cover filtering, temporal filtering, and quality assessment tools - Error Recovery: Robust error handling with automatic retry logic and helpful error messages - Documentation: Complete documentation with examples, tutorials, and API reference
#### Core Features
API Clients:
- PlanetaryComputerCollections: Client for Microsoft Planetary Computer with automatic URL signing
- EarthSearchCollections: Client for Element84 EarthSearch with direct access
- Unified interface across both providers with consistent error handling
Data Models:
- STACItem: Individual satellite scenes with metadata and asset management
- STACItemCollection: Collections of items with bulk operations and DataFrame conversion
- STACAsset: Individual files with provider-specific URL handling
- STACSearch: Search result containers with pagination support
Factory Functions:
- planetary_computer(auto_sign=True): Create PC client with automatic URL signing
- earth_search(): Create EarthSearch client with validation
- get_clients(): Get both clients in a single call
#### Utility Functions
Filtering:
- filter_by_cloud_cover(): Filter items by cloud cover percentage
- filter_by_date_range(): Filter items by temporal criteria
- filter_by_geometry(): Filter items by spatial intersection
Download Management:
- download_datasets(): Universal download function with intelligent input detection
- download_url(): Single file download with provider handling
- download_items(): Bulk download with organization
- download_seasonal_data(): Temporal dataset downloads
- Parallel downloading with configurable workers
- Resume capability for interrupted downloads
- Progress tracking with customizable progress bars
URL Management:
- is_url_expired(): Check URL expiration status
- is_signed_url(): Detect signed URLs
- re_sign_url_if_needed(): Automatic URL refresh
- validate_urls(): Batch URL validation
Analysis Helpers:
- create_download_summary(): Generate download reports
- export_urls_to_json(): Export URLs for external processing
- calculate_ndvi(): Built-in NDVI calculation
- get_seasonal_statistics(): Temporal analysis tools
#### Command Line Interface
Collections Management:
- ogapi collections list: Browse available datasets
- ogapi collections search: Find collections by keyword
- ogapi collections info: Get detailed collection metadata
Data Search:
- ogapi search items: Search for satellite imagery
- ogapi search quick: Simplified search interface
- ogapi search compare: Compare providers
Item Management:
- ogapi items info: Get item details
- ogapi items assets: List available assets
- ogapi items urls: Generate asset URLs
- ogapi items compare: Compare items by quality
Download Operations:
- ogapi download search-results: Download from search results
- ogapi download url: Download single files
- ogapi download urls-json: Download from URL files
- ogapi download seasonal: Download temporal datasets
Utilities:
- ogapi utils filter-clouds: Cloud cover filtering
- ogapi utils export-urls: URL export functionality
- ogapi utils validate-urls: URL validation
- ogapi utils analyze: Data analysis tools
#### Key Capabilities
Unified API Access: - Single interface for multiple satellite data providers - Consistent search parameters across providers - Automatic provider detection and optimization - Built-in best practices and error handling
Intelligent URL Management: - Automatic URL signing for Planetary Computer - Expiration detection and refresh - Provider-specific optimizations - Bulk URL operations with caching
Flexible Data Reading: - Compatible with any raster reading library (rioxarray, rasterio, GDAL) - No lock-in to specific processing frameworks - Ready-to-use URLs for immediate data access - Support for all common satellite data formats
Production-Ready Features: - Comprehensive error handling and recovery - Progress tracking and reporting - Memory-efficient processing for large datasets - Configurable timeouts and retry logic - Logging and debugging support
#### Provider Support
Planetary Computer: - Comprehensive collection catalog - Automatic URL signing with planetary-computer package - Advanced search capabilities with complex queries - High-performance access to Microsoft’s data catalog
EarthSearch: - Open access with no authentication required - Direct COG (Cloud Optimized GeoTIFF) access - AWS-hosted data with global availability - Permanent URLs with no expiration
#### Documentation and Examples
Complete Documentation: - Getting started guide with step-by-step tutorials - Comprehensive API reference with examples - CLI documentation with usage patterns - Real-world examples and use cases - Troubleshooting guide with common solutions
Example Workflows: - Basic data discovery and access - Multi-temporal NDVI analysis - Change detection workflows - Agricultural monitoring examples - Environmental monitoring applications - Integration with popular libraries (Dask, GeoPandas, etc.)
#### Installation and Dependencies
Core Dependencies:
- requests >= 2.25.0: HTTP client for API access
- pandas >= 1.3.0: Data manipulation and analysis
- planetary-computer >= 1.0.0: Planetary Computer integration
- tqdm >= 4.67.1: Progress bars and tracking
- click >= 8.0.0: Command-line interface framework
Optional Dependencies:
- rioxarray >= 0.11.0: Raster I/O capabilities
- rasterio >= 1.3.0: Geospatial raster processing
- xarray >= 0.19.0: N-dimensional labeled arrays
- geopandas >= 0.10.0: Geospatial data analysis
- shapely >= 1.8.0: Geometric operations
Installation Options:
- pip install open-geodata-api: Core package
- pip install open-geodata-api[io]: With raster I/O
- pip install open-geodata-api[spatial]: With spatial analysis
- pip install open-geodata-api[complete]: Full installation
#### Platform Support
Operating Systems: - Linux (all major distributions) - macOS (10.14+ including Apple Silicon) - Windows (10+)
Python Versions: - Python 3.8+ - Tested on Python 3.8, 3.9, 3.10, 3.11
#### Breaking Changes - N/A (initial release)
#### Migration Guide - N/A (initial release)
#### Known Issues - Large dataset processing may require significant memory - Planetary Computer URLs expire and require periodic refresh - Some geospatial dependencies may require system libraries (GDAL)
#### Performance Notes - Automatic URL signing adds minimal overhead (~10ms per URL) - Parallel downloads significantly improve throughput for multiple files - Chunked loading recommended for files >1GB - Search performance varies by provider and query complexity
#### Security Considerations - Planetary Computer requires API authentication via planetary-computer package - URLs may contain temporary access tokens - No sensitive data is stored or transmitted by the package itself - Users responsible for compliance with provider terms of service
### Contributors - Mirjan Ali Sha (@Mirjan-Ali-Sha) - Initial development and architecture
### Acknowledgments - Microsoft Planetary Computer team for the comprehensive data catalog - Element84 team for EarthSearch and open data access - STAC community for standardization efforts - Python geospatial community for foundational libraries
—
## Version History Summary
|---------|————|------------------------------------------------| | 0.1.0 | 2025-06-22 | Initial release with full feature set |
## Upcoming Releases
### [0.2.0] - Planned Features - Additional provider support (NASA EarthData, Google Earth Engine compatibility) - Enhanced caching mechanisms with persistent storage - Advanced spatial analysis integration - Performance optimizations for very large datasets - Jupyter widget integration for interactive exploration
### [0.3.0] - Future Enhancements - Machine learning integration helpers - Advanced temporal analysis tools - Custom STAC API support - Enhanced visualization capabilities - Workflow orchestration tools
## Support and Community
Bug Reports: Report issues on GitHub Issues
Feature Requests: Submit enhancement requests with detailed use cases
Documentation: Contributions to documentation are welcome
Community: Join discussions on GitHub Discussions
## Release Process
Development: Features developed on feature branches
Testing: Comprehensive testing including unit, integration, and performance tests
Documentation: Documentation updated for all changes
Review: Code review and approval process
Release: Semantic versioning with detailed changelog
Distribution: Automated distribution to PyPI
—
This changelog follows semantic versioning. For details about our versioning strategy, see our contributing guide.