Azimuthal Projections Info

Example azimuthal map
Azimuthal projection from ARRL headquarters

This all started when I was interested in calculating the distance and bearing between amateur radio stations. I found this reference on calculating the great circle distance and bearing. Ultimately, this interest led to a web form for producing azimuthal maps.

For those who never heard of an azimuthal map, it is a special kind of map that prioritizes correctly showing the great circle distance and bearing from the center reference point. Azimuthal maps are particularly useful for ham radio operators with a directional antenna. For example, if you’re in Connecticut and you want to talk with someone in Cameroon (Africa), the azimuthal map will tell you to point your antenna to a bearing of 90° on a compass (technically you also must adjust for the difference between magnetic north and true north).

It occurred to me that this the bearing and distance calculation was the fundamental tool for making an azimuthal projection. All I needed was a database of land and political boundaries expressed in latitude/longitude pairs.

The azimuthal project is always made from a particular reference point on the globe, and I can convert the points in the  land and political boundary database into bearing and distance using the great circle calculations. This gives me a collection of points in polar coordinates (r, Θ) which is what I need for the azimuthal projection.

For the land and political boundary information, I used the database from the CIA World Databank II; however, it required some massaging. First it was too detailed, and I had to filter the data to an appropriate resolution. Next, I wanted land masses and water bodies to be represented by closed paths. The CIA World Databank II is a collection of unconnected paths, so I had to write a program to patch them together and reorder the points to be clockwise. Having closed paths of points ordered in clockwise orders is necessary to have water and land colored differently. Lastly, I had to identify which closed paths represent land and which represent water. Unfortunately, this work is incomplete. You’ll notice some lakes that aren’t colored blue.

Initially, my Ruby program was generating raw PostScript. However, I recognized that it would be easier for people to use if it generated a PDF.  Rather than using a Postscript to PDF convertor, I changed to generating PDFs directly using the Ruby PDF::Writer. By using PostScript or PDF, I get vector graphic output that is scalable from small to very large sizes without having to make a huge raster graphic files.  There is a limit to the resolution of the continent & political outline data, so at very large sizes, the outlines may not appear smooth.

Ultimately, I used the great circle distance formula from Wikipedia. According the article, it’s accurate for both long and short distances.

The hardest part of the whole project was getting the water blue. There are still some maps where the program gets it wrong, and you’ll see weird coloring. Things tend to go wrong when the reference point is inside a particular small region of land or water. In these cases, the floating  point accuracy seems to cause the colors approach to fail.

My plans for future improvements include:

  • add small tables of bearing & distance for important world cities around the margins
  • add US and world cities to the map (particularly for area map)
  • adjusting political boundaries and labels to be more accurate
  • adding more views to allow people to report lakes that aren’t colored correctly

380 thoughts on “Azimuthal Projections Info”

  1. Hoping to make a map centered on my location, but apparently your server cannot be found… It is 1/3/2021

  2. Hi Tom…
    I tried several times using this string: 33° 41′ 14″ N, 117° 49′ 33″ W
    Kept getting “Internal Server Error”. Also tried different sizes, with the same result.
    Thanks for providing such a nice service.

    Jon KA6MOK

      1. Ah, that works. I guess you can’t use N/S or E/W to indicate + or – anymore? Good to see it’s working otherwise.

        Thanks again!

      2. Oops.. re read the instructions, and it was probably my formatting, the page won’t parse the degree, minute, second characters. right? Anyway, yet another lesson in RTFM… 😉

  3. This is an excellent resource! Something I wish it had was an option to fill in Maidenhead grid squares with either two or four places (e.g. CM or CM86, depending on map resolution)

  4. Thank you for this! I needed to calculate the angle between two locations when drawn on a polar azimuthal equidistant map, and your tool allowed me to calculate it real easy.
    One question: would you have similar software for maps in other polar azimuthal projections like stereographic and gnomonic?

  5. HI,
    can You add the equator line the see the part of the other hemisphere and choose it with a flag ?
    Anyway great app.
    73 de ik8udd, Ermanno

  6. Hi,
    Many thanks for this great tool.

    If I understood it correctly , here is the place to report bugs etc 🙂

    I have a remark/bug and a little wish 🙂

    Remark:
    When I generate a map with for example 1500km from JN39 I have all continental Europes countrys in blue and the U.K. & Ireland in white. So it takes in count Brexit 😉

    little wish: Ability to generate Great circle maps with 4 char locators written on it for VHF / UHF work 🙂

    Many thanks

    Regards

    Felix

    1. I never found a bullet proof way to see if the center was enclosed in land or not. In most cases, I was able to fix the blue by using a nearby location or different distance. You can also turn off the blue.

  7. Hi Tom,

    I really enjoy using your Azimuthal maps and find it helpful. I was wondering for a future feature if you could plot “real time” MUF as seen at https://prop.kc2g.com/ but overlaid onto the Azimuthal data for a selected location. It would let you see in real time if propagation is likely open between the selected location and any place in the world easily.

    Thanks again!
    NT6H

  8. Bug report: When I use the parameter: Center: 22°18’0″N 114°0’0″E Radius: 10000 km to generate the map, the part from France to Greenland become bugged with national and land boundary broken.

  9. In addition to the previous reported problem, Fiji is also bugged in multiple map different maps that show it, including the map of Center: 22°18’0″N 114°0’0″E Radius: 10000 km

    1. Yes, bad things happen when there is a small island on the other side of the world from the center. Small islands are defined by very few points, and some of the approximate methods used in the map generation fail. You can often resolve the problem by moving your center a little.

      1. I think the problem with Fiji is not merely because of small island. Instead, it seems to me there are some islands near Fiji that crosses the 180 degree longitude, and isn’t handled correctly, causing and abnormal white quadishape around the area.

  10. In addition, there are problem with map data, like the map didn’t show the name of Hong Kong when click showing city name, but instead show “Xianggangdao”, and it displayed “Macao, China” as country name instead, while it didn’t display the name of Taiwan, and for the Taiwan city of Taipei and Kaohsiung, it also spelled their name as Taibei and Gaosyong using less common way of transliteration
    The map have also missed the boundary between Koreas and the boundary between Russia and Kazakhstan, Ukraine, Belarus, Baltic countries, Greogia, Armenia, and Azerbaijan, as well as border between Israel, Jordan, Lebanon, Egypt. The map also missed border between Saudi Arabia, UAE, Oman, Yemen, and Bahrain, with Yemen’s label also disappeared. Border between Somalia and Ethiopia is also partially missing. And there is a strange gap between the border of Iraq and Saudi Arabia, near Kuwait.
    The map also missed the label for “Pyongyang” and other North Korean cities, with Nampo being name of the only one being shown. The map also missed any city in Laos.
    The map labelled Northern Mariana but missed Guam. It also shortened the name of Federation of Micronesia into Micronesia which IMO shouldn’t happen because Micronesia is also the name of the bigger region it’s in.
    It displayed Australian capital as “Canberra-Queanbeyan (ACT-NSW)” which I am not sure what it mean. The map also missed New Zealand capital.
    South Sudan is missing from the map together with their cities.
    National label for Singapore is also missing.
    Anchorage in Alaska is being shown as “Anchorage municipality which is quite redundant.

    1. The sources used for land and country borders are old. It has many flaws are you point out.

      I have a new program based on another more recent database, but I haven’t had time to make it robust enough for deployment via WWW.

    1. Load PDF in Inkscape, use the export PNG feature to make a PNG bitmap at the desired resolution. The GIMP, can convert the PNG into a JPEG if that’s desired. On Linux, there are lots of other tools that can convert a PDF to JPEG.

  11. Feature Request: It would be nice, if instead of generating the map on a single A0/A2/A4 paper, it can also generate the map and cut it up into 2×2/3×3/4×4 pieces of A4 paper in the PDF, with an additional index page showing their order.

  12. Another feature request: Add blue marble satellite photo, or topographical map, as optional map layer to the generation product, similar to gcmap dot com’s option

  13. Hi Tom,
    this is a great, very useful tool. I generated a map for VHF/UHF contest use around my locator using radius 1.200 or 1.600km. Would it be possible, not to have only Maidenhead greater fields but also squares (00..99) ? E.g. with thin red lines and numbers ?
    I would really apriciate such a feature.
    vy 73 de Rolf

    1. If you would like to edit the program to add this capability, I can give you access to the code and provide the outline data.

  14. How do I send you an azimuthal map that shows the center of a circle that just touches 3 extreme points on the coasts of the Lower 48, the smallest circle that surrounds all territory of the Lower 48?

  15. I keep getting a “500 Internal Server Error” when attempting to create a map. I attempted with both a city and state and the actual latitude and longitude.
    Your fellow amateur radio buff Geoff Fox posted a link to your Azimuthal Projections map web site, so I guessing you have had a multiude of requests.
    I will bookmark the site and try later

  16. hi not sure if im doing something wrong or the map is doing something wrong LOL. I type in cords, distance, etc click show city labels, submit the map and it gives me grids and towns but its all blue. No map or anything else shows up. Is that right? in a video I watched of LCARA Ham Radio they had lakes and roads and more on their map.
    What am I doing wrong?

    1. There are some heuristics (approximate methods) to determine which side of the graph is inside the shape (land) and outside the shape (water). Sometimes, this goes horribly wrong, and land and water are inverted or just blue everywhere. Sometimes you can get something better by turning off the water fill (deselecting blue background).

  17. im not seeing the actual map just blue. I do see the cities names but no map. any help is much appreciated.

    1. There are some heuristics (approximate methods) to determine which side of the graph is inside the shape (land) and outside the shape (water). Sometimes, this goes horribly wrong, and land and water are inverted or just blue everywhere. Sometimes you can get something better by turning off the water fill (deselecting blue background).

  18. How can I download it so that the texts and the lines will be layers instead of just an image on a PDF?

    Like I want to open it in GIMP with everything as a layer so I can turn it off and on as needed

    1. I understand what you’re asking for having used GIMP myself, but I don’t believe it’s achievable without a lot of programming work. If you want to do the programming work, I can make the source code and data files available to you.

      I think Inkscape is a better tool to use on the PDF because Inkscape knows how to read scalable vector graphic file formats. You may be able to do some of the post processing you want without any changes by me.

  19. Hi! I love this map tool, but I’m running into a problem. If I center on the North Pol (90N 0W) and render the maximum distance, the heading degrees are messed up. For example, New Zealand is rendering at the top of the map, heading 0 degrees.

    This is entirely wrong as compared to, say, Gleason’s map or even just historical land claims in Antarctica. For example, New Zealand historically claims the Ross Dependency (150 degrees west to 160 degrees east). This would be on the OTHER side of Antarctica from New Zealand according to your headings.

    Maybe I’m missing something (reawakened an interest in geography in my old age, haha) but it seems to me like your headings are inverted from top to bottom in my end result projection.

    Anyways, I’d be very appreciative of some insights or thoughts. I’m wondering if I incorrectly formatted my input or missed some means of offsetting/inverting the headings. I can make this work for my uses, but it means I’ll have to overwrite all the headings by hand.

    1. This reminds me of an old puzzle. You’re in a hut with all southern views. You look out the window and see a bear. What color is the bear?

      An azimuthal map from the north pole is basically undefined. If you’re at the north pole, every direction you look is south (a bearing of 180 degrees). In some respects, I suppose the map should collapse into a line where everything is at bearing 180.

      Navigations or map specialists may have a way to handle this, but it’s beyond me. If you’re planning a trip near the poles, I suggest working some somebody with more expertise than me.

  20. First off, this is a great tool! Thank you for building it. Unfortunately, some islands and bodies of water are colored inconsistently.

    For example, this request:
    Grid location: CN87uo
    Distance: 1000

    The various islands (Vancouver Island, the San Juan islands, etc.) are white instead of blue. Some major bodies of water are white (in northern California) but most are blue (in British Columbia, Washington, Idaho, Montana, etc.).

    1. Yeah, the method to determine what the inside of the land isn’t perfect. You can turn off the blue water to get something more reasonable.

  21. Awesome work! I haven’t noticed problems from the several locations that I’ve used as center. I have two suggestions that should be easy to implement.
    – an option to add tropics, polar circles, poles and equator (independently from lat/long grid)
    – an option to have no political borders at all. A clean map of only landmass and water.

    1. Glad that it has worked well for you. Thanks for your suggestions. I have no idea if I’ll ever get around to implementing them.

  22. Great tool but the map and the country boundaries are a bit too old. Like 30 years or so. 🙁 Yugoslavia does not exist since 1991!

  23. Two comments:
    First, in your first paragraph from this page (https://ns6t.net/word/?page_id=10), you state, “technically you also much adjust for the difference between magnetic north and true north”. “Much” should be “must.”
    Second, a world map on an 8.5″x 11″ paper is rather small. Is it possible to make an option to print portions of the map on each of several sheets, to be pasted together after printing into a larger map?

    1. Thank you so much find reporting the typo! I believe there are some tools to print large PDFs using multiple pages using “tiling”.

  24. Is there an azimuthal map for local contacts? When I zoom in to a 100km radius the terrain detail is very low. I’m looking for a VHF/UHF friendly map and Radio Mobile doesn’t let me use more radials on its maps. Thank you.

  25. Hello there! Good job on the website, do we have an ETA for the new program you’ve been talking about thats not yet ready for web development?

  26. Hello, I am trying to create a map with more precise location info that I did previously. But all I get is an error message as follows:

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator at webmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

    More information about this error may be available in the server error log.
    Apache/2.4.38 (Debian) Server at ns6t.net Port 443

    Can you help?

    Thanks

    -david BTW

  27. Hey Tom,

    Just dropping by to say hello and a long time no see. Hope all is well.

    As always thanks for the very useful tool!

    Eric
    de AK6Y (formerly KE6MRG)

Leave a Reply to Glenn Thomas Cancel reply

Your email address will not be published. Required fields are marked *