Skip to main content

Build Tests codecov DOI

Description

CLI Demo

The landsatxplore Python package provides an interface to the EarthExplorer portal to search and download Landsat Collections scenes through a command-line interface or a Python API.

The following datasets are supported:

Dataset Name Dataset ID
Landsat 5 TM Collection 2 Level 1 landsat_tm_c2_l1
Landsat 5 TM Collection 2 Level 2 landsat_tm_c2_l2
Landsat 7 ETM+ Collection 2 Level 1 landsat_etm_c2_l1
Landsat 7 ETM+ Collection 2 Level 2 landsat_etm_c2_l2
Landsat 8 Collection 2 Level 1 landsat_ot_c2_l1
Landsat 8 Collection 2 Level 2 landsat_ot_c2_l2
Landsat 9 Collection 2 Level 1 landsat_ot_c2_l1
Landsat 9 Collection 2 Level 2 landsat_ot_c2_l2

Quick start

Searching for Landsat 5 TM scenes that contains the location (12.53, -1.53) acquired during the year 1995.

landsatxplore search --dataset landsat_tm_c2_l1 --location 12.53 -1.53 \
    --start 1995-01-01 --end 1995-12-31

Search for Landsat 7 ETM scenes in Brussels with less than 5% of clouds. Save the returned results in a .csv file.

landsatxplore search --dataset landsat_tm_c2_l2 \
    --location 50.83 4.38 --clouds 5 > results.csv

Downloading three Landsat scenes from different datasets in the current directory.

landsatxplore download LT51960471995178MPS00 LC80390222013076EDC00 LC82150682015350LGN01

To use the package, Earth Explorer credentials are required (registration).

Installation

The package can be installed using pip.

pip install landsatxplore

Usage

landsatxplore can be used both through its command-line interface and as a Python module.

Command-line interface

landsatxplore --help
Usage: landsatxplore [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  download  Download one or several Landsat scenes.
  search    Search for Landsat scenes.

Credentials

Credentials for the Earth Explorer portal can be obtained here.

--username and --password can be provided as command-line options or as environment variables:

export LANDSATXPLORE_USERNAME=<your_username>
export LANDSATXPLORE_PASSWORD=<your_password>

Searching

landsatxplore search --help
Usage: landsatxplore search [OPTIONS]

  Search for Landsat scenes.

Options:
  -u, --username TEXT             EarthExplorer username.
  -p, --password TEXT             EarthExplorer password.
  -d, --dataset [landsat_tm_c1|landsat_etm_c1|landsat_8_c1|landsat_tm_c2_l1|landsat_tm_c2_l2|landsat_etm_c2_l1|landsat_etm_c2_l2|landsat_ot_c2_l1|landsat_ot_c2_l2|sentinel_2a]
                                  Landsat data set.
  -l, --location FLOAT...         Point of interest (latitude, longitude).
  -b, --bbox FLOAT...             Bounding box (xmin, ymin, xmax, ymax).
  -c, --clouds INTEGER            Max. cloud cover (1-100).
  -s, --start TEXT                Start date (YYYY-MM-DD).
  -e, --end TEXT                  End date (YYYY-MM-DD).
  -o, --output [entity_id|display_id|json|csv]
                                  Output format.
  -m, --limit INTEGER             Max. results returned.
  --help                          Show this message and exit.

Downloading

landsatxplore download --help
Usage: landsatxplore download [OPTIONS] [SCENES]...

  Download one or several Landsat scenes.

Options:
  -u, --username TEXT    EarthExplorer username.
  -p, --password TEXT    EarthExplorer password.
  -d, --dataset TEXT     Dataset.
  -o, --output PATH      Output directory.
  -t, --timeout INTEGER  Download timeout in seconds.
  --skip
  --help                 Show this message and exit.

If the --dataset is not provided, the dataset is automatically guessed from the scene identifier. Note that only the newer Landsat Product Identifiers contain information related to collection number and processing level. To download Landsat Collection 2 products, use Product IDs or set the --dataset option correctly.

API

EarthExplorer API

landsatxplore provides an interface to the Earth Explorer JSON API. Please refer to the official (documentation) for possible request codes and parameters.

Basic usage

from landsatxplore.api import API

# Initialize a new API instance and get an access key
api = API(username, password)

# Perform a request. Results are returned in a dictionnary
response = api.request(
    '<request_endpoint>',
    params={
        "param_1": value_1,
        "param_2": value_2
    }
)

# Log out
api.logout()

Please refer to the official JSON API Reference for a list of all available requests.

Searching for scenes

import json
from landsatxplore.api import API

# Initialize a new API instance and get an access key
api = API(username, password)

# Search for Landsat TM scenes
scenes = api.search(
    dataset='landsat_tm_c2_l1',
    latitude=50.85,
    longitude=-4.35,
    start_date='1995-01-01',
    end_date='1995-10-01',
    max_cloud_cover=10
)

print(f"{len(scenes)} scenes found.")

# Process the result
for scene in scenes:
    print(scene['acquisition_date'].strftime('%Y-%m-%d'))
    # Write scene footprints to disk
    fname = f"{scene['landsat_product_id']}.geojson"
    with open(fname, "w") as f:
        json.dump(scene['spatial_coverage'].__geo_interface__, f)

api.logout()

Output:

4 scenes found.
1995-09-23
1995-08-22
1995-08-15
1995-06-28

Downloading scenes

from landsatxplore.earthexplorer import EarthExplorer

ee = EarthExplorer(username, password)

ee.download('LT51960471995178MPS00', output_dir='./data')

ee.logout()

Metadata

Release files for landsatxplore 0.15.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for landsatxplore 0.15.0
File Size Uploaded
landsatxplore-0.15.0.tar.gz 14.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for landsatxplore 0.15.0
File Interpreter ABI Platform
landsatxplore-0.15.0-py3-none-any.whl Python 3 none any Details

Total release size: 30.3 kB

Release files / landsatxplore-0.15.0.tar.gz

Download URL landsatxplore-0.15.0.tar.gz
Size 14.8 kB
Tags Source
SHA-256 checksum
How to use checksums
69031ac376d5fc5dcf5826a7217712529c16fb041524bbb7d68d24435eddf67e
BLAKE2b-256 checksum
How to use checksums
12b3fb5d1b714a1e5073f4f5c145456a4ac343ba4bc3a1a1757e58761dfbfac8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.4.2 CPython/3.11.0 Linux/5.15.0-1035-azure

Release files / landsatxplore-0.15.0-py3-none-any.whl

Download URL landsatxplore-0.15.0-py3-none-any.whl
Size 15.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
826733853386cb1f5d622ecfd6eaa643f22dfdf5162cfc85a97a58b7ca0c95f8
BLAKE2b-256 checksum
How to use checksums
fe743e17fccba42cb33dc5320aa2803d66c171c22dbe8f17d1a77354cd6b08dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.4.2 CPython/3.11.0 Linux/5.15.0-1035-azure

Release history Release notifications | RSS feed

This release

0.15.0 This release

2 release files

0.14.0

1 release file

0.12.1

2 release files

0.12.0

2 release files

0.10

2 release files

0.9

2 release files

0.8

2 release files

0.7

2 release files

0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page