Skip to content

Instantly share code, notes, and snippets.

@calebrob6
Created November 14, 2023 23:25
Show Gist options
  • Save calebrob6/2ae5c8973c6b55270b4513052cfeec6e to your computer and use it in GitHub Desktop.
Save calebrob6/2ae5c8973c6b55270b4513052cfeec6e to your computer and use it in GitHub Desktop.
Tutorial notebook showing how to calculate the land cover distribution around a point.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Example notebook that shows how to get the land cover distribution in a given radius around a point on Earth using the ESA World Cover 2021 dataset on the Microsoft Planetary Computer.\n",
"\n",
"See https://planetarycomputer.microsoft.com/dataset/esa-worldcover for more information about the land cover dataset"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
"import pystac_client\n",
"import planetary_computer\n",
"from tqdm import tqdm\n",
"import rasterio\n",
"import rasterio.mask\n",
"import shapely.geometry\n",
"import fiona.transform\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"catalog = pystac_client.Client.open(\n",
" \"https://planetarycomputer.microsoft.com/api/stac/v1\",\n",
" modifier=planetary_computer.sign_inplace,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"# ChatGPT generated: https://chat.openai.com/share/790a6153-5fab-4b22-876e-5f11f208185b\n",
"\n",
"interesting_points = [\n",
" (40.6892, -74.0445), # Statue of Liberty, New York: A symbol of freedom and democracy, located on Liberty Island in New York Harbor.\n",
" (36.1069, -112.1129), # Grand Canyon, Arizona: One of the world's most stunning natural wonders, offering breathtaking views.\n",
" (38.8895, -77.0353), # Lincoln Memorial, Washington D.C.: An iconic American monument honoring President Abraham Lincoln.\n",
" (37.8267, -122.4233), # Alcatraz Island, California: Famous for its federal prison, Alcatraz Island is a historic and cultural landmark.\n",
" (25.7617, -80.1918), # Miami Beach, Florida: Known for its beautiful beaches, vibrant culture, and Art Deco architecture.\n",
" (29.9792, -95.6800), # Space Center Houston, Texas: NASA's astronaut training and flight control complex.\n",
" (40.7484, -73.9857), # Empire State Building, New York: An iconic skyscraper and a symbol of New York City.\n",
" (44.4280, -110.5885), # Yellowstone National Park, Wyoming: The first national park in the world, known for its wildlife and geothermal features.\n",
" (33.748995, -84.387982), # Atlanta, Georgia: A major cultural and economic center in the southern United States.\n",
" (34.0522, -118.2437), # Los Angeles, California: Known for Hollywood, major center of the world's entertainment industry.\n",
" (41.8781, -87.6298), # Chicago, Illinois: Known for its bold architecture and significant contributions to art, literature, and music.\n",
" (47.6062, -122.3321), # Seattle, Washington: Famous for its thriving tech industry and vibrant music scene.\n",
" (36.1627, -86.7816), # Nashville, Tennessee: Renowned as the heart of the country music industry.\n",
" (39.7392, -104.9903), # Denver, Colorado: Known for its stunning mountainous backdrop and outdoor activities.\n",
" (43.0731, -89.4012), # Madison, Wisconsin: A vibrant city known for its university and diverse cultural scene.\n",
" (44.9778, -93.2650), # Minneapolis, Minnesota: Known for its parks and lakes, as well as cultural landmarks like the Walker Art Center.\n",
" (42.3601, -71.0589), # Boston, Massachusetts: A city rich in history, from the American Revolution to its many prestigious universities.\n",
" (37.7749, -122.4194), # San Francisco, California: Famous for the Golden Gate Bridge, steep streets, and eclectic mix of architecture.\n",
" (29.9511, -90.0715), # New Orleans, Louisiana: Known for its vibrant music scene, unique cuisine, and Mardi Gras festival.\n",
" (39.9526, -75.1652), # Philadelphia, Pennsylvania: A city of historical significance, home to the Liberty Bell and Independence Hall.\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [],
"source": [
"value_to_color_maps = {\n",
" 0: \"#000000\",\n",
" 10: \"#006400\",\n",
" 20: \"#FFBB22\",\n",
" 30: \"#FFFF4C\",\n",
" 40: \"#F096FF\",\n",
" 50: \"#FA0000\",\n",
" 60: \"#B4B4B4\",\n",
" 70: \"#F0F0F0\",\n",
" 80: \"#0064C8\",\n",
" 90: \"#0096A0\",\n",
" 95: \"#00CF75\",\n",
" 100: \"#FAE6A0\",\n",
"}\n",
"\n",
"value_to_description_map = {\n",
" 10: \"Tree cover\",\n",
" 20: \"Shrubland\",\n",
" 30: \"Grassland\",\n",
" 40: \"Cropland\",\n",
" 50: \"Built-up\",\n",
" 60: \"Bare / sparse vegetation\",\n",
" 70: \"Snow and ice\",\n",
" 80: \"Permanent water bodies\",\n",
" 90: \"Herbaceous wetland\",\n",
" 95: \"Mangroves\",\n",
" 100: \"Moss and lichen\",\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
" 0%| | 0/20 [00:00<?, ?it/s]\n"
]
}
],
"source": [
"land_cover_distributions_per_point = []\n",
"\n",
"for i, (lat, lon) in enumerate(tqdm(interesting_points)):\n",
"\n",
" geom = {\n",
" \"type\": \"Point\",\n",
" \"coordinates\": [\n",
" lon,\n",
" lat,\n",
" ],\n",
" }\n",
" # convert from WGS84 to EASE-Grid 2.0 (https://nsidc.org/data/user-resources/help-center/guide-ease-grids)\n",
" warped_geom = fiona.transform.transform_geom(\"epsg:4326\", \"epsg:6933\", geom)\n",
" warped_shape = shapely.geometry.shape(warped_geom)\n",
" warped_buffered_shape = warped_shape.buffer(1000) # 1 km buffer\n",
" warped_buffered_geom = shapely.geometry.mapping(warped_buffered_shape)\n",
" unwarped_buffered_geom = fiona.transform.transform_geom(\"epsg:6933\", \"epsg:4326\", warped_buffered_geom)\n",
"\n",
" search = catalog.search(\n",
" collections=[\"esa-worldcover\"],\n",
" datetime=\"2021-01-01/2021-12-31\",\n",
" intersects=geom\n",
" )\n",
" items = list(search.get_items())\n",
" if len(items) != 1:\n",
" print(f\"WARNING: Found {len(items)} item(s) for point ({lat}, {lon})\")\n",
"\n",
" item = items[0]\n",
"\n",
" # This is what I copy pasted above to make the colormap and class descriptions\n",
" class_descriptions = item.assets[\"map\"].extra_fields['classification:classes']\n",
"\n",
" url = item.assets[\"map\"].href\n",
" with rasterio.open(url) as f:\n",
" data, _ = rasterio.mask.mask(f, [unwarped_buffered_geom], crop=True)\n",
" data = data.squeeze()\n",
" vals, counts = np.unique(data, return_counts=True)\n",
" val_counts = {v: c for v, c in zip(vals, counts)}\n",
" land_cover_distributions_per_point.append(val_counts)\n",
"\n",
" break"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"plt.imshow(data, vmin=0, vmax=100, interpolation=\"none\")\n",
"plt.show()\n",
"plt.close()"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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di2OHz8OFxcXGBoayt0/f/78Au0nKysLV69ehb+/v6xNS0sLHh4eCA8PL9A+MjIykJ2djXLlyuV7/6xZsxAUFFSgfREREZFqKFVgXL9+HfXr1wcA3L59W+4+iURS4P08f/4cubm5sLCwkGu3sLDArVu3CrSPiRMnonLlyvDw8Mj3fn9/f/j5+clu5/VgEBERkfp8UYERFxcHW1tbnDx5Ul15vsjs2bOxdetWnDp1Cvr6+vluo6enBz09vUJORkREVLJ90SBPR0dHPHv2THbb29sbT548UfrJK1SoAG1tbYV9PHnyBBUrVvzkY//880/Mnj0bR48eLfJTY4mIiEqaLyowPhwPevDgQaSnpyv95Lq6unBxcUFoaKisTSqVIjQ0FO7u7h993Ny5c/H777/j8OHDcHV1Vfr5iYiISD2UGoOhSn5+fujXrx9cXV3h5uaGhQsXIj09Hb6+vgAAHx8fWFpaYtasWQCAOXPmICAgAJs3b4aNjQ2SkpIAAGXKlEGZMmVEOw4iIiL6P19UYEgkEoVBnF8yqDM/3t7eePbsGQICApCUlIS6devi8OHDsoGfiYmJ0NL6v46WFStWICsrC99//73cfgIDAzF16tSvykJERESq8UXrYGhpaaFjx46yQZP79u1D69atFaap7tq1S7UpVYhLhRMRFRzXwSBlfVEPRr9+/eRu9+3bV6VhiIiISDN8UYHx999/qysHERERaRClLtdORERE9CksMIiIiEjlWGAQERGRyrHAICIiIpVjgUFEREQqxwKDiIiIVI4FBhEREakcCwwiIiJSORYYREREpHIsMIiIiEjlWGAQERGRyrHAICIiIpVjgUFEREQqxwKDiIiIVI4FBhEREakcCwwiIiJSORYYREREpHIsMIiIiEjlWGAQERGRyrHAICIiIpVjgUFEREQqxwKDiIiIVI4FBhEREakcCwwiIiJSORYYREREpHIsMIiIiEjlWGAQERGRyrHAICIiIpVjgUFEREQqxwKDiIiIVI4FBhEREakcCwwiIiJSORYYREREpHIsMIiIiEjlWGAQERGRyrHAICIiIpVjgUFEREQqxwKDiIiIVI4FBhEREakcCwwiIiJSORYYREREpHIsMIiIiEjlWGAQERGRyrHAICIiIpVjgUFEREQqxwKDiIiIVI4FBhEREalcKbEDEFHxki2RiB1BJXQEQewI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",
"text/plain": [
"<Figure size 600x400 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"distribution = land_cover_distributions_per_point[0]\n",
"N = 0 # get the total number of non-nodata pixels\n",
"for k, v in distribution.items():\n",
" if k != 0:\n",
" N += v\n",
"\n",
"xs = []\n",
"ys = []\n",
"colors = []\n",
"for k in sorted(distribution.keys()):\n",
" if k != 0:\n",
" xs.append(value_to_description_map[k])\n",
" ys.append(distribution[k] / N)\n",
" colors.append(value_to_color_maps[k])\n",
"\n",
"plt.figure(figsize=(6,4))\n",
"ax = plt.gca()\n",
"plt.bar(xs, ys, color=colors)\n",
"plt.xticks(rotation=90)\n",
"ax.set_ylabel(\"Fraction of area (1km buffer)\")\n",
"ax.set_title(\"Land cover distribution around the Statue of Liberty\")\n",
"ax.spines[\"top\"].set_visible(False)\n",
"ax.spines[\"right\"].set_visible(False)\n",
"plt.show()\n",
"plt.close()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "geospatiallib",
"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.10.11"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment