Screenshot 2020-07-21 at 17.15.08.png


Spotlight: geemap Python library

Leo Anthias

Leo Anthias

This interview kicks off our Spotlight series, where to talk to the creators of popular and exciting projects in the Python data science and visualization space. Today I'm speaking to Qiusheng Wu, who is the maintainer of geemap.

What inspired you to create geemap?

geemap is a Python package for interactive mapping with Google Earth Engine (GEE), which is a cloud computing platform with a multi-petabyte catalog of satellite imagery and geospatial datasets. During the past few years, GEE has become very popular in the geospatial community and it has empowered numerous environmental applications at local, regional, and global scales. GEE provides both JavaScript and Python APIs for making computational requests to the Earth Engine servers. Compared with the comprehensive documentation and interactive IDE (i.e., GEE JavaScript Code Editor) of the GEE JavaScript API, the GEE Python API has relatively little documentation and limited functionality for visualizing results interactively. The geemap Python package was created to fill this gap. It is built upon ipyleaflet and ipywidgets, and enables users to analyze and visualize Earth Engine datasets interactively within a Jupyter-based environment.

What are some of the coolest things your users have built so far?

I am pleased to see that geemap is being widely used by the Earth Engine community. One of the coolest things users have built is probably the Landsat/Sentinel timelapse. Using geemap with a few lines of code, users can create Landsat/Sentinel timelapse animations for any location on Earth and visualize environmental changes during the past few decades. Some of these cool things users have built and shared can be found on Twitter using the #geemap hashtag. Some users also build upon geemap to create new Python packages, such as Ndvi2Gif

Before libraries such as geemap, what were people doing? 

Before the advent of the geemap library, Earth Engine Python API users commonly use built-in Earth Engine functions to get a thumbnail URL of a dataset. It was difficult to visualize datasets and results interactively. Existing Python users had to learn JavaScript and use the GEE JavaScript Code Editor if they would like the use the interactive mapping functionality. With geemap, Earth Engine Python API users can now enjoy the same interactive mapping functionality as the JavaScript API. More importantly, Python uses can utilize the Python ecosystem of diverse libraries to create and deploy interactive Earth Engine Apps, which could be challenging to implement using the JavaScript API. 

How has open source changed the use-cases and landscape you work in?

geemap is built upon many open-source Python packages, such as earthengine-api, ipyleaflet, ipywidgets, ipytree, bqplot, xarray-leaflet, and folium. geemap would not exist without the collective efforts of numerous developers in the open-source community. I enjoy learning from and contributing to the open-source community.    

What’s next on your roadmap?

My goal is to make interactive mapping with Earth Engine Python API much easier for beginners as well advanced users. The next on my roadmap is to implement toolbox-like features in geemap. In this way, users can simply click any tools within the toolbox and adjust parameters interactively to perform advanced geospatial analysis without having to write any line of code.   

How are you using the Datapane library?

Before datapane was available, it was challenging for Python users to share Earth Engine datasets and mapping results. Users had to sign up for an Earth Engine account and set up the Python environment on their computer in order to execute Earth Engine source code and see the results. The datapane library is a game-changer. It makes sharing Earth Engine datasets and mapping results so much easier. Earth Engine users can use datapane to create and publish interactive maps with only a few lines of code. The published maps can be shared with anyone (including non-GEE users) or embedded in a social media post or a website. Check out this tutorial on how to publish interactive Earth Engine maps using geemap and datapane.   

What else in this space should people check out?

I encourage geospatial Python users to check out these great packages, such as ipyleaflet, ipywidgets, bqplot, xarray, xarray-leaflet, voila, and datapane. They make interactive mapping, analysis, and sharing of geospatial datasets much easier. More geemap tutorials can be found on my YouTube channel

Thanks Qiusheng! We're excited to see more great things and beautiful visualisations from the geemap project. Here's an example of a geemap visualisation on Datapane!

Need to share Python analyses?

Datapane is an API and framework which makes it easy for people analysing data in Python to publish interactive reports and deploy their analyses.