edu.bonn.xulu.plugin.model.ca.agric
Class ImpetusCellularAutomaton

java.lang.Object
  extended by AbstractNamedObject
      extended by edu.bonn.xulu.model.AbstractXuluModel
          extended by edu.bonn.xulu.model.AbstractStepModel
              extended by edu.bonn.xulu.plugin.model.ca.MultiCellularAutomaton
                  extended by edu.bonn.xulu.plugin.model.ca.agric.ImpetusCellularAutomaton
All Implemented Interfaces:
StepModel, XuluModel

public class ImpetusCellularAutomaton
extends MultiCellularAutomaton

Dieser zellulare Automat modelliert die Ausbreitung von Feldflaechen (Ackerland) im Impetus-Untersuchungsgebiet.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)

Nested Class Summary
static class ImpetusCellularAutomaton.CAContentManager
          Diese Klasse definiert einen ModelContentManager fuer den Impetus-Zellularen-Automat.
 
Field Summary
protected  WritableGrid dhm
          Raster mit Gelaende-Hoehe (DHM).
protected  WritableGrid dsm
          Raster mit Gelaende-Neigung (DSM).
protected  WritableGrid lucHist
          Raster fuer LUC-Historie.
 
Fields inherited from class edu.bonn.xulu.plugin.model.ca.MultiCellularAutomaton
areaCount, areaMapping, areas, BASE_RESCOUNT, baseLUC, cellSize, luccThreshold, luccType, NEIGHBORHOOD_AREA, outLUC
 
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
ImpetusCellularAutomaton()
          Erzeugt einen neuen CA.
 
Method Summary
 void cellChanged(Point p, CASettlementArea area, int newLUC, int prevLUC)
          Setzt die LUC-Historie fuer eine Zelle auf 0 zurueck.
protected  void checkBrache()
          Prueft fuer jede Zelle des Untersuchungsgebiets, ob die maximale Nutzungsdauer erreicht ist.
 double getPreferenceValue(Point p, int luc, CAArea area, int areaNo)
          Bewertet eine Zelle des Untersuchungsgebiets hinsichtlich des LUC-Typs 'Ackerland'.
protected  void incLUCHistory()
          Erhoeht die Nutzungsdauer aller Zellen im Untersuchungsgebiet um 1.
 void performModelDispose()
          Zerstoert das Modell.
 void performModelInit()
          Initialisiert das Modell.
 void performModelStep(int stepNo)
          Modelliert genau einen Zeitschritt.
 
Methods inherited from class edu.bonn.xulu.plugin.model.ca.MultiCellularAutomaton
cellChanged
 
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

dhm

protected WritableGrid dhm
Raster mit Gelaende-Hoehe (DHM).


dsm

protected WritableGrid dsm
Raster mit Gelaende-Neigung (DSM).


lucHist

protected WritableGrid lucHist
Raster fuer LUC-Historie.

Constructor Detail

ImpetusCellularAutomaton

public ImpetusCellularAutomaton()
Erzeugt einen neuen CA.

Method Detail

performModelInit

public void performModelInit()
Initialisiert das Modell.

Overrides:
performModelInit in class MultiCellularAutomaton

performModelDispose

public void performModelDispose()
Zerstoert das Modell. Alle gehaltenen Zugriffsrechte auf Ressourcen werden wieder freigegeben.

Overrides:
performModelDispose in class MultiCellularAutomaton

performModelStep

public void performModelStep(int stepNo)
Modelliert genau einen Zeitschritt.
  1. Zu Beginn wird fuer jede Zellen des Untersuchungsgebiets geprueft, ob die maximale Nutzungsdauer erreicht ist. Ggf. faellt die Zelle brach (checkBrache()).
  2. Es wird ein CA-Schritt modelliert (MultiCellularAutomaton.performModelStep(int)
  3. Die Nutzungsdauer (LUC-Historie) wird fuer alle Zellen des Untersuchungsgebiets um 1 erhoeht (incLUCHistory())

Specified by:
performModelStep in interface StepModel
Overrides:
performModelStep in class MultiCellularAutomaton
Parameters:
stepNo - Nummer des Zeitschritts

cellChanged

public void cellChanged(Point p,
                        CASettlementArea area,
                        int newLUC,
                        int prevLUC)
Setzt die LUC-Historie fuer eine Zelle auf 0 zurueck.

Parameters:
p - Raster-Koordinaten der umgewandelten Zelle
area - Gebiet dem die Zelle zugeordnet wurde
newLUC - LUC-Typ, der der Zelle zugeordnet wurde
prevLUC - LUC-Typ, den die Zelle zuvor hatte

getPreferenceValue

public double getPreferenceValue(Point p,
                                 int luc,
                                 CAArea area,
                                 int areaNo)
Bewertet eine Zelle des Untersuchungsgebiets hinsichtlich des LUC-Typs 'Ackerland'. Folgende LUC-Typen stellen ein Ausschluss-Kriterium dar: Daneben entstehen keine Acker-Flaechen in Zellen, die weiter als 5km vom Startpunkt der Siedlung (Area) entfernt sind oder deren Hangneigung 4� ueberschreitet.
Ein weiteres Ausschuluss-Kriterium stellen Brache-Zellen (14) dar, deren Brachezeit (ImpetusCellularAutomaton.CAContentManager.BRACHSTEPS) noch nicht erreicht wurde.
Alle anderen Zellen werden bewertet mit
value = 2 - distToStart/5000
wobei distToStart die Distanz (in m) zum Siedlungskern darstellt. Dies bewirkt, dass Zellen nahe des Siedlungskern generell bevorzugt werden (da 5000m Entfernung ein generelles Ausschlusskriterium darstellt, ist gewaehrleistet, dass value immer >= 1 ist!).

Specified by:
getPreferenceValue in class MultiCellularAutomaton
Parameters:
p - zu bewertende Zelle des Untersuchungsgebiets.
luc - LUC-Typ hinsichtlich dessen die Bewertung durchgefuehrt wird (wird nicht genutzt! Bewertung immer hinsichtlich Ackerland)
area - CA-Gebiet fuer das die Bewertung durchgefuehrt wird
areaNo - Nummer des Gebiets (wird nicht genutzt!)

checkBrache

protected void checkBrache()
Prueft fuer jede Zelle des Untersuchungsgebiets, ob die maximale Nutzungsdauer erreicht ist. Ist dies der Fall faellt die Zelle brach, d.h. sie wird in den Typ 14 (Brache) umgewandelt.


incLUCHistory

protected void incLUCHistory()
Erhoeht die Nutzungsdauer aller Zellen im Untersuchungsgebiet um 1.