Every year, the Pacific Northwest lumber supply chain does the same thing. Mills cut timber all summer. Logs pile up at export terminals along the Columbia River. Ships carry them to Asia. Then winter comes, logging roads close, and the yards go quiet. We know this because economists track it, because industry reports document it, and — as of this project — because we watched it happen from 500 miles up.

Sentinel Stockpile is a commodity intelligence pipeline built on free ESA satellite imagery and Microsoft Planetary Computer. It monitors industrial stockpile levels at fixed locations over time — watching the lumber accumulate and deplete at the Port of Longview, Washington, the largest log export terminal on the Columbia River, scene by scene, across an entire year.

The Time Series

12-month stockpile area time series at Port of Longview

Port of Longview · 12-month stockpile area · April 2025 – April 2026. Each dot is a Sentinel-2 scene. The seasonal pulse of the Pacific Northwest lumber industry, measured in hectares.

That chart is 12 months of lumber stockpile area at Port of Longview. The signal is unmistakable — a classic seasonal cycle driven by the rhythm of Cascades timber harvest, Columbia River export logistics, and Asian construction markets.

SeasonAreaWhat's Happening
Spring (Apr–May)~20 haYards sitting at annual low. Mills spinning up after winter. Logging trucks starting to roll as mountain roads dry out.
Summer (Jun–Jul)47 ha peakPeak harvest. Cascades timber sales in full swing. Lumber accumulating faster than ships can carry it out. If you drove past in July, you'd see mountains of logs stretching across the terminal.
Fall (Aug–Sep)22 haThe drawdown. Export vessels loading for Asian construction markets. Watch the inventory liquidate — 47 hectares back to 22 in six weeks.
Winter (Jan)5 haRain shuts down logging roads. Mills cut shifts. The Columbia River lumber supply chain exhales.

See It With Your Own Eyes

Here's what the port looks like from orbit in July versus January. Those reddish-brown rectangles in the upper left are log stacks. The bright white patches are dimensional lumber or tarped material. In July, they're everywhere. In January, the yard is mostly empty pavement.

True color satellite image July 2025 - Port of Longview

July 13, 2025 — Peak season. Log stacks and lumber filling the terminal. Columbia River at lower left.

True color satellite image January 2026 - Port of Longview

January 16, 2026 — Winter low. Same terminal. Mostly bare pavement. The Columbia has risen with winter rain.

Now here's what the classifier sees — the algorithm's interpretation of the same scenes, pixel by pixel:

Classification map July 2025 - 32% stockpile

July 2025 — 32% stockpile. Amber = stockpile. Blue = Columbia River. Brown = pavement. Green = vegetation. Nearly a third of the terminal covered in lumber.

Classification map January 2026 - 3.4% stockpile

January 2026 — 3.4% stockpile. Same classifier. The terminal has exhaled. Blue dominates as the Columbia River rises. Amber nearly gone.

How the Classification Works

The trick is that different materials reflect light differently in ways the human eye can't fully resolve but multispectral sensors can. Sentinel-2 captures six spectral bands — visible light plus near-infrared and shortwave infrared — and we compute indices that quantify these reflectance differences.

IndexWhat It Does
NDVIVegetation index — identifies trees and grass so we can exclude them from stockpile counts
BSIBare soil index — separates textured surfaces like lumber stacks from smooth pavement
BrightnessCatches the actual stockpile material, which reflects more light than surrounding terminal surfaces

Each pixel gets classified as water, vegetation, stockpile, or ground. Count the stockpile pixels, multiply by the pixel area (100 m² each), and you have a measurement in square meters. Do it across 32 scenes over 12 months and you have a time series. The thresholds that separate "stockpile" from "ground" were tuned empirically — looking at the satellite imagery with human eyes, comparing it to the classification output, adjusting until the amber pixels land where the actual lumber sits. Part science, part craft.

"This is the seasonal pulse of a $40 billion industry, visible from space, measured with free tools, and reproducible by anyone with a laptop."

Why This Matters Beyond Lumber

The Port of Longview lumber cycle is a proof of concept for a broader class of analysis. The same spectral classification approach works for anything that accumulates visibly at a fixed outdoor location:

🏗️ Container Terminals
Are ports backing up or flowing? Trade disruptions show up as container area changes weeks before they hit economic reports.
🛢️ Oil Tank Farms
The shadow inside a floating-roof tank tells you how full it is. Multiply across a tank farm and estimate regional petroleum reserves.
🌾 Grain Elevators
Seasonal agricultural commodity flows visible from the accumulation patterns at storage and export facilities.
⛏️ Mining Stockpiles
Coal, ore, aggregate — anything stored outdoors in bulk before transport. Every mine is a potential monitoring site.

This is the kind of analysis hedge funds pay six figures a year for — satellite-derived commodity intelligence that moves faster than official reports. Sentinel Stockpile is proof you can build the same thing with open data, open tools, and a pixi environment.

The Architecture

Each monitoring site is a JSON config file. Each commodity type has its own classification thresholds. The pipeline runs via GitHub Actions on a monthly cron — downloading fresh Sentinel-2 scenes from Microsoft Planetary Computer, classifying pixels, computing area measurements, and generating updated time series charts. No API keys. No paid accounts. The European Space Agency and Microsoft provide everything for free.

Current sites: Port of Longview (12-month time series, complete), Port of Tacoma containers (configured, threshold tuning in progress), Weyerhaeuser Longview (configured). Next up: Sentinel-1 SAR integration to see through the PNW cloud gap that blanks out optical imagery from October through January. Radar fills the winter hole.


The project is open source at github.com/bdgroves/sentinel-stockpile. Add a site config, run the pipeline, get a time series. Point it at something interesting.