The major modules of the LUCAS model are diagrammed in Figure 1. The Socioeconomic Model Module is handled by economists who use information in the common database to generate the mulitnomial logit coefficients necessary to calculate the transition probability matrix (TPM) entries. The other two modules, the Landscape Change Model and Impacts Model Modules, comprise the LUCAS program. LUCAS was designed to be a modular system, with the potential for additional ecological impact or socioeconomic modules to be added later. This need for modularity lead to the choice of C++ as the programming language. C++ is well suited to modularity because of its ``object-oriented'' view of data and methods.
Figure 4: C++ Classes used in implementing LUCAS.
The primary concern when designing these objects was flexibility and the ability to adapt existing code to different or additional land use analysis. As with any program, flexibility can adversely affect performance, so occasionally some flexibility had to be compromised.
Figure 4 shows the relationship among the C++ class objects used in the implementation of LUCAS. The Composite, Matrix, and Stats classes are the primary units in the Landscape Change Model Module. A user selects a particular scenario to be run via the GUI discussed in Section 4. This scenario corresponds to a file which specifies the logit coefficients and necessary map layers for the simulation. This scenario information is managed by the Parameters object which notifies other objects of the specifics of the current scenario.
The Composite class takes many RasterFile objects, input map layers corresponding to attributes in the landscape condition label (LCL), and creates a ``composite'' map. This virtual map is then traversed via LandscapeConditionLabel objects which create a LCL vector out of the various map layers. The Matrix class, also contained in the Composite class, manages the TPM and random number generator. Landscape change is accomplished by passing a LandscapeConditionLabel object to the Matrix object which calculates the transition probabilities for this particular LCL. A pseudorandom number is generated and the new land cover type for this grid cell is determined. A map of all of these grid cells comprises a new land cover output RasterFile object. This map is passed to the Stats object which calculates the statistics discussed in Section 3.3.
The Impacts Model Module is embodied by the Impacts class object. The new land cover RasterFile object, along with the other original map layer RasterFile objects, are used to produce new map layer objects corresponding to the impacts being analyzed. Currently only the habitat suitability of an area for certain species in Table 1 is studied.
The resulting land cover and habitat maps can be viewed via the GRASS monitor which is driven by the Graphics object.