Once I had the basic azimuthal map working, I wanted to be able to put notable cities and towns on the map too. To do this, I needed a database of places with their name, latitude/longitude, and population. For the United States, this information is available from two government organizations: the U.S. Board on Geographic Names (part of the U.S. Geological Survey) and the U.S. Census Bureau.
On the U.S. Board on Geographic Names download page, I found a database of named places (e.g., cities, towns, populated places, and parks) that included the latitude/longitude. The database has about 190,000 entries, so it was clear I needed some way to prioritize which ones to include, and population seem like the best way to prioritize.
I wrestled with the U.S. Census Bureau’s web site for a while before I found a way to download a file with total population for places. It looks like a downloaded Summary File 1. This file may have both types of information (latitude/longitude and population) in a single file. The names, locations, and populations of non-US cities were provided by The World Gazetteer.
The remaining challenge is how to automatically choose which cities to put on the map and which to leave off. Population is a useful starting place, but it leaves out important landmarks. I need to figure a way to prevent listing lots of cities in high population density areas and none in the low density areas.