mangrovedigital/tide-engine-api
0
1"""Curated high-traffic preset spots the UI shows as quick-picks.
2
3These are the recognized launches (ramps/marinas) and the passes/crossings that
4anglers and guides actually run across the 10k Islands / Everglades coast /
5Florida Bay / Flamingo corridor -- not random points. The UI reads GET /api/spots
6and, on selection, calls /api/forecast_gps?lat=&lon= with the spot's coordinates.
7
8Coordinates are placed at the known ramp/pass; fine-tune from real GPS marks
9(Oscar's Lowrance waypoints are the exact high-traffic set).
10"""
11
12SPOTS = {
13 # --- Launches / marinas (the "can I get the boat in?" spots) ---
14 "flamingo": {"name": "Flamingo Marina", "kind": "ramp",
15 "region": "Flamingo", "lat": 25.1411, "lon": -80.9250},
16 "port-of-islands": {"name": "Port of the Islands (Faka Union)", "kind": "ramp",
17 "region": "10k Islands", "lat": 25.9270, "lon": -81.4910},
18 "everglades-city": {"name": "Everglades City Ramp", "kind": "ramp",
19 "region": "10k Islands", "lat": 25.8460, "lon": -81.3840},
20 "chokoloskee": {"name": "Chokoloskee", "kind": "ramp",
21 "region": "10k Islands", "lat": 25.8130, "lon": -81.3620},
22 "goodland": {"name": "Goodland / Calusa Island", "kind": "ramp",
23 "region": "10k Islands", "lat": 25.9280, "lon": -81.6450},
24 "islamorada": {"name": "Islamorada (bayside)", "kind": "ramp",
25 "region": "Upper/Mid Keys", "lat": 24.9200, "lon": -80.6300},
26 "key-largo": {"name": "Key Largo (bayside)", "kind": "ramp",
27 "region": "Upper/Mid Keys", "lat": 25.1000, "lon": -80.4500},
28 # --- Passes / runs / crossings (the "will I make it?" spots) ---
29 "indian-key-pass": {"name": "Indian Key Pass", "kind": "pass",
30 "region": "10k Islands", "lat": 25.8180, "lon": -81.4750},
31 "lostmans": {"name": "Lostmans River", "kind": "pass",
32 "region": "Everglades coast", "lat": 25.5530, "lon": -81.1650},
33 "shark-river": {"name": "Shark River", "kind": "pass",
34 "region": "Everglades coast", "lat": 25.3750, "lon": -81.0200},
35 "whitewater-bay": {"name": "Whitewater Bay", "kind": "run",
36 "region": "Flamingo", "lat": 25.3100, "lon": -80.9500},
37 "fl-bay-crossing": {"name": "Florida Bay Crossing (mid)", "kind": "crossing",
38 "region": "Florida Bay", "lat": 25.0000, "lon": -80.7500},
39 # --- Lee / Collier / Charlotte coastal ramps (additive; FWC Boat Ramp Inventory) ---
40 "ainger-creek-park-boat-ramp": {"name": "Ainger Creek Park Boat Ramp", "kind": "ramp",
41 "region": "Charlotte County", "lat": 26.9302, "lon": -82.3362,
42 "source": "FWC-BRI 2026-07-04"},
43 "eldred-s-marina-boat-ramp": {"name": "Eldred's Marina Boat Ramp", "kind": "ramp",
44 "region": "Charlotte County", "lat": 26.8301, "lon": -82.2699,
45 "source": "FWC-BRI 2026-07-04"},
46 "ponce-de-leon-park-and-public-boat-ramp-punta-gorda": {"name": "Ponce De Leon Park and Public Boat Ramp (Punta Gorda)", "kind": "ramp",
47 "region": "Charlotte County", "lat": 26.9094, "lon": -82.095,
48 "source": "FWC-BRI 2026-07-04"},
49 "bayview-park-public-boat-ramp-naples": {"name": "Bayview Park Public Boat Ramp (Naples)", "kind": "ramp",
50 "region": "Collier County", "lat": 26.1028, "lon": -81.7846,
51 "source": "FWC-BRI 2026-07-04"},
52 "caxambas-park-and-boat-ramp": {"name": "Caxambas Park And Boat Ramp", "kind": "ramp",
53 "region": "Collier County", "lat": 25.9126, "lon": -81.7171,
54 "source": "FWC-BRI 2026-07-04"},
55 "cocohatchee-river-park-marina": {"name": "Cocohatchee River Park Marina", "kind": "ramp",
56 "region": "Collier County", "lat": 26.2936, "lon": -81.82,
57 "source": "FWC-BRI 2026-07-04"},
58 "rookery-bay-natioanl-esturarine-reserach-reserve-shell-island-road-primitive-boat-launch": {"name": "Rookery Bay Natioanl Esturarine Reserach Reserve - Shell Island Road Primitive Boat Launch", "kind": "ramp",
59 "region": "Collier County", "lat": 26.0238, "lon": -81.7341,
60 "source": "FWC-BRI 2026-07-04"},
61 "bay-park-north-primitive-boat-ramp-limited-parking": {"name": "Bay Park North Primitive Boat Ramp (Limited Parking)", "kind": "ramp",
62 "region": "Lee County", "lat": 26.3593, "lon": -81.8578,
63 "source": "FWC-BRI 2026-07-04"},
64 "bocilla-island-seaport-and-fishing-pier": {"name": "Bocilla Island Seaport and Fishing Pier", "kind": "ramp",
65 "region": "Lee County", "lat": 26.7046, "lon": -82.1642,
66 "source": "FWC-BRI 2026-07-04"},
67 "d-d-matlacha-bait-tackle-and-ramp": {"name": "D & D Matlacha Bait, Tackle and Ramp", "kind": "ramp",
68 "region": "Lee County", "lat": 26.64, "lon": -82.0578,
69 "source": "FWC-BRI 2026-07-04"},
70 "frizzell-kontinos-boat-ramp-at-punta-rassa": {"name": "Frizzell-Kontinos Boat Ramp at Punta Rassa", "kind": "ramp",
71 "region": "Lee County", "lat": 26.4846, "lon": -82.0104,
72 "source": "FWC-BRI 2026-07-04"},
73 "pine-island-commercial-marina-weekends-and-holidays-only": {"name": "Pine Island Commercial Marina (Weekends and Holidays Only)", "kind": "ramp",
74 "region": "Lee County", "lat": 26.5927, "lon": -82.1262,
75 "source": "FWC-BRI 2026-07-04"},
76}
77# add ids + tz
78for _id, _s in SPOTS.items():
79 _s["id"] = _id
80 _s["tz"] = "America/New_York"
81
82
83def public(spot):
84 return {k: spot[k] for k in ("id", "name", "kind", "region", "lat", "lon", "tz")}
85 