{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "<table class=\"ee-notebook-buttons\" align=\"left\">\n", " <td><a target=\"_blank\" href=\"https://github.com/giswqs/earthengine-py-notebooks/tree/master/Image/normalized_difference.ipynb\"><img width=32px src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" /> View source on GitHub</a></td>\n", " <td><a target=\"_blank\" href=\"https://nbviewer.jupyter.org/github/giswqs/earthengine-py-notebooks/blob/master/Image/normalized_difference.ipynb\"><img width=26px src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Jupyter_logo.svg/883px-Jupyter_logo.svg.png\" />Notebook Viewer</a></td>\n", " <td><a target=\"_blank\" href=\"https://colab.research.google.com/github/giswqs/earthengine-py-notebooks/blob/master/Image/normalized_difference.ipynb\"><img src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" /> Run in Google Colab</a></td>\n", "</table>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Install Earth Engine API and geemap\n", "Install the [Earth Engine Python API](https://developers.google.com/earth-engine/python_install) and [geemap](https://geemap.org). The **geemap** Python package is built upon the [ipyleaflet](https://github.com/jupyter-widgets/ipyleaflet) and [folium](https://github.com/python-visualization/folium) packages and implements several methods for interacting with Earth Engine data layers, such as `Map.addLayer()`, `Map.setCenter()`, and `Map.centerObject()`.\n", "The following script checks if the geemap package has been installed. If not, it will install geemap, which automatically installs its [dependencies](https://github.com/giswqs/geemap#dependencies), including earthengine-api, folium, and ipyleaflet." ] }, { "cell_type": "code", "metadata": {}, "source": [ "# Installs geemap package\n", "import subprocess\n", "\n", "try:\n", " import geemap\n", "except ImportError:\n", " print('Installing geemap ...')\n", " subprocess.check_call([\"python\", '-m', 'pip', 'install', 'geemap'])" ], "outputs": [], "execution_count": null }, { "cell_type": "code", "metadata": {}, "source": [ "import ee\n", "import geemap" ], "outputs": [], "execution_count": null }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create an interactive map \n", "The default basemap is `Google Maps`. [Additional basemaps](https://github.com/giswqs/geemap/blob/master/geemap/basemaps.py) can be added using the `Map.add_basemap()` function. " ] }, { "cell_type": "code", "metadata": {}, "source": [ "Map = geemap.Map(center=[40,-100], zoom=4)\n", "Map" ], "outputs": [], "execution_count": null }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Add Earth Engine Python script " ] }, { "cell_type": "code", "metadata": {}, "source": [ "# Add Earth Engine dataset\n", "# NormalizedDifference example.\n", "#\n", "# Compute Normalized Difference Vegetation Index over MOD09GA product.\n", "# NDVI = (NIR - RED) / (NIR + RED), where\n", "# RED is sur_refl_b01, 620-670nm\n", "# NIR is sur_refl_b02, 841-876nm\n", "\n", "# Load a MODIS image.\n", "img = ee.Image('MODIS/006/MOD09GA/2012_03_09')\n", "\n", "# Use the normalizedDifference(A, B) to compute (A - B) / (A + B)\n", "ndvi = img.normalizedDifference(['sur_refl_b02', 'sur_refl_b01'])\n", "\n", "# Make a 'palette': a list of hex strings.\n", "palette = ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718',\n", " '74A901', '66A000', '529400', '3E8601', '207401', '056201',\n", " '004C00', '023B01', '012E01', '011D01', '011301']\n", "\n", "# Center the map\n", "Map.setCenter(-94.84497, 39.01918, 8)\n", "\n", "# Display the input image and the NDVI derived from it.\n", "Map.addLayer(img.select(['sur_refl_b01', 'sur_refl_b04', 'sur_refl_b03']),\n", " {'gain': [0.1, 0.1, 0.1]}, 'MODIS bands 1/4/3')\n", "Map.addLayer(ndvi, {'min': 0, 'max': 1, 'palette': palette}, 'NDVI')\n" ], "outputs": [], "execution_count": null }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Display Earth Engine data layers " ] }, { "cell_type": "code", "metadata": {}, "source": [ "Map.addLayerControl() # This line is not needed for ipyleaflet-based Map.\n", "Map" ], "outputs": [], "execution_count": null } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 4 }