Table of Contents

Design and Implementation of TerraLib 5

This document presents the TerraLib 5 design and it gives an overview of its architecture. Only high level diagrams will be shown. The updated documentation generated by Doxygen is sometimes referenced to clarify all class details.

Architecture Overview of TerraLib Platform Modules

In TerraLib a module1) encapsulates a set of related functionalities. The following modules are provided in the TerraLib Platform:

Bindings

Cellular Spaces

Color

Common

The Common Runtime module contains the foundation classes and functions for all TerraLib modules:

Data Access

This module provides the fundamental layer for applications that handle spatial data from different sources, ranging from traditional DBMSs to OGC Web Services.

Data Types

The data type module implements the type system supported by TerraLib for dealing with data that comes from different data sources. The basic classes/concepts in this module are:

Geometry

The geometry module is responsible for providing:

Graph

The graph module provides a set of classes for the storage and manipulation of graphs:

Layout

The layout module provides a set of classes for creation maps.

MapTools

The MapTools module contains some basic abstractions for handling spatial data in the form of a map:

Metadata

This module as well as its documentation are under construction

OGC

Besides the OGC SFS standard, TerraLib also provides implementations for the following OGC standards:

Plugin

TerraLib comes with a simple framework to help in dynamic module management. It provides support for the startup and shutdown of modules loaded at run time. These modules loaded at runtime are hereafter called plugins. A plugin is just a thin wrapper for a component that allows it to be loaded dynamically. For C++ this means DLLs, Shared Objects (SO), Dynamic Libraries (DYLIB) or even scripts written in Lua, R or any other supported language. See the section below for a deep discussion about this module.

Qt

TerraLib provides some geosptial components and a framework based on Qt. You can read more about the design of this support in the basic concepts section. The Qt support is organized as follows:

Raster

This module can be used to manage geographical data with raster representation.

General Concepts

Raster drivers:

Raster Processing

This module provides classes and functions with raster processing capabilities. See the general concepts here.

They are organized as follows:

Resources

Schemas

Spatial Reference System (SRS)

See also the description of a Qt component that represents the concepts of the SRS here.

Spatiotemporal (ST)

This module contains classes to deal with spatiotemporal information.

Spatial Statistics

TerraView

Tools

The TerraLib Platform accompanies some utility applications that can be run in command line interface (CLI) or graphical enviroments (GUI):

Vector Processing

This module provides classes and functions with vector processing capabilities. See the general concepts here.

They are organized as follows:

1) Sometimes, according to the programming language or software platform, people prefer to use other names for a module, like: package, unit, component, service, micro-kernel.