Quickstart#
An extension ?#
geetools is an extension package. It means that it cannot be used without the Google Earth Engine Python API but also that you don’t need to call it explicitly to use all the methods and functions available.
To summarize, these functions are added to GEE objects inside a member called geetools.
The first step is as always to authenticate to GEE and import the geetools package.
Optional: Google Cloud Storage#
You only need a Google Cloud Storage (GCS) bucket if you plan to transfer data between Earth Engine and Cloud Storage. This setup is optional; it is not required to use geetools or to export to Google Drive or Earth Engine assets.
Cloud Storage is a fee-based service. Enable billing for the Google Cloud project, and make sure that your account has write permission on the bucket.
Create a bucket in the Google Cloud project you use with Earth Engine, for example from the Google Cloud Console. Bucket names must be globally unique, so you can use your project ID as the bucket name if it is available. For more information, see Google’s guide to creating storage buckets.
import ee
import geetools #noqa: F401
ee.Initialize()
At this stage all the methods of the package have been added to the ee objects. You can use them as if they were part of the original API in the geetools member.
The following example will use the truncate method to truncate a number to a given number of decimals.
import ee
import geetools #noqa: F401
number = ee.Number(3.14159265359)
truncated = number.geetools.truncate(2)
truncated.getInfo()
Real life example#
This small example shows how geetools is wrapping the excellent ee_extra package functionalities to preprocess sentinel 2 data in 5 lines of code:
import ee
import geetools #noqa: F401
import pygaul # another gee-community package to access FAO GAUl 2015 dataset
# we assume you are already authenticated to GEE
ee.Initialize.geetools.from_account("toto") # yes we also support multi users
amazonas = pygaul.Items(name="Amazonas").centroid()
S2 = (
ee.ImageCollection('COPERNICUS/S2_SR')
.filterBounds(point)
.geetools.closest('2020-10-15') # Extended (pre-processing)
.geetools.maskClouds(prob = 70) # Extended (pre-processing)
.geetools.scaleAndOffset() # Extended (pre-processing)
.geetools.spectralIndices(['NDVI','NDWI','BAIS2'])) # Extended (processing)
More examples of more complex and meaningful analysis can be found in the Guides gallery.
F401 ?#
In Python it’s recommended to clean you code using automatic tools like flake8, ruff, isort…etc
These tool will raise an error if you import a package and don’t use it, it’s the F401 error. In some tools the erroring lines can be deleted from the file. This will break your code as even if the geetools package is never called it’s required to import it to extend the ee package.
The #noqa: F401 comment is used to avoid the linter to raise an error when the package is imported but not used. It is not mandatory if you don’t use linters but it is a good practice to keep your code clean.
Note
as per flake8 documentation:
F401: A module has been imported but is not used anywhere in the file. The module should either be used or the import should be removed.