Everything in one app
Built-in search
Pick a product and dates, then click tiles on the 36×18 sinusoidal map (or type coordinates / a bounding box) — no manual order creation on the NASA website.
Full coverage
MODIS, VIIRS (LAADS DAAC) and MERRA-2 (GES DISC) with a curated
catalog — and any CMR short_name works too.
GLASS archive
Since v2.5, upgraded in v2.6, self-adapting in v2.7: search & download the GLASS (Global
Land Surface Satellite) suite — 133 variants (131 verified against
real granules) from the public glass.hku.hk archive, no
Earthdata sign-in; all four archive layouts, global CMG products
need no tiles, static collections need no dates. The GLASS
engine is ported from the author's R package
glass.sqdaitools
v0.1.0 (docs):
D3LTool finds & downloads, the R package does the post-processing —
a matched pair.
Robust downloads
Parallel queue, chunked progress, HTTP Range resume, automatic retries and file-size validation — safe on slow or unstable links.
Browser hand-off
Since v2.4, export the checked granules as a .txt
list (one URL per line for wget -i / aria2c
-i / download managers) or a one-click .html
index page — a rescue line when direct downloads hit 401/403:
your logged-in browser does the fetching.
MCP server + AI Assistant
Since v2.1, d3ltool-mcp exposes 13 tools (search, tile
math, time-series sampling, in-app plotting, downloads,
browser-handoff export) to Claude Desktop, Claude Code, Codex,
Cursor, OpenCode, Qoder, ZCode and any MCP client,
reusing the sign-in saved on your machine; the GUI gains a floating
right-edge AI Assistant drawer that drives the same tools with
plain language and charts fetched series itself. How to wire it up →
Point time series
Since v2.3, plot a pixel's changing values for any MODIS/VIIRS or MERRA-2 layer — sampled directly over NASA OPeNDAP with one-click CSV export, no third-party subset service.
Bilingual UI
One-click 中文 / English switch in the menu.
Cross-platform & proxy
Windows exe, macOS .app, Linux binary (CI builds) — or
pip install d3ltool. Proxy support for complex
network environments.
Main window
list_products),
searches by bbox (search_granules) and queues the files
(start_download) — no sign-in anywhere; mosaic / crop /
composite the files in R with glass.sqdaitools.Three steps
Get the app
Double-click D3LToolNASA.exe — a single file, no
Python needed. Sign in with your free
NASA Earthdata account
under “Settings” (search works without login; downloads need it).
Search
Choose a product and a date range, click the tiles you need on the map, and hit Search.
Download
Tick the files you want, add them to the queue and let the resumable downloader finish the job.
Install & sign in
Double-click D3LToolNASA.exe — a single file, no Python
needed; the macOS .app and Linux binaries are on
GitHub
Releases, and CLI users can simply pip install d3ltool.
Sign in under “Settings → Sign in to Earthdata” with your free
NASA Earthdata account —
search works without login, downloads need it. Credentials stay on this
machine only (~/.netrc).
Search
Pick a product group and product (or “custom” for any CMR
short_name), optional version (blank = latest) and start/end
dates. For the area, click tiles on the sinusoidal map (multi-select, or
type h04v03, or use the lat/lon locator) — or enter a
bounding box for MERRA-2 style data. The GLASS group (v2.6,
v2.7)
lists 133 variants (131 verified) from the public glass.hku.hk archive
across four archive layouts — static collections need no dates, global
CMG products need no tiles — and GLASS searches never ask for a login. Hit the red Search button and
results appear in the top-right table.
Download
Tick files in the results table and click “Add to download queue”. The task table shows live per-file progress and speed with pause/resume/retry; finished files are skipped on re-download and interrupted ones resume automatically. Download folder, concurrency and proxy live in “Settings”.
Browser hand-off
When a download keeps failing (some proxies trigger 401/403),
select the rows and use “Export download list” (“Open in browser”
pops the .html index): your signed-in browser or a
DownThemAll-style extension fetches the files — the .txt
list also feeds wget -i / aria2c -i. The MCP
tools export_download_urls / open_download_page
give AI clients the same move, with no password ever in chat or MCP.
# command line
pip install d3ltool
d3ltool search VNP46A1 --start 2020-03-01 --end 2020-03-31 --tile h04v03
d3ltool download VNP46A1 --start 2020-03-01 --end 2020-03-31 --tile h04v03 --dest D:/data
d3ltool search M2T1NXSLV --start 2019-08-01 --end 2019-08-31 --bbox 100 20 120 40
d3ltool search LAI_MODIS_250M --start 2018-08-01 --end 2018-12-31 --tile h28v05 # GLASS, no login
GLASS + R post-processing
The GLASS module (v2.5) is ported from the author's R package
glass.sqdaitools
v0.1.0 (docs) —
a matched pair: D3LTool covers product discovery and resumable,
size-validated batch download (no sign-in; the archive is public), while
fill-value & scale-factor handling, multi-tile mosaicking,
reprojection and temporal compositing run in R with
glass.sqdaitools:
# R >= 4.1; heavy deps terra / sf
devtools::install_github("GISerDaiShaoqing/glass.sqdaitools")
glass.sqdaitools::glass_process(files, roi = my_roi,
product = "LAI_MODIS_250M",
fun = "mean", outfile = "lai_mean.tif")
Upgraded in v2.6: the fully verified 131/133 registry, all four
archive layouts (composite folders, static collections, year folders,
YYYYDDD day folders), global CMG tile immunity,
per-variant data-file extensions from the verification log, and the
measured glass.hku.hk politeness policy for directory listings
(8/24/72 s backoff + cooldown retry, ≥1.2 s between
listings).
Self-adapting in v2.7: the ~50 variants carrying no composited
cadence no longer trust the registry's year_doy label —
search lists each year folder once and follows the archive's real
shape (files flat in the year folder with A-header tokens,
yyyyMM month codes, or a one-level version wrapper such
as NPP's GLASS_NPP_0.05D_V40/); the stride infers from
observed composite gaps, span semantics decide selection, and a
single-file year keeps the file whole. Verified live:
FVC_AVHRR_0_5D for 2018-08-01..09-15 returns exactly 14
files.
Compatibility: D3L Tool 2.7.0 ↔ glass.sqdaitools ≥ 0.1.0 (API changes are announced in both release notes). GLASS data are produced by the GLASS product team (glass.hku.hk) — please follow their citation policy.
Time series
Open the right-edge time-series drawer, pick a product and layer, enter latitude/longitude and a date range, and hit “Plot series” — the pixel's values are sampled over NASA OPeNDAP (LAADS for MODIS/VIIRS, GES DISC for MERRA-2, reusing your sign-in) and drawn as a line chart, exportable to CSV with one click; “Clear chart” resets the plot. For large-scale analysis, download the raw files instead.
MCP server & AI assistant
d3ltool-mcp exposes 13 tools (search, tile math, time-
series sampling, in-app plotting, download control, browser-handoff
export) over stdio for
Claude Desktop, Claude Code, Codex, Cursor, OpenCode, Qoder, ZCode
and any MCP client;
the right-edge AI Assistant drawer in the GUI drives the same tools
with plain language. Wiring examples live in the
integration
guide.
Menus
The “Websites” menu links the project site, the author's blog and NASA portals; “RS resources” is a curated remote-sensing list; “Help” holds Donate and About. The UI language switches under “Language”.
From 2018 to today
D3L Tool was created by Dr. Dai in 2018 (v1.0), when the LAADS FTP servers were shut down and the official Python scripts were hard for non-programmers — v1 automated order downloads through browser automation. Eight years later, v2 is a complete rewrite on top of NASA's official earthaccess library and the CMR search service.
Dependencies & acknowledgments
D3L Tool of NASA Satellite is released under a MIT license and builds on several open source projects:
PySide6 (Qt for Python) — cross-platform GUI library, LGPL-3.0 · doc.qt.io/qtforpython
earthaccess — NASA Earthdata access library, MIT · earthaccess.readthedocs.io
requests — Apache 2.0 · requests.readthedocs.io
PyInstaller — GPL · www.pyinstaller.org
v1.0 (2018, browser automation) was built on tkinter, selenium and Tristan Quaife's laads-data-download.py; it is no longer maintained and stays in the repository history.
GLASS data are produced by the GLASS product team (glass.hku.hk) — please follow their citation policy. The GLASS module (v2.5) is ported from the author's glass.sqdaitools R package.
The development of D3L Tool has been supported by Tristan Quaife, MorvanZhou and NASA. Special thanks for GeoDa.
Questions & feedback
- Usage problems → the user guide above
- Bugs and ideas → GitHub Issues
- Anything else → dsq1993qingge@163.com
D3L Tool of NASA Satellite uses an MIT License.