In the comments on my previous diary entry, people pointed out that the CGIAR data has a no-commercial-use restriction on it, which would be incompatible with OSM's database license if I wanted to derive anything from it. I was only planning on using it for display purposes, but I decided to look into other sources of elevation data anyway. I found the National Elevation Dataset from the US Geological Survey.
What's nice is that there are actually three NED datasets: NED1, NED3, and NED9. NED1 has a resolution of one arc-second, the same as SRTM1. NED3, however, is 1/3 of an arc-second, and NED9 is 1/9 of an arc-second, which ends up being about 3 meters. NED9 isn't available everywhere, so I decided to use NED3 and NED9 together.
A very illustrative test rendering is the Marriottsville Quarry in Howard County. For reference, here's what it looks like with the SRTM data:
It's not bad, but also not very precise. In particular, the dam in the upper lefthand corner extends well beyond its actual location.
Let's compare it to the NED3/NED9 rendering. (One of the reasons this makes a good test region is that it's right at the edge of one area of NED9 coverage.)
It's obviously more precise, but it seems almost too precise. I really don't like the look of the sharp edges, and those sharp edges are everywhere. (There's also some unusual stuff that Liberty Lake is hiding; bodies of water are not always flat in NED9 and introduce some really weird hillshading artifacts.) Furthermore, there are obvious edges where the NED9 data ends.
I tried rendering just the NED3 data (which is still about nine times more precise than SRTM1), but it seemed less accurate: it didn't show the quarry pit at all, though it showed a little of the hill next to it. (I've been by there, and the pit really does exist.) Given that, I really wanted to use the NED9 data where I could.
I then tried using an interesting denoising algorithm I read about online, but it used up all 4 GB of my RAM on a 0.5 square degree chunk of NED3+NED9 data, so I gave up on it. I tried using ImageMagick to apply a blur filter, but the NED data is made up of 32-bit floating-point numbers, and ImageMagick only seems to like TIFFs if each pixel is eight bits wide (or is a 24-bit triplet of 8-bit integers). I ended up just using gdalwarp to reduce the resolution on the NED9 data down to 1/3 of an arc-second. That effectively blurred the elevations, and I'm reasonably pleased with the result, even if the edges of the NED9 data are still visible:
Note that the contour lines in all rendering are SRTM1-based. It's a lot harder for me to swap out contour lines than it is color relief and hillshading data.