An interactive map for exploring nighttime light radiance across the globe, powered by satellite data from NOAA's VIIRS sensor. Use it to visualize light pollution for any location, compare how it changes over time, and tune the display to highlight exactly the brightness levels you care about.
Prerequisites: Conda and a Google Earth Engine account.
conda create -n light-pollution python=3.13 -y
conda activate light-pollution
pip install -r requirements.txtconda activate light-pollution
uvicorn app:app --reloadThen open http://localhost:8000 in your browser.
On first run you may be prompted to authenticate with Google Earth Engine — follow the link printed in the terminal and paste the token back.
- Browse any location on Earth — pan and zoom a satellite basemap with the light radiance layer on top.
- Switch between daily and monthly data — pick a single night's snapshot or a smoother monthly composite.
- Pick a date — navigate to any specific day or month within the dataset's available range.
- Adjust the radiance range — slide the Min/Max controls to stretch or compress the color scale, making faint suburban glow or intense city cores easier to distinguish.
- Control opacity — blend the radiance layer with the underlying satellite imagery.
| Property | Value |
|---|---|
| Full name | VIIRS/Black Marble Daily NTL |
| Sensor | VIIRS Day/Night Band (DNB) aboard Suomi NPP |
| Resolution | 500 m per pixel |
| Frequency | One image per day |
| Unit | nW cm⁻² sr⁻¹ (nanowatts per square centimeter per steradian) |
| Coverage | Global |
| Available from | 2012-01-19 to present |
Each image is a single night's observation, atmospherically corrected by NOAA. Useful for tracking a specific event (a blackout, a festival, a wildfire) or comparing a precise before/after.
| Property | Value |
|---|---|
| Full name | VIIRS DNB Monthly Cloud-Free Composite |
| Sensor | VIIRS Day/Night Band (DNB) aboard Suomi NPP |
| Resolution | ~750 m per pixel |
| Frequency | One composite per calendar month |
| Unit | nW cm⁻² sr⁻¹ |
| Coverage | Global |
| Available from | 2012-04 to present |
Cloud-free composites average out cloudy nights and reduce noise, giving a cleaner picture of persistent light sources. Better for studying long-term trends in urbanization or economic activity than for tracking single-night events.
The color scale runs black → blue → purple → cyan → green → yellow → red:
- Black / deep blue — very dark sky, minimal artificial light
- Cyan / green — moderate suburban or industrial glow
- Yellow / red — intense urban cores or industrial flares
The Min and Max sliders control which radiance values map to the two ends of the scale. Lowering Max makes faint rural light visible; raising Min strips out background noise and isolates only the brightest sources.
Both datasets cover the entire Earth's land surface and coastal waters. There are no regional restrictions — you can explore any city, wilderness area, or ocean shipping lane. Polar regions may have gaps during local summer (continuous daylight) for the daily product.
