Skip to main content

STAC Items in the terminal

Project description

stacterm

This library is for displaying information (tables, calendars, plots, histograms) about STAC Items in the terminal. It takes as input a STAC ItemCollection (a GeoJSON FeatureCollection of STAC Items), either by specifying a filename or by piping output from another program.

Installation

Install from PyPi:

$ pip install stacterm

PySTAC and Pandas are required, along with two dependencies for rendering tables (termtables) and plots (plotext) in the terminal.

Usage

stacterm main usage is as a CLI progam stacterm. Use help to see options available:

$ stacterm -h
usage: stacterm [-h] {table,cal,hist,plot} ...

Terminal STAC

positional arguments:
  {table,cal,hist,plot}
    table               Output a table
    cal                 Output a calendar
    hist                Output a histogram
    plot                Output a plot

optional arguments:
  -h, --help            show this help message and exit

All of the sub-commands in stacterm can take optional field names. A field name is:

  • id: The ID of the Item
  • collection: The collection of the Item
  • Dates
    • date: The date portion of the Item's datetime field
    • year-month: The year and month of the Item's datetime field
    • year: The year of the Item's datetime field
  • Any property

The detailed usage examples below are shown using a saved file, however stacterm can also read in stdin allowing other programs to pipe output to it, such as pystac-client.

$ export STAC_API_URL=https://earth-search.aws.element84.com/v0
$ stac-client search --intersects aoi.json --datetime 2020-07-01/2020-12-31 -c sentinel-s2-l2a-cogs landsat-8-l1-c1 | stacterm cal --label platform

Tables

Use stacterm to display tabularized data from a saved ItemCollection.

$ stacterm table items.json

| id                                       | date       |
|------------------------------------------|------------|
| LC08_L1TP_026079_20201014_20201104_01_T1 | 2020-10-14 |
| LC08_L1TP_026079_20201115_20201210_01_T1 | 2020-11-15 |
| S2A_12JXQ_20201008_0_L1C                 | 2020-10-08 |

By default this is a markdown table (note the terminal will not render Markdown)

id date
LC08_L1TP_026079_20201014_20201104_01_T1 2020-10-14
LC08_L1TP_026079_20201115_20201210_01_T1 2020-11-15
S2A_12JXQ_20201008_0_L1C 2020-10-08

The fields displayed can be changed via the --fields keyword, and sorted via the --sort keyword.

$ stacterm table items.json --fields date eo:cloud_cover collection --sort eo:cloud_cover

| date       | eo:cloud_cover | collection           |
|------------|----------------|----------------------|
| 2020-10-13 | 0.0            | sentinel-s2-l1c      |
| 2020-10-13 | 0.0            | sentinel-s2-l2a      |
| 2020-10-13 | 0.0            | sentinel-s2-l2a-cogs |
| 2020-10-13 | 0.0            | sentinel-s2-l1c      |

The style of the table can also be changed via the --style keyword, although it will no longer be usable in a Markdown renderer. See termtables styles for list of styles.

$ stacterm table items.json --fields id date platform sentinel:grid_square --sort date --style thick

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓
┃ id                                       ┃ date       ┃ platform    ┃ sentinel:grid_square ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━╋━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫
┃ S2B_12JXR_20201003_0_L2A                 ┃ 2020-10-03 ┃ sentinel-2b ┃ XR                   ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━╋━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫
┃ S2B_12JXQ_20201003_0_L1C                 ┃ 2020-10-03 ┃ sentinel-2b ┃ XQ                   ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━╋━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫
┃ S2B_12JXQ_20201003_0_L2A                 ┃ 2020-10-03 ┃ sentinel-2b ┃ XQ                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━┻━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━┛

Calendars

A UNIX-like calendar (see cal) is available to show dates of individual items. By default cal will use the field datetime (the collection datetime) and group Items by their Collection. These can be overridden by the --date_field and --label_field keywords. Note that the specified --date_field needs to be a date field, such as created or updated. --label_field will group and label items by the provided field.

$ stacterm cal items.json --date_field created --label_field gsd

Histograms

Histograms can be created for any numeric field and datetime and date (just the date portion of datetime). created and updated may also be specified if available in all Items.

$ stacterm hist items.json eo:cloud_cover

Plots

Plots can be created with a single numeric fields, a date field (datetime, date, created, or updated) and a numeric field, or two numeric fields. If a single field it will be plotted against the scene number. The --sort keyword can control how to sort the data if plotting a single field.

$ stacterm plot items.json eo:cloud_cover --sort eo:cloud_cover

Markers and Colors

For histograms and plots there are options for changing the marker (symbol) and color of the plot, background, and text. These options all come directly from plotext.

In addition to a marker being able to be any single character, the following names can also be provided for these symbols:

Color names can be provided as follows:

Limitations

Currently any provided field must exist in all STAC Items.

Development

There are a lot more options in the plotext library that could be surfaced here. Additionally, if support for datetimes in histograms and plots is added, stacterm could create temporal histograms, or plot quantities vs date.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stacterm-0.2.0rc3.tar.gz (108.6 kB view details)

Uploaded Source

Built Distribution

stacterm-0.2.0rc3-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file stacterm-0.2.0rc3.tar.gz.

File metadata

  • Download URL: stacterm-0.2.0rc3.tar.gz
  • Upload date:
  • Size: 108.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for stacterm-0.2.0rc3.tar.gz
Algorithm Hash digest
SHA256 b2d9bfc215b9eed7fe00203c97797a6dfbfa60c66d70b19555a8d7fe50e24f01
MD5 45a3bdbc86e13a15b98d3960571dafc8
BLAKE2b-256 3ebc959d24e7873179f4f486429809e1c78ff44d4d2eb8b7388228a4593346b7

See more details on using hashes here.

Provenance

File details

Details for the file stacterm-0.2.0rc3-py3-none-any.whl.

File metadata

  • Download URL: stacterm-0.2.0rc3-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for stacterm-0.2.0rc3-py3-none-any.whl
Algorithm Hash digest
SHA256 536ce8ac74c182b33cc011f914a00b8ab203543ddafc46fdb892a4173d055881
MD5 006700315fe544158b546590728c6981
BLAKE2b-256 cc6143ad79328afd756614edda92ad8b95d2f89accf43727411512ac993b942b

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page