Mobile & Geospatial Software

GeoField, an Offline Field Geology Companion

An Android app that answers one question a geology student asks constantly in the field: what am I standing on? It identifies the geological unit from GPS alone, works with no signal, and turns observations into structured field notes.

Role
Designer & Developer
Platform
Android, self-hosted
Users
KNUST geology students
Status
In active development
GeoField app showing the Locate screen and the offline geological map of Ghana

The problem

Field geology in Ghana runs into a practical wall. The geological map of the country exists, but in the field it lives on a paper sheet, a lecturer's memory, or a PDF on a laptop back at the hostel. Standing on an outcrop three hours from Kumasi, a student often cannot answer the most basic question: which unit is this?

Mobile data makes it worse. Coverage in the field is unreliable and expensive, so any tool that needs a connection to answer that question is the wrong tool. The constraint was clear from the start: it has to work with the phone in airplane mode.

The core constraint

Identification had to be fully offline. Not "offline-tolerant", not cached after first use, but correct on a phone that has never had signal at that location.

What it does

GeoField is built around three jobs, each mapped to a screen a student can reach in one tap.

  • Locate. Takes a GPS fix, resolves it against Ghana's geological polygons on the device, and names the unit you are standing on along with the rocks and structures to expect there.
  • Map. A full geological map of Ghana with an offline basemap, so you can see unit boundaries and where you sit relative to them.
  • Log. Structured field notes that capture unit, coordinates, GPS accuracy and timestamp automatically, then attach a photo, a voice memo, or a short written note.
GeoField Locate screen showing GPS accuracy and the Locate Me control
Locate, with offline status up front
Offline geological map of Ghana with coloured units and place labels
The geological map, offline
Log Observation screen with unit, position, accuracy, photo and voice capture
Logging an observation

Making identification work offline

The identification engine carries the geological map of Ghana as GeoJSON bundled into the app: all 17 mapped units, from the Birimian volcanics and sediments that host most of the country's gold, through the Tarkwaian, Togo Series and Dahomeyan gneisses, to the Voltaian sequence and the recent coastal cover.

A GPS fix becomes a point-in-polygon test run entirely on the phone. No request, no tiles to fetch, no waiting. Each unit carries its own field content: what it is also called, the rocks and structures to expect, plus engineering and mineral notes, so the answer is not just a name but something a student can actually use at the outcrop.

Because GPS is the input, accuracy is treated as a first-class piece of information rather than hidden. The app surfaces the current fix accuracy, and every saved observation records it, so a log entry can be judged later on how well the position was known when it was taken.

The basemap problem

A geological map with nothing underneath it is hard to navigate. But a country-wide basemap is large, and downloading it repeatedly over field data is not viable.

The solution was a 92 MB PMTiles basemap of Ghana, hosted separately and downloaded once, deliberately, on the student's terms. It is fetched in ranged chunks so a dropped connection resumes instead of restarting, and it is written to durable device storage so clearing the app cache does not destroy it. After that one download, the map is permanently available offline.

A decision that was tested and reversed

An earlier "high precision" mode averaged GPS readings while standing still. Field testing showed it performed worse than simply letting the fix converge, because consecutive GPS errors are correlated rather than random. The feature was removed. Averaging correlated noise does not cancel it.

Designing for the field, not the desk

Field conditions shaped the interface more than any style preference. Sunlight, one free hand, gloves, and a phone that must not waste battery all push in the same direction: large targets, high contrast, and short paths.

  • One primary action per screen. Locate is a single large target, not a form to fill in first.
  • Capture, do not type. Photo and voice sit beside the note field, because describing an outcrop out loud is faster than typing it on a hot afternoon.
  • Context is automatic. Unit, position, accuracy and time are filled in by the app, so the student records observations rather than metadata.
  • Manual coordinate entry. When a fix cannot be acquired, coordinates can be typed in and identification still runs.

Build & distribution

The app is React and TypeScript wrapped with Capacitor, so it ships as a native Android package while staying a single web codebase. The map renders with MapLibre GL. Field data is stored in durable native storage rather than the browser cache, because losing a day of observations is not an acceptable failure.

Distribution is a signed APK published through GitHub Releases rather than the Play Store, which suits a tool aimed at a specific department: updates ship immediately, and students install directly.

Tools & methods

React TypeScript Capacitor MapLibre GL JS GeoJSON PMTiles Point-in-polygon geoprocessing Offline-first architecture

Where it stands

GeoField is in active development and already usable in the field. The direction now is durability rather than features: cloud backup and restore, so a lost or reset phone does not take a semester of field notes with it.

The project sits exactly where my two interests meet. The geology decides what is correct, and the software decides whether anyone will actually use it in the field.

Interested in the app, or in geospatial tooling generally?

Get in touch