| SAGA's first objective is to give (geo-)scientists an effective but easy learnable platform for the implementation of geoscientific methods. This is achieved by SAGA's unique Application Programming Interface (API). The second is to make these methods accessible in a user friendly way, what is first of all done by its Graphical User Interface (GUI). Together this results in SAGA's true strength: a fast growing set of geoscientifc methods ready to be used in numerous applications. SAGA is coded in the widespread and powerful C++ programming language and has an object oriented system design. Since version 2 SAGA uses the cross platform GUI library wxWidgets for user interface functionality. Because wxWidgets enables operating system independent software development, you can run SAGA with MS-Windows as well as with Linux. |
| SAGA's system architecture is modular. Its foundation is its Application Programming Interface (API), which provides data object models, basic definitions for the programming of scientific modules and numerous helpful classes and functions. Have a look at the SAGA API Documentation to get more information. Module libraries are containers for the scientific methods in form of so called modules. API as well as module libraries are not independently running executables but Dynamic Link Libraries (DLL) and have to be accessed through a front end program. A Graphical User Interface (GUI) is one of the two SAGA front ends. It allows the user to control the system, is responsible for module and data management as well as for data visualisations. Alternatively modules can be executed by using the second front end, the SAGA command line interpreter tool. |
The GUI allows the user to manage and visualise data as well as to perform data analyses and manipulations by executing modules. Besides menu, tool and status bars, which are typical for the majority of modern programs, SAGA interfaces the user with three additional control elements. The workspace control has sub windows for the modules, data and maps workspaces. Each workspace shows a tree view, through which associated workspace objects can be accessed. Loaded module libraries are listed in the modules workspace together with a list of their modules. Similarly created map views will be listed in the maps workspace and data objects in the data workspace, hierarchically sorted by their data type. Dependent on which object in a workspace is selected, the object properties control shows an object specific set of sub windows. Common to all objects are sub windows for settings and descriptions. In case a module is selected, the settings window is populated with the module parameters. Here the user can choose data sets and other options for the module execution. The description window gives information about the module and its parameters, as supplied by the module programmer. In case a data object is selected the settings window gives control to data specific properties, like data set name, memory handling and display behaviour. The data object description is complemented by a history, that allows to reconstruct how a data set was created. Other object windows allow to edit the attributes of vector layers or display a legend for a selected map. The message control contains three sub windows for general, module specific and error notifications.
Graphical User Interface |
A module can be executed either by a button in its related settings window or via a menu entry listed in the modules entry of the menu bar. The exact location of the menu entry has been specified by the module programmer, so that a geostatistical procedure like 'Universal Kriging' should be found in the sub category 'Geostatistics'. Before a module executes, the mandatory input parameters, i.e. the data to be analysed, have to be set. After calling a module via its menu entry, a dialogue box pops up, where this can be done (Fig.20). After confirming, that the parameters have been set correctly, the actual module execution starts. Information about the progress is given in the status bar and the message notification windows. The execution of the module can be stopped by the user by pressing the escape key or using the modules menu. But not all modules start their calculation immediately. Interactive modules wait for user input, usually for mouse clicks in a map window, to perform an action. To do this the mouse mode must be adjusted, e.g. from zoom or pan mode to the interactive mode. Most modules create new data sets as result of their calculation, which will automatically be added to the data workspace, so that these can be saved, used as input for further calculations, or displayed in a map.
Maps |
Print Layout |
3D View |
Histograms, Scatterplots |
Tables, Diagrams |
Digitising, Editing |
The standard way to visualise spatial data is the cartographic map. Each spatial data set can be added to a map as thematic layer. Display orders of thematic layers are changed in the maps workspace. In dependence of the data type various display options are available for the creation of expressive maps. Attribute values of vector data can be used as labels, to determine sizes of point symbols or line widths, or to indicate display colours. Raster data are coloured according to their data values, either by using a lookup table or a metric classification scheme. A transparency value allows to use raster data for shading effects. Smooth appearance when zooming is achieved by optional value interpolation. 3d views can easily be created for each map, as far as appropriate elevation data have been loaded. Vector as well as raster data can be edited directly in map views. Further possibilities for data visualisations are histograms and scatter plots. Scatter plots have a built in regression function and can be applied to vector, raster and table data. Besides simple table views with editing and sorting capabilities, also diagrams are available to display table data.
SAGA comes with a comprehensive set of free modules, most of them published under the GPL (34 libraries with 119 modules in version 1.2, 42 libraries with 234 modules in version 2.0.0, 48 libraries with 300 modules in version 2.0.3). Not all of these modules are highly sophisticated analysis or modelling tools. Many modules perform rather simple data operations. But several of these modules represent the state of the art in geoscientific analysis. The following overview shows the range of covered methods. More information is available e.g. through the SAGA Wiki or the SAGA GUI itself.
Fundamental for the work with spatial data are interfaces to the countless file formats. Particularly the data exchange between different programs usually requires a suite of import and export filters. SAGA offers several filters to common data formats, including various image and GPS formats. Most flexible is a raster data import tool, that uses the Geospatial Data Abstraction Library (GDAL), which alone supports about 40 different file formats. | |
Once data have been imported, the next necessary step is in most cases to georeference or to project it, so that all spatial data sets of a project belong to one single coordinate system. Besides a georeferencing tool, SAGA provides access to two alternative free cartographic projection libraries, the Geographic Translator GeoTrans library developed by the National Geospatial Intelligence Agency and the Proj.4 library initiated by the U.S. Geological Survey. Both libraries work for raster as well as for vector data and provide various projections for free definable cartographic parameters. | |
Many modules exist for manipulation and analysis of vector data, like merging of layers, selection of shapes, attribute table manipulation, type conversion and automated document creation. Standard operations on vector data are polygon layer intersections and vector data creation from raster data, e.g. creation of contour lines | |
Raster (or gridded) data can be created from point using nearest neighbour, triangulation and other interpolation techniques. Modules for the construction and preparation of raster data, allow the resampling, closing of gaps and the manipulation of value by user defined rules. Data analyses cover image,amongst others pattern and cost analysis. A very flexible standard tool is the raster calculator, where a user defined formula is used to combine an arbitrary number of raster layers. Other standard operations are skeletonisations and grid based bufferings. | |
Closely related to raster analysis there is number of modules available specially sutited for image manipulation and analysis. A number of filter algorithms have been implemented for smoothing, sharpening or edge detection. Classifications can be performed using cluster analysis or a supervised procedure, e.g.minimum distance and maximum Likelihood classification. Simple segmentation algorithms will soon be accompanied by more sophisticated object recognition modules. | |
Statistical analyses for raster data include zonal statistics, residual and variance analysis. Single and multiple regression analyses relate point data to raster data and allow the extrapolation of values. Semivariograms are used to determine the autocorrelation of point data and serve then for the adjustment of one of the Kriging procedures. | |
Due to the origin of SAGA, there are many modules, that focus on Digital Elevation Models and Terrain Analysis, like analytical hill shading, visibility analysis, local geomorphometry and geomorphographic classifications, terrain parameters related to hydrology, channel network and watershed basin extraction, and the creation of profiles and cross section diagrams. |
An alternative user interface for executing SAGA modules is provided by the SAGA Command Line Interpreter (CMD). Though it is not very user friendly to use a command line the CMD has the advantage that it can be executed from batch script files, which in turn enables a further automation of complex work flows and the routine processing of mass data. More flexibility is even given by the SAGA Python interface, which allows not only the execution of modules but also gives access to almost the complete API functionality. |