previous contents next
Previous: Introduction Next: Network and Network Elements


Enif - The Basic Concepts

When the Enif project started in the summer of 1999, its design was approached with the following goals in mind:

  1. Provide all functional features needed within the framework of a consistent modern graphical user interface.
  2. Remain compatible with all current EMME/2 applications at the data bank level. This compatibility implies being able to access the data available in these data banks. It does not imply that Enif should be able to produce identical output as does EMME/2.
  3. Run with identical functionality on all platforms on which the current version of EMME/2 is running. This means that Enif must be able to run both under the Microsoft Windows family of operating systems as well as under the various flavors of Unix supported by EMME/2.
  4. Build a solid base which is strong enough, both on the conceptual level and on the implementation side, to build upon the future developments of EMME/2 for many years to come.
  5. Provide useful functionality to the EMME/2 users within a reasonably short time frame.

In the past 15 months most effort went into the development of the general concepts and the basic mechanisms needed for their implementation. These concepts are more important for understanding the ``philosophy'' behind Enif than the details of graphical interface presented to the user on screen.

The basic design of Enif is shown in Figure 1 in the form of a block diagram. The central part of the diagram describes the internal concepts which, as such, are not specific for the graphical user interface, but form the abstract pilers on which Enif is built. This includes the internal representation of the network, the attributes, the expressions and the parameters, which are the basic objects used to build user configurable objects in Enif.

The graphical interface part of Enif is depicted on the right hand side of Figure 1. It is based on an abstract network plane which receives the graphical information generated by a set of mappers using an abstract drawing and a writing tool we call the stylus.

Other functionalities can be based on the foundation provided by Enif, as indicated in the upper left corner of the block diagram. One example of this is the list generator.

The access to the EMME/2 data bank is completely modular and separated from the rest of the Enif code. This implies that accessing network data from other sources than an EMME/2 data bank could be achieved by simply providing the corresponding alternate network I/O modules, should this ever be required.

Figure 1: General design of Enif
\includegraphics[width=\textwidth, keepaspectratio]{general.ps}

In the following sections, all these fundamental building blocks of Enif will be discussed in more detail. While reading on, it is a good idea to return back to Figure 1 from time to time. What at the beginning might look like a bunch of empty phrases, will --hopefully!-- after having reached the end of this paper be filled with concrete meaning and serve as a useful summary of the functionality of Enif.

In order to give an idea how Enif presents itself on the screen, a typical Enif window is shown in Figure 2. It shows the zonal productions and attractions colored according to the corresponding mode share of the auto mode.

The main part of the Enif window shows the current view of the network plane. Located above it, the tabbed mapper control dialogs are used to access the configurable parameters of the current plot configuration. At the left side of the window, the view controls can be used to change the current view or to send the current plot to the printer. A menu bar on the top gives access to the various available tools and options, and, finally, the status bar on the very bottom of the window is used to display transient messages.

 

Figure 2: A typical Enif window
\includegraphics[width=\textwidth, keepaspectratio]{modsplit.ps}


previous contents next
Previous: Introduction Next: Network and Network Elements

Enif - Toward a New Interface for EMME/2, Heinz Spiess, October 2000