Score Optimizer – Golfrunden erfassen und auswerten

Windows-Anwendung und mobile PWA: Schläge per GPS auf dem Platz erfassen, am Rechner auf der Lochgrafik auswerten

Abgeschlossen
Score Optimizer – Golfrunden erfassen und auswerten

Wer sein Golfspiel verbessern will, braucht Zahlen. Nicht den Score – der sagt nur, dass es nicht gut lief – sondern die Fragen dahinter: Wie weit schlage ich mit welchem Schläger wirklich? An welchem Loch verliere ich regelmässig Schläge? Wie viele Putts brauche ich, wenn ich das Grün in Regulation treffe?

Diese Fragen beantwortet keine Scorekarte. Also ist daraus ein zweiteiliges Projekt geworden: eine mobile App für den Platz, die jeden Schlag per GPS mitschreibt, und eine Windows-Anwendung, die diese Runden auf der Lochgrafik darstellt und über viele Runden hinweg auswertet.

Golf ist neben der Werkstatt mein zweites Hobby – dieses Projekt verbindet beides. Beide Anwendungen sind im Einsatz und lassen sich auf Anfrage nutzen.

Technische Daten

DesktopWindows, .NET 8 / WPF, MVVM
MobilProgressive Web App, iOS 13+ und Android 8+, offline-fähig
DatenhaltungJSON-Dateien, keine Datenbank
Syncoptionaler PHP-Server als Verteilzentrale
DistanzberechnungHaversine-Formel, Erdradius 6371 km
GPS auf Bildaffine Ähnlichkeitstransformation über Referenzpunkte

Auf dem Platz: die mobile App

Die mobile Anwendung ist eine Progressive Web App – keine Installation aus einem Store, sondern eine Website, die sich zum Home-Bildschirm hinzufügen lässt und danach aussieht und läuft wie eine App. Entscheidend auf dem Golfplatz: Sie funktioniert vollständig offline. Auf dem Land ist Empfang keine Selbstverständlichkeit, und eine App, die zwischen Loch 7 und 8 auf das Netz wartet, ist nutzlos.

Was sie kann:

  • Live-Distanz zum Grün aus dem GPS des Telefons, berechnet über die Haversine-Formel
  • Wegpunkte je Loch – Grünmitte, Distanzmarken, Bunker, Wasserhindernisse – einmal eingemessen, danach jederzeit mit Live-Distanz abrufbar
  • Schlagerfassung mit Schläger und Schlagtyp; Strafschläge werden als zusätzliche Schläge erfasst, nah an der Zählweise auf dem Platz
  • Mehrere Plätze und Spielerprofile, jedes mit eigenem Schlägerbag
  • Rundenhistorie mit Export

Die Daten liegen lokal im Browser-Speicher des Geräts. Ein optionaler PHP-Server dient als Verteilzentrale und Sicherung – dort ist die Quelle der Wahrheit, das Telefon hält die Arbeitskopie für den Offline-Betrieb.

Am Rechner: drei Module

Die Windows-Anwendung gliedert sich in drei Bereiche.

Builder richtet einen Platz ein. Zu jedem Loch gehören ein Luftbild, bis zu vier Abschlagpositionen, das Par und ein Massstab in Metern pro Pixel – daraus rechnet die App später jede Distanz automatisch aus. Hier werden auch die GPS-Referenzpunkte aus der mobilen App den Bildpositionen zugeordnet.

Optimizer erfasst die Runde Loch für Loch. Ein Klick auf die Lochgrafik setzt einen Schlag, die Distanz ergibt sich aus dem Massstab. Dazu Schläger, Schlagart, Putts und Strafschläge. Alternativ wird eine mit dem Telefon aufgezeichnete Runde importiert.

Analyzer wertet über mehrere Runden aus – gefiltert nach Spieler, Platz, Abschlagfarbe und Zeitraum. Score-Verteilung, durchschnittliche Distanzen, Schlägerverwendung, getroffene Fairways, Grün in Regulation, Putts. Dazu eine Schlagkarte, auf der die Runden farblich unterschieden übereinanderliegen – dort wird sichtbar, ob ein schlechtes Loch Zufall war oder Muster.

Vom GPS-Punkt zur Position auf dem Bild

Das technisch interessanteste Stück ist die Verbindung der beiden Welten. Das Telefon liefert Breiten- und Längengrade, die Lochgrafik ist ein Bild mit Pixelkoordinaten – und dieses Bild ist beliebig gedreht, weil Lochgrafiken selten genau nach Norden ausgerichtet sind.

Gelöst ist das über eine affine Ähnlichkeitstransformation, die aus den im Builder zugeordneten Referenzpunkten berechnet wird:

  • zwei oder mehr Referenzpunkte – vollständige Transformation, Drehung des Bildes wird korrekt berücksichtigt
  • ein Referenzpunkt – Näherung mit Norden oben, verankert an diesem Punkt
  • kein Referenzpunkt – Näherung verankert an der Abschlagposition

Je zwei sauber eingemessene Punkte pro Loch genügen also, damit ein auf dem Platz aufgezeichneter Schlag am Rechner an der richtigen Stelle im Bild erscheint.

Technik

Die Windows-Anwendung ist in C# auf .NET 8 mit WPF geschrieben und folgt dem MVVM-Muster. Die mobile App ist reines HTML, CSS und JavaScript mit Service Worker – kein Framework, keine Build-Kette, damit sie auch in Jahren noch läuft.

Beide Seiten kommen ohne Datenbank aus: Plätze, Spieler und Runden liegen als JSON-Dateien. Jede Datei trägt einen Schema-Tag wie so-course-v1 oder so-round-v1, sodass beim Import automatisch erkannt wird, worum es sich handelt. Der Vorteil zeigt sich beim Sichern: Ordner kopieren genügt.

Die Anwendung ist der Nachfolger einer älteren Windows-Forms-Version; deren Rundendateien lassen sich weiterhin importieren. Die mobile App löst eine noch ältere Anwendung für Windows Mobile 6 ab.

Interesse an der Anwendung?

Beide Anwendungen sind einsatzbereit und werden bereits von einigen Spielern genutzt. Der Quellcode ist nicht öffentlich, die Anwendungen selbst gebe ich aber gern weiter.

Das System ist so aufgebaut, dass eine Freischaltung unkompliziert ist: Ich stelle Spielername, zwei Token und eine Start-URL zu. Damit lässt sich alles Weitere selbst einrichten – die mobile App auf dem Telefon installieren und aktivieren, danach die Windows-Anwendung herunterladen und mit den eigenen Platzdaten verbinden. Die nötigen Schritte stehen in der Quick-Start-Anleitung unten.

Wer das ausprobieren möchte, meldet sich am einfachsten über das Kontaktformular.