{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# PySTAC Introduction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tutorial includes a basic introduction on reading, writing, and creating STAC objects using Pystac.\n", "\n", "It is adapted from the tutorials within the [sat-stac repo](https://github.com/sat-utils/sat-stac/blob/master/tutorial-1.ipynb).\n", "\n", "It uses an example stac stored in the `../example-catalog` directory along-side this notebook. The example stac has the following format:\n", "\n", "```\n", "../example-catalog\n", "├── catalog.json\n", "└── landsat-8-l1\n", " ├── 2018-05\n", " │ └── LC80150322018141LGN00.json\n", " ├── 2018-06\n", " │ ├── LC80140332018166LGN00.json\n", " │ └── LC80300332018166LGN00.json\n", " ├── 2018-07\n", " │ └── LC80150332018189LGN00.json\n", " └── collection.json\n", "```" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pystac" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Working with existing catalogs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Open a root catalog from it's json file" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "cat = pystac.Catalog.from_file(\"../example-catalog/catalog.json\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see all elements of the STAC using the `describe` method" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "* \n", " * \n", " * \n", " * \n", " * \n", " * \n" ] } ], "source": [ "cat.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each STAC object has links that you can use to traverse the STAC tree" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\n", " >,\n", " >]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat.links" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pystac has several methods that allow you to access links:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[>]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get all child links\n", "cat.get_child_links()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "or the children directly:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(cat.get_children())" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "
\n", "
\n", "
    \n", " \n", " \n", " \n", "
  • \n", " type\n", " \"Collection\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " id\n", " \"landsat-8-l1\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " stac_version\n", " \"1.0.0\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " description\n", " \"Landsat 8 imagery radiometrically calibrated and orthorectified using ground points and Digital Elevation Model (DEM) data to correct relief displacement.\"\n", "
  • \n", " \n", " \n", " \n", " \n", "
  • \n", " \n", " links\n", " [] 7 items\n", " \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 0\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"root\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"/home/jsignell/pystac/docs/example-catalog/catalog.json\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"application/json\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"STAC for Landsat data\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 1\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"item\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"/home/jsignell/pystac/docs/example-catalog/landsat-8-l1/2018-06/LC80140332018166LGN00.json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 2\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"item\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"/home/jsignell/pystac/docs/example-catalog/landsat-8-l1/2018-05/LC80150322018141LGN00.json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 3\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"item\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"/home/jsignell/pystac/docs/example-catalog/landsat-8-l1/2018-07/LC80150332018189LGN00.json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 4\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"item\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"/home/jsignell/pystac/docs/example-catalog/landsat-8-l1/2018-06/LC80300332018166LGN00.json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 5\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"self\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"/home/jsignell/pystac/docs/example-catalog/landsat-8-l1/collection.json\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"application/json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 6\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"parent\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"/home/jsignell/pystac/docs/example-catalog/catalog.json\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"application/json\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"STAC for Landsat data\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
  • \n", " \n", " \n", " \n", "
  • \n", " \n", " stac_extensions\n", " [] 1 items\n", " \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 0\n", " \"https://example.com/stac/landsat-extension/1.0/schema.json\"\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
  • \n", " \n", " \n", " \n", " \n", "
  • \n", " properties\n", "
      \n", " \n", " \n", " \n", "
    • \n", " collection\n", " \"landsat-8-l1\"\n", "
    • \n", " \n", " \n", " \n", " \n", "
    • \n", " \n", " instruments\n", " [] 1 items\n", " \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 0\n", " \"OLI_TIRS\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
    • \n", " \n", " \n", " \n", " \n", "
    • \n", " view:sun_azimuth\n", " 149.01607154\n", "
    • \n", " \n", " \n", " \n", " \n", "
    • \n", " \n", " eo:bands\n", " [] 11 items\n", " \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 0\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B1\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.02\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 0.44\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"coastal\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 1\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B2\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.06\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 0.48\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"blue\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 2\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B3\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.06\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 0.56\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"green\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 3\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B4\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.04\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 0.65\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"red\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 4\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B5\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.03\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 0.86\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"nir\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 5\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B6\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.08\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 1.6\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"swir16\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 6\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B7\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.22\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 2.2\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"swir22\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 7\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B8\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.18\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 0.59\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"pan\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 8\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B9\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.02\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 1.37\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"cirrus\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 9\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B10\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.8\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 10.9\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"lwir11\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 10\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B11\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 1\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 12\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"lwir2\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
    • \n", " \n", " \n", " \n", " \n", "
    • \n", " view:off_nadir\n", " 0\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " view:azimuth\n", " 0\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " platform\n", " \"landsat-8\"\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " gsd\n", " 15\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " view:sun_elevation\n", " 59.214247\n", "
    • \n", " \n", " \n", " \n", "
    \n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " title\n", " \"Landsat 8 L1\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " extent\n", "
      \n", " \n", " \n", " \n", "
    • \n", " spatial\n", "
        \n", " \n", " \n", "
      • \n", " \n", " bbox\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", "
        • \n", " \n", " 0\n", " [] 4 items\n", " \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 0\n", " -180.0\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 1\n", " -90.0\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 2\n", " 180.0\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 3\n", " 90.0\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
        • \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " temporal\n", "
        \n", " \n", " \n", "
      • \n", " \n", " interval\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", "
        • \n", " \n", " 0\n", " [] 2 items\n", " \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 0\n", " \"2018-05-21T15:44:59Z\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 1\n", " \"2018-07-08T15:45:34Z\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
        • \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " license\n", " \"proprietary\"\n", "
  • \n", " \n", " \n", " \n", " \n", "
  • \n", " \n", " keywords\n", " [] 3 items\n", " \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 0\n", " \"landsat\"\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 1\n", " \"earth observation\"\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 2\n", " \"usgs\"\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
  • \n", " \n", " \n", " \n", "
  • \n", " \n", " providers\n", " [] 1 items\n", " \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 0\n", "
        \n", " \n", " \n", " \n", "
      • \n", " name\n", " \"Development Seed\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", " \n", "
        • \n", " 0\n", " \"processor\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " url\n", " \"https://github.com/sat-utils/sat-api\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
  • \n", " \n", " \n", "
\n", "
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# or a single child by id\n", "cat.get_child(\"landsat-8-l1\")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "
\n", "
\n", "
    \n", " \n", " \n", " \n", "
  • \n", " rel\n", " \"self\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " href\n", " \"/home/jsignell/pystac/docs/example-catalog/catalog.json\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " type\n", " \"application/json\"\n", "
  • \n", " \n", " \n", " \n", "
\n", "
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get a single link by 'rel'\n", "cat.get_single_link(\"self\")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get item links directly within this catalog (there are none for this catalog)\n", "cat.get_item_links()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "or the items directly:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# get item objects\n", "list(cat.get_items())" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\n", " ,\n", " ,\n", " ]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# get all items anywhere below this catalog on the STAC tree\n", "list(cat.get_items(recursive=True))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can access the stac item from a link using the `target` property" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ">\n" ] } ], "source": [ "l = cat.get_single_link(\"child\")\n", "print(l)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "print(l.target)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can convert any stac item to a python dict using the `to_dict` method." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'type': 'Catalog',\n", " 'id': 'landsat-stac-collection-catalog',\n", " 'stac_version': '1.0.0',\n", " 'description': 'STAC for Landsat data',\n", " 'links': [{'rel': 'root',\n", " 'href': './catalog.json',\n", " 'type': 'application/json',\n", " 'title': 'STAC for Landsat data'},\n", " {'rel': 'child',\n", " 'href': './landsat-8-l1/collection.json',\n", " 'title': 'Landsat 8 L1'}],\n", " 'title': 'STAC for Landsat data'}" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat.to_dict(include_self_link=False)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# get first (and only in this case) sub-catalog\n", "subcat = next(cat.get_children())" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Root Catalog: landsat-stac-collection-catalog\n", "Sub Catalog: landsat-8-l1\n", "Sub Catalog parent: landsat-stac-collection-catalog\n", "Sub Catalog children:\n" ] } ], "source": [ "# print some IDs\n", "print(\"Root Catalog: \", cat.id)\n", "print(\"Sub Catalog: \", subcat.id)\n", "print(\"Sub Catalog parent: \", subcat.get_parent().id)\n", "\n", "# iterate through child catalogs of the sub-catalog\n", "print(\"Sub Catalog children:\")\n", "for child in subcat.get_children():\n", " print(\" \", child.id)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "**Items**\n", "LC80140332018166LGN00\n", "LC80150322018141LGN00\n", "LC80150332018189LGN00\n", "LC80300332018166LGN00\n" ] } ], "source": [ "print(\"\\n**Items**\")\n", "for i in cat.get_items(recursive=True):\n", " print(i.id)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Creating new catalogs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can initialize a new Catalog with an id and a description. Note that by default it sets a new catalog as root." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "scrolled": true }, "outputs": [], "source": [ "# create a Catalog object with JSON\n", "mycat = pystac.Catalog(id=\"mycat\", description=\"My shiny new STAC catalog\")" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[>]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mycat.links" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Adding catalogs to catalogs" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "scrolled": true }, "outputs": [], "source": [ "# add a new catalog to a root catalog\n", "kitten = pystac.Catalog(\n", " id=\"mykitten\", description=\"A child catalog of my shiny new STAC catalog\"\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When you add a child catalog to a parent catalog, the child catalog assumes the root catalog of it's parent. 'Child' and 'parent' links are also added to the parent and child catalogs, respectively." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[>]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kitten.links" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "
\n", "
\n", "
    \n", " \n", " \n", " \n", "
  • \n", " rel\n", " \"child\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " href\n", " None\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " type\n", " \"application/json\"\n", "
  • \n", " \n", " \n", " \n", "
\n", "
\n", "
" ], "text/plain": [ ">" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mycat.add_child(kitten)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[>,\n", " >]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kitten.links" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[>,\n", " >]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mycat.links" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "* \n", " * \n" ] } ], "source": [ "mycat.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Adding collections to catalogs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the next two steps we will work with Pystac Collections and Items. We will pull them out of our example catalog and add them to the new STAC that we have created." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Collections are Catalogs but also include spatial and temporal extents as well as additional properties. " ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "
\n", "
\n", "
    \n", " \n", " \n", " \n", "
  • \n", " type\n", " \"Collection\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " id\n", " \"landsat-8-l1\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " stac_version\n", " \"1.0.0\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " description\n", " \"Landsat 8 imagery radiometrically calibrated and orthorectified using ground points and Digital Elevation Model (DEM) data to correct relief displacement.\"\n", "
  • \n", " \n", " \n", " \n", " \n", "
  • \n", " \n", " links\n", " [] 7 items\n", " \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 0\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"self\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"/home/jsignell/pystac/docs/example-catalog/landsat-8-l1/collection.json\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"application/json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 1\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"root\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"../catalog.json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 2\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"parent\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"../catalog.json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 3\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"item\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"./2018-06/LC80140332018166LGN00.json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 4\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"item\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"./2018-05/LC80150322018141LGN00.json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 5\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"item\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"./2018-07/LC80150332018189LGN00.json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 6\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"item\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"./2018-06/LC80300332018166LGN00.json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
  • \n", " \n", " \n", " \n", "
  • \n", " \n", " stac_extensions\n", " [] 1 items\n", " \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 0\n", " \"https://example.com/stac/landsat-extension/1.0/schema.json\"\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
  • \n", " \n", " \n", " \n", " \n", "
  • \n", " properties\n", "
      \n", " \n", " \n", " \n", "
    • \n", " collection\n", " \"landsat-8-l1\"\n", "
    • \n", " \n", " \n", " \n", " \n", "
    • \n", " \n", " instruments\n", " [] 1 items\n", " \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 0\n", " \"OLI_TIRS\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
    • \n", " \n", " \n", " \n", " \n", "
    • \n", " view:sun_azimuth\n", " 149.01607154\n", "
    • \n", " \n", " \n", " \n", " \n", "
    • \n", " \n", " eo:bands\n", " [] 11 items\n", " \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 0\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B1\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.02\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 0.44\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"coastal\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 1\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B2\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.06\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 0.48\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"blue\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 2\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B3\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.06\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 0.56\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"green\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 3\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B4\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.04\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 0.65\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"red\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 4\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B5\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.03\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 0.86\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"nir\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 5\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B6\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.08\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 1.6\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"swir16\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 6\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B7\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.22\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 2.2\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"swir22\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 7\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B8\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.18\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 0.59\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"pan\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 8\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B9\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.02\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 1.37\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"cirrus\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 9\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B10\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 0.8\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 10.9\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"lwir11\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 10\n", "
          \n", " \n", " \n", " \n", "
        • \n", " name\n", " \"B11\"\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " full_width_half_max\n", " 1\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " center_wavelength\n", " 12\n", "
        • \n", " \n", " \n", " \n", " \n", " \n", "
        • \n", " common_name\n", " \"lwir2\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
    • \n", " \n", " \n", " \n", " \n", "
    • \n", " view:off_nadir\n", " 0\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " view:azimuth\n", " 0\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " platform\n", " \"landsat-8\"\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " gsd\n", " 15\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " view:sun_elevation\n", " 59.214247\n", "
    • \n", " \n", " \n", " \n", "
    \n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " title\n", " \"Landsat 8 L1\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " extent\n", "
      \n", " \n", " \n", " \n", "
    • \n", " spatial\n", "
        \n", " \n", " \n", "
      • \n", " \n", " bbox\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", "
        • \n", " \n", " 0\n", " [] 4 items\n", " \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 0\n", " -180.0\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 1\n", " -90.0\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 2\n", " 180.0\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 3\n", " 90.0\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
        • \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " temporal\n", "
        \n", " \n", " \n", "
      • \n", " \n", " interval\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", "
        • \n", " \n", " 0\n", " [] 2 items\n", " \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 0\n", " \"2018-05-21T15:44:59Z\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 1\n", " \"2018-07-08T15:45:34Z\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
        • \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " license\n", " \"proprietary\"\n", "
  • \n", " \n", " \n", " \n", " \n", "
  • \n", " \n", " keywords\n", " [] 3 items\n", " \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 0\n", " \"landsat\"\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 1\n", " \"earth observation\"\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 2\n", " \"usgs\"\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
  • \n", " \n", " \n", " \n", "
  • \n", " \n", " providers\n", " [] 1 items\n", " \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 0\n", "
        \n", " \n", " \n", " \n", "
      • \n", " name\n", " \"Development Seed\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", " \n", "
        • \n", " 0\n", " \"processor\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " url\n", " \"https://github.com/sat-utils/sat-api\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
  • \n", " \n", " \n", "
\n", "
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# open the Landsat collection\n", "collection = pystac.Collection.from_file(\n", " \"../example-catalog/landsat-8-l1/collection.json\"\n", ")\n", "collection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "See the spatial and temporal extent of this collection" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'spatial': {'bbox': [[-180.0, -90.0, 180.0, 90.0]]},\n", " 'temporal': {'interval': [['2018-05-21T15:44:59Z', '2018-07-08T15:45:34Z']]}}" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collection.extent.to_dict()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ]" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collection.links" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "
\n", "
\n", "
    \n", " \n", " \n", " \n", "
  • \n", " rel\n", " \"child\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " href\n", " \"/home/jsignell/pystac/docs/example-catalog/landsat-8-l1/collection.json\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " type\n", " \"application/json\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " title\n", " \"Landsat 8 L1\"\n", "
  • \n", " \n", " \n", " \n", "
\n", "
\n", "
" ], "text/plain": [ ">" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# add it to the child catalog created above\n", "kitten.add_child(collection)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\n", " >,\n", " ,\n", " ,\n", " ,\n", " ,\n", " >]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collection.links" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Adding items to collection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Items are stac objects whose parents can be either Catalogs or Collections. They also have spatio-temporal information and assets. Assets point directly to the data included in the STAC." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "
\n", "
\n", "
    \n", " \n", " \n", " \n", "
  • \n", " type\n", " \"Feature\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " stac_version\n", " \"1.0.0\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " id\n", " \"LC80150322018141LGN00\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " properties\n", "
      \n", " \n", " \n", " \n", "
    • \n", " collection\n", " \"landsat-8-l1\"\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " datetime\n", " \"2018-05-21T15:44:59Z\"\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " view:sun_azimuth\n", " 134.8082647\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " view:sun_elevation\n", " 64.00406717\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " eo:cloud_cover\n", " 4\n", "
    • \n", " \n", " \n", " \n", " \n", "
    • \n", " \n", " instruments\n", " [] 1 items\n", " \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 0\n", " \"OLI_TIRS\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
    • \n", " \n", " \n", " \n", " \n", "
    • \n", " view:off_nadir\n", " 0\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " platform\n", " \"landsat-8\"\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " gsd\n", " 30\n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " proj:epsg\n", " 32618\n", "
    • \n", " \n", " \n", " \n", " \n", "
    • \n", " \n", " proj:transform\n", " [] 6 items\n", " \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 0\n", " 258885.0\n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 1\n", " 30.0\n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 2\n", " 0.0\n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 3\n", " 4584315.0\n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 4\n", " 0.0\n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 5\n", " -30.0\n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
    • \n", " \n", " \n", " \n", " \n", "
    • \n", " proj:geometry\n", "
        \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"Polygon\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " coordinates\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", "
        • \n", " \n", " 0\n", " [] 5 items\n", " \n", " \n", "
            \n", " \n", " \n", "
          • \n", " \n", " 0\n", " [] 2 items\n", " \n", " \n", "
              \n", " \n", " \n", " \n", "
            • \n", " 0\n", " 258885.0\n", "
            • \n", " \n", " \n", " \n", "
            \n", " \n", "
              \n", " \n", " \n", " \n", "
            • \n", " 1\n", " 4346085.0\n", "
            • \n", " \n", " \n", " \n", "
            \n", " \n", "
          • \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", "
          • \n", " \n", " 1\n", " [] 2 items\n", " \n", " \n", "
              \n", " \n", " \n", " \n", "
            • \n", " 0\n", " 258885.0\n", "
            • \n", " \n", " \n", " \n", "
            \n", " \n", "
              \n", " \n", " \n", " \n", "
            • \n", " 1\n", " 4584315.0\n", "
            • \n", " \n", " \n", " \n", "
            \n", " \n", "
          • \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", "
          • \n", " \n", " 2\n", " [] 2 items\n", " \n", " \n", "
              \n", " \n", " \n", " \n", "
            • \n", " 0\n", " 493515.0\n", "
            • \n", " \n", " \n", " \n", "
            \n", " \n", "
              \n", " \n", " \n", " \n", "
            • \n", " 1\n", " 4584315.0\n", "
            • \n", " \n", " \n", " \n", "
            \n", " \n", "
          • \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", "
          • \n", " \n", " 3\n", " [] 2 items\n", " \n", " \n", "
              \n", " \n", " \n", " \n", "
            • \n", " 0\n", " 493515.0\n", "
            • \n", " \n", " \n", " \n", "
            \n", " \n", "
              \n", " \n", " \n", " \n", "
            • \n", " 1\n", " 4346085.0\n", "
            • \n", " \n", " \n", " \n", "
            \n", " \n", "
          • \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", "
          • \n", " \n", " 4\n", " [] 2 items\n", " \n", " \n", "
              \n", " \n", " \n", " \n", "
            • \n", " 0\n", " 258885.0\n", "
            • \n", " \n", " \n", " \n", "
            \n", " \n", "
              \n", " \n", " \n", " \n", "
            • \n", " 1\n", " 4346085.0\n", "
            • \n", " \n", " \n", " \n", "
            \n", " \n", "
          • \n", " \n", " \n", "
          \n", " \n", "
        • \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", "
    • \n", " \n", " proj:shape\n", " [] 2 items\n", " \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 0\n", " 7821\n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
        \n", " \n", " \n", " \n", "
      • \n", " 1\n", " 7941\n", "
      • \n", " \n", " \n", " \n", "
      \n", " \n", "
    • \n", " \n", " \n", "
    \n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " geometry\n", "
      \n", " \n", " \n", " \n", "
    • \n", " type\n", " \"Polygon\"\n", "
    • \n", " \n", " \n", " \n", " \n", "
    • \n", " \n", " coordinates\n", " [] 1 items\n", " \n", " \n", "
        \n", " \n", " \n", "
      • \n", " \n", " 0\n", " [] 5 items\n", " \n", " \n", "
          \n", " \n", " \n", "
        • \n", " \n", " 0\n", " [] 2 items\n", " \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 0\n", " -77.28911976020206\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 1\n", " 41.40912394323429\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
        • \n", " \n", " \n", "
        \n", " \n", "
          \n", " \n", " \n", "
        • \n", " \n", " 1\n", " [] 2 items\n", " \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 0\n", " -75.07576783500748\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 1\n", " 40.97162247589133\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
        • \n", " \n", " \n", "
        \n", " \n", "
          \n", " \n", " \n", "
        • \n", " \n", " 2\n", " [] 2 items\n", " \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 0\n", " -75.66872631473827\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 1\n", " 39.23210949585851\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
        • \n", " \n", " \n", "
        \n", " \n", "
          \n", " \n", " \n", "
        • \n", " \n", " 3\n", " [] 2 items\n", " \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 0\n", " -77.87946700654118\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 1\n", " 39.67679918442899\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
        • \n", " \n", " \n", "
        \n", " \n", "
          \n", " \n", " \n", "
        • \n", " \n", " 4\n", " [] 2 items\n", " \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 0\n", " -77.28911976020206\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
            \n", " \n", " \n", " \n", "
          • \n", " 1\n", " 41.40912394323429\n", "
          • \n", " \n", " \n", " \n", "
          \n", " \n", "
        • \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", "
      \n", " \n", "
    • \n", " \n", " \n", "
    \n", "
  • \n", " \n", " \n", " \n", " \n", "
  • \n", " \n", " links\n", " [] 4 items\n", " \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 0\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"self\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"/home/jsignell/pystac/docs/example-catalog/landsat-8-l1/2018-05/LC80150322018141LGN00.json\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"application/json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 1\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"parent\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"../collection.json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 2\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"collection\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"../collection.json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 3\n", "
        \n", " \n", " \n", " \n", "
      • \n", " rel\n", " \"root\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"../../catalog.json\"\n", "
      • \n", " \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
  • \n", " \n", " \n", " \n", " \n", "
  • \n", " assets\n", "
      \n", " \n", " \n", " \n", "
    • \n", " index\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/index.html\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"text/html\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"HTML index page\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " thumbnail\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_thumb_large.jpg\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"image/jpeg\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"Thumbnail image\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", " \n", "
        • \n", " 0\n", " \"thumbnail\"\n", "
        • \n", " \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " B1\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_B1.TIF\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"image/tiff\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"Band 1 (coastal)\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " eo:bands\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", " \n", "
        • \n", " 0\n", "
            \n", " \n", " \n", " \n", "
          • \n", " name\n", " \"B1\"\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " full_width_half_max\n", " 0.02\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " center_wavelength\n", " 0.44\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " common_name\n", " \"coastal\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", "
        • \n", " \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " B2\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_B2.TIF\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"image/tiff\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"Band 2 (blue)\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " eo:bands\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", " \n", "
        • \n", " 0\n", "
            \n", " \n", " \n", " \n", "
          • \n", " name\n", " \"B2\"\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " full_width_half_max\n", " 0.06\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " center_wavelength\n", " 0.48\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " common_name\n", " \"blue\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", "
        • \n", " \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " B3\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_B3.TIF\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"image/tiff\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"Band 3 (green)\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " eo:bands\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", " \n", "
        • \n", " 0\n", "
            \n", " \n", " \n", " \n", "
          • \n", " name\n", " \"B3\"\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " full_width_half_max\n", " 0.06\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " center_wavelength\n", " 0.56\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " common_name\n", " \"green\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", "
        • \n", " \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " B4\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_B4.TIF\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"image/tiff\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"Band 4 (red)\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " eo:bands\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", " \n", "
        • \n", " 0\n", "
            \n", " \n", " \n", " \n", "
          • \n", " name\n", " \"B4\"\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " full_width_half_max\n", " 0.04\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " center_wavelength\n", " 0.65\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " common_name\n", " \"red\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", "
        • \n", " \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " B5\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_B5.TIF\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"image/tiff\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"Band 5 (nir)\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " eo:bands\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", " \n", "
        • \n", " 0\n", "
            \n", " \n", " \n", " \n", "
          • \n", " name\n", " \"B5\"\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " full_width_half_max\n", " 0.03\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " center_wavelength\n", " 0.86\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " common_name\n", " \"nir\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", "
        • \n", " \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " B6\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_B6.TIF\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"image/tiff\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"Band 6 (swir16)\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " eo:bands\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", " \n", "
        • \n", " 0\n", "
            \n", " \n", " \n", " \n", "
          • \n", " name\n", " \"B6\"\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " full_width_half_max\n", " 0.08\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " center_wavelength\n", " 1.6\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " common_name\n", " \"swir16\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", "
        • \n", " \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " B7\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_B7.TIF\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"image/tiff\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"Band 7 (swir22)\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " eo:bands\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", " \n", "
        • \n", " 0\n", "
            \n", " \n", " \n", " \n", "
          • \n", " name\n", " \"B7\"\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " full_width_half_max\n", " 0.22\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " center_wavelength\n", " 2.2\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " common_name\n", " \"swir22\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", "
        • \n", " \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " B8\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_B8.TIF\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"image/tiff\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"Band 8 (pan)\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " eo:bands\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", " \n", "
        • \n", " 0\n", "
            \n", " \n", " \n", " \n", "
          • \n", " name\n", " \"B8\"\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " full_width_half_max\n", " 0.18\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " center_wavelength\n", " 0.59\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " common_name\n", " \"pan\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", "
        • \n", " \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " B9\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_B9.TIF\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"image/tiff\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"Band 9 (cirrus)\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " eo:bands\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", " \n", "
        • \n", " 0\n", "
            \n", " \n", " \n", " \n", "
          • \n", " name\n", " \"B9\"\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " full_width_half_max\n", " 0.02\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " center_wavelength\n", " 1.37\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " common_name\n", " \"cirrus\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", "
        • \n", " \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " B10\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_B10.TIF\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"image/tiff\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"Band 10 (lwir)\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " eo:bands\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", " \n", "
        • \n", " 0\n", "
            \n", " \n", " \n", " \n", "
          • \n", " name\n", " \"B10\"\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " full_width_half_max\n", " 0.8\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " center_wavelength\n", " 10.9\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " common_name\n", " \"lwir11\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", "
        • \n", " \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " B11\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_B11.TIF\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"image/tiff\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"Band 11 (lwir)\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " eo:bands\n", " [] 1 items\n", " \n", " \n", "
          \n", " \n", " \n", " \n", "
        • \n", " 0\n", "
            \n", " \n", " \n", " \n", "
          • \n", " name\n", " \"B11\"\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " full_width_half_max\n", " 1\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " center_wavelength\n", " 12\n", "
          • \n", " \n", " \n", " \n", " \n", " \n", "
          • \n", " common_name\n", " \"lwir2\"\n", "
          • \n", " \n", " \n", " \n", "
          \n", "
        • \n", " \n", " \n", " \n", "
        \n", " \n", "
      • \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " ANG\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_ANG.txt\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"text/plain\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"Angle coefficients file\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " MTL\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_MTL.txt\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"text/plain\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"original metadata file\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", " \n", " \n", "
    • \n", " BQA\n", "
        \n", " \n", " \n", " \n", "
      • \n", " href\n", " \"https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/015/032/LC08_L1TP_015032_20180521_20180605_01_T1/LC08_L1TP_015032_20180521_20180605_01_T1_BQA.TIF\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " type\n", " \"image/tiff\"\n", "
      • \n", " \n", " \n", " \n", " \n", " \n", "
      • \n", " title\n", " \"Band quality data\"\n", "
      • \n", " \n", " \n", " \n", " \n", "
      • \n", " \n", " roles\n", " [] 0 items\n", " \n", " \n", "
      • \n", " \n", " \n", "
      \n", "
    • \n", " \n", " \n", " \n", "
    \n", "
  • \n", " \n", " \n", " \n", " \n", "
  • \n", " \n", " bbox\n", " [] 4 items\n", " \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 0\n", " -77.88298\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 1\n", " 39.23073\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 2\n", " -75.07535\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 3\n", " 41.41022\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
  • \n", " \n", " \n", " \n", "
  • \n", " \n", " stac_extensions\n", " [] 3 items\n", " \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 0\n", " \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 1\n", " \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
      \n", " \n", " \n", " \n", "
    • \n", " 2\n", " \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n", "
    • \n", " \n", " \n", " \n", "
    \n", " \n", "
  • \n", " \n", " \n", " \n", " \n", "
  • \n", " collection\n", " \"landsat-8-l1\"\n", "
  • \n", " \n", " \n", " \n", "
\n", "
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# open a Landsat item\n", "item = pystac.read_file(\n", " \"../example-catalog/landsat-8-l1/2018-05/LC80150322018141LGN00.json\"\n", ")\n", "item" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\n", " ,\n", " ,\n", " ]" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "item.links" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'index': ,\n", " 'thumbnail': ,\n", " 'B1': ,\n", " 'B2': ,\n", " 'B3': ,\n", " 'B4': ,\n", " 'B5': ,\n", " 'B6': ,\n", " 'B7': ,\n", " 'B8': ,\n", " 'B9': ,\n", " 'B10': ,\n", " 'B11': ,\n", " 'ANG': ,\n", " 'MTL': ,\n", " 'BQA': }" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "item.assets" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "
\n", "
\n", "
    \n", " \n", " \n", " \n", "
  • \n", " rel\n", " \"item\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " href\n", " \"/home/jsignell/pystac/docs/example-catalog/landsat-8-l1/LC80150322018141LGN00/LC80150322018141LGN00.json\"\n", "
  • \n", " \n", " \n", " \n", " \n", " \n", "
  • \n", " type\n", " \"application/json\"\n", "
  • \n", " \n", " \n", " \n", "
\n", "
\n", "
" ], "text/plain": [ ">" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# add it to the collection created above\n", "collection.add_item(item)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "* \n", " * \n", " * \n", " * \n", " * \n", " * \n", " * \n", " * \n" ] } ], "source": [ "# now look at the catalog we've created\n", "mycat.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Currently, this STAC only exists in memory. We can use `normalize_and_save` to save off the STAC with the canonical \"absolute published\" form:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "mycat.normalize_and_save(\n", " \"pystac-example-absolute\", catalog_type=pystac.CatalogType.ABSOLUTE_PUBLISHED\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice now that the 'parent' link of an item is a absolute HREF:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'/home/jsignell/pystac/docs/tutorials/pystac-example-absolute/mykitten/landsat-8-l1/collection.json'" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "item = next(mycat.get_items(recursive=True))\n", "item.get_single_link(\"parent\").get_href()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also normalize and save the catalog to the other types described in the best practices documentation: \"relative published\" and \"self contained\". A self contained catalog contains all relative links, and no self links. Notice how saving a self contained catalog will produce relative links:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "mycat.normalize_and_save(\n", " \"pystac-example-relative\", catalog_type=pystac.CatalogType.SELF_CONTAINED\n", ")" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'../collection.json'" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "item = next(mycat.get_items(recursive=True))\n", "item.get_single_link(\"parent\").get_href()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.6" } }, "nbformat": 4, "nbformat_minor": 4 }