A framework for building spatiotemporal applications in Java
Includes bibliographical references.
A relatively new area of study that ﬁrst received attention during the past decade explores how spatiotemporal data can be efficiently used in applications and stored in databases. Spatial data includes the locations or positions, and possibly also the size and orientation of physical objects. Temporal data is time-stamped, i.e. every piece of temporal data is associated with at least one point or interval in time. Spatiotemporal data is both spatial and temporal. It would denote, for example, where a particular object was at a given time, or when an object had a certain size. There is a need for many spatial applications to have temporal functionality added. Often such an approach is fraught with problems, since the existing designs were speciﬁcally tailored for spatial applications, and changing those designs invariably leads to poorer performance or some other compromises. Because it is not easy to change an existing spatial or temporal system to a spatiotemporal system, it makes sense for developers to start building new systems that are optimised for handling spatiotemporal data. Building an application from the ground up is a daunting task, but there are powerful technologies in existence that can expedite the process. One such technology is found in persistent programming languages, which relieves the application builder of the task of storing and retrieving data (e.g. on a database or ﬁle). Persistence technology was created with the aim of making complex applications such as Geographic Information Systems (GIS), Computer Aided Design (CAD) systems and Computer Aided Software Engineering (CASE) software easier to create and maintain. When using a persistent language, the same data types and operations are used for both transient and database data - there is no need for code to translate between store and memory formats or to transfer objects between memory and disk. In contrast, programmers using conventional databases need to be able to program in two languages: the database language (like SQL) and a programming language (like C++ or Java). To date there has been little work done to actually apply persistence technology to the GIS domain [MIA96, SVZ98]. One problem with a persistent programming approach in this context is that one has to spend a great deal of time to work out how spatiotemporal data is going to be dealt with in the application, as noted in trying to build a PJama (Persistent Java) system for the local Sea Fisheries Research Institute in our department [SVZ98]. How will spatiotemporal data be represented, what methods are necessary for manipulating the data, and where would spatiotemporal data and methods be positioned in the overall structure of the program? This thesis aims at developing a framework that can be used to make persistent spatiotemporal systems a viable alternative to conventional GIS applications. The approach adopted involves ﬁnding a suitable data model, implementing this as a PJama (Persistent Java) class library, extending this with structures to improve performance, and evaluating the result.