
Visualizing Change from Space — A Beginner’s Guide to ML with Satellite Data – Part 1
Satellite imagery + simple machine learning = powerful tools for solving real-world problems.
In this post, I’ll walk you through three beginner-friendly Google Earth Engine + Python projects — Nightlights, Urban Classification, and NDVI — to help you understand the core concepts behind using satellite data. By learning these foundations, you’ll be ready to build your own ML projects, tapping into the vast amount of satellite data available (through Google Earth Engine and beyond) to both practice your skills and tackle real-world challenges. At the end of this blog, I’ll also share some sample project ideas to inspire your next steps.
Why satellite data for ML?
Satellite data gives us a unique, objective view of our planet over time — cities growing, vegetation shifting, and human activity lighting up at night. For beginners in ML, satellite imagery is especially rewarding because:
- Data is plentiful and often free (e.g., Sentinel, VIIRS).
- Problems are tangible and visual — immediate feedback when models work.
- Tools like Google Earth Engine (GEE) + Colab make it easy to combine Earth data with Python and ML libraries.
Below I walk you through three sample projects you can run in Colab that progressively teach data handling, visualization, and a simple supervised ML task.
Project 1 : Nightlights Growth Across India (1992–2025)

Goal: Visualize the rise of artificial lighting across India using DMSP and VIIRS nightlight datasets.
What you’ll learn:
- Exporting visual outputs (GIF/MP4) for storytelling
- How to merge & harmonize data from two sensors (DMSP → VIIRS).
- Robust normalization (e.g., 2nd–98th percentile clipping) to make years comparable.
- Spatial smoothing and temporal blending for cleaner visuals.
🛠️ GitHub Repository: 👉 View the Code on GitHub
( https://github.com/debabratapruseth/Google-Earth-Engine )
Project 2 : Urban Classification using VIIRS Nightlights (Delhi, 2015–2025)

Goal: Predict urban areas in Delhi using multi-year VIIRS nightlight stacks and a Random Forest classifier.
What you’ll learn:
- Training a Random Forest in Earth Engine, predicting 2025 urban footprint, and visualizing results with geemap.
- Building image stacks (monthly → multi-year) for ML inputs.
- Creating labels from radiance thresholds (heuristic labeling).
- Adding auxiliary features (e.g., slope/topography) to improve classification.
🛠️ GitHub Repository: 👉 View the Code on GitHub
( https://github.com/debabratapruseth/Google-Earth-Engine )
Project 3: NDVI Time-lapse over Singapore (2016–2023)

Goal: Show vegetation health and change in Singapore using Sentinel-2 NDVI composites.
What you’ll learn:
- Computing NDVI from Sentinel-2 surface reflectance.
- Cloud masking using QA60 flags (to remove cloudy pixels).
- Creating annual median composites and colorising NDVI with a red→green palette.
- Exporting labeled images and assembling a GIF using Pillow.
🛠️ GitHub Repository: 👉 View the Code on GitHub
( https://github.com/debabratapruseth/Google-Earth-Engine )
Simple explanations of key terms (for beginners)
Google Earth Engine (GEE): A cloud platform with petabytes of planetary imagery and APIs to process them at scale. You write scripts (JavaScript or Python) and run them on Google’s servers.
VIIRS / DMSP: Satellites that measure nighttime light. DMSP covers older years (1992–2013); VIIRS is newer and more sensitive (2012 onward). Harmonizing them is important when combining long time ranges.
NDVI (Normalized Difference Vegetation Index): (NIR − Red) / (NIR + Red). Values near +1 indicate healthy vegetation.
Random Forest: A robust ensemble ML algorithm (many decision trees) that works well for tabular and raster classification problems and is easy to use for beginners.
Cloud masking: Removing cloudy pixels so composites (e.g., yearly medians) reflect true surface conditions.
How to run these notebooks
- Download the GitHub code ( Jupyter notebook ) and open the notebook in Google Colab ( Or any other environment you are using)
- Create a free ( non commercial ) Google Earth Engine account to access satellite data from Google Earth Project : https://developers.google.com/earth-engine/guides
- Run the code as per instuction. For debugging and navigating leverage ChatGPT, Gemini, Claude or any other LLM you use.
- Explore other data sets and create new models : https://developers.google.com/earth-engine/datasets
Discover more from Debabrata Pruseth
Subscribe to get the latest posts sent to your email.


