Forest Fragmentation Explained

On this page

Problem statement

When forest is cleared, what remains is not simply less forest. It is forest broken into pieces, with more edge per hectare, less interior, and wider gaps between the pieces. Edges are hotter, drier and windier than interiors; they burn more easily, lose large trees faster, and are avoided by species that need interior conditions. A landscape can keep half its forest and lose most of its interior habitat.

Fragmentation is the structure of what is left, and it has its own vocabulary: patches, edge density, core area, connectivity. Each measure answers a different ecological question and each depends on choices β€” pixel size, connectivity rule, edge depth β€” that decide the number.

Quick answer

Four families of measures describe a fragmented landscape:

Family Measure Question
area forest share, largest patch index how much, and how much in one piece
subdivision number of patches, mean patch size how broken up
edge edge density (m/ha) how much is exposed
core core area share at a given depth how much interior survives
import numpy as np, rasterio
from scipy import ndimage

with rasterio.open("rondonia_gfc.tif") as src:          # Hansen stack, reading guide
    treecover, lossyear, datamask = src.read()
f2000 = (treecover > 30) & (datamask == 1)

def describe(f):
    lab, n = ndimage.label(f, structure=np.ones((3, 3)))
    sizes = np.bincount(lab.ravel())[1:]
    core100 = ndimage.binary_erosion(f, iterations=4)              # 4 pixels β‰ˆ 110 m
    return (100 * f.mean(), 100 * sizes.max() / f.sum(), n, 100 * core100.sum() / f.sum())

print(f"{'forest share':>13}{'largest patch':>15}{'patches':>9}{'core β‰₯ ~100 m':>15}")
for y in (2000, 2012, 2024):
    f = f2000 & ((lossyear == 0) | (lossyear > y - 2000)) if y > 2000 else f2000
    fs, lp, n, core = describe(f)
    print(f"{y}: {fs:>7.0f}%{lp:>14.0f}%{n:>9,}{core:>14.0f}%")
 forest share  largest patch  patches  core β‰₯ ~100 m
2000:      46%            57%   14,079            50%
2012:      33%             8%   20,197            36%
2024:      26%             4%   25,871            28%

The forest share falls from 46% to 26%, but the largest patch collapses from 57% of the forest to 4%, and the number of patches almost doubles. Each measure describes a different part of the same process.

Loss versus fragmentation, patches, edge, core

1. Distinguish habitat loss from fragmentation

Losing forest area is habitat loss. Breaking the remaining area into more, smaller, more isolated pieces is fragmentation. They usually happen together and have different consequences; measures should separate them.

2. Define the patch

A patch is a connected set of forest pixels. Four-connectivity (shared edges) or eight-connectivity (edges and corners) changes patch counts; state which.

3. Measure edge relative to area

Edge density β€” metres of forest edge per hectare of landscape β€” compares landscapes of different sizes. Edge length alone does not.

4. Choose an edge depth for core area

Edge effects on microclimate reach roughly 100 m into tropical forest; tree mortality and fire effects further. Core area at the chosen depth measures interior habitat.

5. Consider connectivity

Distance between patches decides whether animals and seeds can move between them. Nearest-neighbour distance and graph-based connectivity indices add that dimension.

The four families of fragmentation measures with an example and the question each answers. four questions about what is leftfamilyexampleasksareaforest sharehow much is left?subdivisionpatches, largest patchin how many pieces?edgeedge density, m/hahow much is exposed?corearea > 100 m from edgehow much is interior?RondΓ΄nia 2000 β†’ 2024: 46% β†’ 26% forest, largest patch 57% β†’ 4% spatialworkflow.io
Area, subdivision, edge and core: four questions about what is left.

Same area, different structure

The data used on this page

The RondΓ΄nia window used throughout the forest guides (63.0°–62.5Β°W, 10.8°–10.3Β°S): Hansen Global Forest Change v1.12 β€” tree cover in 2000, the year of loss, and the data mask β€” read from Google's storage into a three-band rondonia_gfc.tif, as in the Hansen reading guide.

import os

import rasterio
from rasterio.windows import from_bounds

W, S, E, N = -63.0, -10.8, -62.5, -10.3
V = "GFC-2024-v1.12"
if not os.path.exists("rondonia_gfc.tif"):
    bands = []
    for name in ("treecover2000", "lossyear", "datamask"):
        url = f"https://storage.googleapis.com/earthenginepartners-hansen/{V}/Hansen_{V}_{name}_10S_070W.tif"
        with rasterio.open(url) as src:
            window = from_bounds(W, S, E, N, src.transform)
            bands.append(src.read(1, window=window))
            profile = src.profile | {"count": 3, "width": bands[0].shape[1], "height": bands[0].shape[0],
                                     "transform": src.window_transform(window), "compress": "deflate",
                                     "driver": "GTiff", "tiled": False}
    profile.pop("blockxsize", None)
    profile.pop("blockysize", None)
    with rasterio.open("rondonia_gfc.tif", "w", **profile) as dst:
        for i, band in enumerate(bands, start=1):
            dst.write(band, i)
with rasterio.open("rondonia_gfc.tif") as src:
    print(src.count, src.shape, src.crs, src.res)
3 (2000, 2000) EPSG:4326 (0.00025, 0.00025)

Example 1 β€” same area, different structure

side = 300
one_block = np.zeros((side, side), bool)
one_block[75:225, 75:225] = True                                  # 150 Γ— 150 block
pieces = np.zeros((side, side), bool)
for r in range(0, side, 60):
    for c in range(0, side, 60):
        pieces[r + 5:r + 5 + 33, c + 5:c + 5 + 33] = True           # 25 blocks of 33 Γ— 33
print(f"one block: {one_block.sum():,} pixels; 25 pieces: {pieces.sum():,} pixels")
for name, f in (("one block", one_block), ("25 pieces", pieces)):
    edge = f & ~ndimage.binary_erosion(f)
    core = ndimage.binary_erosion(f, iterations=4)
    print(f"{name:<10} edge pixels {edge.sum():>6,}, core share {core.sum() / f.sum():.0%}")
one block: 22,500 pixels; 25 pieces: 27,225 pixels
one block  edge pixels    596, core share 90%
25 pieces  edge pixels  3,200, core share 57%

A synthetic landscape isolates the structural effect. The 25 pieces hold a fifth more forest than the single block, yet have more than five times its edge and a core share of 57% against 90%. More forest, less interior: that is fragmentation without habitat loss.

Example 2 β€” edge depth

f24 = f2000 & (lossyear == 0)
for depth_px, label in ((1, "~27 m"), (4, "~110 m"), (11, "~300 m"), (36, "~1 km")):
    core = ndimage.binary_erosion(f24, iterations=depth_px)
    print(f"core at {label:>6}: {core.sum() / f24.sum():.0%} of 2024 forest")
core at  ~27 m: 61% of 2024 forest
core at ~110 m: 28% of 2024 forest
core at ~300 m: 9% of 2024 forest
core at  ~1 km: 1% of 2024 forest

Even one pixel in from the edge, 39% of the forest left in 2024 is edge. At the ~100 m depth of microclimate effects only 28% counts as core; at the depth of fire and large-mammal effects almost none does. The appropriate depth depends on which organism or process the question is about.

Example 3 β€” the largest patch collapses

prev = None
for y in range(2000, 2025, 2):
    f = f2000 & ((lossyear == 0) | (lossyear > y - 2000)) if y > 2000 else f2000
    lab, _ = ndimage.label(f, structure=np.ones((3, 3)))
    lp = np.bincount(lab.ravel())[1:].max() / f2000.sum()
    if prev is not None and prev - lp > 0.05:
        print(f"{y}: largest patch fell from {prev:.0%} to {lp:.0%} of the 2000 forest")
    prev = lp
print(f"2024: largest patch {prev:.0%} of the 2000 forest")
2002: largest patch fell from 57% to 16% of the 2000 forest
2004: largest patch fell from 16% to 8% of the 2000 forest
2024: largest patch 2% of the 2000 forest

The largest patch does not decline smoothly: it drops in steps when a clearing finally cuts through a connecting strip. Those thresholds are where a landscape changes from a forest with clearings into clearings with forest remnants.

One forest block and twenty-five smaller pieces with a fifth more forest, with their edges highlighted. more forest, less interiorone block: core 90%596 edge pixels25 pieces: core 57%3,200 edge pixelsFragmentation without habitat loss: the edge multiplies, the interior shrinks spatialworkflow.io
Same area, several times the edge: fragmentation without loss.

Why edges matter, and the largest patch collapses

Why edges matter ecologically

At a forest edge, sun and wind reach into the stand. Temperatures rise, humidity falls, large trees die more often and fires spread in from the pasture. In Amazonian studies these effects are measurable 100 m or more into the forest. A fragmented forest therefore behaves like a smaller one than its area suggests.

Why the largest patch index is sensitive

Connectivity through a landscape can depend on a few narrow strips. When one is cleared, a large patch splits into two; the largest patch index drops abruptly even though little area was lost. That makes it an early indicator of structural change.

Why measures depend on resolution

Coarser pixels merge nearby patches and fill narrow gaps; finer pixels separate them. Patch counts and edge lengths change with pixel size, and comparisons across datasets of different resolution are unreliable.

Share of the 2024 forest in the RondΓ΄nia window that counts as core at four edge depths. core share of the 2024 forest by edge depth~27 m (one pixel)61%~110 m (microclimate)28%~300 m9%~1 km (fire)1%035%70%The depth is set by the organism or process in question spatialworkflow.io
How much interior is left depends entirely on how deep the edge is taken to be.

Study-area cuts, linear gaps and regrowth

  • Study area boundaries cut patches; patches touching the boundary are incomplete.
  • Linear gaps (roads, rivers) narrower than a pixel may not appear.
  • Regrowth can reconnect patches; loss-only data cannot show it after 2012.
  • FRAGSTATS and pylandstats compute dozens of landscape metrics; most are variants of the four families.
  • Matrix quality matters too: forest surrounded by old regrowth is less isolated than forest surrounded by soy.

FAQ

What is forest fragmentation?

The breaking of forest into smaller, more isolated pieces with more edge and less interior.

Is fragmentation the same as deforestation?

No. Deforestation removes area; fragmentation changes the structure of what remains. They usually happen together.

What is edge density?

The length of forest edge per unit of landscape area, usually metres per hectare.

What edge depth should I use for core area?

About 100 m for microclimate effects in tropical forest; more for fire and some species. State the depth.

Why did the largest patch drop suddenly?

A clearing cut through the strip connecting two large parts of one patch.

Do fragmentation metrics depend on resolution?

Yes. Patch counts and edge lengths change with pixel size.