FairwayMapper - introducing golfers to mapping!

Hello!

I’d like to introduce a project I’ve been working on in my spare time called OpenCourseMaps. It’s a free, purpose-built web editor designed to make it easier for golfers and the wider community to contribute detailed golf course data to OpenStreetMap.

See it in action: https://youtu.be/2R90mfiJSm4

I want to be upfront: I’m new to the OSM community. I’m a golfer with 20+ years working in IT infrastructure and software development, not a seasoned mapper. This project has grown out of a genuine appreciation for what OpenStreetMap has achieved and a desire to help fill a gap I kept running into (do you know how inaccurate publicly available golf course data is? :frowning:).

I’m here to introduce what I’m building, explain my thinking, and — most importantly — get your input. I’m completely open to this project failing, it’s been super fun for me to build because I love the subject matter (golf, not mapping per-se … although I’m growing an appreciation!) … and if it flops thats entirely ok.

What is it?

OpenCourseMaps is a specialised web-based editor that sits on top of the OSM ecosystem. It focuses entirely on golf courses and understands the leisure=golf_course tagging scheme — golf=hole, golf=fairway, golf=green, golf=bunker, golf=tee, golf=rough, golf=water_hazard, golf=pin, and so on.

Rather than presenting users with the full complexity of a general-purpose editor, it offers a streamlined workflow tailored to the task: select a course, see its boundary and existing features, and start drawing holes, fairways, greens and bunkers with tools that know what they’re creating.

All edits are written back to OSM as standard changesets using the OSM API v0.6, with proper tags and correct geometry. Nothing proprietary — the data goes straight into the map for everyone.

Why build it?

OSM’s golf course data in the UK (my starting point) is a mixed bag. Many courses have a leisure=golf_course boundary, but very few have detailed hole-level mapping — individual fairways, greens, bunkers, tee boxes, and centre lines are largely absent.

The barrier isn’t a lack of people who care. There are plenty of golfers who absolutely love their course - but don’t necessarily want to wade into the full OSM experience. There’s a definite learning curve you need to go through to start mapping a golf course accurately and correctly from a data perspective I hope you would agree! You need to understand tagging conventions, geometry rules, multipolygon relations, and the subtleties of how golf features interact. I think its pretty easy to make well-intentioned mistakes.

OpenCourseMaps aims to lower that barrier by handling the tagging, geometry structure, and OSM conventions behind the scenes, while still producing clean, standards-compliant data … with a little bit of fun along the way.

What can it do today?

The editor is in early alpha. Here’s where things stand:

  • Course discovery — search 3,000+ UK courses (imported from nightly Geofabrik extracts) or browse undermapped courses that need attention

  • Visual editing on satellite imagery — draw and edit holes, fairways, greens, bunkers, tee boxes, rough, water hazards, cart paths, and pins, all rendered on MapLibre GL with satellite tiles

  • Outside-Boundary (or fog-of-war) masking — the course boundary is highlighted with the surrounding area dimmed, keeping focus on the course itself

  • Hole-by-hole workflow — select a hole, draw its features, set par/SI/yardage, work through the scorecard

  • Course metadata editing — address, website, phone, email and opening hours can be edited inline and will be written back as standard OSM tags on the leisure=golf_course feature

  • Scorecard Import - take the complexity of correctly tagging every hole, with every tee box and variable distance/stroke indexes into a simple, upload image, extract data, go!

  • OSM authentication — sign in with your OSM account via OAuth2

  • Boundary detection — automatic handling of MultiPolygon boundaries from OSM - and caution applied where no boundary is detected.

Achievements — encouraging quality, not speed

Inspired by StreetComplete’s achievement system, OpenCourseMaps includes an achievement framework designed to encourage thorough, high-quality contributions rather than volume for volume’s sake.

There are three categories:

Mapping milestones reward sustained contribution — your first course mapped, your 10th, your 50th. These track your personal journey and progress over time.

Quality badges are the ones I’m most interested in. These reward completeness: adding a website and phone number to a course, filling in a full scorecard with pars and stroke indices, mapping every green or every bunker on a course. The idea is to nudge contributors toward finishing what they start rather than rushing through partial edits. If you’ve mapped all 18 greens on a course, you’ve genuinely improved the data — that deserves recognition.

Community badges recognise OSM contributions directly: your first changeset uploaded, helping improve a course someone else started, and so on.

Achievements are deliberately not tied to competitive leaderboards or time pressure - but we’re golfers, we do love a bit of competition! The emphasis is on completeness and accuracy, not speed. I’m aware of the community’s concerns around gamification incentivising sloppy edits, and I’ve tried to design around that — every achievement should correlate with genuinely better data in OSM.

That said, I’d welcome feedback on whether this strikes the right balance. If there are achievement ideas that would better serve data quality, or concerns about the ones I’ve chosen, I’m all ears.

Technology

For those interested in the stack:

  • Frontend: React 19, TypeScript, Vite, MapLibre GL JS, MapboxDraw

  • Backend: Supabase (PostgreSQL + PostGIS) for course data and feature storage

  • OSM integration: OSM API v0.6 for live data, osm-auth v3 for OAuth2, OsmChange XML generation

  • Data pipeline: Geofabrik PBF extracts processed with osmium-tool for the initial course catalogue

The code will be open-sourced once the alpha reaches a stable point. The intention is for the approach to be adaptable — other sports or facility types with similar “domain-specific mapping” needs could potentially adopt and adapt the pattern.

What I’m asking for

I’m here because I want to do this properly, not in isolation. Specifically:

  1. Feedback on the approach — Is a domain-specific editor like this welcome in the OSM ecosystem? Are there concerns I should be thinking about? I’ve read the Organised Editing Guidelines and want to make sure I’m aligned with community expectations.

  2. Tagging review — I’m following the leisure=golf_course wiki page and the Key:golf scheme. If there are conventions, edge cases, or community preferences I might be missing, I’d really appreciate a pointer.

  3. Quality assurance input — What validation should the editor enforce before allowing uploads? I want to make it hard for users to accidentally create bad data. Overlapping polygons, missing tags, malformed geometries (hello Problematic mapping/golf - OpenStreetMap Wiki ) — what are the common pitfalls you see with golf course edits?

  4. Early testers — If anyone fancies having a go with it I should have a version you can play with soon (not connected to the OSM Dev database yet), I’d welcome the feedback. The editor is live at opencoursemaps.com, currently covering UK courses. You’ll need an OSM account to authenticate.

  5. General advice — As someone new to this community, I’m sure there are norms and practices I don’t know about yet. Happy to be pointed in the right direction.

A note on data integrity

I take data quality seriously. The editor is designed with guardrails:

  • All features are constrained within the course boundary (a 30m buffer prevents edge rejection but keeps things within reason)

  • Tags are applied automatically based on feature type — users don’t manually type tag keys

  • The snap engine aligns to existing OSM nodes where possible, avoiding duplicate geometry

  • OsmChange files can be exported and reviewed before any upload

  • The underlying node registry tracks OSM way IDs so edits are proper modifications, not destructive create/delete cycles

I’m a firm believer that tools like this should make it harder to create bad data, not just easier to create data.


Thanks for reading. I’m genuinely grateful for the project that OSM is, and I want to contribute back in a way that’s useful and respectful. Looking forward to hearing your thoughts — positive, critical, or otherwise.

A special thank you to Jonas [EU/CO] on the OSM Discord who has put up with my many questions and provided epic answers this past week!

JW - OpenCourseMaps

8 Likes

Looks interesting and afaik would be the first special purpose editor that allows “full” geometry manipulation..

My greatest concern is that manipulating OSM geometries and the interaction with tagging is a bit of a black art (aka there’s a lot of undocumented business logic involved). You might be able to side step some of this, but I’m not completely convinced. See https://www.youtube.com/watch?v=3wg0P32QhO4

PS: Trademark Policy - OpenStreetMap Foundation

4 Likes

Thanks for the link to the trademark policy, very useful, a rename is in order!

That video is fantastic - unearthed a few gems for me to explore - thank you @SimonPoole

The video is quite old, for example it was before the step_count upset (a triviality that simply nobody had on their radar), with other words things haven’t got better since then.

This looks like a great project. I would be open to being a US tester for you.

This is great! Exactly the reason I got into OSM - I actually have thinking about doing such a thing for years. I´m more than happy to help over in Sweden and on the project itself.

I would love to acopany this to build a viewer for golf courses in Maplibre JS with 3D featurs to be able to go hole by hole and sviwel with the lables adapting - getting the out of bounds lines marked with a tranclucent wall would also be great - I have some proposed tags for that on the wiki, see

Something also we need to adress is the unfortunate currernt golf tagging scheme - it is hard to with data distinguess holes of different courses who intersect to the same golf club (the contact details shouldn´t they actually be on the golf club (maybe a relation?) becuase the contact details are for the club and not a particular course… It would be sooo great if we could modernize the golf tagging scheme to append something on the course lines/features of a hole to associate it with a particular course so a viewer could step through all holes in sequence with the data on a chosen course… and not just random ref= tags which if the fairways intersect etc it is hard to get a understanding of it)

Hi man, I could collaborate. I’m a software engineer and golf lover.

If you want some contributions I have some time just write to me and we talk.

Nice project

1 Like

@OpenCourseMaps What’s the current website for the editor? It seems https://opencoursemaps.com is no longer working :(

@TrickyFoxy @Fran_Marasco @HuggeK @JustSmitty

Thank you for the feedback! I’ve been on holiday for a couple of weeks but will be getting back into it soon! The name has been changed to FairwayMapper.com (still not live) - but will be open for beta in the next week or so.

At the moment its just UK courses, mainly because I’m in the process of setting up my own Overpass mirror - the public one just isn’t reliable enough sadly. I was down that rabbit hole just before I went on leave but shouldn’t take long to add ROW (memory and storage limits permitting).

3D Viewer with lidar powered topography is definitely on my list!

1 Like

Great! I started gathering some GitHub - HuggeK/opencoursemap: Proposal for project to build a mobile first interactive vector based golf course map viewer. · GitHub - tldr; We need to develop a vector tile schema for golf courses, then generate vector tiles for golf features on all courses (as a mask of all courses in the world to save space/compute) MLT tiles could be nice and then use it with https://mapterhorn.com/ for 3D topography in mapblire gl js. Then develop a vector style with nice grass textures and find 3D textures for tree types mapped to osm trees.

Saw on a diary that someone made a new Overpass Container, could maybe be intresting: Kai Johnson’s Diary | A New Container Image for Overpass | OpenStreetMap

Pretty cool nice work @Kai_Johnson - as it happens I’ve had my own instance of overpass running now for a week or so now with api keys, rate limiting etc. I’ll take a look and see how this compares - expecting alpha release of fairwaymapper hopefully this weekend.

Fingers crossed ^^

2 Likes

FairwayMapper - ALPHA is now available at https://www.fairwaymapper.com

Some things to note:

  • You require an OSM Dev login from https://master.apis.dev.openstreetmap.org - this is different to your standard OSM login.
    • We will move to the main OSM login at BETA phase.
  • Changes do not currently upload to OSM (dev or live) - this is to allow me to build up some confidence in the mapping data that I’m generating mostly, specific attention / validation from anyone who wants to help would be appreciated! My own testing of exporting a .osc into JOSM all seems fine but I’m relatively new to this world so feedback would be great.
  • Achievements, features created etc will be reset at regular intervals, and definitely reset when we move to BETA.
  • Reporting issues can be done via github (theres a button in the UI which will generate a console log and a .osc export that you can attach) - I’ll also try to reply here but this forum is a little more unstructured so replies might be sporadic.

Current Known Issues (I’ll try to keep this up to date)

  1. Out of Bounds icon should to be removed (as per [https://wiki.openstreetmap.org/wiki/Proposal:Golf%3Dout_of_bounds\](Proposal:Golf=out of bounds - OpenStreetMap Wiki "Proposal:Golf=out of bounds - OpenStreetMap Wiki

    (Proposal:Golf=out of bounds - OpenStreetMap Wiki)"))

  2. Practice green mapping tool to be removed (not an established standard as yet)

  3. Not all features within an area are being pulled in, just the golf features that are mappable using our UI - this is/was a flaw in thinking and is being reworked over the next couple of days to always pull all features within the course boundary regardless however they will be greyed out/uneditable within fairwaymapper by design.

  4. Course search - works currently but you need to know the exact course name, fuzzy and region search will be implemented soon.

  5. Courses with split boundaries (tied by relation) are not handled well at all at the moment.

Thank you for anyone who takes the time to consider this little adventure <3

2 Likes

This is not my thing to map. I’d just like to say that I appreciate your approach. Very careful.

2 Likes

Great! Will try tonight!

I’m biased toward this this but I don’t like the Idea to remove golf=out_off_bounds just because it got rejected out of inactivity and only one against- It’s better we take a revote with some actual interested parties who votes and not just people who doesn’t even play the sport voting in something they don’t want to research.

EDIT: Revived the proposal on the disussion page, Proposal talk:Golf=out of bounds - OpenStreetMap Wiki

Don’t necessarily disagree, but as a new tool in the ecosystem, I’m keen to make sure we’re conformant rather than divergent - its easy enough to add back in once it gets wider support.

1 Like

Tested some now and my first batch of feedback:

I tested with Shaffer’s Evergreen Golf Course becuase I could find their course layout on their website. Would be great to get some more context of where I am, getting more place names around which I can search for - that I can feel certain when searching for the golf course. I now need to zoom out and for some z-value the other course names disapear - to cross reference where I am - the name of the course could be wrong. Or a link on the coordinates to the osm.org would be the easiest.

Would be great if we could have an auto or link to an opening_hours tools. E.g.

In regards to the water hazards: Now it is called a penalty area. And they can still be red and yellow (most have red to increase peace of play nowdays) So showing in the UI if it is red stakes or yellow would be good. I will take some new pictures this summer and put on the wiki if I can find yellows. So I think the best way is to use the old naming for the tags put in FairWayMapper use something like “penalty area, red (Before -2019 known as lateral water hazard) and “Penalty area, yellow” (Before -2019 known as water hazard). I added things on the wiki to clarify on this for new players: Tag:golf=water_hazard - OpenStreetMap Wiki, Tag:golf=lateral_water_hazard - OpenStreetMap Wiki

Would be great if we could support gender neutral tee boxes with numbers in how long the course would be which many courses use, I documented this unproblematic in the wiki:Key:tee - OpenStreetMap Wiki with references.

Another nice and common occurance on the golf course is some Tag:information=guidepost - OpenStreetMap Wiki

You may have also thought about this but It would be nice if the editor inputs fairwaymapper as the mapping tool by choice when an upload is taking place in the future.

EDIT: Also: an imporant feature is to be able to put in the distance of the hole/tee also in meters - not only yards, the dist key is in meters, Key:dist - OpenStreetMap Wiki

1 Like

How is multiple courses on one golf club(golf_course) handled?

Somone suggested to use route=golf as other sports are doing it

See discussion under Talk:Tag:leisure=golf course#Multiple Named Courses in a club

But that wouldn´t solve a potential need to associate other objects on a course to a specific hole on one course.

Where is the name A, B, C, D fetched from and would someone add these into OSM.org through another editor?

I’m no golfer at all, but like to try custom editors for all kinds of things.
Two short notes on that.

  • I wanted to look at a course in Switzerland, the Golfpark Moossee.
    I can only find Way: ‪Golfpark Moossee‬ (‪164019638‬) | OpenStreetMap with your tool, while Way: ‪Golfpark Moossee‬ (‪335066640‬) | OpenStreetMap does not show up. Would they need to be “bundled” in a relation?
  • I wanted to search for another course, close to Morschach in Switzerland. I cannot find any course with searching for “Morschach”, but have to know that it’s called " Golf Club Axenstein", then your tool finds the correct course (and tells me it’s close to Morschach). Can you “extend” the search a bit?