Open Earth Engine extension (OEEex)

The unofficial Chrome extension for Google Earth Engine

How to use the extension?

To use the extension you need to use Google Chrome, then simply follow this link and simply add it to your Chrome. Refresh any open Google Earth Engine code editor page. It's ready to use! Simple enough?

The chrome extension is provided with some basic setup. Set it up as you like in the option page (right click on the extension and "Options"). You can select the option you want to use or not. Some feature requires some extra setup (e.g., the Planet module).

More information about each feature, check the feature documentation!

⌘+S

Description

Redirect the shortcut ⌘+S to the save button

How to use it?

Simply press ⌘+S πŸ˜€

How was it implemented?

This was implemented, adding a listener on pressed key. When ⌘+S is detected the save button is programmatically clicked.

Night mode

Description

The extension introduce a dark theme.

How to use it?

Simply select the mode you want with the logo in the upper right. For automatic mode based on your browser or system simply double click on the logo, or select the mode in the option page.
All you earth engine open in the same browser are linked. Changing the parameter in one page will cahnge the others. The popup are expected for imediate interaction, and therefore require all your attention, these are intentionaly with a white background to keep you awake πŸ˜†.

How was it implemented?

The dark mode was implemented by using a standard dark theme for the ACE code editor. The other part of the interface was color changed, adding a new "dark" class that makes some CSS overload. The communication between each open page is managed trough the extension background using a communications port and exchanging messages. This allows to sync the mode and to store your preferences.

OEEL caching

Description

OEEL caching provided 1h cache for files from the Open Earth Engine Library. This allows to reduce the execution time when using the library. This feature cannot be disabled.

How to use it?

You have nothing to do if you use the OEEL library it will automatically use the cache.

How was it implemented?

This feature was implemented by using a redirection on the specific OEEL file. Requests are redirected to proxy-oeel-code.open-geocomputing.org that respond the file with the right cache header.

Manifest upload

Description

Manifest upload allow to drag and drop one or more GeoTIFF with its manifest and get it ingested directly.

How to use it?

Simply start by creating a manifest following the instruction here. The only difference is in the file address, don't use a gs:// address, but a local unix file style path (the path shouldn't contain .. to go to the parent directory).
Save the manifest as manifest.json in a folder (e.g., myUploadFolder) with the GeoTIFFs (image need can be in subfolders). Then drag and drop the folder on in the newly appeared logo (arrow up) in the asset tab. You can follow the progress of the upload in the task tab. The address can be some URLs too, if you want to ingest only available data. But the data would be transit my you computer.

How was it implemented?

The extension request a GS upload link to google, then the files are uploaded, the addresses in the manifest are replaced with the newly get gs:// address. Finally, the manifest is submitted to GEE. In case, of remotely available data (http(s)://) the data are first download in the browser, temporarily stored and upload on following the same approach as for local files. The server should allow requests from https://code.earthengine.google.com, else browser protection will cancel the request.

Automatic export

Description

This feature allows to export an image, image collection, table, video without to have to press any button in the asset tab. But to save our planet always double check if you really need export a complete collection.

How to use it?

This a OEEL included feature, simply use the appropriate oeel.Export.ImageCollection.* function. Have a look on this example.

How was it implemented?

This was a challenging feature!
A communication is introduced between the running code and the extension, trough some printing in the console. Weird message can appear in the console if the functionality is disabled or the extension not installed, but the code can still be executed. This communication tells the extension what to do.

Assets availability

Description

It checks if assets are publically available when sharing a script. This is only a check, and do NOT change assets or repository permission.

How to use it?

Simply clicking "get link" or "Copy Script Path". In the case of "Copy Script Path" it further check if the repository is public to allow another user to see the content.

How was it implemented?

The script and the environment header are statically checked to detect all the used assets. Then the list of these assets is sent to an external service that check its public availability.
Limitation: asset names that are dynamically created can therefore not be checked.

Insert function signature

Description

It allows to add a function signature from the documentation to the code script with a single click.

How to use it?

Move to the documentation tab, search for the function that interest you and click on the arrow!
The function is imported with the dictionary styling. Optional arguments are commented, and default value is added as default value πŸ˜„.

How was it implemented?

This function request two files from Earth Engine that contain the function signature. At the click the signature is generated and imported into the editor.

PlanetLab image management

Description

This feature allows to search / order / transfer PlanetLab imagery directly from GEE.

How to use it?

First activate the feature in the Option page, set up your account (If you login, it will recover the API key automatically for you), setup the path to your Planet imagery collection (this is required to remove already available assets from result list) and select the API version you want to use.

  • APIv1 look to be available for everyone. But require the data to transit trough your computer. A good internet connetion could be critical. The computer with the page need to stay open. When you do the a search, image already ingested (finished to be ingest!) are automatically removed from the list of available data. To download, select the image and press "Download" or simply double click on the image. Once an image set for download, it will take up to 20 minutes for the activation (computation of the image on Planet side) before the download can start. Be patient! Ps. if you select multiple images, all are activated in parallel.
  • APIv2 look to be available if we have payed quota (and only for any user, still unclear to me πŸ€”). With the order V2, once the order done, Planet manages the ingestion in GEE for you πŸ‘. Currently, the id of the asset is still missing in the metadata, and therefore the automatic cleaning of result is not possible πŸ€·β€β™‚οΈ. (I requested a modification in this way to Planet.)

Check this example to start.

Advices

Once finish the set up, start with a single image to see if everything work as expected, before moving to more downloads.

How was it implemented?

A very, very long story for a day I am motivated.

Aims and values

The Open Earth Engine extension (aka. OEEex) is part of the open-geocomputing initiative. The goal is to provide Google Earth Engine (GEE) users with free and open extension that provided some missing features. Some of the codes required many hours of design and debugging.

The origin

The project finds its origin from an extension developed by Mathieu Gravey during his PhD for a usage by Institute of Earth Surface Dynamics at the University of Lausanne. Starting with a way to search and automatically transfer Planet images to Google Earth Engine. It was finally the platform for many small added features. After Geo for Good 2021, it seems obvious that it should be shared with the community. The extension was redesigned and enhanced during the time at Utrecht Univerity. A particular thanks to Dr. RaphaΓ«l Nussbaumer who is at the origin of the design of this web site, and Pauline Ahumada for the animated logo.

Privacy policy

No sensitive data is transmitted to an external service. The only sensitive information stored is you Planet API, that is locally stored in your browser and only used for request to Planet API. Your login and password are NOT stored, only the key.