System to facilitate the mapping and visualisation of glaciers using of GPS data

By

John Cooke

Project supervisor

Roger Braithwaite

17/12/2002



Table of Contents

Project Aims 3

Deliverables 3

Overview of the project 3

Educational value. 4

Technical challenge. 4

Project plan. 5

Progress to date. 7

Appendix A: Final Report contents list.. 9

Appendix B.. 10

Background. 10

Requirements of the project 10

Functional requirements of the system. 10

Non Functional Requirements 11

Literature Review.. 11

Design of the artefact 14

Problems 14

Choice of visualisation method. 17

Choice of implementation tools or languages 22

Glossary. 23

Biblography. 24


Project Aims

Development of a system to handle easting, northing and altitude data for the surface of a glacier and to generate a terrain model and/or visualisation. In the test dataset there are two surveys from successive years, so changes will also be investigated between years. 

Deliverables

A program capable of the visualisation of a set of coordinates and height data for a given set of GPS data. Associated documentation will support the computing artefact. The program should also have the functionality to either export the data for use in a GIS system or be capable of calculating changes in volume between the visualised objects.

Overview of the project

The main activities in this project are:

 

 

The test data for the project exists in the form of two Microsoft Excel spreadsheets.

 

I hope to use the object-orientated approach to develop the system, as it offers a better path between the design and implementation than other models. Object orientation requires the use of object orientated tools and I have not yet made a final decision on which tools I shall use.

 

The program is intended primarily for the Microsoft Windows platform, but I intend to use techniques that will allow the system to be ported to a variety of platforms, e.g. Linux/Unix.

 

The required resources will include material regarding glacial environments and literature on the programming languages I will be learning. Other requirements include compilers, programming tools, operating systems and computers.

Educational value

The development of the system deepens and expands my knowledge in applying design techniques.

 

I hope to become fluent in new computer techniques, including the use of the OpenGL graphics environment and the C/C++ programming language. I will also be managing my own time and resources, so I hope to improve my project management skills as a result of this project.

 

I will also have the opportunity to expand my knowledge of glacial environments.

Technical challenge

I will have to develop a method of turning the raw information comprising the global positioning data into a visualisation. This will involve understanding the nature of three-dimensional objects in OpenGL and C. Adjusting to new languages is always a challenge.


Project plan

The total project time is around 200 hours, which equates to around 8 hours per week, after removing two weeks for Christmas holidays and two weeks for exams.

 

I have constructed a Time Chart displaying the major activities and their timings. This shows the timescale in days.

·        Project start 18/10/02, duration 200 hours

o       Terms of reference document starts 18/10/02, duration 8 hours

o       Interim report starts 25/10/02, duration 49 hours

§         Feasibility study starts 25/10/02, duration 11 hours

§         Research starts 25/10/02, duration 22 hours

§         Completed interim report starts 15/11/02, duration 16 hours

o       System development starts 08/11/02, duration 71 hours

§         Learning new languages starts 04/12/02, duration 30 hours

§         Design starts 18/11/02, duration 20 hours

§         Coding starts 10/02/03, duration 17 hours

§         Testing starts 25/03/03, duration 24 hours

o       Final Report start 03/02/03, duration 46 hours

§         Tables of contents Start 03/02/03 duration 6 hours

§         Draft report Start 03/02/03 duration 14 hours

§         Final report Start 18/03/03 duration 26 hours

§         Prepare Presentation duration 6 hours


 

Week Ending

20/10/2002

27/10/2002

03/11/2002

10/11/2002

17/11/2002

24/11/2002

01/12/2002

08/12/2002

15/12/2002

22/12/2002

26/01/2003

02/02/2003

09/02/2003

16/02/2003

23/02/2003

02/03/2003

09/03/2003

15/03/2003

23/03/2003

30/03/2003

06/04/2003

13/04/2003

20/04/2003

27/04/2003

02/05/2003

 

Week

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

Total

TOR

2

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

Research

 

1

4

4

4

4

4

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

22

Feasibility

 

1

4

4

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

Completed interim report

 

 

 

 

2

4

4

4

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

Learning New Languages

 

 

 

 

 

 

 

3

6

4

4

4

3

2

3

1

 

 

 

 

 

 

 

 

 

30

Deisgn

 

 

 

 

 

 

 

 

 

4

4

4

3

2

 

 

 

 

 

 

 

 

 

 

 

17

Code

 

 

 

 

 

 

 

 

 

 

 

 

 

2

3

4

4

4

3

 

 

 

 

 

 

20

Test

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

8

8

6

 

 

 

24

Contents

 

 

 

 

 

 

 

 

 

 

 

 

2

2

2

 

 

 

 

 

 

 

 

 

 

6

Draft Report

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

4

4

3

 

 

 

 

 

 

14

Final Report

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

8

8

8

26

Prepare Presentation

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Total

200

Figure 1 Time Chart


Progress to date

 I have evaluated several possible tools that could be used in the development of the project. On the basis of this I have chosen to develop my own system capable of analysing and presenting the data.

 

The new system will be able to visualise the data and either output the data to a GIS package or have the functionality to do some calculations itself.

 

Based on my research I have decided to use OpenGL in combination with C/C++ as it will provide a great deal of flexibility and produces a good quality visualisation.

 

Format of demonstration

In the demonstration I will show two datasets being loaded into the program, displayed and then compared. I will show some slides describing the deliverable and the process I have undertaken to achieve the goals.

 

I plan to make the demonstration in room J9 of the MSS building. To conduct the demonstration I will need a PC that is an IBM compatible with a 32-bit version of Microsoft Windows Operating system loaded. The system will need OpenGL drivers installed (these are usually installed as part of the graphics card drivers).

 

I will need a copy of Microsoft Excel to demonstrate the data sets. I would also request Microsoft PowerPoint so I can show related slides.
Appendix A: Final Report contents list

Title Page

Abstract

Table of contents

Introduction

Requirements

State of the Art

Design

Implementation

Evaluation / Testing

Conclusion and Further Work

Acknowledgments

References

Appendices


Appendix B

Background

For some time glacial data has been collected by taking direct measurements. This entails having someone ski or climb onto the glacier. To do this, the sampler needs to have a great deal of local knowledge. However even with this knowledge it is often difficult to ensure that the sample sites are correct. Weather conditions often preclude the use of surveying to find the correct point. Furthermore, weather conditions can prevent sites being sampled at all as they become unreachable. In an effort to remedy this modern technology has been identified, in particular robotic sampling and global positioning technology.

 

The main data for this project consists of two journal articles written by W Theakstone. The journal articles are accompanied by two sets of data.  These articles highlight the need for a coherent method of presenting the data from surveys. There is a need to visualise the data. An image gives a better understanding of the structure of a glacier than the sample data conveys on its own. As the saying goes, “A picture paints more than a thousand words”.

 

Requirements of the project

Functional requirements of the system

Read in data sets

The system must be able to read in the given data sets.

Transform Data Sets

The system will need to be able to transform the information contained in the datasets into a form usable by the system to produce the visualisation.

Provide a visualisation of the GPS data sets.

Given a set of GPS points, the system should be able to display the points in space.

Calculations comparing the two datasets

The system should be able to perform mathematical operations on two (or more) data sets to compare and contrast the differences between them.

Ability to export data for use with GIS packages

Data used in the system should be able to be prepared for export to a GIS package.

Non Functional Requirements

Ease of use

The system should have a simple interface and be as user-friendly as possible.

Reusable

Code and libraries for the system should aim to be as reusable as possible. This will enhance the portability of the system.

Extensible

In its lifetime the system should be capable of being extended to include new algorithms for comparing the data sets.

Visualisation should complete in a reasonable amount of time

Rendering scenes can be time / processor intensive tasks. In this system the visualisation should be accomplished quickly.

Literature Review

The books I have been using for my project fall roughly into three categories.

 

Texts that explain the geographical aspects of the project. These include the two journal articles and “GIS and Science”.

Next are the books that explain the computing side, namely the OpenGL graphics and the programming language guides.

Finally there is the Ashford and Odam book that is a primer on the art of 3D graphics and details the methods of making good looking visualisations.

 

“Getting started with 3D” is a book not about programming but about the art of creating a good visualisation. Focussing on computer graphics, the early chapters were especially useful in the descriptions of the art of 3D design, explaining perspective, the science of drawing and atmospheric effects. Later on in the book is a chapter about natural effects including terrain models (pages 60-64). The book provides a very detailed, yet easy to swallow, synopsis of techniques you need to consider when creating a 3D visualisation and poses many interesting points to consider when creating the visualisation.

 

The next set of resources I used were the graphics programming websites and books.

 

The “3D Graphics in Pascal” book proved of little use, focusing mainly on creating line art through programming subroutines. While the mathematics used for the calculations was useful, it did not explain the usage in as comprehensive way as the OpenGL programming guide. Also the book is rather outdated, being over 10 years old. Although the techniques described are still correct, their value has depreciated since the book’s publication since graphical languages simplify graphics programming somewhat.

 

Microsoft’s online documentation for DirectX is fairly comprehensive and the software development kits (SDKs) are freely available. However Microsoft does not provide an extensive archive of third-party tutorial sites and useful information as found on the OpenGL web page.

 

“OpenGL a primer” is basically the first few chapters of the OpenGL programmer’s guide and is a fairly basic introduction to OpenGL libraries and techniques. The “OpenGL Programmer’s Guide” goes into far more depth and contains many examples of how and when to use OpenGL, tutorials and useful programming tips.

 

OpenGL only provides a method of producing graphics so as to be cross platform, and therefore other languages are needed to create the windows commands. So I looked at several languages that can be used with OpenGL. These included C, C++, Java and Delphi. The book by Deitel and Deitel is very useful, not just a primer to Java itself but also a primer on object orientated design and UML. It has an excellent use of teaching through example and colour coding of code and lettering. On the downside though, not all of the examples work or are complete (It is a book intended for use with university courses and there is a lecturer’s guide which completes some of the exercises).

 

The “C Programming Language” is a seminal book describing the C programming language. It is concise (being by far the smallest of the programming reference guides). It does not cover the windowing functions of C, concentrating on the different techniques available in the language. Overall it is a very good reference for C.

Microsoft’s “Visual C++ Programmer’s Guide” is not like the other programming books. Its aim is not to teach you how to program in Visual C++.  Instead it focuses on showing what Visual C++ version 6 can do, and how you use it. While it would be useful to show somebody how to use Visual Studio it is fairly useless for me as I would first need to learn more about C++.

 

“Geographic Information Systems and Science” has some very useful information. Not only does it compare several methods of visualising GIS data, it also contains comparisons of different applications. It is well written and has some very good examples but at times can go into too much detail too soon. It also seems to require you to read it almost as if were a web page, constantly switching between the narratives on the page to the various inset boxes which explain a particular topic or give examples. It is a very thoughtful text and will prove useful for my project.

 

The two journal articles by Wilf Theakstone are the basis for my project. His comparison between the traditional method and new techniques using GPS surveying provides good arguments for the use of technology and explains both sampling methods in great detail.

 

The other article focuses on the use of digital terrain modelling using TIN networks. This article provides the base line from which any visualisation I attempt needs to learn from and to improve upon.


Design of the artefact

In this section I will discuss some of the different methods I could have used to design the system and comment on the choices I have made. Firstly I list the problems the system design must overcome.

Problems

Convert the GPS points into meaningful and useful data.

Form triangles from adjacent points.

Perform visualisation.

Compare different data sets mathematically.

Export resultant information.

 

The main task of the system is to visualise the data, and the other methods hinge around the choice of visualisation. There was a multitude of possible ways of tackling the problem of visualising the data 

CAD packages

Computer aided design packages are software designed to model and design objects in two or three dimensions. Popular CAD packages include AutoCAD, Microstation, and 3D studio Max. CAD packages allow a great deal of flexibility in design and it would be possible to model the data sets in a CAD environment. CAD packages are not well suited to GIS environments as they use their own notation for positioning and placement rather than absolute coordinates, such as longitude and latitude. Indeed many GIS programs such as Intergraph’s Geomedia are a development on CAD packages, expanding the functionality to include special functions and using geo-referencing rather than proprietary units for measurement.

GIS systems

Grid systems, in which the data is put into a grid from which interpolation can be used and a graph of the data produced. The graph and grid dataset can then provide a source of information from which all kinds of calculations, including mass balance, can be performed. Grided datasets, however, do not provide for the most thrilling of graphical experiences, their appearance being more utilitarian than aesthetically pleasing or in fact a representation of the actual shape.

 

DEM Digital elevation modelling and Digital Terrain modelling. These are methods used to display results from the Austra Glacier in Professor Theakstone’s article.

 

TIN surface, triangular Irregular Networks in which surface is composed of triangles. These are 2.5D surfaces composed of triangles. Each point of the triangle has special data for easting and northing data and attribute data giving the height of the point.  TIN models also allow texture mapping, allowing for example a satellite image or aerial photography to be overlaid over the model.

Graphics languages

Graphics languages are specifically designed to represent and model graphics using code. Programming languages include OpenGL DirectX and also vector rendering engines such as Macromedia Flash.

 

During my research one of the possible methods of visualising the data sets was to use Pascal. 3D graphics in Pascal were possible using pure programmatic techniques. Though it would be possible to execute in Pascal the visualisation would be limited. In fact Delphi (which is a visual languages with uses Pascal as its base) has dropped the methodologies expressed in “3D Graphics in Pascal” in favour of using the OpenGL graphics library.

 

Direct X is Microsoft’s graphical language specifically designed for windows programmers. Direct X was designed to give Windows the sort of abilities that OpenGL allowed in a native format. OpenGL was developed originally for the IRIX platform. Direct X has many advanced functions. However games programmers have mainly used it. There is a wealth of material regarding the Direct X API currently at version 8.1a available from Microsoft. Unfortunately, while the software development kit is free, using Direct X would both tie me to the Windows platform and to a certain extent force me to use Microsoft’s development tools. This would go against the wishes to make the system as flexible as possible, anchoring it to a Windows only platform.

 

Vector rendering platforms could be used to develop my project. Vectors are a method of building images from point, lines and areas. Vector imaging is particularly suited to displaying the GPS data as it is recorded as a series of points which can be joined to form lines and areas.  In particular the emerging technologies of graphical mark-up language (GML), an offshoot of extensible mark-up language for graphics, could allow me to create the visualisation in a browser. This would be inherently flexible as the Internet is mainly platform independent. However the standards are young and not fully formed. Also browser-based systems would require a server that would add unwanted overhead. Furthermore, due to the interoperated nature of GML (it is parsed and run a line at a time) it could prove extremely processor hungry when compared to graphical programming languages that are more efficient.

 

OpenGL is a graphical language developed by Silicon Graphics to create a standard set of graphics libraries. These open graphic libraries where designed to be able to enable complex objects to be constructed around a number of primitives. OpenGL allows the production of 2 and 3 dimensional models and scenes. It also allows for lighting perspective, viewpoints, atmospheric perspective shading and texturing. The OpenGL libraries and tools have been ported from IRIX to virtually all versions of UNIX and Linux and also to Apple OS and Windows. However this cross platform nature leads to a minor problem. OpenGL has itself no windowing commands so it requires another language such as C/C++ to create the windowing functions and make API calls to the operating system. This increases the learning curve somewhat as I would need to learn both OpenGL and a supporting language at the same time.

 

Method

Advantages

Disadvantages

Adapt GIS system

Less programming involvement

Built in methods of calculations

Possible limitations of GIS system

Quality of the visualisation might need to be sacrificed

System would be tied to GIS package

Use CAD package

Good visualisation

Less programming involvement than new system

Doesn’t use geographical references

System would be tied to CAD package

 

Bespoke new system

Tailor made solution

Most extensible choice

 

Most amount of programming

Need additional features to interface with external packages

Figure 2 Comparison table of methods


Choice of visualisation method

I decided to use Open GL - an open and cross platform graphical language. It is extensible and should be able to output a very high quality visualisation of the data. Indeed it is used in many 3D packages because of its ability to produce high quality imagery. With Open GL though I will need to program a system to input the raw data into Open GL. For this I plan to use either C or C++ as they are both interface well with Open GL and can create code that is cross platform.

 

While this might be considered a “re-invention of the wheel” by implementing features already included in a GIS package, it does offer several advantages. Firstly I might spend a considerable amount of time on a GIS package, working against its limitations, as they are general systems, not specifically designed to solve my problem. Although a GIS package would provide many tools to analyse the data, it would not necessarily be the ideal one for the visualisation. 3D modelling packages would provide a very good visual output but would not have inbuilt tools to handle the calculations.

 

Secondly I wish any system I develop to be cross platform or at least portable. It would be hard to do this by working with an existing proprietary product. For example, Arcview is one of the few programs that appears on more than one platform (Microsoft Windows).

 

As both OpenGL and C++ are object-orientated languages I looked toward the object orientated design process. Object orientation allows better modelling of real world objects. Object orientation flows from the design to the implementation stage in a clearer manner than other methods such as the waterfall process model.

 

Toward this aim I have derived several high level UML use case diagrams.  The diagrams are an abstract of the systems design. Figure 3, Figure 4, and Figure 5 demonstrate relationships between the three classes dataset point and triangles.  Figure 5 is needed as the dataset can be thought of both in terms of being built from points and triangles. Figure 6 shows the attributes of points. Figure 7 and Figure 8 are ‘use case’ diagrams giving an abstract overview of the systems operation.

Figure 3 Class Diagram Showing composition of data sets

 

 

 

Figure 4 Transformation of points into triangles

Figure 5 Alternative view of dataset built from triangles

 

 

 

Figure 6 Class Diagram Showing attributes of points

 

 

Figure 7 Use Case Diagram

Figure 8 Use Case System Communication

 

Using the UML its possible to identify the main processes for the system. I have listed these processes in the table below.

 

Processes

Description / Remarks

Import data

Transform the data for use with the system

Form triangles

As part of the data import the points will need to be turned into triangles

Output to OpenGL

The polygons (triangle) vectors need to be fed to the OpenGL system

Display Visualisation

Visualisation of the vectors

Compare datasets

Compare datasets

Output data

Output data and format for use with GIS packages

Figure 9 System Processes

Choice of implementation tools or languages

Here are some examples of OpenGL code taken from the OpenGL programming guide.

Although not directly concerned with the project it illustrates how to use OpenGL for visualisation.

 

#include <GL/glut.h>

#include <stdlib.h>

 

/* function prototypes*/

 

void display(void);

void init(void);

 

int main(in arg, char** argv)

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

   

    glutInitWindowSize(250, 250);

    glutInitWindowPosition(100, 100);

    glutCreateWindow(“Hello”);

    init();

    glutDisplayFunc(display);

    glutMainLoop();

    return 0;

}

 

void display(void)

{

    /* Clear all pixels */

 

    glClear(GL_COLOR_BUFFER_BIT);

 

    /* Draw white square with corners at (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) */

 

    glColor3f(1.0, 1.0, 1.0);

    glBegin(GL_POLYGON);

        glVertex3f(0.25, 0.25, 0.0);

        glVertex3f(0.75, 0.25, 0.0);

        glVertex3f(0.75, 0.75, 0.0);

        glVertex3f(0.25, 0.75, 0.0);

    glEnd();

 

    /* Don’t wait start processing OpenGL routines */

 

    glFlush();

}

 

void init(void)

{

    /* Start clearing (background) colour */

 

    glClearColor(0.0, 0.0, 0.0, 0.0);

 

    /* Initialise viewing values */

 

    glMatrixMode(GL_PROJECTION);

    glLoadIdentity();

    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);

   

}

 

Glossary

API     An application program interface (API - and sometimes spelled application programming interface) is the specific method prescribed by a computer operating system or by an application program by which a programmer writing an application program can make requests of the operating system or another application[1].

GIS     Geographical Information System, a computerised system for working with spatial       data.

GPS    Global Positioning System, a satellite network which using a receiver, displays position with a high degree of accuracy.

UML    Unified Modelling Language, defines the components that will be used to build a systems and the interfaces that will connect is components[2]


Biblography

Angel, E (2002), ‘OpenGL a primer’ Addison-Wesley USA.

 

Ashford, J and Odam, J (1998), ‘Getting started with 3D a designers guide to 3D graphics and illustration’, Peachpit Press USA.

 

Bielig-Schulz, G and Schultz, CH (1990) ‘3D Graphics in Pascal’ Wiley England.

 

Deitel HM, Deitel, PJ (2002), ‘Java How to program 4th Edition’, Prentice Hall USA.

 

Eliens, A (2000), ‘Object-Oriented Software Development 2nd Edition ’, Pearson Education Ltd, Essex.

 

Kernighan, BW and Richie, DM (1988), ‘The C programming language 2nd Edition’, Prentice Hall USA.

 

Longley PA, et al (2001), ‘Geographic Information Systems and Science’, Wiley England.

 

Microsoft’s DirectX Homepage http://www.microsoft.com/windows/directx/default.asp

 

MSDN DirectX Community http://msdn.microsoft.com/community/directx.asp

 

OpenGL website http://www.opengl.org/

A great deal of information about OpenGL programming guides information news of the upcoming OpenGL 2 specification and links to many other OpenGL sites.

 

Pressman, R (2000), ‘Software Engineering A Practitioner’s Approach 5th Edition’, Magraw Hill. 

 

Terrex http://www.terrex.com

 

Theakstone WH, Jacobsen, FM (1997), ‘Digital Terrain modelling of the surface and bed topography of the glacier Austre Okstindbreen, Okstindan, Norway’ Geografiska Annaler 79A pp 201-214.

 

Theakstone, WH et al (1999), ‘Changes of snow cover thickness measured by conventional mass balance methods and by global positioning system surveying’, Geografiska Annaler 81A pp 767-776.

 

Whatis? http://www.whatis.com/ Definitions for thousands of the most current IT-related words.

 

Woo, M et al (1999), ‘OpenGL programming guide: the official guide to learning openGL version 1.2 – 3rd edition’ Addison-Wesley USA.

 

Zaratian, B (1998), ‘Visual C++ 6.0 programmers guide’, Microsoft Press Redmond USA.



[1] Source www.whatis.com

[2] Pressman Page 42