generated from giswqs/jupyter-book-demo
-
Notifications
You must be signed in to change notification settings - Fork 93
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
278 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -62,3 +62,4 @@ parts: | |
- file: book/labs/lab_05 | ||
- file: book/labs/lab_06 | ||
- file: book/labs/lab_07 | ||
- file: book/labs/lab_08 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,174 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"# Lab 8\n", | ||
"\n", | ||
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/giswqs/geog-312/blob/main/book/labs/lab_08.ipynb)\n", | ||
"\n", | ||
"\n", | ||
"## Overview\n", | ||
"\n", | ||
"This lab introduces you to MapLibre, an open-source library for creating highly customizable, interactive 2D and 3D maps in Python. You will gain practical experience using MapLibre in conjunction with the Leafmap library to develop dynamic geospatial visualizations. This lab covers fundamental tasks, such as setting up MapLibre, creating a map, and customizing views, as well as more advanced functionalities, such as overlaying data layers, adding 3D buildings, and adding map elements.\n", | ||
"\n", | ||
"---\n", | ||
"\n", | ||
"## Objectives\n", | ||
"\n", | ||
"By completing this lab, you will be able to:\n", | ||
"\n", | ||
"1. Set up MapLibre in Python and initialize a basic map.\n", | ||
"2. Customize map properties, including basemap styles, zoom levels, pitch, and bearing.\n", | ||
"3. Add interactive controls, such as geolocation, fullscreen, and drawing tools, to enhance user experience.\n", | ||
"4. Integrate various data layers, such as GeoJSON, XYZ tiles, and WMS layers, to enrich map content.\n", | ||
"5. Work with 3D visualizations, including extruded buildings, for enhanced spatial representation.\n", | ||
"6. Add map elements, such as image, text, and GIF, to the map." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# %pip install \"leafmap[maplibre]\"" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"## Exercise 1: Setting up MapLibre and Basic Map Creation \n", | ||
"\n", | ||
" - Initialize a map centered on a country of your choice with an appropriate zoom level and display it with the `dark-matter` basemap.\n", | ||
" - Change the basemap style to `liberty` and display it again.\n", | ||
" " | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"## Exercise 2: Customizing the Map View \n", | ||
"\n", | ||
" - Create a 3D map of a city of your choice with an appropriate zoom level, pitch and bearing using the `liberty` basemap.\n", | ||
" - Experiment with MapTiler 3D basemap styles, such as `3d-satellite`, `3d-hybrid`, and `3d-topo`, to visualize a location of your choice in different ways. Please set your MapTiler API key as Colab secret and do NOT expose the API key in the notebook." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"\n", | ||
"## Exercise 3: Adding Map Controls \n", | ||
"\n", | ||
" - Create a map centered on a city of your choice and add the following controls to the map:\n", | ||
" - **Geolocate** control positioned at the top left.\n", | ||
" - **Fullscreen** control at the top right.\n", | ||
" - **Draw** control for adding points, lines, and polygons, positioned at the top left.\n" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"## Exercise 4: Overlaying Data Layers \n", | ||
"\n", | ||
" - **GeoJSON Layer**: Create a map and add the following GeoJSON data layers to the map with appropriate styles:\n", | ||
" - NYC buildings: https://github.com/opengeos/datasets/releases/download/places/nyc_buildings.geojson\n", | ||
" - NYC roads: https://github.com/opengeos/datasets/releases/download/places/las_vegas_roads.geojson\n", | ||
" - **Thematic Raster Layer**: Create a map with a satellite basemap and add the following raster data layer to the map with an appropriate legend:\n", | ||
" - National Land Cover Database (NLCD) 2021: https://github.com/opengeos/datasets/releases/download/raster/nlcd_2021_land_cover_90m.tif\n", | ||
" - **DEM Layer:** Create a map with a satellite basemap and add the following DEM layer to the map with an appropriate color bar:\n", | ||
" - DEM: https://github.com/opengeos/datasets/releases/download/raster/dem.tif\n", | ||
" - **WMS Layer**: Create a map and add the ESA WorldCover WMS layer to the map with an appropriate legend:\n", | ||
" - url: https://services.terrascope.be/wms/v2\n", | ||
" - layers: WORLDCOVER_2021_MAP" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"## Exercise 5: Working with 3D Buildings \n", | ||
"\n", | ||
" - Set up a 3D map centered on a city of your choice with an appropriate zoom level, pitch, and bearing.\n", | ||
" - Add 3D buildings to the map with extrusions based on their height attributes. Use a custom color gradient for the extrusion color.\n" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"## Exercise 6: Adding Map Elements \n", | ||
" - **Image and Text**: Add a logo image of your choice with appropriate text to the map.\n", | ||
" - **GIF**: Add an animated GIF of your choice to the map." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "geo", | ||
"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.12.7" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 2 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
--- | ||
jupytext: | ||
text_representation: | ||
extension: .md | ||
format_name: myst | ||
format_version: 0.13 | ||
jupytext_version: 1.16.4 | ||
kernelspec: | ||
display_name: geo | ||
language: python | ||
name: python3 | ||
--- | ||
|
||
# Lab 8 | ||
|
||
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/giswqs/geog-312/blob/main/book/labs/lab_08.ipynb) | ||
|
||
|
||
## Overview | ||
|
||
This lab introduces you to MapLibre, an open-source library for creating highly customizable, interactive 2D and 3D maps in Python. You will gain practical experience using MapLibre in conjunction with the Leafmap library to develop dynamic geospatial visualizations. This lab covers fundamental tasks, such as setting up MapLibre, creating a map, and customizing views, as well as more advanced functionalities, such as overlaying data layers, adding 3D buildings, and adding map elements. | ||
|
||
--- | ||
|
||
## Objectives | ||
|
||
By completing this lab, you will be able to: | ||
|
||
1. Set up MapLibre in Python and initialize a basic map. | ||
2. Customize map properties, including basemap styles, zoom levels, pitch, and bearing. | ||
3. Add interactive controls, such as geolocation, fullscreen, and drawing tools, to enhance user experience. | ||
4. Integrate various data layers, such as GeoJSON, XYZ tiles, and WMS layers, to enrich map content. | ||
5. Work with 3D visualizations, including extruded buildings, for enhanced spatial representation. | ||
6. Add map elements, such as image, text, and GIF, to the map. | ||
|
||
```{code-cell} ipython3 | ||
# %pip install "leafmap[maplibre]" | ||
``` | ||
|
||
## Exercise 1: Setting up MapLibre and Basic Map Creation | ||
|
||
- Initialize a map centered on a country of your choice with an appropriate zoom level and display it with the `dark-matter` basemap. | ||
- Change the basemap style to `liberty` and display it again. | ||
|
||
|
||
```{code-cell} ipython3 | ||
``` | ||
|
||
## Exercise 2: Customizing the Map View | ||
|
||
- Create a 3D map of a city of your choice with an appropriate zoom level, pitch and bearing using the `liberty` basemap. | ||
- Experiment with MapTiler 3D basemap styles, such as `3d-satellite`, `3d-hybrid`, and `3d-topo`, to visualize a location of your choice in different ways. Please set your MapTiler API key as Colab secret and do NOT expose the API key in the notebook. | ||
|
||
```{code-cell} ipython3 | ||
``` | ||
|
||
|
||
## Exercise 3: Adding Map Controls | ||
|
||
- Create a map centered on a city of your choice and add the following controls to the map: | ||
- **Geolocate** control positioned at the top left. | ||
- **Fullscreen** control at the top right. | ||
- **Draw** control for adding points, lines, and polygons, positioned at the top left. | ||
|
||
```{code-cell} ipython3 | ||
``` | ||
|
||
## Exercise 4: Overlaying Data Layers | ||
|
||
- **GeoJSON Layer**: Create a map and add the following GeoJSON data layers to the map with appropriate styles: | ||
- NYC buildings: https://github.com/opengeos/datasets/releases/download/places/nyc_buildings.geojson | ||
- NYC roads: https://github.com/opengeos/datasets/releases/download/places/las_vegas_roads.geojson | ||
- **Thematic Raster Layer**: Create a map with a satellite basemap and add the following raster data layer to the map with an appropriate legend: | ||
- National Land Cover Database (NLCD) 2021: https://github.com/opengeos/datasets/releases/download/raster/nlcd_2021_land_cover_90m.tif | ||
- **DEM Layer:** Create a map with a satellite basemap and add the following DEM layer to the map with an appropriate color bar: | ||
- DEM: https://github.com/opengeos/datasets/releases/download/raster/dem.tif | ||
- **WMS Layer**: Create a map and add the ESA WorldCover WMS layer to the map with an appropriate legend: | ||
- url: https://services.terrascope.be/wms/v2 | ||
- layers: WORLDCOVER_2021_MAP | ||
|
||
```{code-cell} ipython3 | ||
``` | ||
|
||
## Exercise 5: Working with 3D Buildings | ||
|
||
- Set up a 3D map centered on a city of your choice with an appropriate zoom level, pitch, and bearing. | ||
- Add 3D buildings to the map with extrusions based on their height attributes. Use a custom color gradient for the extrusion color. | ||
|
||
```{code-cell} ipython3 | ||
``` | ||
|
||
## Exercise 6: Adding Map Elements | ||
- **Image and Text**: Add a logo image of your choice with appropriate text to the map. | ||
- **GIF**: Add an animated GIF of your choice to the map. | ||
|
||
```{code-cell} ipython3 | ||
``` |