|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.ObjectAbstractNamedObject
edu.bonn.xulu.model.AbstractXuluModel
edu.bonn.xulu.model.AbstractStepModel
edu.bonn.xulu.plugin.model.sleuth.UrbanGrowthModel
public class UrbanGrowthModel
Urban Growth Model
This Model simulates urban growth. It is based on the algorithm of the SLEUTH-Model, which has originally been written in C code and could
be run under UNIX. The SLEUTH-Model has been developed by Keith Clarke at the UC Santa Barbara, CA, within the Gigalopolis Project, funded by the
USGS. Therefore it is under public domain. The name SLEUTH has been derived from the image input requirements of the model:
Slope, Land cover, Exclusion, Urbanization, Transportation, and Hillshade.
In the original SLEUTH-Model the core Urban Growth Model (UGM) calls and drives an additional land cover deltatron model (LCD). Both models are
tightly coupled, but the UGM can be run separately. Here, only the UGM part of the SLEUTH-Model has been translated into JAVA. Minor changes
in the code have been necessary. Those changes are explained within the code. In general, the UGM is a Cellular Automaton (CA). All CA elements
in the code have been untouched and are the same as in the original UGM.
This is the basic UGM code, a plain Cellular Automaton. Additional functions are implemented in other models, like:
UrbanGrowthModel_MC
): The same model algorithm like this, but with Monte Carlo Iterations. The resulting map shows the probabilities for new urbanization (@link MultipleResolutionValidation MultipleResolutionValidation)UrbanGrowthModelCalibration
): The same model algorithm like this, but in order to calibrate the model by finding the correct parameter values with the method of Multiple Resolution Comparison (@link MultipleResolutionValidation)UrbanGrowthModelSelfModifying
): The same model algorithm like this, but with the possibility of self-modification of the parameter values.UrbanGrowthModelCalibrationSelfModification
): The same model algorithm like this, but in order to calibrate the model by finding the correct parameter values with the method of Multiple Resolution Comparison (@link MultipleResolutionValidation)
While calibrating the model modifies the parameter values.inputGrid
): A grid containing the input (initial) urban land cover.areaRestr
): A grid containing the area restrictions (e.g. water, natural reserves, areas with lower probability, etc.). A value of 1 indicates total restriction and 0 total availability for new urbanization. Floating point values in between allow gradual availability for urbanization.roadGrid
): A grid containing the road network.slopeGrid
): A grid containing the slope.steps
): The number of time steps to compute.spread
): The Spread-Coefficient.disp
): The Dispersion(Diffusion)-Coefficient.breed
): The Breed-Coefficient.roadGravity
): The Road Gravity-Coefficient.slope
): The Slope-Coefficient.criticalSlope
): The Percentage at which urbanization on steep slopes is not possible.outputGrid
): A grid containing the output, that is actualized in every time step.outStep
): A Grid List containing the results for every time step.
UrbanGrowthModelContentManager
Field Summary | |
---|---|
protected int |
areaHeight
|
protected int |
areaMaxX
|
protected int |
areaMaxY
|
protected int |
areaMinX
|
protected int |
areaMinY
|
protected WritableGrid |
areaRestr
|
protected int |
areaWidth
|
protected double |
breed
|
protected double |
criticalSlope
|
protected double |
disp
|
protected double |
disp_value
|
protected WritableGrid |
inputGrid
|
protected double |
max_RG_value
|
protected double |
max_search_index
|
protected static int[][] |
NEIGHBOR
Moore Neighborhood as a two dimensional array. |
protected WritableGrid |
outputGrid
|
protected MultiGrid |
outStep
|
protected PropertyReadAccess |
RA_areaRestr
|
protected PropertyReadAccess |
RA_breed
|
protected PropertyReadAccess |
RA_criticalSlope
|
protected PropertyReadAccess |
RA_disp
|
protected PropertyReadAccess |
RA_inputGrid
|
protected PropertyReadAccess |
RA_roadGravity
|
protected PropertyReadAccess |
RA_roadGrid
|
protected PropertyReadAccess |
RA_slope
|
protected PropertyReadAccess |
RA_slopeGrid
|
protected PropertyReadAccess |
RA_spread
|
protected PropertyReadAccess |
RA_steps
Saves the ContentManager for the model. |
protected double |
rg_value
|
protected double |
roadGravity
|
protected WritableGrid |
roadGrid
|
protected double |
slope
|
protected WritableGrid |
slopeGrid
|
protected HashMap<Number,Number> |
slopeLUT
A Lookup-Table which relates actual slope values to slope coefficient influenced probabilities. |
protected double |
spread
|
protected PropertyReadAccess |
steps
|
protected PropertyWriteAccess |
WA_outputGrid
|
protected PropertyWriteAccess |
WA_outStep
|
Fields inherited from class edu.bonn.xulu.model.AbstractStepModel |
---|
stepCount |
Fields inherited from class edu.bonn.xulu.model.AbstractXuluModel |
---|
contManager, disposed, events, initialised, listeners, modelResourceProvider, running, statusOut, stopped |
Constructor Summary | |
---|---|
UrbanGrowthModel()
|
|
UrbanGrowthModel(UrbanGrowthModelContentManager contManager)
Creates a new model instance. |
Method Summary | |
---|---|
int[][] |
BreedGrowth(int X,
int Y)
This is phase 2 of the growth cycle. |
int |
calculateNeighbors(int X,
int Y,
float NbValue)
This method returns the number of neighbors of a cell X/Y. |
int |
countSetIndividuals()
This function counts the starting individual cells for the urban growth model run and sets the outputGrid to the base inputGrid. |
int |
countTempUrbanCells(boolean[][] tmpGrid)
Returns the number of urban cells in the temporary cell array. |
boolean[][] |
DispersionGrowth(double disp_value,
double breed)
This is phase 1 of the growth cycle, where spontaneous growth occurs (DISPERSION). |
boolean[][] |
EdgeGrowth(double spread)
This is phase 3 of the growth cycle, where edge growth appears based on the urban pixels that exist at this time (including the new spontaneous and spreading center pixels). |
double |
getSlopeExp(double slope,
int MaxSlopeResistance)
Calculates the exp value that is needed to generate the slope lookup-table |
HashMap<Number,Number> |
getSlopeLookup(int slopeMax,
double exp,
double criticalSlope)
|
int |
getSlopeMax()
Calculates the maximum slope from the Slope Raster. |
double |
getSlopeValue(int X,
int Y,
HashMap<Number,Number> slopeLUT)
Takes a slope value from the slope lookup-table depending on the given cell in the slope raster. |
void |
performModelDispose()
like in every model: frees the resources |
void |
performModelInit()
Initializes the model. |
void |
performModelStep(int stepNo)
This is the main run of the Urban Growth Model. |
boolean[][] |
RoadGrowth(boolean[][] tmpGrid,
double rg_value,
double breed,
double disp)
This is phase 4 of the growth cycle, where growth along roads appears. |
int[] |
roadWalk(int X,
int Y,
double disp)
This method performs a walk along a road starting from an initial cell with the coordinates X, Y. |
void |
writeToGrid(boolean[][] tmpGrid)
Writes a temporary grid array with boolean values to the outputGrid. |
Methods inherited from class edu.bonn.xulu.model.AbstractStepModel |
---|
fireModelStepFinished, fireModelStepStarted, getStepCount, performModelStart |
Methods inherited from class edu.bonn.xulu.model.AbstractXuluModel |
---|
addModelListener, checkBreakingCommands, determineCaption, disposeModel, fireModelDisposed, fireModelEvent, fireModelInitialised, fireModelStarted, fireModelStopped, getContentManager, getEvents, getModelSpecificGUI, getResourceProvider, getStatusOut, initModel, isDisposed, isInitialised, isRunning, isStopped, performError, releaseAccess, removeModelListener, resetCaptions, setStatusOut, startModelling, stopModelling |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface edu.bonn.xulu.model.XuluModel |
---|
addModelListener, disposeModel, getContentManager, getEvents, getModelSpecificGUI, getResourceProvider, getStatusOut, initModel, isDisposed, isInitialised, isRunning, isStopped, performError, removeModelListener, setStatusOut, startModelling, stopModelling |
Field Detail |
---|
protected PropertyReadAccess RA_steps
UrbanGrowthModelContentManager
protected PropertyReadAccess RA_inputGrid
protected PropertyWriteAccess WA_outputGrid
protected PropertyReadAccess RA_areaRestr
protected PropertyReadAccess RA_roadGrid
protected PropertyReadAccess RA_slopeGrid
protected PropertyReadAccess RA_spread
protected PropertyReadAccess RA_disp
protected PropertyReadAccess RA_breed
protected PropertyReadAccess RA_roadGravity
protected PropertyReadAccess RA_slope
protected PropertyReadAccess RA_criticalSlope
protected PropertyWriteAccess WA_outStep
protected PropertyReadAccess steps
protected WritableGrid inputGrid
protected WritableGrid outputGrid
protected WritableGrid areaRestr
protected WritableGrid roadGrid
protected WritableGrid slopeGrid
protected double spread
protected double disp
protected double breed
protected double roadGravity
protected double slope
protected double criticalSlope
protected MultiGrid outStep
protected static final int[][] NEIGHBOR
protected HashMap<Number,Number> slopeLUT
protected int areaMinX
protected int areaMinY
protected int areaMaxX
protected int areaMaxY
protected int areaWidth
protected int areaHeight
protected double disp_value
protected double max_RG_value
protected double rg_value
protected double max_search_index
Constructor Detail |
---|
public UrbanGrowthModel(UrbanGrowthModelContentManager contManager)
public UrbanGrowthModel()
Method Detail |
---|
public void performModelInit()
XuluModel
the resources are initalized.
performModelInit
in class AbstractXuluModel
public void performModelDispose()
performModelDispose
in class AbstractXuluModel
public void performModelStep(int stepNo)
performModelStep
in interface StepModel
performModelStep
in class AbstractStepModel
stepNo
-
IllegalArgumentException
public int countSetIndividuals()
public int getSlopeMax()
public double getSlopeValue(int X, int Y, HashMap<Number,Number> slopeLUT)
public double getSlopeExp(double slope, int MaxSlopeResistance)
slope
- MaxSlopeResistance
-
public HashMap<Number,Number> getSlopeLookup(int slopeMax, double exp, double criticalSlope)
public boolean[][] DispersionGrowth(double disp_value, double breed)
BreedGrowth
).
public int[][] BreedGrowth(int X, int Y)
RoadGrowth
).
X
- Y
-
public boolean[][] EdgeGrowth(double spread)
public boolean[][] RoadGrowth(boolean[][] tmpGrid, double rg_value, double breed, double disp)
roadWalk
), and moves a new cell along the road
to a defined distance. If the new cell is not on a road, it looks for a road in a defined neighborhood (by rg_value
).
If a road is found, it starts a "road walk" from there.
tmpGrid
-
public int[] roadWalk(int X, int Y, double disp)
X
- Y
-
public int calculateNeighbors(int X, int Y, float NbValue)
X
- Y
- NbValue
-
public int countTempUrbanCells(boolean[][] tmpGrid)
public void writeToGrid(boolean[][] tmpGrid)
tmpGrid
-
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |