I've been messing around with bare-earth lidar data for a chunk of land in northeast Iowa where there are supposed to be some animal-shaped mounds under the trees. Downloaded it from the 3DEP thing and loaded it into QGIS, and here's what's confusing me. When I do a plain hillshade, the ground under the canopy looks like noise. I can barely tell anything apart. But when I switch to a slope or openness type of shading, suddenly there they are. Little raised shapes in a line, right where I'd expect them. It's honestly kind of spooky how clear they get. Same data, totally diferent result. So is that normal? I always assumed hillshade was the default way to look at this stuff. Am I doing the hillshade wrong, maybe a bad sun angle for low mounds like these, or is there a reason the fancier renderings work better for subtle features? I don't want to convince myself I'm seeing bears when it's realy just old tree throws or something.
Why do the effigy mounds only pop in one rendering and not the others?
Oct 29, 2026
Last reply: 19 hours ago
5 Replies
First reply
Totally normal, and you've actually stumbled onto the main reason archaeologists have gone nuts for lidar over the past decade or so. A plain hillshade gives each cell a brightness based on one sun position. If your mounds are only a foot or two tall and softened by a century…
Read the full replyTotally normal, and you've actually stumbled onto the main reason archaeologists have gone nuts for lidar over the past decade or so. A plain hillshade gives each cell a brightness based on one sun position. If your mounds are only a foot or two tall and softened by a century of erosion and leaf litter, the shadow they cast at your chosen azimuth and altitude is tiny. Most of the relief in the tile comes from bigger stuff like stream banks and ravines, so the stretch eats those little bumps alive and they blend into the background noise you're describing. Slope and openness work differently. Slope doesn't care about the overall elevation range, it just measures how steep each cell is relative to its immediate neighbors, so a gentle two-foot mound pops the same way a bluff does. Openness (and sky view) looks outward across a wider radius instead of just downhill, wich is why edges of low features show up as clean rims rather than depending on which way they face. That last part is the real killer for hillshade: anything the light hits from the wrong side basically vanishes, so half your bears could be invisible depending on azimuth. A couple of tricks if you want to sanity check. Render the hillshade at two or three different azimuths, like 315 and 135, and compare. Real mounds show up from multiple directions; a tree throw or a modern scrape usally flips from bright to invisible between them. Also try hillshade with vertical exaggeration cranked up, or a multidirectional hillshade if your QGIS version has it. And flip between your openness layer and the aerial imagery overlay, since the mounded areas should sit along that open strip in the canopy.
One more honesty check: effigy mounds tend to line up in deliberate rows or groups and have that consistent low, broad profile, while tree throws are isolated pits with a raised rim on one side and they're scattered randomly. If your shapes form a sequence heading down the ridge and read as coherent outlines from two different azimuths, that's not your brain playing tricks. That's a real site, and honestly the kind of thing that used to take a surveyor months with a level and stadia to confirm.
If you keep going down this rabbit hole, local relief models and simple local hillshade layers are the next step. They subtract a broad trend surface so only the small stuff remains, and they're built into a few QGIS plugins.
This lines up with what I saw on a project a few years back. I was looking at low earthworks in some wooded hills and the single-direction hillshade washed them out completley, but when I rendered the same tile from two opposite sun directions one whole line of shapes flipped from invisible to obvious. That's what convinced me they were built and not random. Also, check the point spacing on the data you pulled. The coarser 3DEP stuff can smooth a two-foot mound into a pancake, so if your shapes still read at that resolution they're probaly the real deal.
I'd push back on one bit from the earlier reply, the part where a tree throw flips from bright to invisible between sun directions. Around here the old ones don't. A throw that's had fifty years to settle reads as a low broad bump from any angle, basicly the same signature as a worn mound, so the two-azimuth check isn't the slam dunk it's made out to be. I've chased shapes on a wooded slope that passed that test and turned out to be windthrow from a single storm. The spacing pattern arguement holds up better, I'd lean on that one instead.
This thread takes me back. We used to pull these things out of stereo aerial photos in the 90s, sitting at a mirror stereoscope with a parallax bar, squinting through the canopy gaps and hoping. One afternoon per mound if you were lucky. Now a guy downloads a tile over coffee and sees more than we ever did. One thing I'd add, whatever the rendering shows you, the ground still tells the truth. Take a hand level or even a string line and a couple of stakes out there and shoot across one of those shapes yourself. Two feet of profile will show up plain as day when you sight along it. Then you know the pixels aren't lying to you.
What sold me on my own set of low mounds was pulling cross sections across them. QGIS has a profile tool now, you just drag a line over the feature and it shows the bump in elevation. If your shapes are real you get the same gentle dome shape every time, same height, same width. A tree throw or a rut from some old logging gear gives you a lumpy mess or a pit with a hump. I also like blending the openness layer with a color ramp underneath instead of grayscale, the weak bumps that disappear in gray suddenly have color on them and my eyes pick them up way easier.
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required