diff --git a/README.md b/README.md index 57b1f894..2e7f8e62 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ These quickstarts give high-level introductions to a single topic. * [Using Leafmap](quickstarts/leafmap-example.ipynb) * [Using the Radiant MLHub API](quickstarts/using-radiant-mlhub-api.ipynb) * [Using the Radiant MLHub Models API](quickstarts/using-radiant-mlhub-models-api.ipynb) +* [Exploring HLS2 Data with Github Copilot](quickstarts/hls2-copilot.md) ## Datasets diff --git a/datasets/ai4good/colombia-earthquake.ipynb b/datasets/ai4good/colombia-earthquake.ipynb new file mode 100644 index 00000000..d404fc81 --- /dev/null +++ b/datasets/ai4good/colombia-earthquake.ipynb @@ -0,0 +1,1100 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "6f05209a", + "metadata": {}, + "source": [ + "## Predicted Building Damage: Colombia Earthquake 2026\n", + "\n", + "Following the August 2026 earthquake in Colombia, the [Microsoft AI for Good Lab](https://www.microsoft.com/en-us/research/group/ai-for-good-research-lab/) trained and ran a building-damage-assessment model over post-event satellite imagery. The model classifies every building footprint in the imagery as *undamaged*, *damaged*, or *unknown* (for example, when the building is obscured by cloud or haze).\n", + "\n", + "This notebook explores the [`predicted-damage-colombia-2026`](https://planetarycomputer.microsoft.com/dataset/predicted-damage-colombia-2026) collection on the Planetary Computer. Unlike the [companion Venezuela collection](https://planetarycomputer.microsoft.com/dataset/predicted-damage-venezuela-2026), which publishes a single collection-level file, this collection has one **STAC item per assessed city**, and each item carries several assets:\n", + "\n", + "| Asset | Format | What it is |\n", + "| --- | --- | --- |\n", + "| `overture-buildings` | GeoPackage | [Overture Maps](https://overturemaps.org/) footprints with predicted damage |\n", + "| `google-buildings` | GeoPackage | [Google Open Buildings](https://sites.research.google/gr/open-buildings/) footprints with predicted damage |\n", + "| `visual` | Cloud-Optimized GeoTIFF | The model's per-pixel prediction raster |\n", + "| `valid-area-mask` | GeoJSON | Outline of the area the assessment covers |\n", + "\n", + "We'll **query** the STAC API for the items, **load** the GeoPackages into a `geopandas.GeoDataFrame`, and **plot** the results — first as city-wide overview maps, then as a close-up of the prediction raster.\n", + "\n", + "The collection mirrors the datasets published by the AI for Good Lab on the [Humanitarian Data Exchange](https://data.humdata.org/) and is made available under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) license.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "afcda523", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-14T19:00:36.193298Z", + "iopub.status.busy": "2026-08-14T19:00:36.193199Z", + "iopub.status.idle": "2026-08-14T19:00:37.745209Z", + "shell.execute_reply": "2026-08-14T19:00:37.744652Z" + } + }, + "outputs": [], + "source": [ + "import os\n", + "import tempfile\n", + "\n", + "import fsspec\n", + "import geopandas\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import planetary_computer\n", + "import pystac_client\n", + "import rasterio\n", + "import rasterio.windows\n" + ] + }, + { + "cell_type": "markdown", + "id": "5355e742", + "metadata": {}, + "source": [ + "### Querying the STAC API\n", + "\n", + "The datasets hosted by the Planetary Computer live in [Azure Blob Storage](https://learn.microsoft.com/azure/storage/blobs/). We use [`pystac-client`](https://pystac-client.readthedocs.io/) to open the [STAC API](https://planetarycomputer.microsoft.com/api/stac/v1) and pass `modifier=planetary_computer.sign_inplace` so that asset hrefs are automatically [signed](https://planetarycomputer.microsoft.com/docs/concepts/sas/) with a short-lived token. That token is what lets us read the data out of the Planetary Computer's private blob container.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "0bc4dad0", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-14T19:00:37.747842Z", + "iopub.status.busy": "2026-08-14T19:00:37.747624Z", + "iopub.status.idle": "2026-08-14T19:00:38.936431Z", + "shell.execute_reply": "2026-08-14T19:00:38.935859Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
| \n", + " | id | \n", + "datetime | \n", + "bbox | \n", + "assets | \n", + "
|---|---|---|---|---|
| 0 | \n", + "cali-2026-08-10 | \n", + "2026-08-10 00:00:00+00:00 | \n", + "[-76.615, 3.413, -76.459, 3.548] | \n", + "[visual, valid-area-mask, google-buildings, ov... | \n", + "
| 1 | \n", + "pereira-2026-08-12 | \n", + "2026-08-12 00:00:00+00:00 | \n", + "[-75.786, 4.776, -75.692, 4.843] | \n", + "[visual, valid-area-mask, google-buildings, ov... | \n", + "
| \n", + " | item | \n", + "asset | \n", + "media type | \n", + "file | \n", + "
|---|---|---|---|---|
| 0 | \n", + "cali-2026-08-10 | \n", + "visual | \n", + "image/tiff; application=geotiff; profile=cloud... | \n", + "airbus_cali_warped_cog_model-predictions.tif | \n", + "
| 1 | \n", + "cali-2026-08-10 | \n", + "valid-area-mask | \n", + "application/geo+json | \n", + "airbus_8-10_cali_valid_area_mask.geojson | \n", + "
| 2 | \n", + "cali-2026-08-10 | \n", + "google-buildings | \n", + "application/geopackage+sqlite3 | \n", + "airbus_8-10_cali_hdx_building_footprints_with_... | \n", + "
| 3 | \n", + "cali-2026-08-10 | \n", + "overture-buildings | \n", + "application/geopackage+sqlite3 | \n", + "airbus_8-10_cali_overture_building_footprints_... | \n", + "
| 4 | \n", + "cali-2026-08-10 | \n", + "tilejson | \n", + "application/json | \n", + "tilejson.json | \n", + "
| 5 | \n", + "cali-2026-08-10 | \n", + "rendered_preview | \n", + "image/png | \n", + "preview.png | \n", + "
| 6 | \n", + "pereira-2026-08-12 | \n", + "visual | \n", + "image/tiff; application=geotiff; profile=cloud... | \n", + "vantor_8-12_pereira_model-predictions.tif | \n", + "
| 7 | \n", + "pereira-2026-08-12 | \n", + "valid-area-mask | \n", + "application/geo+json | \n", + "vantor_8-12_pereira_valid_area_mask.geojson | \n", + "
| 8 | \n", + "pereira-2026-08-12 | \n", + "google-buildings | \n", + "application/geopackage+sqlite3 | \n", + "vantor_8-12_pereira_google_buildings_with_pred... | \n", + "
| 9 | \n", + "pereira-2026-08-12 | \n", + "overture-buildings | \n", + "application/geopackage+sqlite3 | \n", + "vantor_8-12_pereira_overture_buildings_with_pr... | \n", + "
| 10 | \n", + "pereira-2026-08-12 | \n", + "tilejson | \n", + "application/json | \n", + "tilejson.json | \n", + "
| 11 | \n", + "pereira-2026-08-12 | \n", + "rendered_preview | \n", + "image/png | \n", + "preview.png | \n", + "
| \n", + " | item | \n", + "id | \n", + "damage_pct_0m | \n", + "damage_pct_10m | \n", + "damage_pct_20m | \n", + "built_pct_0m | \n", + "damaged | \n", + "unknown_pct | \n", + "geometry | \n", + "
|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", + "cali-2026-08-10 | \n", + "892d9f07-6021-4dd2-82a0-8d5f0e9af957 | \n", + "NaN | \n", + "NaN | \n", + "NaN | \n", + "0.341463 | \n", + "0 | \n", + "0.0 | \n", + "MULTIPOLYGON (((330905.832 377525.863, 330924.... | \n", + "
| 1 | \n", + "cali-2026-08-10 | \n", + "891db9aa-be73-4d4d-a225-5c49d2697793 | \n", + "0.0 | \n", + "0.0 | \n", + "0.0 | \n", + "0.630795 | \n", + "0 | \n", + "0.0 | \n", + "MULTIPOLYGON (((330867.858 377529.583, 330894.... | \n", + "
| 2 | \n", + "cali-2026-08-10 | \n", + "1321ea89-11d2-4b8e-943b-267e544ad08f | \n", + "0.0 | \n", + "0.0 | \n", + "0.0 | \n", + "0.088889 | \n", + "0 | \n", + "0.0 | \n", + "MULTIPOLYGON (((330895.365 377525.934, 330900.... | \n", + "
| 3 | \n", + "cali-2026-08-10 | \n", + "eeb6e58f-fb49-4a94-8d77-e13b72ed26b9 | \n", + "0.0 | \n", + "0.0 | \n", + "0.0 | \n", + "0.392053 | \n", + "0 | \n", + "0.0 | \n", + "MULTIPOLYGON (((331026.297 377547.93, 331011.7... | \n", + "
| 4 | \n", + "cali-2026-08-10 | \n", + "397f08cc-e394-44f5-aaa4-3e0e0eeccf0b | \n", + "0.0 | \n", + "0.0 | \n", + "0.0 | \n", + "0.794793 | \n", + "0 | \n", + "0.0 | \n", + "MULTIPOLYGON (((330916.868 377555.014, 330917.... | \n", + "
| \n", + " | buildings | \n", + "damaged | \n", + "partly_obscured | \n", + "percent damaged | \n", + "
|---|---|---|---|---|
| item | \n", + "\n", + " | \n", + " | \n", + " | \n", + " |
| cali-2026-08-10 | \n", + "97351 | \n", + "266 | \n", + "0 | \n", + "0.27 | \n", + "
| pereira-2026-08-12 | \n", + "35760 | \n", + "309 | \n", + "504 | \n", + "0.86 | \n", + "
| \n", + " | value | \n", + "class | \n", + "RGBA | \n", + "
|---|---|---|---|
| 0 | \n", + "0 | \n", + "no data | \n", + "(0, 0, 0, 0) | \n", + "
| 1 | \n", + "1 | \n", + "background | \n", + "(0, 0, 0, 255) | \n", + "
| 2 | \n", + "2 | \n", + "building | \n", + "(0, 255, 0, 255) | \n", + "
| 3 | \n", + "3 | \n", + "damaged building | \n", + "(255, 0, 0, 255) | \n", + "
| 4 | \n", + "4 | \n", + "unknown | \n", + "(128, 128, 128, 255) | \n", + "
| \n", + " | id | \n", + "damage_pct_0m | \n", + "damage_pct_10m | \n", + "damage_pct_20m | \n", + "damaged | \n", + "unknown_pct | \n", + "geometry | \n", + "
|---|---|---|---|---|---|---|---|
| 0 | \n", + "0 | \n", + "0.0 | \n", + "0.0 | \n", + "0.0 | \n", + "0 | \n", + "0.0 | \n", + "MULTIPOLYGON (((710092.494 1168126.764, 710099... | \n", + "
| 1 | \n", + "1 | \n", + "0.0 | \n", + "0.0 | \n", + "0.0 | \n", + "0 | \n", + "0.0 | \n", + "MULTIPOLYGON (((710083.254 1168141.343, 710089... | \n", + "
| 2 | \n", + "2 | \n", + "0.0 | \n", + "0.0 | \n", + "0.0 | \n", + "0 | \n", + "0.0 | \n", + "MULTIPOLYGON (((710093.315 1168144.58, 710096.... | \n", + "
| 3 | \n", + "3 | \n", + "0.0 | \n", + "0.0 | \n", + "0.0 | \n", + "0 | \n", + "0.0 | \n", + "MULTIPOLYGON (((710092.207 1168146.808, 710096... | \n", + "
| 4 | \n", + "4 | \n", + "0.0 | \n", + "0.0 | \n", + "0.0 | \n", + "0 | \n", + "0.0 | \n", + "MULTIPOLYGON (((710089.598 1168149.193, 710090... | \n", + "
| \n", + " | id | \n", + "damage_pct_0m | \n", + "damage_pct_10m | \n", + "damage_pct_20m | \n", + "damaged | \n", + "unknown_pct | \n", + "
|---|---|---|---|---|---|---|
| count | \n", + "30761.000000 | \n", + "30761.000000 | \n", + "30761.000000 | \n", + "30761.000000 | \n", + "30761.000000 | \n", + "30761.000000 | \n", + "
| mean | \n", + "15380.000000 | \n", + "0.168678 | \n", + "0.165920 | \n", + "0.163155 | \n", + "0.296934 | \n", + "0.062442 | \n", + "
| std | \n", + "8880.080152 | \n", + "0.335758 | \n", + "0.277154 | \n", + "0.242305 | \n", + "0.456915 | \n", + "0.238094 | \n", + "
| min | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "
| 25% | \n", + "7690.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "0.000000 | \n", + "
| 50% | \n", + "15380.000000 | \n", + "0.000000 | \n", + "0.003631 | \n", + "0.043475 | \n", + "0.000000 | \n", + "0.000000 | \n", + "
| 75% | \n", + "23070.000000 | \n", + "0.065831 | \n", + "0.219206 | \n", + "0.232215 | \n", + "1.000000 | \n", + "0.000000 | \n", + "
| max | \n", + "30760.000000 | \n", + "1.000000 | \n", + "1.000000 | \n", + "1.000000 | \n", + "1.000000 | \n", + "1.000000 | \n", + "
| \n", + " | buildings | \n", + "percent | \n", + "
|---|---|---|
| damaged | \n", + "\n", + " | \n", + " |
| not damaged | \n", + "21627 | \n", + "70.3 | \n", + "
| damaged | \n", + "9134 | \n", + "29.7 | \n", + "
<xarray.Dataset>\n", + "Dimensions: (time: 91, projection_y_coordinate: 970,\n", + " projection_x_coordinate: 1042, bnds: 2)\n", + "Coordinates:\n", + " * projection_y_coordinate (projection_y_coordinate) float32 -1.036e+0...\n", + " * projection_x_coordinate (projection_x_coordinate) float32 -1.158e+0...\n", + " forecast_period (time) timedelta64[ns] 00:00:00 ... 2 days ...\n", + " forecast_reference_time datetime64[ns] 2026-01-29T12:00:00\n", + " height float32 10.0\n", + " * time (time) datetime64[ns] 2026-01-29T12:00:00 ....\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " wind_speed (time, projection_y_coordinate, projection_x_coordinate) float32 dask.array<chunksize=(1, 256, 256), meta=np.ndarray>\n", + " lambert_azimuthal_equal_area (time) int32 -2147483647 ... -2147483647\n", + " projection_y_coordinate_bnds (time, projection_y_coordinate, bnds) float32 dask.array<chunksize=(1, 256, 2), meta=np.ndarray>\n", + " projection_x_coordinate_bnds (time, projection_x_coordinate, bnds) float32 dask.array<chunksize=(1, 256, 2), meta=np.ndarray>\n", + "Attributes:\n", + " history: 2026-01-29T13:15:01Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT54H\n", + " mosg__grid_domain: uk_extended\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: uk_det\n", + " source: Met Office Unified Model\n", + " title: UKV Model Forecast on UK 2 km Standard Grid\n", + " um_version: 13.8\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.Dataset>\n", + "Dimensions: (projection_y_coordinate: 970,\n", + " projection_x_coordinate: 1042, time: 91)\n", + "Coordinates:\n", + " * projection_y_coordinate (projection_y_coordinate) float32 -1.036e+06 ......\n", + " * projection_x_coordinate (projection_x_coordinate) float32 -1.158e+06 ......\n", + " * time (time) datetime64[ns] 2026-01-29T12:00:00 ... 20...\n", + " forecast_reference_time datetime64[ns] 2026-01-29T12:00:00\n", + " height float32 10.0\n", + "Data variables:\n", + " wind_speed (time, projection_y_coordinate, projection_x_coordinate) float32 dask.array<chunksize=(1, 256, 256), meta=np.ndarray>\n", + " surface_temperature (time, projection_y_coordinate, projection_x_coordinate) float32 dask.array<chunksize=(4, 256, 256), meta=np.ndarray>\n", + " surface_air_pressure (time, projection_y_coordinate, projection_x_coordinate) float32 dask.array<chunksize=(4, 256, 256), meta=np.ndarray>\n", + "Attributes:\n", + " history: 2026-01-29T13:15:01Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT54H\n", + " mosg__grid_domain: uk_extended\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: uk_det\n", + " source: Met Office Unified Model\n", + " title: UKV Model Forecast on UK 2 km Standard Grid\n", + " um_version: 13.8\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.Dataset>\n", + "Dimensions: (time: 55, height: 56,\n", + " projection_y_coordinate: 970,\n", + " projection_x_coordinate: 1042, bnds: 2)\n", + "Coordinates:\n", + " * height (height) float32 5.0 10.0 ... 6.75e+03 7.5e+03\n", + " * projection_y_coordinate (projection_y_coordinate) float32 -1.036e+0...\n", + " * projection_x_coordinate (projection_x_coordinate) float32 -1.158e+0...\n", + " forecast_period (time) timedelta64[ns] 00:00:00 ... 2 days ...\n", + " forecast_reference_time datetime64[ns] 2026-01-29T12:00:00\n", + " * time (time) datetime64[ns] 2026-01-29T12:00:00 ....\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " air_temperature (time, height, projection_y_coordinate, projection_x_coordinate) float32 dask.array<chunksize=(1, 1, 256, 256), meta=np.ndarray>\n", + " lambert_azimuthal_equal_area (time) int32 -2147483647 ... -2147483647\n", + " projection_y_coordinate_bnds (time, projection_y_coordinate, bnds) float32 ...\n", + " projection_x_coordinate_bnds (time, projection_x_coordinate, bnds) float32 ...\n", + " wind_speed (time, height, projection_y_coordinate, projection_x_coordinate) float32 dask.array<chunksize=(1, 1, 256, 256), meta=np.ndarray>\n", + "Attributes:\n", + " history: 2026-01-29T13:14:57Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT54H\n", + " mosg__grid_domain: uk_extended\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: uk_det\n", + " source: Met Office Unified Model\n", + " title: UKV Model Forecast on UK 2 km Standard Grid\n", + " um_version: 13.8\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.Dataset>\n", + "Dimensions: (pressure: 33,\n", + " projection_y_coordinate: 970,\n", + " projection_x_coordinate: 1042, time: 25,\n", + " bnds: 2)\n", + "Coordinates:\n", + " * pressure (pressure) float32 1e+03 2e+03 ... 1e+05\n", + " * projection_y_coordinate (projection_y_coordinate) float32 -1.036e...\n", + " * projection_x_coordinate (projection_x_coordinate) float32 -1.158e...\n", + " * time (time) datetime64[ns] 2026-01-29T12:00:00...\n", + " forecast_period timedelta64[ns] 00:00:00\n", + " forecast_reference_time (time) datetime64[ns] 2026-01-29T12:00:00...\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " wet_bulb_potential_temperature (time, pressure, projection_y_coordinate, projection_x_coordinate) float32 dask.array<chunksize=(1, 24, 256, 256), meta=np.ndarray>\n", + " lambert_azimuthal_equal_area (time) int32 -2147483647 ... -2147483647\n", + " projection_y_coordinate_bnds (time, projection_y_coordinate, bnds) float32 ...\n", + " projection_x_coordinate_bnds (time, projection_x_coordinate, bnds) float32 ...\n", + " air_temperature (time, pressure, projection_y_coordinate, projection_x_coordinate) float32 dask.array<chunksize=(1, 1, 256, 256), meta=np.ndarray>\n", + "Attributes:\n", + " ancillary_variables: flag\n", + " history: 2026-01-29T13:14:55Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT54H\n", + " mosg__grid_domain: uk_extended\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: uk_det\n", + " source: Met Office Unified Model\n", + " title: UKV Model Forecast on UK 2 km Standard Grid\n", + " um_version: 13.8\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.Dataset>\n", + "Dimensions: (time: 25, pressure: 3,\n", + " projection_y_coordinate: 970,\n", + " projection_x_coordinate: 1042, bnds: 2)\n", + "Coordinates:\n", + " * pressure (pressure) float32 8.5e+04 7e+04 5e+04\n", + " * projection_y_coordinate (projection_y_coordinate) float32 -1.036e...\n", + " * projection_x_coordinate (projection_x_coordinate) float32 -1.158e...\n", + " forecast_period timedelta64[ns] 00:00:00\n", + " forecast_reference_time (time) datetime64[ns] 2026-01-29T12:00:00...\n", + " * time (time) datetime64[ns] 2026-01-29T12:00:00...\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " wet_bulb_potential_temperature (time, pressure, projection_y_coordinate, projection_x_coordinate) float32 dask.array<chunksize=(1, 1, 256, 256), meta=np.ndarray>\n", + " lambert_azimuthal_equal_area (time) int32 -2147483647 ... -2147483647\n", + " projection_y_coordinate_bnds (time, projection_y_coordinate, bnds) float32 dask.array<chunksize=(1, 256, 2), meta=np.ndarray>\n", + " projection_x_coordinate_bnds (time, projection_x_coordinate, bnds) float32 dask.array<chunksize=(1, 256, 2), meta=np.ndarray>\n", + " flag (time, pressure, projection_y_coordinate, projection_x_coordinate) int8 dask.array<chunksize=(1, 1, 256, 256), meta=np.ndarray>\n", + "Attributes:\n", + " ancillary_variables: flag\n", + " history: 2026-01-29T13:14:55Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT54H\n", + " mosg__grid_domain: uk_extended\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: uk_det\n", + " source: Met Office Unified Model\n", + " title: UKV Model Forecast on UK 2 km Standard Grid\n", + " um_version: 13.8\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.DataArray 'wet_bulb_potential_temperature' (time: 25, pressure: 33)>\n", + "array([[ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, 282.375 , nan, nan, nan,\n", + " 279.375 , nan, nan, 280.125 , nan, nan,\n", + " nan, nan, nan],\n", + " [ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, 283.125 , nan, nan, nan,\n", + " 280. , nan, nan, 280. , nan, nan,\n", + " nan, nan, nan],\n", + " [ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, 283.5 , nan, nan, nan,\n", + " 280.0625, nan, nan, 280. , nan, nan,\n", + " nan, nan, nan],\n", + " [ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + "...\n", + " 280.125 , nan, nan, 280.375 , nan, nan,\n", + " nan, nan, nan],\n", + " [ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, 280.625 , nan, nan, nan,\n", + " 278.875 , nan, nan, 278.9375, nan, nan,\n", + " nan, nan, nan],\n", + " [ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, 280.75 , nan, nan, nan,\n", + " 278.25 , nan, nan, 278.5 , nan, nan,\n", + " nan, nan, nan],\n", + " [ nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan, nan, nan, nan,\n", + " nan, nan, 280.5 , nan, nan, nan,\n", + " 278.375 , nan, nan, 278.5 , nan, nan,\n", + " nan, nan, nan]], dtype=float32)\n", + "Coordinates:\n", + " * pressure (pressure) float32 1e+03 2e+03 ... 9.75e+04 1e+05\n", + " projection_y_coordinate float32 -1.036e+06\n", + " projection_x_coordinate float32 -1.158e+06\n", + " * time (time) datetime64[ns] 2026-01-29T12:00:00 ... 20...\n", + " forecast_period timedelta64[ns] 00:00:00\n", + " forecast_reference_time (time) datetime64[ns] 2026-01-29T12:00:00 ... 20...\n", + "Attributes:\n", + " least_significant_digit: 1\n", + " standard_name: wet_bulb_potential_temperature\n", + " units: K\n", + " grid_mapping: lambert_azimuthal_equal_area\n", + " ancillary_variables: flag
<xarray.Dataset>\n", + "Dimensions: (time: 89, latitude: 1920, longitude: 2560, bnds: 2)\n", + "Coordinates:\n", + " * latitude (latitude) float32 -89.95 -89.86 ... 89.86 89.95\n", + " * longitude (longitude) float32 -179.9 -179.8 ... 179.8 179.9\n", + " forecast_period (time) timedelta64[ns] 00:00:00 ... 7 days 00:00:00\n", + " forecast_reference_time datetime64[ns] 2026-01-29T12:00:00\n", + " * time (time) datetime64[ns] 2026-01-29T12:00:00 ... 20...\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " surface_temperature (time, latitude, longitude) float32 dask.array<chunksize=(1, 256, 256), meta=np.ndarray>\n", + " latitude_longitude (time) int32 -2147483647 ... -2147483647\n", + " latitude_bnds (time, latitude, bnds) float32 dask.array<chunksize=(1, 256, 2), meta=np.ndarray>\n", + " longitude_bnds (time, longitude, bnds) float32 dask.array<chunksize=(1, 256, 2), meta=np.ndarray>\n", + "Attributes:\n", + " history: 2026-01-29T15:11:06Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT168H\n", + " mosg__grid_domain: global\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: gl_det\n", + " source: Met Office Unified Model\n", + " title: Global Model Forecast on Global 10 km Stand...\n", + " um_version: 13.8\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.Dataset>\n", + "Dimensions: (time: 89, latitude: 1920, longitude: 2560, bnds: 2)\n", + "Coordinates:\n", + " * latitude (latitude) float32 -89.95 -89.86 ... 89.86 89.95\n", + " * longitude (longitude) float32 -179.9 -179.8 ... 179.8 179.9\n", + " forecast_period (time) timedelta64[ns] 00:00:00 ... 7 days 00:00:00\n", + " forecast_reference_time datetime64[ns] 2026-01-29T12:00:00\n", + " * time (time) datetime64[ns] 2026-01-29T12:00:00 ... 20...\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " tropopause_air_pressure (time, latitude, longitude) float32 dask.array<chunksize=(1, 256, 256), meta=np.ndarray>\n", + " latitude_longitude (time) int32 -2147483647 ... -2147483647\n", + " latitude_bnds (time, latitude, bnds) float32 dask.array<chunksize=(1, 256, 2), meta=np.ndarray>\n", + " longitude_bnds (time, longitude, bnds) float32 dask.array<chunksize=(1, 256, 2), meta=np.ndarray>\n", + "Attributes:\n", + " history: 2026-01-29T15:11:29Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT168H\n", + " mosg__grid_domain: global\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: gl_det\n", + " source: Met Office Unified Model\n", + " title: Global Model Forecast on Global 10 km Stand...\n", + " um_version: 13.8\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.Dataset>\n", + "Dimensions: (time: 89, height: 33,\n", + " latitude: 1920,\n", + " longitude: 2560, bnds: 2)\n", + "Coordinates:\n", + " * height (height) float32 5.0 ... 6e+03\n", + " * latitude (latitude) float32 -89.95 ... ...\n", + " * longitude (longitude) float32 -179.9 ......\n", + " forecast_period (time) timedelta64[ns] 00:00:0...\n", + " forecast_reference_time datetime64[ns] 2026-01-29T12:0...\n", + " * time (time) datetime64[ns] 2026-01-...\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " cloud_volume_fraction_in_atmosphere_layer (time, height, latitude, longitude) float32 dask.array<chunksize=(1, 1, 256, 256), meta=np.ndarray>\n", + " latitude_longitude (time) int32 -2147483647 ... -...\n", + " latitude_bnds (time, latitude, bnds) float32 dask.array<chunksize=(1, 256, 2), meta=np.ndarray>\n", + " longitude_bnds (time, longitude, bnds) float32 dask.array<chunksize=(1, 256, 2), meta=np.ndarray>\n", + "Attributes:\n", + " history: 2026-01-29T15:13:50Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT168H\n", + " mosg__grid_domain: global\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: gl_det\n", + " source: Met Office Unified Model\n", + " title: Global Model Forecast on Global 10 km Stand...\n", + " um_version: 13.8\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.Dataset>\n", + "Dimensions: (time: 89, pressure: 33, latitude: 1920,\n", + " longitude: 2560, bnds: 2)\n", + "Coordinates:\n", + " * pressure (pressure) float32 1e+05 9.75e+04 ... 2e+03 1e+03\n", + " * latitude (latitude) float32 -89.95 -89.86 ... 89.86 89.95\n", + " * longitude (longitude) float32 -179.9 -179.8 ... 179.8 179.9\n", + " forecast_period (time) timedelta64[ns] 00:00:00 ... 7 days 00:00:00\n", + " forecast_reference_time datetime64[ns] 2026-01-29T12:00:00\n", + " * time (time) datetime64[ns] 2026-01-29T12:00:00 ... 20...\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " relative_humidity (time, pressure, latitude, longitude) float32 dask.array<chunksize=(1, 1, 256, 256), meta=np.ndarray>\n", + " latitude_longitude (time) int32 -2147483647 ... -2147483647\n", + " latitude_bnds (time, latitude, bnds) float32 dask.array<chunksize=(1, 256, 2), meta=np.ndarray>\n", + " longitude_bnds (time, longitude, bnds) float32 dask.array<chunksize=(1, 256, 2), meta=np.ndarray>\n", + " flag (time, pressure, latitude, longitude) int8 dask.array<chunksize=(1, 1, 256, 256), meta=np.ndarray>\n", + "Attributes:\n", + " ancillary_variables: flag\n", + " history: 2026-01-29T15:13:48Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT168H\n", + " mosg__grid_domain: global\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: gl_det\n", + " source: Met Office Unified Model\n", + " title: Global Model Forecast on Global 10 km Stand...\n", + " um_version: 13.8\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.Dataset> Size: 649MB\n", + "Dimensions: (height: 33, latitude: 1920,\n", + " longitude: 2560, bnds: 2)\n", + "Coordinates:\n", + " * height (height) float32 132B 5.0 ... ...\n", + " * latitude (latitude) float32 8kB -89.95 ...\n", + " * longitude (longitude) float32 10kB -179....\n", + " forecast_period timedelta64[ns] 8B ...\n", + " forecast_reference_time datetime64[ns] 8B ...\n", + " time datetime64[ns] 8B ...\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " cloud_volume_fraction_in_atmosphere_layer (height, latitude, longitude) float32 649MB ...\n", + " latitude_longitude int32 4B ...\n", + " latitude_bnds (latitude, bnds) float32 15kB ...\n", + " longitude_bnds (longitude, bnds) float32 20kB ...\n", + "Attributes:\n", + " history: 2026-01-14T15:53:04Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT168H\n", + " mosg__grid_domain: global\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: gl_det\n", + " source: Met Office Unified Model\n", + " title: Global Model Forecast on Global 10 km Stand...\n", + " um_version: 13.1\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.Dataset> Size: 20MB\n", + "Dimensions: (latitude: 1920, longitude: 2560, bnds: 2)\n", + "Coordinates:\n", + " * latitude (latitude) float32 8kB -89.95 -89.86 ... 89.95\n", + " * longitude (longitude) float32 10kB -179.9 -179.8 ... 179.9\n", + " forecast_period timedelta64[ns] 8B ...\n", + " forecast_reference_time datetime64[ns] 8B ...\n", + " time datetime64[ns] 8B ...\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " surface_temperature (latitude, longitude) float32 20MB ...\n", + " latitude_longitude int32 4B ...\n", + " latitude_bnds (latitude, bnds) float32 15kB ...\n", + " longitude_bnds (longitude, bnds) float32 20kB ...\n", + "Attributes:\n", + " history: 2026-01-21T03:57:24Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT168H\n", + " mosg__grid_domain: global\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: gl_det\n", + " source: Met Office Unified Model\n", + " title: Global Model Forecast on Global 10 km Stand...\n", + " um_version: 13.1\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.Dataset> Size: 811MB\n", + "Dimensions: (pressure: 33, latitude: 1920, longitude: 2560,\n", + " bnds: 2)\n", + "Coordinates:\n", + " * pressure (pressure) float32 132B 1e+05 9.75e+04 ... 1e+03\n", + " * latitude (latitude) float32 8kB -89.95 -89.86 ... 89.95\n", + " * longitude (longitude) float32 10kB -179.9 -179.8 ... 179.9\n", + " flag (pressure, latitude, longitude) int8 162MB ...\n", + " forecast_period timedelta64[ns] 8B ...\n", + " forecast_reference_time datetime64[ns] 8B ...\n", + " time datetime64[ns] 8B ...\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " wind_speed (pressure, latitude, longitude) float32 649MB ...\n", + " latitude_longitude int32 4B ...\n", + " latitude_bnds (latitude, bnds) float32 15kB ...\n", + " longitude_bnds (longitude, bnds) float32 20kB ...\n", + "Attributes:\n", + " history: 2026-01-21T09:33:07Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT67H\n", + " mosg__grid_domain: global\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: gl_det\n", + " source: Met Office Unified Model\n", + " title: Global Model Forecast on Global 10 km Stand...\n", + " um_version: 13.1\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.Dataset> Size: 226MB\n", + "Dimensions: (height: 56, projection_y_coordinate: 970,\n", + " projection_x_coordinate: 1042, bnds: 2)\n", + "Coordinates:\n", + " * height (height) float32 224B 5.0 10.0 ... 7.5e+03\n", + " * projection_y_coordinate (projection_y_coordinate) float32 4kB -1.03...\n", + " * projection_x_coordinate (projection_x_coordinate) float32 4kB -1.15...\n", + " forecast_period timedelta64[ns] 8B ...\n", + " forecast_reference_time datetime64[ns] 8B ...\n", + " time datetime64[ns] 8B ...\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " wind_speed (height, projection_y_coordinate, projection_x_coordinate) float32 226MB ...\n", + " lambert_azimuthal_equal_area int32 4B ...\n", + " projection_y_coordinate_bnds (projection_y_coordinate, bnds) float32 8kB ...\n", + " projection_x_coordinate_bnds (projection_x_coordinate, bnds) float32 8kB ...\n", + "Attributes:\n", + " history: 2026-01-21T16:41:13Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT120H\n", + " mosg__grid_domain: uk_extended\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: uk_det\n", + " source: Met Office Unified Model\n", + " title: UKV Model Forecast on UK 2 km Standard Grid\n", + " um_version: 13.8\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.Dataset> Size: 4MB\n", + "Dimensions: (projection_y_coordinate: 970,\n", + " projection_x_coordinate: 1042, bnds: 2)\n", + "Coordinates:\n", + " * projection_y_coordinate (projection_y_coordinate) float32 4kB -1.03...\n", + " * projection_x_coordinate (projection_x_coordinate) float32 4kB -1.15...\n", + " forecast_period timedelta64[ns] 8B ...\n", + " forecast_reference_time datetime64[ns] 8B ...\n", + " time datetime64[ns] 8B ...\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " surface_temperature (projection_y_coordinate, projection_x_coordinate) float32 4MB ...\n", + " lambert_azimuthal_equal_area int32 4B ...\n", + " projection_y_coordinate_bnds (projection_y_coordinate, bnds) float32 8kB ...\n", + " projection_x_coordinate_bnds (projection_x_coordinate, bnds) float32 8kB ...\n", + "Attributes:\n", + " history: 2026-01-30T10:03:52Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT54H\n", + " mosg__grid_domain: uk_extended\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: uk_det\n", + " source: Met Office Unified Model\n", + " title: UKV Model Forecast on UK 2 km Standard Grid\n", + " um_version: 13.8\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.Dataset> Size: 12MB\n", + "Dimensions: (pressure: 3, projection_y_coordinate: 970,\n", + " projection_x_coordinate: 1042, bnds: 2)\n", + "Coordinates:\n", + " * pressure (pressure) float32 12B 8.5e+04 7e+04 5e+04\n", + " * projection_y_coordinate (projection_y_coordinate) float32 4kB -1....\n", + " * projection_x_coordinate (projection_x_coordinate) float32 4kB -1....\n", + " forecast_period timedelta64[ns] 8B ...\n", + " forecast_reference_time datetime64[ns] 8B ...\n", + " time datetime64[ns] 8B ...\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " wet_bulb_potential_temperature (pressure, projection_y_coordinate, projection_x_coordinate) float32 12MB ...\n", + " lambert_azimuthal_equal_area int32 4B ...\n", + " projection_y_coordinate_bnds (projection_y_coordinate, bnds) float32 8kB ...\n", + " projection_x_coordinate_bnds (projection_x_coordinate, bnds) float32 8kB ...\n", + "Attributes:\n", + " history: 2026-01-14T13:27:58Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT54H\n", + " mosg__grid_domain: uk_extended\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: uk_det\n", + " source: Met Office Unified Model\n", + " title: UKV Model Forecast on UK 2 km Standard Grid\n", + " um_version: 13.1\n", + " Conventions: CF-1.7, UKMO-1.0
<xarray.Dataset> Size: 4MB\n", + "Dimensions: (projection_y_coordinate: 970,\n", + " projection_x_coordinate: 1042,\n", + " bnds: 2)\n", + "Coordinates:\n", + " * projection_y_coordinate (projection_y_coordinate) float32 4kB ...\n", + " * projection_x_coordinate (projection_x_coordinate) float32 4kB ...\n", + " forecast_period timedelta64[ns] 8B ...\n", + " forecast_reference_time datetime64[ns] 8B ...\n", + " time datetime64[ns] 8B ...\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " number_of_lightning_flashes_per_unit_area (projection_y_coordinate, projection_x_coordinate) float32 4MB ...\n", + " lambert_azimuthal_equal_area int32 4B ...\n", + " projection_y_coordinate_bnds (projection_y_coordinate, bnds) float32 8kB ...\n", + " projection_x_coordinate_bnds (projection_x_coordinate, bnds) float32 8kB ...\n", + " forecast_period_bnds (bnds) int32 8B ...\n", + " time_bnds (bnds) datetime64[ns] 16B ...\n", + "Attributes:\n", + " history: 2025-12-05T19:22:54Z: StaGE Decoupler\n", + " institution: Met Office\n", + " mosg__forecast_run_duration: PT54H\n", + " mosg__grid_domain: uk_extended\n", + " mosg__grid_type: standard\n", + " mosg__grid_version: 1.7.0\n", + " mosg__model_configuration: uk_det\n", + " source: Met Office Unified Model\n", + " title: UKV Model Forecast on UK 2 km Standard Grid\n", + " um_version: 13.1\n", + " Conventions: CF-1.7, UKMO-1.0
, which will open Copilot inside the notebook to allow us to modify the code.
+7. Type the following prompt:
+
+```bash
+“Please replace the area of interest from Orange County, California to Washington D.C. Comment out the original code and insert the new code below"
+```
+
+
+
+
+Copilot will insert a new cell with the updated coordinates for Washington D.C.
+
+
+
+Feel free to experiment with other areas around the world.
+
+Now we will do a similar process to change the timeline.
+
+8. Locate the Time of Interest cell.
+9. Click
, to open Copilot inside the notebook.
+10. Type the following prompt:
+
+```bash
+“Please update the time of interest to be between April 2023 to January 2025"
+```
+
+
+
+11. Click the **Run All** button, to run the entire notebook with the new area and time of interest.
+
+See that the NVDI plot and visualizations represent Washington D.C.
+
+
+
+Can you see the Potomac River?
+
+In this section, you used GitHub Copilot to go beyond simply running the notebook by turning it into an interactive learning experience. Copilot explained what the code was doing, helped you customize searches for new locations and dates, and generated code to visualize HLS data as RGB composites and NDVI maps. You also learned how to save your results and commit your work back to your GitHub fork, building a complete workflow from exploration to analysis to sharing.
+
+## Additional Prompts for Copilot:
+
+GitHub Copilot makes it easy to edit code. Here are a few additional prompts you can test in other parts of the notebook to explore what you can do with HLS data:
+
+🔍 Explore More Data
+- “Change the search to look at Los Angeles, California for August 2022 .”
+- “Search for HLS scenes over the Amazon rainforest in June 2021 with less than 20% cloud cover.”
+
+🖼️ Advanced Visualization
+- “Plot the Near Infrared (B08), Red (B04), and Green (B03) bands as a false-color composite to highlight vegetation.”
+- “Overlay the RGB image on top of the item’s footprint polygon with GeoPandas.”
+
+🌱 Deeper Analysis
+- “Compute EVI (Enhanced Vegetation Index) using the Blue, Red, and NIR bands and plot it.”
+- “Calculate the average NDVI across the entire image and print the value.”
+- “Generate an NDVI histogram to see the distribution of values.”
+
+📈 Time Series
+- “Loop through all items in the search results and plot NDVI over time as a line chart.”
+- “Make a small animation (GIF) of RGB composites over multiple dates to show change.”
+
+🗺️ Mapping
+- “Put the RGB composite on an interactive Folium map centered on the search area.”
+- “Add NDVI as a semi-transparent layer on the Folium map with a legend.”
+
+💾 Saving Results
+- “Save the RGB composite as a PNG file.”
+- “Export NDVI as a GeoTIFF with CRS and metadata preserved.”
+
+
+## Resources:
+- Learn more about Microsoft Planetary Computer: https://planetarycomputer.microsoft.com/
+- For more information on NASA's HLS data: https://www.earthdata.nasa.gov/data/projects/hls
+- Continue learning about GitHub Copilot: https://learn.microsoft.com/en-us/training/modules/introduction-to-github-copilot/
+
+
diff --git a/quickstarts/images/GitHub1.png b/quickstarts/images/GitHub1.png
new file mode 100644
index 00000000..5f7efb04
Binary files /dev/null and b/quickstarts/images/GitHub1.png differ
diff --git a/quickstarts/images/GitHub2.png b/quickstarts/images/GitHub2.png
new file mode 100644
index 00000000..947e8ad6
Binary files /dev/null and b/quickstarts/images/GitHub2.png differ
diff --git a/quickstarts/images/GitHub3.png b/quickstarts/images/GitHub3.png
new file mode 100644
index 00000000..f481ab53
Binary files /dev/null and b/quickstarts/images/GitHub3.png differ
diff --git a/quickstarts/images/GitHub4.png b/quickstarts/images/GitHub4.png
new file mode 100644
index 00000000..884008a9
Binary files /dev/null and b/quickstarts/images/GitHub4.png differ
diff --git a/quickstarts/images/GitHub5.png b/quickstarts/images/GitHub5.png
new file mode 100644
index 00000000..b031723f
Binary files /dev/null and b/quickstarts/images/GitHub5.png differ
diff --git a/quickstarts/images/GitHub6.png b/quickstarts/images/GitHub6.png
new file mode 100644
index 00000000..ea2d68b8
Binary files /dev/null and b/quickstarts/images/GitHub6.png differ
diff --git a/quickstarts/images/GitHub7.gif b/quickstarts/images/GitHub7.gif
new file mode 100644
index 00000000..1c0e1f71
Binary files /dev/null and b/quickstarts/images/GitHub7.gif differ
diff --git a/quickstarts/images/Setup1.png b/quickstarts/images/Setup1.png
new file mode 100644
index 00000000..109e091c
Binary files /dev/null and b/quickstarts/images/Setup1.png differ
diff --git a/quickstarts/images/Setup2.png b/quickstarts/images/Setup2.png
new file mode 100644
index 00000000..63e264b6
Binary files /dev/null and b/quickstarts/images/Setup2.png differ
diff --git a/quickstarts/images/Setup3.png b/quickstarts/images/Setup3.png
new file mode 100644
index 00000000..b2e0f9e2
Binary files /dev/null and b/quickstarts/images/Setup3.png differ
diff --git a/quickstarts/images/Test1.png b/quickstarts/images/Test1.png
new file mode 100644
index 00000000..c87f5cd7
Binary files /dev/null and b/quickstarts/images/Test1.png differ
diff --git a/quickstarts/images/Test2.png b/quickstarts/images/Test2.png
new file mode 100644
index 00000000..0adfdf3e
Binary files /dev/null and b/quickstarts/images/Test2.png differ