← Suite overview /Geo Mapper
β—± Part of the locate management suite

Every locate you've ever done β€” on one searchable map.

Geo Mapper is the ticket location database. Years of finished paperwork, imported automatically and indexed by road, intersection, city, contractor, work type and station code β€” so before anyone drives out, they can see what's already been located there and pull up the drawing that proves it.

Seconds, not file foldersOffline vector mapImports itself
Ticket Location Databasev1.0.96
Geo Mapper's main window: search fields for contractor, road, city, intersection, work type and station codes above a table of matching historical tickets.
πŸ–ΌοΈ assets/geo-mapper/01-search.png Main window β€” search fields filled in, results table below.
Drop the file in and this frame fills itself.
The search screen β€” every field is an autocomplete over what's actually in the database.
Without it

"Didn't we locate this corner last year?"

Somebody remembers the job. Nobody remembers the ticket number. The paperwork is in a folder on a share drive named after a date, and finding it costs twenty minutes β€” so most of the time nobody looks, and the whole locate gets done again from scratch.

With it

Type the road. There's the job.

Search "Maple St" and every ticket that ever touched it comes back β€” mapped, dated, with the contractor, the station codes and the original drawing one click away. The answer takes seconds, so people actually check.

On the map

Draw a box around the neighbourhood. Get its whole history.

Every mapped ticket is a pin on a full vector basemap that runs off a local tile archive β€” no internet, no tile bill, no blank grey squares in a basement or out past cell coverage.

Map viewoffline tiles
Geo Mapper's map view: historical locate tickets plotted as pins over a vector basemap, with one pin's detail popup open.
πŸ“ assets/geo-mapper/02-map.png Map view zoomed to a town, pins showing, ideally with a popup open.
MapLibre GL vector tiles served from a local archive β€” the map works with the network unplugged.

Search by viewport, not by name.

Some jobs are easier to point at than to describe. Pan and zoom to the area you care about and the bounding box becomes the search β€” every ticket inside the frame, however it was written up.

  • Click a pin for the ticket β€” contractor, dates, work type, station codes, drawings.
  • Mapped vs. unmapped counts are tracked, so you know what still needs coordinates.
  • Download the tile archive once, then check for map updates and apply them in place.
  • Same map engine as the field app β€” one basemap standard across the suite.
Offline Map
The offline map panel showing the local tile archive size, its date, and an available update.
πŸ—ΊοΈ assets/geo-mapper/08-offline-map.png Offline Map panel β€” archive size, download / update-available state.
Tile archive management: download, check for updates, apply, or clear.
Stats & dashboard

The same database, answering management's questions.

Flip from the results list to the dashboard and the history turns into numbers β€” over everything you've ever done, or over just the search you're looking at right now.

Dashboardall data
The Geo Mapper dashboard: headline counts for tickets, mapped and unmapped, plus top cities, top roads, top station codes and a tickets-per-month chart.
πŸ“Š assets/geo-mapper/03-dashboard.png Stats / Dashboard tab β€” KPI numbers, top cities & roads, tickets per month.
Toggle between all data and current search β€” the same panel, scoped two ways.
Headline

What's in there

Total tickets, how many are mapped and unmapped, and how many distinct contractors, cities and roads the archive covers.

ticketsmappedunmappedcoverage
Trend

Volume over time

Tickets per month with a running average, plus recent activity β€” the shape of your season, and whether this one is heavier than last.

per monthavg / monthrecent
Breakdown

Where the work concentrates

Top cities, top roads and top station codes, plus full breakdowns by work type, contractor, city and code β€” with one-click copy of any list.

top roadsby contractorcopy list
Drawing β€” 2025-338815
A historical locate drawing rendered inside Geo Mapper, opened from a search result.
πŸ“ assets/geo-mapper/04-drawing.png A ticket's drawing open β€” the viewer or the thumbnail strip.
Drawings render from the stored source, so they stay sharp at any zoom.
Drawings & paperwork

The proof, attached to the record.

A ticket in the list isn't just a row β€” it carries the field drawings that were done on the day. Geo Mapper renders them straight from the saved drawing data rather than a flattened export, so the sketch you pull up in three years is the sketch that was drawn.

  • Thumbnails in the results β€” see at a glance which tickets actually have a drawing.
  • Rendered from source, using the same shape and symbol definitions as DrawPyCS.
  • Generate a JPEG onto your own page templates when someone needs a copy to send.
  • Open the original file on disk if you need the raw paperwork itself.
Import & folder watch

Nobody has to feed it.

Point Geo Mapper at the folder where finished paperwork lands and it takes over: new files get copied, parsed, geocoded and indexed on their own, in the background, forever.

01 Β· Watch

Files land

A background watcher scans the source folder on a schedule, copies anything new to a backup location, and queues it.

β†’
02 Β· Parse

Read the ticket

Location, contractor, dates, work type and station codes are pulled out of the paperwork and written into the database with its drawings.

β†’
03 Β· Reconcile

Catch the gaps

A reconcile pass re-walks the whole directory to pick up anything missed while the machine was off β€” with a running log of every scan.

Import
The import panel: a source directory, a file-creation date range, and live progress counters for imported, drawings updated, failed and files scanned.
πŸ“₯ assets/geo-mapper/05-import.png Import panel mid-run β€” source dir, date range, progress counters.
Manual imports run with live counters and a date-range filter.

Backfill years in an afternoon.

The first run is the big one. Aim the importer at the archive, optionally bound it to a creation-date window, and watch imported / updated / failed / scanned tick up. Re-runs are safe β€” existing tickets are skipped unless you deliberately force a refresh.

  • Date-range scoping β€” "just this month" or the whole share drive.
  • Force-update drawings when a batch needs re-rendering, without touching the rest.
  • Failures are counted and logged, not swallowed β€” you can see what didn't parse.
  • Runs in-process β€” no separate server to babysit, no scheduled task to forget.
Also in the box

The odd jobs that used to be somebody's spreadsheet.

Field issue tracking with photos, road aliases and release notes β€” all in the same window as the search, because that's where people already are.

How it fits the suite

The memory behind the other three.

Field Ticket Manager runs today's work. Geo Mapper remembers all of it β€” and the two speak the same drawing format, the same station codes and the same basemap.

Completed work flows in

Tickets finished in Field Ticket Manager land in the watched folder and index themselves β€” no export step, no double entry.

auto-importno re-keying

Drawings stay readable

The same shape and symbol definitions that DrawPyCS draws with are what Geo Mapper renders with β€” an old sketch never becomes an unreadable blob.

shared symbolsAPWA colors

One basemap standard

The same offline vector tile stack as the field app, so the map an office user sees is the map the crew sees β€” and neither needs a connection.

MapLibrelocal tilesoffline
Under the hood

A desktop app with a web app's interface.

Geo Mapper ships as a single Windows executable. Inside, it starts its own local API and renders the UI in an embedded browser β€” so the interface is fast and modern, and there's still nothing to deploy, no server to run, and no data leaving the building.

Platform
Windows
WPF shell Β· WebView2 UI
Built on
.NET 10
ASP.NET Core, in-process
Data
Local SQLite
Migrates itself on launch
Maps
Offline vector
MapLibre GL Β· local archive
Install & updates

Updates itself, quietly

The launcher checks a version manifest on start and offers the update in a dialog β€” so a fleet of office machines doesn't drift onto four different builds.

Access

Signed in, and stays that way

Login is checked against the same account system as the rest of the suite, with a long-lived session so daily users aren't re-typing a password to look up a road.

Point it at your archive

See your own history, indexed.

Book a walkthrough and we'll import a slice of your finished paperwork, then search it in front of you β€” your roads, your contractors, your drawings.

// Or email cooper.pearce99@gmail.com directly.