Creating maps of ham radio contacts

I get asked a lot, both as comments on this site or via direct emails to me on how I create the maps of the contacts I make and embed within posts.  I’m going to describe how I do it using the software and systems I use on a daily basis. There might very well be other programs or methods to do this but I’m just explaining the steps I take. There might also be additional tricks or enhancements that Google has added that I’m not yet aware of, so please comment on this post if there are new tricks.  This is a long post as I’ve tried to go into detail on many of the steps and include a few screenshots where it seemed appropriate and if viewing this on the home page, click to view this post on its own to see all the steps. When I want to run through the steps below after a contest, once the data is cleaned up, it is less then 5 mins from start to finish to create and crop the image I use in my posts.

Here’s an example of a map recently generated  and what follows is how I create it(click to enlarge):

First is getting the data loaded:

I use N1MM for contests but that doesn’t really factor into the maps. After a contest, I export 3 files from N1MM – a cabrillo log file which is submitted to the contest group; a summary file which shows the number of contacts, points and multipliers by band; an ADIF file of the contact info which I then import into my day to day logging program.  My day to day logging program is Ham Radio Deluxe (HRD) by HB9DRV.  After each contest I import the entire ADIF file from N1MM and manipulate the data within HRD. I actually create a contest specific logbook and import the ADIF file into the new logbook. I use this logbook just for cleanup and manipulation of the new contest data without having the other thousands of records involved which might lead to a big OOPS if I inadvertently edit or batch update the wrong set of data. After I’m done manipulating the data in the contest logbook, I export it from the contest logbook and import it into my main HRD logbook that has all contact records.

Second is providing a grid locator for each contact:
So what is important to showing each point on a map? The maidenhead grid locator is what is needed for each record and that specifies the latitude & longitude of each contact, pinpointing the location of the contact made. There are many ways to get the grid locators into each imported record from manually editing each one and having QRZ individually pull in what it knows (for the ones it has grid info on) to a more automated way using a program called Ham Radio Deluxe Utilities (HRDU) by WD5EAE. HRDU is used in conjunction with the XML subscription from QRZ. A QRZ XML subscription is not free, but very worth it if you want grid locators on your data. Using HRDU in conjunction with the XML subscription from QRZ, you can quickly update hundreds of grid locators in a few seconds. Now every call sign on QRZ doesn’t have a grid locator specified, but for US ones they are 99%+ there. And for non-US ones, they are mostly there. I’ve created a web page that is useful for finding grid locators for call signs (or addresses) that don’t provide one. Check out for a way to find grid locators for calls that don’t have one listed on QRZ. I also use my existing logbook to find grid locators for calls which QRZ didn’t have but I’ve previously made a contact with the same station. This happens very often in contests as a large majority of contest contacts for me are with stations I’ve worked in previous contacts.

What else is necessary in HRD is to set the “My Location” value for each log record. This is how the map above shows all points coming from my home QTH in New Jersey. I use Ham Radio Deluxe Utilities as well to update all the individual records with my location. I’m going to make an assumption that without setting My Location, HRD will still generate a map but there will be no lines back to your QTH.

Creating the file used by Google Earth & Google Maps:
With the grid locator specified for the contacts, in Ham Radio Deluxe, you then select the batch of records you want to generate a map for by highlighting them in the main log window and right clicking the mouse. You’ll get a long pop-up menu (see image below) and you want to select Lookup from the pop-up menu and then Google Earth within the Lookup menu. Now, I do not have Google Earth installed on my logging computer. What happens with HRD is it then opens the text file it just create containing the data that Google Earth uses. The file name is HRD_GoogleEarth.kml and if it doesn’t open automatically for you, look for this file on your computer. This file has an extension of KML which is leftover from before Google owned Google Earth if you didn’t know that was the case. A KML file is just a text file with the data needed to map the points and you can view this program in any text editor including notepad.

If the logging program you use isn’t Ham Radio Deluxe, if there’s an option to show multiple log entries in Google Earth, it will likely generate an intermediary kml file like I’ve referenced above. The trick will be finding the name and location of this temporary file generated by your logging program. I haven’t used the following program, but it turned up in a search I did for ADIF & KML. seems to be able to take an ADIF file and using Microsoft Excel as an intermediary step, generate a KML file. It is still dependent on specifying a grid square for each contact but if you have all your data entered in your logging program but it isn’t able to generate a KML, it likely can export an ADIF file and this program (if you have Excel) can be used. If you try it, let me know how it works.

Besides Google Earth being able to open a KML file, Google allows their web based Google Maps to open the same KML file and that is what I do to create the maps. Now Google Maps, as far as I know as of this writing, needs to have a KML file already available on the Internet in order to use it as its input source. What that means is you can’t directly upload the KML file to Google Maps. If you have a web hosting provider as I do, this is no big deal as I quickly FTP the KML file to my web host and point Google Maps at it. If you have a web host, then you probably know how to do upload to your host. Some Internet Service Providers (ISPs) provide basic web hosting with your monthly internet connection and if you have that, it should work for this. You”ll just need to check out the FAQ on how to put a file on your free web hosting that your ISP provides. Now, if you don’t have a web host but you do have a blog hosted by say WordPress, if you can upload a file to your blog you might be able to use that same method for putting a KML file on the system so you can reference it from Google Maps as long as you can find or determine the fully qualified URL path to the uploaded KML file. And lastly, if all else fails, you can send me your KML file and I can upload it on my web host temporarily until you are able to grab the screenshots you need.

Once the KML file is uploaded to some place on the Internet, go to and where you would normally put in a point of interest or address, you reference your KML file. As an example, for the one I show above, if you go to and enter in as the location, Google Maps will pull the data from the KML file I previously uploaded and display the points from the file. It’s that easy as long as you can get the KML file uploaded someplace, and I’ll help you out if you can’t find a way to do it with any services you already might have.  Here’s a shortcut to specifying the above file and having it load in Google Maps in case you’re running into an issue typing the address –

Getting the screenshot of the map of your contacts:

So now you have your contacts loaded into Google Maps. Zoom in or out and move the map around to get all the points, or the area you want, as big as possible while showing all points. Once you have the info within the screen the way you want, press the PrtSc button on your keyboard. It might be labeled Print Screen or PrntScrn or something similar to that. It is usually a key in the near the top right of the keyboard. When you press it, nothing obvious will happen so don’t expect it to do anything. What the print screen button does is it captures a screenshot of  what you see on your computer monitor to the Windows clipboard. Now you want to launch an image program to crop/save the screenshot. I prefer IrfanView for image manipulation but whatever program you have or prefer should be fine including a lot of the image editing programs that come pre-installed or with other software you purchase.  You can even use the free MSPaint program which comes with Windows to edit/save the image. Each program is different and the first step is to paste in the screenshot you just took using the print screen button. Most program probably work by just pressing Ctrl-V or selecting Edit/Paste from the menu. That puts in the entire desktop screenshot you just took and what you want to do is crop the image to contain just the portion of the map you want to save. If you’re not sure how to crop, check the image program help file for cropping and follow the steps they give. Now you need to save the cropped image and that is usually done by clicking Save or Save As from the image programs File menu. Specify the location and name of the file and save it as a JPG (or PNG or whatever format you desire) making sure you note the name and location on your computer you are saving the image to.

Now you have the relevant portion of the screenshot that contains the map area without all the other clutter from the Google Maps web page. What you do next is really dependent on why you were doing this in the first place. I take the image and using WordPress which this site runs on, I add it as an image into a post which is  uploaded to my site as part of embedding the image.

If you have any questions, you can email me directly or post it here. If you see any mistakes or incomplete steps listed, please let me know and I’ll edit the post. If you’re aware of any additional tricks, please send them to me and I’ll incorporate them in.

Thanks and I hope this helps a bit in explaining how I get the maps of the contacts I make during a contest embedded in a post.


Updated 11/23/2010:
I used the ADIF->XLS->KML program mentioned above  and available at with a test from this past weekends ARRL SSB Sweepstakes contest. I exported an ADIF file of the contacts with all of them having a grid locator specified from Ham Radio Deluxe and used the downloaded Excel sheet/macro as instructed. It seemed to work fine and the result of taking the generated KML, uploading it to my web host and specifying the KML file to Google Maps is below. Clicking each point on the map showed what you see in the bubble in the screen shot. Click the image to see it a bit larger.

7 thoughts on “Creating maps of ham radio contacts

  1. hello.
    i have been trying with no sucsess to add grid locator into my HRD logbook.
    do you have a mail adress so i can send full details and screen shots of my PC to enable you finding the reason.
    thank you very much.
    Dan Katzman

  2. K2DSL, I searched for a while trying to find something like this for HRD logbook records. Many, many thanks. Also, I found your .adif upload site for Google map creation. Really, very well done and many thanks. N2UJN

  3. Dirk – I don’t use HRD any longer but when you enter a QSO, it’s probably pulling data from a source such as If it’s QSL vs QSO info, the QSL source such as LoTW or eQSL is likely providing that data.

Comments are closed.