Land Use & Resource Classes¶
Overview¶
The land use module manages agricultural land allocation across the global food system. It translates high-resolution gridded data (0.05° × 0.05°, approximately 5.6 km at the equator) into optimization variables that balance:
Cropland for producing grains, oilseeds, fruits, and other crops
Pasture for grassland-based livestock feed
Spared land that can be taken out of production for carbon sequestration
The module uses a dual-pool structure that separates cropland and pasture, enabling independent control over land allocation and expansion for each use type.
Land Pool Structure¶
The model uses separate land pools for cropland and pasture, with distinct supply pathways and the option to spare land for carbon sequestration:
Land flow structure showing supply paths to cropland and pasture pools, with sparing options for carbon sequestration.¶
Cropland Pool¶
Bus pattern: land:cropland:{region}_c{class}_{water}
The cropland pool serves all crop production. Each pool is specific to a region, resource class, and water supply (rainfed or irrigated). Supply comes from:
Existing cropland baseline (green arrows): Land currently in agricultural use, available without land-use-change emissions
New land conversion (yellow arrows): Expansion onto previously non-agricultural land, incurring LUC emissions
Pasture Pool¶
Bus pattern: land:pasture:{region}_c{class}
The pasture pool serves grassland production for ruminant feed. Pasture pools are water-agnostic (no irrigated/rainfed distinction). Supply comes from:
Existing cropland: Baseline agricultural land diverted to pasture use
New land conversion: Expansion with LUC emissions
Current cropland-suitable grassland: Existing grassland on land suitable for crops (GAEZ)
Current marginal grassland: Existing grazing-only grassland that is not suitable for crops
Spared Land¶
Both existing cropland and both current grassland pools can be spared—taken out of production to earn carbon sequestration credits from vegetation regrowth:
spare_landlinks: Spare existing cropland (purple dashed arrows)spare_existing_grasslandlinks: Spare existing grassland
This enables the model to evaluate trade-offs between agricultural production and carbon sequestration. See Land Use Change for how land-use-change emissions are calculated, and Spared land regrowth for details on sequestration credit eligibility.
Validation Controls¶
For validation scenarios, new land supply can be disabled independently:
validation.disable_new_cropland: Prevents new land from supplying cropland poolsvalidation.disable_new_pasture: Prevents new land from supplying pasture poolsvalidation.disable_spared_cropland: Prevents baseline cropland from being sparedvalidation.disable_spared_grassland: Prevents existing grassland pools from being spared
This allows validating against historical production patterns without spurious land-use-change from the optimizer reallocating land.
Spatial Resolution¶
The model operates at sub-national regional resolution, balancing spatial detail with computational tractability.
Regional Clustering¶
Optimization regions are created by clustering administrative units (GADM level 1) based on spatial proximity:
Simplification: Simplify GADM geometries to reduce complexity while preserving boundaries
Country selection: Filter to configured countries (
countrieslist in config)Clustering: Aggregate administrative units using k-means clustering on centroids
Output: GeoJSON with region polygons (
processing/{name}/regions.geojson)
Global model coverage showing optimization regions created by clustering administrative units.¶
Key configuration parameters:
aggregation.regions.target_count: Number of regions to create (e.g., 400)aggregation.regions.allow_cross_border: Whether regions can span country boundaries (typicallyfalse)aggregation.simplify_tolerance_km: Geometry simplification tolerance
Resource Classes¶
Within each optimization region, agricultural land is heterogeneous—some areas have high yield potential, others low. To capture this heterogeneity without creating a separate decision variable for each gridcell, the model groups land into resource classes based on yield potential quantiles.
Concept¶
For example, with quantiles [0.25, 0.5, 0.75], each region has 4 resource classes:
Class 0: Bottom 25% of yield potential (lowest quality land)
Class 1: 25th–50th percentile
Class 2: 50th–75th percentile
Class 3: Top 25% of yield potential (highest quality land)
This stratification allows the model to:
Preferentially allocate high-value crops to high-quality land
Avoid optimistic bias from averaging yields across heterogeneous land
Capture marginal land-use decisions at the extensive margin
Resource classes are computed from GAEZ yield potentials by taking the maximum attainable yield across all crops for each gridcell, then binning into quantiles within each region.
Resource class stratification within an example region. Darker colors indicate higher productivity classes. The spatial pattern reveals how land quality varies across the landscape.¶
Land Availability¶
Land availability is constrained by suitability from GAEZ, which indicates what fraction of each gridcell is suitable for agriculture.
Suitability-Based Limits¶
GAEZ provides separate suitability rasters for rainfed and irrigated production. The aggregation process:
Load suitability fractions (0–1) for each crop and water supply
Multiply by cell area (hectares) to get suitable area
Aggregate by region, resource class, and water supply
The regional_limit parameter (e.g., 0.7) caps total usable land at a fraction of the suitable area, representing institutional, ecological, or social constraints on agricultural expansion.
Irrigated vs. Rainfed¶
The model distinguishes between irrigated and rainfed production:
- Rainfed
Uses rainfall for water supply
Available on suitable cropland not equipped for irrigation
Generally lower yields than irrigated
- Irrigated
Requires irrigation infrastructure
Only available on land equipped for irrigation (from GAEZ dataset)
Higher yields but consumes blue water (see Crop Production for water constraints)
For each region and resource class, the model maintains separate land variables for rainfed and irrigated production.
Current Grassland: Convertible vs Marginal¶
The model splits current grassland into two explicit pools within each (region, resource_class):
Cropland-suitable current grassland: Current grassland area that lies on land suitable for crop growth (GAEZ suitable)
Marginal current grassland: Current grazing-only grassland that is not suitable for crop growth
Data sources and split:
build_current_grassland_areaprovides total current grassland from ESA CCI land-cover fractionsbuild_grazing_only_landestimates the marginal (grazing-only) subsetCropland-suitable current grassland is computed as
max(current_grassland - grazing_only, 0)
Global grassland availability. Left panel: gridcell fraction that is grassland. Right panel: share of each region’s land budget in the grassland pool.¶
Both current grassland pools flow to the pasture pool via existing_grassland_to_pasture links. Both can also be spared for carbon sequestration via spare_existing_grassland links.
Only the cropland-suitable current grassland pool is subtracted from the rainfed new-land expansion potential, preventing double-counting while preserving the distinct marginal grassland pool.
This separation ensures that:
Ruminant feed has a realistic existing grassland supply without depleting cropland
Every hectare is accounted for exactly once
Sparing decisions reflect the actual opportunity cost of each land type
Land Use Change¶
When the model allocates more land to agriculture than the existing baseline, this represents land use change (LUC). The environmental impacts—primarily carbon emissions from clearing vegetation—are captured via efficiency coefficients on the conversion links.
See Environmental Impacts for details on how LUC emissions are calculated from above-ground biomass, soil organic carbon, and foregone regrowth potential.
Land Conversion Costs¶
Expanding agriculture onto new land incurs physical investment costs for clearing vegetation, stumping, grading, and initial soil preparation. These costs are applied as marginal_cost on land_conversion (cropland expansion) and new_to_pasture (pasture expansion) links, differentiated by cover type:
Forest → agriculture:
conversion_cost_forest_usd_per_ha(default: 8,000 USD/ha) — covers clearing dense vegetation, stumping, grading, and soil preparation.Non-forest → agriculture:
conversion_cost_nonforest_usd_per_ha(default: 2,000 USD/ha) — lighter clearing of brush and grassland with soil preparation.
These values are in the model’s currency base year (2024 USD).
Since these are one-time investment costs, they are annualized using a capital recovery factor (CRF):
where r is the discount rate (discount_rate, default 0.05) and n is the investment horizon (investment_horizon, default 25 years, matching the LUC emissions horizon). The annualized cost is then converted to model units (bnUSD/Mha) and applied to the conversion links.
Sources and rationale for default cost values. Direct estimates of the full private cost of converting land to crop-ready agriculture are sparse in the academic literature, which tends to focus on opportunity costs and returns from conversion rather than upfront clearing expenditure. The default values are chosen as middle-of-the-road estimates based on the following sources (original values inflation-adjusted to approximate 2024 USD where needed):
Forest clearing:
The FAO Soils Bulletin 19 (FAO, 1979) reports that manual clearing of tropical high forest requires ~86 man-days/ha, while previously logged forest requires ~50 man-days/ha. At modern developing-country wages, this implies $430–1,300/ha for labor alone, before stumping, grading, and soil preparation.
Margulis (2004), in World Bank Working Paper No. 22, reports ~$500/ha (~$830/ha in 2024 USD) for basic slash-and-burn clearing in the Brazilian Amazon — the cheapest method, representing a lower bound.
An IUCN workshop on land clearing economics (IUCN, 2002) found that mechanized clearing of secondary forest in Indonesia costs $600–1,800/ha (~$1,050–3,150/ha in 2024 USD), while fire-based clearing costs $200–595/ha.
Nhiuane et al. (2024), in Trees, Forests and People, report clearing costs of $302–508/ha for slash-and-burn and $1,662/ha for conventional logging-based clearing in Mozambique.
Oil palm plantation development in Southeast Asia, which includes clearing, stumping, terracing, and establishment, costs $3,000–8,000/ha (Sumarga & Hein, 2014; industry reports).
The default of 8,000 USD/ha represents the full cost of bringing forested land to a crop-ready state at commercial scale, including clearing, stumping, root removal, grading, soil preparation, and basic access infrastructure. This is above the cost of tree-felling alone, but below the total cost of plantation establishment which includes planting and multi-year maintenance.
Non-forest clearing:
The FAO Soils Bulletin 19 (FAO, 1979) notes that jungle clearing costs up to 120 times as much as light brush clearing.
The IUCN (2002) workshop describes alang-alang grassland clearing costs as “substantially lower” than secondary forest, implying a ratio of roughly 3:1 for the same clearing method.
Nhiuane et al. (2024) report $302–508/ha for slash-and-burn clearing of savanna woodland in Mozambique.
The default of 2,000 USD/ha covers mechanized clearing of brush and grassland plus soil preparation, consistent with a 4:1 forest-to-non-forest ratio that falls within the range supported by the FAO and IUCN data.
References:
FAO (1979). Land Clearing and Development. FAO Soils Bulletin 19, Chapters II–III. Rome: FAO. [Manual methods] [Mechanized methods]
Margulis, S. (2004). Causes of Deforestation of the Brazilian Amazon. World Bank Working Paper No. 22. Washington, DC: World Bank. [PDF]
IUCN (2002). Workshop Report: Land Clearing on Degraded Lands for Plantation Development. IUCN Fire & Forest Programme. [PDF]
Nhiuane, O., Lisboa, S. N., Popat, M. & Sitoe, A. (2024). Quantifying the costs and benefits of forest conversion through slash-and-burn cultivation and conventional logging. Trees, Forests and People, 15, 100504. doi:10.1016/j.tfp.2024.100504
Sumarga, E. & Hein, L. (2014). Mapping ecosystem services for land use planning, the case of Central Kalimantan. Environmental Management, 54(1), 84–97. doi:10.1007/s00267-014-0282-2
Configuration Reference¶
Key configuration parameters for land use (in config/default.yaml):
aggregation:
regions:
target_count: 400
allow_cross_border: false
method: "kmeans"
simplify_tolerance_km: 5
simplify_min_area_km: 25
resource_class_quantiles: [0.25, 0.5, 0.75]
# Data source for determining irrigated land area when aggregating by region/resource class.
# - "current": use GAEZ "land equipped for irrigation" dataset (same area for all crops)
# - "potential": use GAEZ irrigated suitability rasters (crop-specific potential area)
irrigated_area_source: "current"
land:
regional_limit: 1.0 # fraction of each region's potential cropland that is made available.
land_use_cost_usd_per_ha: 0.0 # Small optional per-hectare land-use cost to regularize land allocation (set >0 to activate)
conversion_cost_forest_usd_per_ha: 8000 # Overnight investment cost for converting forested land to agriculture (2024 USD/ha); sources in docs/land_use.rst
conversion_cost_nonforest_usd_per_ha: 2000 # Overnight investment cost for converting non-forested land to agriculture (2024 USD/ha); sources in docs/land_use.rst
investment_horizon: 25 # Years over which to annualize land conversion investment costs
discount_rate: 0.05 # Annual discount rate for annualizing land conversion investment costs
filtering:
min_crop_yield_t_per_ha: 0.01 # Minimum yield for crop links (t/ha); filters ~1% of entries
min_grassland_yield_t_per_ha: 0.05 # Minimum yield for grassland links (t/ha); filters ~6% of entries
min_area_ha: 100 # Minimum land area (ha); filters very small resource classes
# --- section: water ---
water:
# Water supply scenario determines which dataset is used for regional water limits:
# - "sustainable": Water Footprint Network blue water availability by basin (Hoekstra & Mekonnen 2011)
# Represents sustainable water extraction limits.
# - "current_use": Huang et al. (2018) gridded irrigation water withdrawals
# Represents actual/current agricultural water use, useful for validation.
supply_scenario: "current_use"
# Reference year for Huang irrigation data (only used when supply_scenario is "current_use")
huang_reference_year: 2010
Land Slack¶
Validation runs that pin observed harvested area may encounter land-class mismatches. To maintain feasibility without globally loosening land limits, each land bus can receive a land_slack generator:
Controlled by
validation.land_slack: trueMarginal cost set by
land.slack_marginal_cost(USD per Mha)Default ~5000 USD/ha ensures slack activates only as a last resort
Multi-Cropping Land Correction¶
In many regions, the total harvested area (summed across all crops on a cropland bus) exceeds the physical cropland supply because multiple crops are grown on the same land per year (multi-cropping). Without correction, the model would need land slack or new land conversion to accommodate what is actually existing multi-cropped land.
The add_multi_cropping_land_correction function in land.py adds non-extendable generators directly on deficit cropland buses after crop production links are built:
Computes harvested area per cropland bus by summing
baseline_area_mhaacross crop production linksComputes existing supply per cropland bus from
land_uselink capacitiesAdds generators sized to
max(harvested − supply, 0)on each deficit bus
These generators:
Use carrier
multi_cropping_land_correction(unit: Mha)Are named
supply:multi_cropping_correction:{region}_c{class}_{water}Have the same marginal cost as existing land use (no penalty)
Are non-extendable (the correction is sized exactly to the observed deficit)
Do not connect to emission buses (no LUC emissions)
Do not affect pasture pools (cropland buses only)
This correction runs unconditionally in all model configurations.
Relationship to multi-cropping links. The model also has explicit multi-cropping links (see Crop Production) that let the optimizer allocate additional crop cycles on the same land within a single year. However, those links are disabled when production_stability is enabled or use_actual_production is true, because reliable baseline data on multi-cropping patterns is not available. In those modes, the land correction generators fill the role of accounting for the extra harvested area that multi-cropping creates—without them, the model would face an artificial ~55 Mha land deficit and require slack or new land conversion to remain feasible.