Skip to main content

Download Sentinel-2 data from Microsoft Planetary Computer

Project description

sen2p

sen2p is a lightweight Python library to search, download, and manage Sentinel-2 imagery from Microsoft Planetary Computer. No API keys required.

Focused on data discovery + download + satellite utilities. For raster processing and analysis, use rasteric.

Installation

pip install sen2p

Requirements

  • Python >= 3.9

Features

  • 🔍 Search with cloud cover and date filtering
  • 🏆 Auto-select best image (low cloud, good coverage, nearest date)
  • 📍 Find nearest image to a specific date
  • 🛰️ Download selected bands with friendly aliases (blue, nir, etc.)
  • 📦 Auto-merge bands into single GeoTIFF
  • ⚡ Parallel download (workers=N)
  • 🔄 Retry with exponential backoff
  • ♻️ Skip existing files
  • 📊 Export metadata to CSV / footprints to GeoJSON
  • 📅 Timeline visualization
  • 🖥️ CLI: sen2p search, sen2p download, sen2p best, sen2p nearest, sen2p bandinfo, sen2p bands

Quick Start

Python

from sen2p import search, best_item, nearest, download, bandinfo, bands, timeline, preview, meta_df, export_meta

# Search
items = search("2023-06-01", "2023-06-30", [172.1, -43.5], cloud_max=20)
print(f"Found {len(items)} items")

# Timeline
timeline(items)

# Best image (lowest cloud, best coverage, nearest date)
item = best_item("2023-06-01", "2023-06-30", [172.1, -43.5])
preview(item)

# Nearest to a specific date
item = nearest("2023-06-15", [172.1, -43.5], cloud_max=20)

# Download with friendly band names
results = download(
    start_date="2023-06-01",
    end_date="2023-06-30",
    location=[172.1, -43.5],
    bands=["blue", "green", "red", "nir"],
    output_dir="output",
    cloud_max=20,
    workers=4,
)

# Export metadata
df = meta_df(items)
export_meta(items, "metadata.csv")

# Band info
info = bandinfo("nir")
# {'band': 'B08', 'name': 'NIR', 'resolution': '10m', 'wavelength': '842nm'}

CLI

# Search
sen2p search --start 2023-06-01 --end 2023-06-30 --location "172.1,-43.5" --cloud-max 20

# Best image
sen2p best --start 2023-06-01 --end 2023-06-30 --location "172.1,-43.5"

# Nearest to date
sen2p nearest --date 2023-06-15 --location "172.1,-43.5" --cloud-max 20

# Download with parallel workers
sen2p download --start 2023-06-01 --end 2023-06-10 --location "172.1,-43.5" \
    --bands blue,green,red,nir --output output --cloud-max 20 --workers 4

# Band info
sen2p bandinfo nir
sen2p bands

# Raster metadata
sen2p meta output/S2B_..._merged.tif

Location Formats

[172.1, -43.5]                              # Point [lon, lat]
[172.0, -43.6, 172.5, -43.3]               # Bounding box
"study_area.shp"                            # Shapefile path
"area.geojson"                              # GeoJSON file path
{"type": "Point", "coordinates": [172.1, -43.5]}  # GeoJSON dict

Band Aliases

Use friendly names instead of band codes:

Alias Band Resolution Wavelength
coastal B01 60m 443nm
blue B02 10m 490nm
green B03 10m 560nm
red B04 10m 665nm
rededge1 B05 20m 705nm
rededge2 B06 20m 740nm
rededge3 B07 20m 783nm
nir B08 10m 842nm
nir08 B8A 20m 865nm
swir1 B11 20m 1610nm
swir2 B12 20m 2190nm
from sen2p import bandinfo, bands

bandinfo("nir")  # {'band': 'B08', 'name': 'NIR', 'resolution': '10m', 'wavelength': '842nm'}
bands()          # Full dict of all bands

Functions

Search & Discovery

Function Description
search(start, end, location, ...) Search for items with filters
best_item(start, end, location, ...) Auto-select best image (cloud + coverage + date)
nearest(date, location, ...) Find image closest to a specific date
collections() List available STAC collections

Download

Function Description
download(start, end, location, bands, ...) Download with parallel workers and retry

Metadata

Function Description
meta_df(items) Convert items to pandas DataFrame
export_meta(items, output) Export metadata to CSV
export_footprint(items, output) Export footprints to GeoJSON
show_meta(file_path) Display raster file metadata

Visualization

Function Description
preview(item) Quick text preview of an item
timeline(items) Text timeline with cloud cover bars

Band Utilities

Function Description
bandinfo(band) Get band metadata (name, resolution, wavelength)
bands() List all Sentinel-2 bands
resolve_band_names(aliases) Convert friendly names to STAC keys

Integration with rasteric

from sen2p import download
from rasteric import ndvi, clip, plot

# Download
results = download(
    start_date="2023-06-01", end_date="2023-06-10",
    location=[172.1, -43.5], bands=["red", "nir"],
    output_dir="data", cloud_max=20,
)

# Process with rasteric
ndvi(results[0]["merged"], "ndvi.tif", red_band=1, nir_band=2)
clip("ndvi.tif", "boundary.shp", "ndvi_clipped.tif")
plot("ndvi_clipped.tif", bands=(1,), cmap="RdYlGn", title="NDVI")

Contributing

License

MIT License

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

sen2p-0.2.0.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sen2p-0.2.0-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

Details for the file sen2p-0.2.0.tar.gz.

File metadata

  • Download URL: sen2p-0.2.0.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for sen2p-0.2.0.tar.gz
Algorithm Hash digest
SHA256 7b37021dc94ceeced0a10d4f709929ba2d62907c7b22e7ab4872d853d7e32e6a
MD5 e0d0ab736b736a5057d0c2656e99a4c1
BLAKE2b-256 d992f6890f9005f52b0dc3c40157a6b9c6d2d1574b7ef7a46ca79df7579e781d

See more details on using hashes here.

File details

Details for the file sen2p-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: sen2p-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 13.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for sen2p-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 65ffde1b8aafa128efa8cff2ad86c51ef3dd2e935ece447f7f620bf925c2c542
MD5 ebbebfdd0ae7a007f812ce31a960c069
BLAKE2b-256 41803754b77abc0d2f680da9a1424f80d391eb99edddfd096e24f29e51e0325f

See more details on using hashes here.

Supported by

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