Protected Areas Database


This project arose as a way to analyse various sets of data regarding protected areas in South Africa that were collected by members of the Percy FitzPatrick Institute of African Ornithology at UCT. The data was in the form of Excel workbooks, Access databases, and shapefiles. This included SANParks data about visitors, permit data about translocation of animals, and spatial data such as boundaries of farms in private protected areas. There was no way for the Institute's members to analyse these separate files as a whole.

This project therefore required that all datasets be integrated into a single repository. Furthermore the repository needed a user-friendly front-end which did not require technical skills such as SQL knowledge, as the intended users had no prior database experience.

Solution Overview

To solve the data integration problem, tools were created to import spatial data from shapefiles and non-spatial data from Excel workbooks into a database. This allowed users to edit and update data using tools with which they were comfortable, and gave them full control over the data, including the ability to add new datasets in the future.

The provided front-end allows users to construct a query visually (with the help of a map for spatial conditions) which is then translated into SQL in the background. This is sent to the database via an intermediary server which performs additional checks and processing. Spatial results are displayed on the map, and non-spatial results are in several tables.

Work Division

Matthew Welham handled the integration of non-spatial data and developed the framework for the project, including the query builder and results tables. Together these are referred to as the Non-spatial Component. Alex Hall was responsible for the spatial aspects of the system, including the storing and handling of spatial data, viewing layers on a map, and spatial conditions. Alex also created the Boolean Brackets module which allowed boolean operators to be applied to conditions using curly brackets.