{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"Uncomment the following line to install [geemap](https://geemap.org) if needed."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# !pip install geemap"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To follow this tutorial, you will need to [sign up](https://datapane.com/accounts/signup/) for an account with , then install and authenticate the `datapane` Python package. More information can be found [here](https://docs.datapane.com/tutorials/tut-getting-started). \n",
"\n",
"- `pip install datapane`\n",
"- `datapane login`\n",
"- `datapane ping`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import ee\n",
"import geemap.foliumap as geemap"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Create a map centered at (lat, lon).\n",
"Map = geemap.Map(center=[40, -100], zoom=4)\n",
"\n",
"# Use an elevation dataset and terrain functions to create\n",
"# a custom visualization of topography.\n",
"\n",
"# Load a global elevation image.\n",
"elev = ee.Image('USGS/GMTED2010')\n",
"\n",
"# Zoom to an area of interest.\n",
"Map.setCenter(-121.069, 50.709, 6)\n",
"\n",
"# Add the elevation to the map.\n",
"Map.addLayer(elev, {}, 'elev')\n",
"\n",
"# Use the terrain algorithms to compute a hillshade with 8-bit values.\n",
"shade = ee.Terrain.hillshade(elev)\n",
"Map.addLayer(shade, {}, 'hillshade', False)\n",
"\n",
"# Create a \"sea\" variable to be used for cartographic purposes\n",
"sea = elev.lte(0)\n",
"Map.addLayer(sea.mask(sea), {'palette': '000022'}, 'sea', False)\n",
"\n",
"# Create a custom elevation palette from hex strings.\n",
"elevationPalette = ['006600', '002200', 'fff700', 'ab7634', 'c4d0ff', 'ffffff']\n",
"# Use these visualization parameters, customized by location.\n",
"visParams = {'min': 1, 'max': 3000, 'palette': elevationPalette}\n",
"\n",
"# Create a mosaic of the sea and the elevation data\n",
"visualized = ee.ImageCollection(\n",
" [\n",
" # Mask the elevation to get only land\n",
" elev.mask(sea.Not()).visualize(**visParams),\n",
" # Use the sea mask directly to display sea.\n",
" sea.mask(sea).visualize(**{'palette': '000022'}),\n",
" ]\n",
").mosaic()\n",
"\n",
"# Note that the visualization image doesn't require visualization parameters.\n",
"Map.addLayer(visualized, {}, 'elev palette', False)\n",
"\n",
"# Convert the visualized elevation to HSV, first converting to [0, 1] data.\n",
"hsv = visualized.divide(255).rgbToHsv()\n",
"# Select only the hue and saturation bands.\n",
"hs = hsv.select(0, 1)\n",
"# Convert the hillshade to [0, 1] data, as expected by the HSV algorithm.\n",
"v = shade.divide(255)\n",
"# Create a visualization image by converting back to RGB from HSV.\n",
"# Note the cast to byte in order to export the image correctly.\n",
"rgb = hs.addBands(v).hsvToRgb().multiply(255).byte()\n",
"Map.addLayer(rgb, {}, 'styled')\n",
"\n",
"states = ee.FeatureCollection('TIGER/2018/States')\n",
"Map.addLayer(ee.Image().paint(states, 0, 2), {}, \"US States\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Display the map.\n",
"Map"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"Map.publish(\n",
" name='Terrain Visualization',\n",
" description='A folium map with Earth Engine data layers',\n",
")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}