8/22/2025 UPDATE: I have had some discussions with ARRL about this rule for VUCC. In short, the intent of the rule is a 200km diameter circle enclosing all locations used toward VUCC rather than no two locations being farther than 200km apart. It is possible to meet the rule as written and not be within that circle (for example, consider an equilateral triangle with each side 200km; the corners would not fit within a 200km diameter circle). They are evaluating updating the rule to be more explicit, but in any case, I would suggest NOT using my script discussed below as it will not meet the 200km diameter circle intent with its outputs. While I personally take issue with the intent of the rule being clearly different than what is written, I don’t want to lead anyone astray. I will leave this post here for historical purposes.
ORIGINAL POST: As a relatively active rover for satellite operations, I’m often looking to check whether a new location will be within my “VUCC circle” and be eligible to count for my home station VUCC certificate. Rule six of the ARRL’s VHF/UHF Century Club (VUCC) Award Rules states:
For VUCC awards on 50 through 1296 MHz and Satellite, all contacts must be made from locations no more than 200 km apart. For SHF awards, contacts must be made from a single location, defined as within a 300-meter diameter circle.
This means that I can use many operation positions, including those from different grids and parks from my Kansas State Parks POTA mission, and effectively double dip on these contacts as long as no two locations are more than 200km apart. Although it’s easy enough to manually measure distance between locations using the ruler tool on Google Maps, as your list of locations grows, that gets difficult. I decided to write a quick and dirty Python script that checks every combination of locations against one another to see if any are more than 200km apart.
Using the script is fairly simple: just update the placeholder name for each location in the list and the associated latitude and longitude, and run the program from a terminal. Keep in mind the script expects latitude and longitude in decimal degrees format. If all locations are 200 km apart or less, a message will be printed that confirms this. Otherwise, the specific locations beyond the 200 km distance will be called out. As your list of locations grows, simply follow the same format and add additional lines to the “locations” list. Also, note that this script utilizes GeoPy, so be sure to install it beforehand (in addition to Python itself, of course). GeoPy uses the Karney algorithm for computing the geodesic distance.
I have the script on GitHub as vucc_circle_checker, so feel free to download and play with it. I’ll update this blog post if I make any functionality changes or major operational changes to the script in the future.