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.
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)
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).
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);
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