Skip to main content

Ham Radio to Learn KML: Elevation maps

 I started out wondering how to attach videos to kml maps and wound up working on elevation profiles. There's always something new to learn on this project. It's pretty cool!

There's something I've often wondered about with respect to QRP on twenty meters with low antennas: how much help is the rig getting from the slope of the hillsides I transmit from? Using Google Earth elevation profiles, It looks like I'll be able to get quantitative answers!

The Goal

Map the elevation profile of the terrain Project TouCans is situated on in the direction of the transmit path to the other station in a give QSO (radio contact.) The idea is to wind up with something like this.

The Steps to Get it Done (First Prototype)

Issue:

The elevation profile from station to station tends to be very long. I'd like to only look at the profile over a few twenty meter wavelenghts. I don't see any zoom controls in Google Earth for the elevation pofile, so I'll plot a shorter line on the map in the same direction, and then display the elevation profile for the shorter line. In the picture above, I've done this, the shorter line is a portion of the path from Albuquerque to Costa Rica.

Steps:

  1. Calculate the distance from station to station using Datasette, specifically, the haversine plugin
  2. From there, find the endpoint of a line segment starting at the transmitter and ending 200 meters away, (or however long you're interested in.)
    1. Use the earthmid functions, earthmid.partial_path_lat, earthmid.partial_path_lng, passing in the total distance divided by the distance you're interested in (200 meters for example), as the last argument
And then you hit the kludge. Add a line segment, (linestring), from the tx station to the segment coordinates returned above to the QSO map you're interested in. View that segment in Google Earth Pro, right click the line and select 'Show Elevation Profile'.

Here are the results using a path from a US-0955 Petroglyph National Monument POTA outing I've been interested in for a while:

Rise over run data:




I was especially surprised to learn that Google Earth had even modeled the boulders on the side of the mesa:



Steps to Create the gif above from a screen capture using ffmpeg

ffmpeg -i elevgif.mp4 -ss 00:00:16 -t 00:00:29 -c:v copy -c:a copy elev_sh.mp4

ffmpeg -i elev_sh.mp4 -loop 0 -vf "fps=10, scale=640:-1" elev_sh.gif

References

From

As more and more digital elevation data are available with better resolutions, it is getting more convenient to extract terrain features important for radio propagation modeling such as the mountain peaks and ridges. In [105], a simple method is used to extract 3D ridges from digital elevation data. The extracted ridges then serve as diffraction wedges in simulating the radio wave propagation. It is shown that 3D features of ridges, e.g., the orientation and elevation parameters, are necessary for accurate calculation of diffracted field. These 3D features are commonly ignored in widely used propagation modeling methods such as the knife edge diffraction. For multiple diffractions, the 3D features of ridges and their effect on the diffraction are investigated in [106].

and:


Comments

Popular posts from this blog

How Many Files Can You Add to a GPT Project? An Interview with GPT-5 on Limits, Context Engineering Tips, and Chats

 Setting the scene: I’m tinkering with Project TouCans, knee-deep in radio logs, SQLite dumps, and Cesium code. Naturally, I’m wondering if shoving all this into one GPT Project is a recipe for brilliance… or for disaster. So I turn to Vril — you know, after Brainy from the Legion of Super-Heroes , because what else do you call your AI sidekick who always has the answers? Time to ask him straight up. [ As an aside, yes, GPT-5 has decided to sometimes call me Vail. I'm not sure why to be honest. Also, I asked Vril, er GPT-5, to write up our interview for me. Apparently, me asking it to 'Bro' up a few stories, just for fun, has convinced Vril that I use 'Like,' more than I actually might. ] Me (Vail): So Vril, how many files can I throw into a GPT Project before it just starts choking? Like, is there some magic number where the context window taps out and everything falls apart? GPT-5 (Vril): Great question. There’s no single hard file limit. What matters is ...

The Alcubierre Warp Drive Tophat Function and Open Science with Sage

I transferred yesterday's Mathematica file with the Alcubierre warp drive[2] line element and space curvature calculations to the  +Sage Mathematical Software System  today, (the files been  added to the public repository [3]).  If you haven't used Sage before, it's a Python based software package that's similar in functionality to Mathematica.  Oh, and it' free.  I also worked a little more on understanding the theory, but frankly, I made far more progress with the software than the theory.  What follows will be a little more of the Alcubierre theory, plus, a cool Sage interactive demo of one of the Alcubierre functions[1], as well as a bit about my first experience with using Sage. Theory The theory is fun, but it's moving slowly.  Here's the chalk board from this morning's discussion Alcubierre setup the derivation using something called the 3+1 formalism which means we consider space to be flat, (in this case), slices that are labelled ...

When Codex CLI Met Port 9 (Debugging WinError 10061 in a Whisper Pipeline)

When Port 9 Ate My Transcript When Port 9 Ate My Transcript A small debugging story about proxies, Codex CLI, and why localhost isn’t always your friend. CopaseticFlow field notes WinError 10061 Codex CLI + Whisper Environment gremlins There’s a particular kind of bug that feels like someone's been messing with your network stack again. You run a script from cmd.exe . It works. You run the exact same script from Codex CLI. It stops with: [WinError 10061] No connection could be made because the target machine actively refused it FFmpeg happily splits the audio. The Whisper API call dies immediately. No 401. No timeout. Just an instant refusal. Translation: that’s not an API error. That’s a socket being rejected. ...