Skip to content

Commit

Permalink
Add paper
Browse files Browse the repository at this point in the history
  • Loading branch information
giswqs committed May 22, 2020
1 parent da484c0 commit 31f51eb
Show file tree
Hide file tree
Showing 5 changed files with 226 additions and 3 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ __pycache__/
md2rst.md
md2rst.rst
testing/
paper/
geemap/geemap_v*.py
.Python
env/
Expand Down
3 changes: 2 additions & 1 deletion AUTHORS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ Contributors
------------

* `Cesar Aybar <https://github.com/csaybar>`__
* `Ojaybee <https://github.com/Ojaybee>`__
* `Oliver Burdekin <https://github.com/Ojaybee>`__
* `Diego Garcia Diaz <https://github.com/Digdgeo>`__
* `Justin Braaten <https://github.com/jdbcode>`__
2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ Introduction
**geemap** is a Python package for interactive mapping with `Google Earth Engine <https://earthengine.google.com/>`__ (GEE), which is a cloud computing platform with a `multi-petabyte catalog <https://developers.google.com/earth-engine/datasets/>`__ 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 <https://developers.google.com/earth-engine>`__ and interactive IDE (i.e., `GEE JavaScript Code Editor <https://code.earthengine.google.com/>`__) of the GEE JavaScript API,
the GEE Python API lacks good documentation and functionality for visualizing results interactively. The **geemap** Python packages is created to fill this gap. It is built upon `ipyleaflet <https://github.com/jupyter-widgets/ipyleaflet>`__ and `ipywidgets <https://github.com/jupyter-widgets/ipywidgets>`__, enabling GEE users to
the GEE Python API lacks good documentation and functionality for visualizing results interactively. The **geemap** Python package is created to fill this gap. It is built upon `ipyleaflet <https://github.com/jupyter-widgets/ipyleaflet>`__ and `ipywidgets <https://github.com/jupyter-widgets/ipywidgets>`__, enabling GEE users to
analyze and visualize Earth Engine datasets interactively with Jupyter notebooks.

**geemap** is intended for students and researchers, who would like to utilize the Python ecosystem of diverse libraries and tools to explore Google Earth Engine. It is also designed for existing GEE users who would like to transition from the GEE JavaScript API to Python API. The automated JavaScript-to-Python `conversion module <https://github.com/giswqs/geemap/blob/master/geemap/conversion.py>`__ of the **geemap** package
Expand Down
150 changes: 150 additions & 0 deletions paper/paper.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
@ARTICLE{Gorelick2017,
title = "{Google Earth Engine: Planetary-scale geospatial analysis for
everyone}",
author = "Gorelick, Noel and Hancher, Matt and Dixon, Mike and
Ilyushchenko, Simon and Thau, David and Moore, Rebecca",
journal = "Remote sensing of environment",
publisher = "Elsevier",
volume = 202,
pages = "18--27",
month = "1~" # dec,
year = 2017,
url = "http://www.sciencedirect.com/science/article/pii/S0034425717302900",
keywords = "Cloud computing; Big data; Analysis; Platform; Data
democratization; Earth Engine",
issn = "0034-4257",
doi = "10.1016/j.rse.2017.06.031"
}

@ARTICLE{Hansen2013,
title = "{High-resolution global maps of 21st-century forest cover change}",
author = "Hansen, M C and Potapov, P V and Moore, R and Hancher, M and
Turubanova, S A and Tyukavina, A and Thau, D and Stehman, S V
and Goetz, S J and Loveland, T R and Kommareddy, A and Egorov, A
and Chini, L and Justice, C O and Townshend, J R G",
journal = "Science",
publisher = "science.sciencemag.org",
volume = 342,
number = 6160,
pages = "850--853",
month = "15~" # nov,
year = 2013,
url = "http://dx.doi.org/10.1126/science.1244693",
language = "en",
issn = "0036-8075, 1095-9203",
pmid = "24233722",
doi = "10.1126/science.1244693"
}

@ARTICLE{Hird2017,
title = "{Google Earth Engine, {Open-Access} Satellite Data, and Machine
Learning in Support of {Large-Area} Probabilistic Wetland
Mapping}",
author = "Hird, Jennifer N and DeLancey, Evan R and McDermid, Gregory J
and Kariyeva, Jahan",
publisher = "Multidisciplinary Digital Publishing Institute",
volume = 9,
number = 12,
pages = "1315",
month = "14~" # dec,
year = 2017,
url = "http://www.mdpi.com/2072-4292/9/12/1315",
keywords = "VIP;Earth Engine",
language = "en",
doi = "10.3390/rs9121315"
}

@ARTICLE{Kennedy2018,
title = "{Implementation of the LandTrendr Algorithm on Google Earth
Engine}",
author = "Kennedy, Robert E and Yang, Zhiqiang and Gorelick, Noel and
Braaten, Justin and Cavalcante, Lucas and Cohen, Warren B and
Healey, Sean",
journal = "Remote Sensing",
publisher = "Multidisciplinary Digital Publishing Institute",
volume = 10,
number = 5,
pages = "691",
month = "1~" # may,
year = 2018,
url = "http://www.mdpi.com/2072-4292/10/5/691",
language = "en",
doi = "10.3390/rs10050691"
}

@ARTICLE{Li2019,
title = "{A dataset of 30 m annual vegetation phenology indicators
(1985--2015) in urban areas of the conterminous United States}",
author = "Li, Xuecao and Zhou, Yuyu and Meng, Lin and Asrar, Ghassem R and
Lu, Chaoqun and Wu, Qiusheng",
journal = "Earth System Science Data",
publisher = "earth-syst-sci-data.net",
year = 2019,
url = "https://www.earth-syst-sci-data.net/11/881/2019/essd-11-881-2019.html",
}

@ARTICLE{Liu2020,
title = "{High-spatiotemporal-resolution mapping of global urban change
from 1985 to 2015}",
author = "Liu, Xiaoping and Huang, Yinghuai and Xu, Xiaocong and Li,
Xuecao and Li, Xia and Ciais, Philippe and Lin, Peirong and
Gong, Kai and Ziegler, Alan D and Chen, Anping and Gong, Peng
and Chen, Jun and Hu, Guohua and Chen, Yimin and Wang, Shaojian
and Wu, Qiusheng and Huang, Kangning and Estes, Lyndon and Zeng,
Zhenzhong",
journal = "Nature Sustainability",
publisher = "Nature Publishing Group",
pages = "1--7",
month = "4~" # may,
year = 2020,
url = "https://www.nature.com/articles/s41893-020-0521-x",
language = "en",
issn = "2398-9629, 2398-9629",
doi = "10.1038/s41893-020-0521-x"
}

@ARTICLE{Pekel2016,
title = "{High-resolution mapping of global surface water and its long-term
changes}",
author = "Pekel, Jean-Fran{\c c}ois and Cottam, Andrew and Gorelick, Noel
and Belward, Alan S",
journal = "Nature",
volume = 540,
number = 7633,
pages = "418--422",
month = "15~" # dec,
year = 2016,
url = "http://dx.doi.org/10.1038/nature20584",
language = "en",
issn = "0028-0836, 1476-4687",
pmid = "27926733",
doi = "10.1038/nature20584"
}

@ARTICLE{Wu2019,
title = "{Integrating LiDAR data and multi-temporal aerial imagery to map
wetland inundation dynamics using Google Earth Engine}",
author = "Wu, Qiusheng and Lane, Charles R and Li, Xuecao and Zhao,
Kaiguang and Zhou, Yuyu and Clinton, Nicholas and DeVries, Ben
and Golden, Heather E and Lang, Megan W",
journal = "Remote sensing of environment",
publisher = "Elsevier",
volume = 228,
pages = "1--13",
month = "1~" # jul,
year = 2019,
url = "http://www.sciencedirect.com/science/article/pii/S0034425719301609",
keywords = "Wetland hydrology; Inundation; Topographic depressions; Surface
water; LiDAR; Google Earth Engine",
issn = "0034-4257",
doi = "10.1016/j.rse.2019.04.015"
}

@ARTICLE{QuantStack2019,
title = "{Interactive GIS in Jupyter with ipyleaflet - Jupyter Blog}",
author = "{QuantStack}",
publisher = "Jupyter Blog",
month = "24~" # sep,
year = 2019,
url = "https://blog.jupyter.org/interactive-gis-in-jupyter-with-ipyleaflet-52f9657fa7a"
}
73 changes: 73 additions & 0 deletions paper/paper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
title: "geemap: A Python package for interactive mapping with Google Earth Engine"
tags:
- Python
- Google Earth Engine
- ipyleaflet
- mapping
- Jupyter notebook
authors:
- name: Qiusheng Wu
orcid: 0000-0001-5437-4073
affiliation: "1"
affiliations:
- name: Department of Geography, University of Tennessee, Knoxville, TN 37996, United States
index: 1
date: 21 May 2020
bibliography: paper.bib
---

# Summary

**geemap** is a Python package for interactive mapping with [Google Earth Engine](https://earthengine.google.com/) (GEE),
which is a cloud computing platform with a [multi-petabyte catalog](https://developers.google.com/earth-engine/datasets/)
of satellite imagery and geospatial datasets (e.g., Landsat, Sentinel, MODIS, NAIP) [@Gorelick2017]. 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. Some of the notable environmental applications include mapping global forest change [@Hansen2013],
global urban change [@Liu2020], global surface water change [@Pekel2016], wetland inundation dynamics [@Wu2019], vegetation
phenology [@Li2019], and time series analysis [@Kennedy2018].

GEE provides both JavaScript and Python APIs for making computational requests to the Earth Engine servers.
Compared with the comprehensive [documentation](https://earthengine.google.com/) and interactive IDE
(i.e., [GEE JavaScript Code Editor](https://code.earthengine.google.com/)) of the GEE JavaScript API, the
GEE Python API lacks good documentation and functionality for visualizing results interactively.
The **geemap** Python package is created to fill this gap[. It is built upon
[ipyleaflet](https://github.com/jupyter-widgets/ipyleaflet) and [ipywidgets](https://github.com/jupyter-widgets/ipywidgets),
enabling GEE users to analyze and visualize Earth Engine datasets interactively with Jupyter notebooks.

# geemap Audience

**geemap** is intended for students and researchers, who would like to utilize the Python ecosystem of diverse libraries and
tools to explore Google Earth Engine. It is also designed for existing GEE users who would like to transition from the GEE
JavaScript API to Python API. The automated JavaScript-to-Python [conversion module](https://github.com/giswqs/geemap/blob/master/geemap/conversion.py)
of the **geemap** package can greatly reduce the time needed to convert existing GEE JavaScripts to Python scripts and Jupyter notebooks.

# geemap Functionality

The interactive mapping functionality of the **geemap** package is built upon [ipyleaflet](https://github.com/jupyter-widgets/ipyleaflet) and [folium](https://github.com/python-visualization/folium), both of which rely on Jupyter notebooks for creating interactive maps. A key difference between ipyleaflet and folium is that ipyleaflet is built upon ipywidgets and allows bidirectional communication between the front-end and the backend enabling the use of the map to capture user input, while folium is meant for displaying static data only [@QuantStack2019]. It should be noted that [Google Colab](https://colab.research.google.com/) currently does not support ipyleaflet. Therefore, if one wants to use **geemap** on Google Colab, one should use `import geemap.eefolium as geemap`, which provides limited interactive mapping functionality. To utilize the full interactive mapping functionality of **geemap**, one should use `import geemap` on a local computer or secured server with Jupyter notebook installed.

The key functionality of **geemap** is organized into several modules:

- [geemap](https://geemap.readthedocs.io/en/latest/source/geemap.html#module-geemap.geemap): the main module for interactive mapping with Google Earth Engine, ipyleaflet, and ipywidgets.

- [eefolium](https://geemap.readthedocs.io/en/latest/source/geemap.html#module-geemap.eefolium): a module for interactive mapping with Earth Engine and folium. It is designed for users to run geemap with Google Colab.

- [conversion](https://geemap.readthedocs.io/en/latest/source/geemap.html#module-geemap.conversion): utilities for automatically converting Earth Engine JavaScripts to Python scripts and Jupyter notebooks.

- [basemaps](https://geemap.readthedocs.io/en/latest/source/geemap.html#module-geemap.basemaps): a module for adding various XYZ and WMS tiled basemaps.

- [legends](https://geemap.readthedocs.io/en/latest/source/geemap.html#module-geemap.legends): a module for adding customized legends to interactive maps.

# geemap Tutorials

Various tutorials and documentation are available for using **geemap**, including:

- [20+ video tutorials with corresponding notebook examples](https://github.com/giswqs/geemap/tree/master/examples)
- [360+ Jupyter notebook examples using Google Earth Engine](https://github.com/giswqs/earthengine-py-notebooks)
- [Complete documentation on geemap modules and methods](https://geemap.readthedocs.io/en/latest/source/geemap.html)

# Acknowledgements

The author would like to thank the developers of ipyleaflet and ipywidgets, which empowers the interactive mapping functionality of **geemap**, including [martin Renou](https://github.com/martinRenou), [Sylvain Corlay](https://github.com/SylvainCorlay), and [David Brochart](https://github.com/davidbrochart). The author would also like to acknowledge source code contributions from [Justin Braaten](https://github.com/jdbcode), [Cesar Aybar](https://github.com/csaybar), [Oliver Burdekin](https://github.com/Ojaybee), [Diego Garcia Diaz](https://github.com/Digdgeo), and [Stephan Büttig](https://twitter.com/stephan_buettig).

# References

0 comments on commit 31f51eb

Please sign in to comment.