Cloudcroft disc golf

AR map + scorecard for Cloudcroft, New Mexico disc golf.

The live map, right here. Click any colored point for its name, coordinates, and field photo. Bigger: full map + scorecard · Cloud-Cam

Stand on the mountain — tap a panorama

loading panoramas…

The field day in pictures

loading photos…

Two courses hand-built by Ray Haller

Haller cut the Community course out of the hillside by hand over six and a half months; it is now the second-ranked course in New Mexico. Pick a course:

9holes
27par
901 ftall-putter golf
6GPS points located Nov 1

Under aspen and doug fir at the west end of Zenith Park, redesigned May 2025. Open Tiki on the map →

The dataset

Five open sources, each verified covering Cloudcroft before use. No personal or sensitive data anywhere.

Source What it gives
USGS 3DEP 1 m DEM One 248 MB tile covers both courses. Anchor elevations match the National Map to 0.1 ft — the elevation source of record for plays-like distances.
USGS NAIP 2022 60 cm imagery One tile, cropped to a course window for the satellite toggle and draped over the 3D terrain.
OpenStreetMap trails Live bbox extract: 46 paths + 26 footways with real trail names. The S3-native Daylight parquet path was attempted and rejected on measurement — no spatial partitioning; same data, bbox API, 20 seconds.
Ground GPS (Nov 1 survey) Community holes 1–2 fully pinned (tee + basket averaged fixes, par/distance/mando notes, sign photos); hole-2 basket photographed; 6 unnamed Tiki points located. The rest is honest scaffolding until the next field day.
NOAA US Climate Normals 1991–2020 Cloudcroft station monthly normals, fetched live from the Registry of Open Data bucket (noaa-normals-pds) — the one Registry dataset this build pulls programmatically.
SW Maps recording community tee 2 with par, distance, and mando note
Field capture: the averaged fix plus the remark that becomes the hole's row.
Hole 2 tee sign: 245 feet, par 3, mando and fence-line out of bounds
Hole 2 tee sign — the par source.

The full run of 20 SW Maps phone screenshots stays in the survey archive (see dataset/survey/2026-11-01-community/MANIFEST.md in the repo), not republished here — raw phone screens carry the precise fix readouts and device status line. The framed tee-2 capture above is the one curated example.

From phone to scorecard

Run the pipeline — three commands, real output:

The field procedure, same every course: high-accuracy 30-fix averages at each tee and basket, par + distance typed into the point note, tee-sign and basket photos with camera location tags on. The phone then uploads straight to a throwaway FTP dropbox on the home LAN — no cables, no Drive round-trip:

python scripts/swmaps_ftpd.py <password>
# serving dataset/survey/_incoming/ftp/ on 192.168.4.53:2121 as swmaps

SW Maps project backups carry every point, note, and attached photo. A small extractor turns them into open GeoJSON — no app lock-in:

python dataset/scripts/swm2_to_geojson.py community.swm2 Photos/ survey/2026-11-01-community
# wrote survey/2026-11-01-community/points.geojson: 21 points

All 27 survey points, live

Read straight from the files the map serves. Tap a point to open it on the map; tap a photo to see what the phone saw there.

Point Kind Coordinates Elev (m) Note Photo
loading survey points…

Play the first two holes

Real distances and pars off the tee signs. Tap your throws in — the full card takes it to DynamoDB.

Hole 1 — Par 4 (pro) · 411 ft 4 E
Hole 2 — Par 3 · 245 ft · mando right, fence OB right 3 E

Even through 2. Open the full card →

Take it to the real card: hole 1 on the map → · hole 2 on the map →

AWS services used and why

Tap a service to find its row:

Service Role Why this one
Amazon Location Service Topo + imagery maps, place index, geofences, tracker, routes One managed home for every spatial primitive; geofences trigger hole arrival on-site.
Amazon S3 Dataset prefix + static hosting Open-data tiles stage next to derived JSON; same bucket serves the bundle.
AWS Lambda (Rust, ARM64) Plays-like distance + scorecard API Sub-100 ms math at pennies per round.
Amazon DynamoDB Scorecard rounds, on-demand Schemaless rounds, zero ops, survives the phone in a pocket.
Amazon Cognito Guest identity pool, one scoped role No logins on the course; same role serves web and Android.
AWS CDK (TypeScript) Whole stack as code One deploy recreates everything.

More mountain radio

The player is at the top of this page — the same tuner rides along on the map and Cloud-Cam pages.

What is live, what is next

The survey so far — one dot per GPS point (blue tee, gold basket, grey located-not-yet-labeled). Tap a dot:

loading survey points…

The map and scorecard are live, as is the Cloud-Cam — reach both from the bar pinned to the bottom of this page. The repo stays private while the demo video is cut. Still to come: the under-3-minute demo video, then the Builder Center project post.

Cloud-Cam view of the courses from orbit on 1-meter terrain
From orbit — pins, trail ribbons, 1-meter terrain under NAIP imagery.

Day-two build underneath: anchors are geocoded, elevation comes from the USGS 3DEP 1-meter DEM, trails from OpenStreetMap, imagery from NAIP 2022. Community holes 1–2 carry ground pins; the rest land with the next survey — then AR overlays, plays-like distances, and per-hole geofences switch on.