Skip to content

gee-community/qgis-earthengine-plugin

Repository files navigation

Support Ukraine

Stand With Ukraine

Google Earth Engine plugin for QGIS

Integrates Google Earth Engine with QGIS using Python API.

Check User Guide to get started or ask general questions and comments in the Discussion section.

Add Sentinel-2 image

How to use with a simple example

import ee
from ee_plugin import Map

# Add Earth Engine dataset
image = ee.Image('USGS/SRTMGL1_003')
vis_params = {'min': 0, 'max': 4000, 'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}
Map.addLayer(image, vis_params, 'DEM')
Map.setCenter(-121.753, 46.855, 9)

Troubleshooting

How to reset your authentication settings?

Install the Google Earth Engine command line client. Run the earthengine authenticate command. This resets the authentication credentials and solves most authentication errors.

An alternative is to delete the credentials file and re-authenticate the plugin by restarting the QGIS.

The credentials file is located in:

Windows: C:\Users\<USER>\.config\earthengine\credentials 
Linux: /home/<USER>/.config/earthengine/credentials 
MacOS: /Users/<USER>/.config/earthengine/credentials

More about EE authentication guide and troubleshooting here.

Are you through a proxy?

In your scripts, configure proxy settings on top of them:

import os
os.environ['HTTP_PROXY'] = 'http://[username:password@]<ip_address_or_domain>:<port>'
os.environ['HTTPS_PROXY'] = 'http://[username:password@]<ip_address_or_domain>:<port>'

import ee
from ee_plugin import Map

I am getting error like ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed on MacOS:

Open Finder and double clicking on this file /Applications/Python 3.6/Install Certificates.command. This path may vary depending on how QGIS was installed (Homebrew, macports, native). Then restart QGIS.

Plugin crashes after authentication with a stack trace showing 404, what should I do?

Go to http://code.earthengine.google.com and make sure you can access code editor. If the plugin is still failing - make sure your IP is not under firewall.

Roadmap

Alpha 0.0.1 (Q4 2019) ✔️

  • Create a new QGIS plugin skeleton
  • Migrate to QGIS3
  • Embed EE Python library
  • Implement Map.addLayer() for ee.Image
  • Implement Map.addLayer() for ee.Geometry, ee.Feature and ee.FeatureCollection
  • Implement Map.centerObject()
  • Implement Map.getBounds()
  • Implement Map.getCenter()
  • Implement Map.setCenter()
  • Implement Map.getScale()
  • Implement Map.getZoom()
  • Implement Map.setZoom()
  • Upload to QGIS plugin repository: https://plugins.qgis.org/plugins/ - approved!

Alpha 0.0.2 (Q3 2020) ✔️

  • Upgrade EE library to 0.1.224 (Windows, Linux, maxOS)

Alpha 0.0.3 (Q4 2020) ✔️

  • EE raster layer inspector
  • Show some useful EE properties (bands, value types) in QGIS layer properties dialog
  • Fix EE url authentication function if the credentials is not exists #63
  • Fix crash if the authentication dialog is cancelled or not filled by the user
  • Init the Google Earth Engine user authorization system only when the user is going to use the plugin
  • Fixed the authentication dialog when the url shortener doesn't work by any reason #66
  • Fix loading extra python dependencies to the plugin, fix #62

Alpha 0.0.4 (Q1 2021) ✔️

  • Minor bugfix release (EE authentication)

Alpha 0.0.5 (Q1 2022) ✔️

  • Minor bugfix release (EE library upgrade)

Alpha 0.0.6 (Q1 2023) ✔️

  • Added support for QGIS 3.22+ (fix identify tool)

Beta 0.0.7 (Q4 2024) ✔️

  • Added support for Google Cloud Projects
  • Added UI to change Google Cloud Project and re-login

1.0.0 (Q4 2025) ⌛

  • Improve authentication (UI and error handling)
  • Simplify interpoerability of features/geometry between EE and QGIS
  • Add layer as a child layer to the group layer #101
  • EE vector layer inspector
  • EE raster collection layer inspector
  • Make print(ee_object) more user-friendly, without requiring getInfo(), maybe async
  • Get Link and Open Script
  • Skip import ee and from ee_plugin import Map for EE scripts ...

1.1.0

  • Export.* and Tasks panel (start, cancel, info)
  • Map.layers() for EE layers, allowing to use things like ui.Map.Layer.setEeObject()
  • ui.Chart.*
  • require()
  • Faster identify tool, using local cached rasters
  • Add support for Data Catalog, allowing adding assets without the need to write scripts (select time, styling)
  • Custom EE scripts as Processing algorithms, so that users can use it within Graphical Modeller
  • Fetch (cache?) raster assets locally (EE > QGIS), for a given rectangle / CRS, as a Processing tool
  • Export vector and raster data (QGIS > EE) either via Tasks or some other way
  • Use QGIS vector/raster style editors to edit EE layer styles

Contributing

The project welcomes any contributions and is greateful to all existing contributors small or large listed on the GitHub Contributors page.

If you'd like to contribute code to the project - please make sure it's related to one of the reported project issues or discussion topics and feel free to submit a Pull Request and it will be considered for addition.

For any questions or disputes feel free to contact the original author of the project: [email protected]