Why We Chose pygeofetch Over Google Earth Engine for Ghana EPA
By Samuel Appiah Kubi · 08 Jul 2026
In 2025, we were asked to help Ghana EPA's GIS Unit build a satellite-based flood monitoring system. The obvious first question was: why not just use Google Earth Engine (GEE)?
The Evaluation Criteria
EPA's requirements were specific:
- Results must be fully reproducible — the same code run twice should give identical output
- All processing must be auditable — an external reviewer must be able to inspect every step
- The system must run on government infrastructure, not on third-party cloud services
- Staff must be able to run it without personal Google accounts
- The system must work when internet connectivity is unreliable
Where GEE Falls Short for Government Use
Google Earth Engine is a remarkable platform. It is also a commercial service with terms of service that restrict government operational use, requires individual Google accounts, processes data on Google's infrastructure (not yours), and produces outputs whose computational lineage cannot be fully audited (the exact server-side code version that ran your analysis is not versioned or persistent).
For academic research, GEE is excellent. For a government operational monitoring system that must be auditable in a court of law or parliamentary hearing, it creates dependencies that are inappropriate.
The pygeofetch / pygeovision Solution
We deployed pygeofetch and pygeovision on an EPA-owned Ubuntu server. Data downloads from Copernicus Data Space (EU public data, no per-query cost) are cached locally. All processing runs on the server. Results are written to the EPA's GIS database. The full pipeline is a Python script in a Git repository, versioned, with every parameter logged. Each run produces a provenance JSON recording the exact input scene IDs, software versions, and processing parameters.
EPA staff were trained in 2 days. The system has run every week since deployment with no cloud dependencies.