Coding for the Forest: Building a Reforestation Suitability Model

When it comes to restoring forests, one of the most important questions to ask is: Where should we focus our efforts? Trees can’t thrive just anywhere, and reforesting areas that are poorly suited for growth can waste time and resources.

That’s why I have chosen to build a reforestation suitability model using GIS and Python — to find the most promising locations for reforestation based on environmental factors. This blog post explains how the model works and why each variable was included.


What Is a Suitability Model?

A suitability model is a type of spatial analysis used to rank locations based on multiple criteria. In my case, I want to find areas that:

  • Are environmentally favorable for forest growth
  • Aren’t already forested
  • Could benefit from restoration (ecologically or hydrologically)

To do this, I intend to create a weighted overlay model in Python that will combine five key environmental layers. Each will be normalized to a 0–1 scale and assigned a weight based on its importance.


The Variables I Will Use

1. Slope (Weight: 0.25)

Steep slopes can lead to soil erosion and increase the risk of runoff or landslides — all of which can threaten newly planted trees. In my model:

  • Flatter areas (low slope) will receive higher suitability scores
  • Steep terrain is penalized, but not entirely excluded, since certain species may still thrive there

To calculate scores, I will use Python + Rasterio to compute a slope raster from elevation.


2. Land Cover (Weight: 0.30)

It wouldn’t make much sense to reforest an area that’s already forested! So I will download & use NLCD land cover data to:

  • Give low scores to existing forested areas,
  • Assign moderate scores to grasslands or shrublands,
  • And high scores to cleared or disturbed land (e.g. agriculture or recently logged zones).

This variable will be given the highest weight because avoiding already-forested areas was essential to the main goal of re-forestation.


3. Precipitation (Weight: 0.15)

Trees need water — but too much or too little can be harmful. This project will use WorldClim monthly precipitation data to calculate average annual rainfall. Then

  • Areas with moderate to high precipitation are favored
  • While drier zones were considered less suitable

This ensures that reforestation efforts are targeted where the climate can actually support forest recovery.


4. Temperature (Weight: 0.15)

Using the same WorldClim data, I can also calculate average annual temperature. The model will give higher scores to areas within a temperate range, and lower scores to regions that were too cold or too hot.

This variable helps ensure that selected areas fall within the thermal limits of the tree species found in the area I choose to study.


5. Proximity to Water (Weight: 0.15)

Waterways support forest health — especially near degraded areas. Reforesting near rivers, lakes, or wetlands can:

  • Reduce runoff and sedimentation,
  • Improve water quality,
  • Enhance riparian buffers, and
  • Help connect fragmented habitats

To calculate this variable, I can create a distance-to-water raster using vector water features from OpenStreetMap and HydroSHEDS. Areas closer to water bodies receive higher suitability scores.


Why These Weights?

I wanted to strike a balance between ecological realism and data availability. Here’s the logic behind my weighting:

  • Land cover (0.30) is the most decisive — no sense reforesting where trees already exist.
  • Slope (0.25) matters for long-term stability and feasibility.
  • Climate (precipitation + temperature at 0.15 each) influences viability but has broader tolerances.
  • Water proximity (0.15) boosts ecological value but isn’t strictly required.

Of course, it’s important to keep in mind that these weights are simply what I have chosen to use for this first version of my model. They can always be adjusted in future iterations — or customized further depending on specific reforestation goals (e.g. riparian buffer restoration vs. wildlife corridors).


Final Thoughts

Now that I have defined the variables for my reforestation model, the next step is to select an area of study and obtain the data. Once I have narrowed down my field of study, I will post another update on how the project is coming together.

In the meantime, if you’re a fellow GIS analyst, conservationist, or beginner coder trying to make sense of raster math — I hope this post helped clarify how a real-world model comes together. And if you have feedback or suggestions for improving this approach, I’d love to hear them!