Five coefficient, or parameter, values affect how the growth rules are applied. These values are calibrated by comparing simulated land cover change to a study area's historical data. The descriptions below outline the five coefficient values, which types of growth they affect, and how the applied values are derived from the coefficients.
dispersion_coefficient; breed_coefficient; spread_coefficient; slope_coefficient; road_gravity_coefficient
spontaneous growth: the dispersion_coefficient (previously referred to as diffusion_coefficient) controls the
number of times a pixel will be randomly selected for possible urbanization.
dispersion_value = ((dispersion_coeff * 0.005) * sqrt (rows_sq + cols_sq))
so that dispersion_value at its maximum (dispersion_coeff == 100) will be 50% of the image diagonal.
for (k=0; k<dispersion_value; k++)
{
select pixel (i,j) at random
try to urbanize (i,j)
}
road influenced growth: the dispersion_coefficient, possibly influenced by road weighting, controls how many "steps", or pixels, make up a random walk along the transportation network on a road trip.
How the dispersion_coefficient affects road influenced growth has been altered through a patch application. Road weighting will no longer affect this step. If using a weighted roads data base please see a desription of patch.
run_value = (roads(i, j) / max_road_value* dispersion_coefficient)
where run_value is the maximum number of steps traveled along the road network by an urban pixel. Run_value is at a maximum of 100 when (road(i,j) == max_road_value) and (dispersion_coefficient == 100). For further explanation of these variables see road weighting.
new spreading center growth: the breed_coefficient determines the probability of a spontaneous growth
pixel becoming a new spreading center.
given: a newly urban pixel (i,j) from
the spontaneous growth step
if (random_number < breed_coefficient)
{
try
to urbanize two (i,j) neighbors
}
road influenced growth: the breed_coefficient determines the number of times a road trip will be taken.
for (k = 0; k <= breed_coefficient; k++)
{
head
off on a road trip
}
edge growth: the spread_coefficient determines the probability that any pixel that is part of a spreading
center (a cluster of urban pixels > 2 in 3x3 neighborhood) will generate
an additional urban pixel in its neighborhood.
if (random_number < spread_coefficient)
{
try
to urbanize a neighboring pixel
}
Lower slopes are easier to build upon that steeper slopes, and eventually,
a percent slope will be reached at which building is impossible (CRITICAL_SLOPE).
The relative pressure to build upon ever steeper slope is dynamic and
related to the proportion of flatland available and the steeper area's
proximity to an already established settlement.
The slope_coefficient affects all growth rules in
the same way:
When a location is being tested for suitability of urbanization, the slope
at that location is considered. Instead of enforcing a simple linear relationship
between the percent of slope and urban development, the slope_coef acts
as a multiplier. If the slope coefficient is high, increasingly steeper
slopes are less likely to urbanize. As the slope coefficient gets closer
to zero, an increase in local slope has less affect on the likelihood
of urbanization (figure 1).
Figure 1
This relationship is enforced by creating a lookup table which relates actual slope values to slope coefficient influenced probabilities.
exp = slope_coefficient / MAX_SLOPE_RESISTANCE_VALUE / 2.0
where MAX_SLOPE_RESISTANCE == 100. Using this exp value a lookup table is then built by:
for ( i = 0; i < lookup table size; i++)
{
if ( i < CRITICAL_SLOPE )
{
val = ( CRITICAL_SLOPE - i ) / CRITICAL_SLOPE;
lookup table[i] = 1.0 - pow (val, exp);
}
else
{
lookup table[i] = 1.0;
}
}
.
Road gravity coefficient
road influenced growth: the maximum search distance for a road from a pixel selected for a road trip is determined as some proportion of the image dimensions.
rg_value = (rg_coeff/MAX_ROAD_VALUE) * ((row + col) / 16.0)
where MAX_ROAD_COEFF_VALUE is defined as 100, and (row, col) are the row and column pixel counts, so that rg_value at its maximum (rg_coeff == 100) will be 1/16 of the image dimensions. If the rg_coeff value is less than 100, then the rg_value will be some proportion less than 1/16 of the image dimensions.
max_search_index = 4 * (rg_value * (1 + rg_value))
where rg_value defines maximum number of neighborhoods from selected newly urban pixel to search for a road.
The first neighborhood (rg_value == 1) is made up of the selected urban pixel's adjacent 8 cells. The second neighborhood (rg_value == 2) would be the 16 pixels outwardly adjacent to the first neighborhood, etc. In this way the outward search for a road will continue until (a) a road is found, or (b) the search distance is greater than max_search_index.
back to Growth

