Planning the 25-Park Rove

As I discussed in my end-of-year radio wrap-up, I’ve got a bunch of plans for POTA roves over the coming year, such as the 10 parks/10 miles/10 hours rove on foot, and my first 15-park rove. The 15-park rove will hopefully cover every park in the Purbecks in a day-long race around the peninsula, culminating in the 7-fer spot. Even though a 7-fer is kind of cheating, it feels like that would be a lot for one day, and so I wondered if people had ever made it beyond 15—and if so how?

Then in the latest episode of Ham Radio Workbench, Sebastián KI2D casually dropped that he did a 25-park rove! This wasn’t explored in the podcast, so I asked him separately how on Earth he managed this. The answer is very simple, and thoroughly American: don’t leave your truck.

My 15-park rove plan involved hiking in and setting up the station in each park, which takes a lot of the available time, probably more than operating or driving. A car-mounted antenna removes that whole section of time in each park, allowing many more parks in a single day.

Now I mostly do outdoor radio for the hiking, and I don’t really like activating from the car. (I’ve done it once, but even then the antenna was set up on the grass next to the car park.) But while I may not like car activations, I do like ridiculous challenges, and so the idea settled in my head that maybe I should try a 25-park car rove.

And of course, I also like programming GIS nonsense, so read on…

Map of green and red pins around the local area The result of running the script below—a KML file with green and red markers showing parks that can (and can’t) be activated from a car, according to POTA.

In the US POTA system, only state and federal parks count as activation spots. This leads to long drives between activation spots, but on the plus side I imagine most can be relied on to have decent car parks. Over here in the UK things are on a much smaller scale, with any small town park being a viable spot, but the disadvantage is that many don’t have car parking at all.

The first step in figuring out the scale of my 25-park challenge was to determine which parks could be activated from the car park. Luckily, the POTA API provides this information (at least, so long as the mapping representatives have set it). So I wrote the following Python code to find all parks within 50km of me, query whether they could be activated by car, and produce a KML file with green and red pins according to their status.

from datetime import timedelta
import great_circle_calculator.great_circle_calculator as gcc
import maidenhead as mh
import simplekml
from requests_cache import CachedSession

HOME_GRID = "IO90br"
WITHIN_KM = 50

# Calculate lat/lon from grid
lat, lon = mh.to_location(HOME_GRID)

# Fetch list of parks within +-1 degree lat/lon of home
session = CachedSession("pota-local-progress-cache", expire_after=timedelta(days=1))
parks = session.get(
    "https://api.pota.app/park/grids/" + str(lat - 1.0) + "/" + str(lon - 1.0) + "/" + str(lat + 1.0) + "/" + str(
        lon + 1.0) + "/0").json()["features"]

# For each park, calculate its distance and store it with the rest of the data
home = (lon, lat)
for park in parks:
    park_loc = (park["geometry"]["coordinates"][0], park["geometry"]["coordinates"][1])
    park["properties"]["distance_from_home"] = gcc.distance_between_points(home, park_loc, unit='kilometers',
                                                                        haversine=True)

# Limit to parks within distance
parks = list(filter(lambda x: x["properties"]["distance_from_home"] <= WITHIN_KM, parks))

# Initially mark all parks as not car-activateable
for park in parks:
    park["properties"]["car"] = False

# Fetch park data and see if it is car-activateable
for park in parks:
    park_data = session.get(
        "https://api.pota.app/park/" + park["properties"]["reference"]).json()
    if park_data["activationMethods"] and "Auto" in park_data["activationMethods"]:
        park["properties"]["car"] = True

# Create KML object to fill with parks
kml = simplekml.Kml()

# Write output
for park in parks:
    kml_color = "ff00cc00" if park["properties"]["car"] else "ff0000cc"
    pnt = kml.newpoint(name="",
                       description=park["properties"]["name"] + "<br/>https://pota.app/#/park/" +
                                   park["properties"]["reference"],
                       coords=[(park["geometry"]["coordinates"][0], park["geometry"]["coordinates"][1])])
    pnt.style.iconstyle.color = kml_color

kml.save("pota-car-activateable.kml")

That produced the output above.

My next step was to manually adjust things as follows:

  1. I’ve been to almost all these parks, and in some cases my knowledge was better than the data. In most cases this was due to the “activation methods” simply not having been fully set in the POTA system, where I knew a car park was present. However, I also found a few cases where POTA claimed Automotive as an activation method, but I wasn’t convinced.
  2. In a few cases I reviewed the park boundaries on Steven M1SDH’s UK Portable Ham Map to see if a car park was inside or outside a defined boundary. In other cases such as small town parks with no well-defined boundary, I decided that if a park had a dedicated car park, that was good enough, but general road-side parking nearby was not.
  3. I prefer to go west rather than east for most of my radio adventures, so I deleted some of the pins around the Southampton area. I also deleted the ones on the Isle of Wight, as the schedule for a 25-park rove would not have time for ferry crossings.
  4. For large parks such as the New Forest, I dragged the pin from POTA’s location to a known car park that is closer to the general cluster of other pins.

Map of green and red pins around the local area The result after the manual adjustment phase.

From there, I used my own knowledge of the local roads and travel times to find what looked like the best cluster of 25 parks, also factoring in travel time from home. This result is shown below, where I have also removed the red markers to tidy up the data. From Stobourough Heath in the west to Sturt Pond in the east, this is only around 50km as the crow flies, and probably around 70km of driving.

The route shown between green markers

The easiest 25-park route.

The remaining challenges now are picking a date (long daylight hours but not too many tourists), buying a suitable car-mounted antenna, and finding the courage to do this at all.

(And then, when I posted about this on Fedi, I got a message from N3VEM suggesting that the POTA rove record might be about 30… So, do I push this even further? Because with a few tweaks, I absolutely could…)

Planning spreadsheet showing a whole day of activations pushing the total to 30

VE6LK POTA Planner for a potential 30-park rove

Comments