Providers
Provider-specific configuration and usage details
Overview
SAND supports five satellite data providers, each with specific authentication and configuration requirements.
| Provider | Class | URL | Auth method |
|---|---|---|---|
| CDSE | DownloadCDSE |
dataspace.copernicus.eu | Email + Password |
| CNES | DownloadCNES |
geodes-portal.cnes.fr | Email + Token |
| EumDAC | DownloadEumDAC |
data.eumetsat.int | API Key + Secret |
| NASA | DownloadNASA |
cmr.earthdata.nasa.gov | Username + Password |
| USGS | DownloadUSGS |
m2m.cr.usgs.gov | Email + API Token |
CDSE — Copernicus Data Space
Registration: dataspace.copernicus.eu
Authentication
machine dataspace.copernicus.eu
login your@email.com
password your_passwordUsage
from sand.copernicus_dataspace import DownloadCDSE
dl = DownloadCDSE()
results = dl.query(
collection_sand="SENTINEL-2-MSI",
level=2,
time=Time(start="2024-01-01", end="2024-01-31"),
geo=Geo.Point(lat=48.8566, lon=2.3522),
)
Tip
- Uses OAuth2 token-based authentication (handled automatically)
- Supports both OData and OpenSearch APIs
CNES — Geodes
Registration: geodes-portal.cnes.fr
Authentication
- Register on Geodes portal
- Generate an API token from your account settings
- Configure
.netrc:
machine geodes.cnes.fr
login your@email.com
password your_token_secretUsage
from sand.cnes import DownloadCNES
dl = DownloadCNES()
results = dl.query(
collection_sand="SENTINEL-1-SAR",
level=1,
time=Time(start="2024-01-01", end="2024-01-31"),
geo=Geo.Polygon(lat_min=48.8, lat_max=48.9, lon_min=2.3, lon_max=2.4),
)EumDAC — EUMETSAT Data Store
Registration: data.eumetsat.int
Authentication
- Register on EUMETSAT Data Store
- Create an API key from the dashboard
- Configure
.netrc:
machine data.eumetsat.int
login your_api_key
password your_api_secretUsage
from sand.eumdac import DownloadEumDAC
dl = DownloadEumDAC()
results = dl.query(
collection_sand="SENTINEL-3-OLCI",
level=2,
time=Time(start="2024-01-01", end="2024-01-31"),
geo=Geo.Point(lat=48.8566, lon=2.3522),
)
Tip
- Uses the official
eumdacPython library under the hood - Tokens expire and are automatically refreshed
NASA — CMR
Registration: urs.earthdata.nasa.gov
Authentication
machine urs.earthdata.nasa.gov
login your_username
password your_passwordUsage
from sand.nasa import DownloadNASA
dl = DownloadNASA()
results = dl.query(
collection_sand="LANDSAT-8-OLI",
level=1,
time=Time(start="2024-01-01", end="2024-01-31"),
geo=Geo.Point(lat=48.8566, lon=2.3522),
)
Tip
- No login required for search queries
- Authentication is only needed for downloads
USGS — M2M API
Registration: ers.cr.usgs.gov
Authentication
- Register on USGS EarthExplorer
- Request access to M2M API datasets
- Generate an API token
- Configure
.netrc:
machine m2m.cr.usgs.gov
login your@email.com
password your_api_tokenUsage
from sand.usgs import DownloadUSGS
dl = DownloadUSGS()
results = dl.query(
collection_sand="LANDSAT-8-OLI",
level=1,
time=Time(start="2024-01-01", end="2024-01-31"),
geo=Geo.Point(lat=48.8566, lon=2.3522),
cloudcover_thres=10,
)
Tip
- Requires explicit access request to M2M API datasets
- Rate limits may apply
Common patterns
Listing available collections
# Get available collections as a DataFrame
df = dl.get_available_collection()
print(df)Filtering collections
from sand.results import Collection
# Filter collections by provider
collections = Collection(dl.get_available_collection(), provider="usgs")
print(collections)Download options
# Download with different conflict handling
dl.download(product, dir="./data", if_exists="skip") # Skip existing files
dl.download(product, dir="./data", if_exists="overwrite") # Overwrite existing
dl.download(product, dir="./data", if_exists="backup") # Backup then overwrite
dl.download(product, dir="./data", if_exists="error") # Raise error if existsParallel downloads
# Download multiple products in parallel
paths = dl.download_all(results, dir="./data", parallelized=True)Next steps
- See the API Reference for detailed class documentation
- See Getting Started for basic usage