Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I have a layer of cadastral polygons that I'd like to display as hillshaded. For the elevation model I can use either an SRTM geotiff or use a set of 20m contour vectors.

While I could make a jpeg of the cadastral regions and drape that (never done it in QGIS, but I think you can call GRASS to do it), is there a way to directly drape and hillshade the vectors?


UPDATE 1: SOLUTION BY MAKING POLYGONS TRANSPARENT.

In my first try, I have opted for this method: Basic white hillshaded SRTM DEM, with 10m contour vectors added and coloured cadastral polygons made 60% transparent. Not too bad for minimal effort, but a bit dull.

"Hillshaded" cadastral map


UPDATE 2: USING BLEND MODES FOR LAYERS IS REALLY EASY

It turns out that the suggestions to use layer blending modes does not require any great delving into the inner workings of QGIS, but is right there in the layer properties, and is as easy as changing a line width or a fill colour. See screenshot below. Also I found some nice examples and discussion of it from the developer, Nyall Dawson nyalldawson.net: Blend modes for layers.

Layer blending mode command


UPDATE 3: LAYER BLENDING MODE "BURN" GIVES THE RIGHT RESULT. JOB DONE.

The screenshot below provides me with a solution to my initial question, "is there a way to hillshade vector polygons with a DEM in QGIS". I would now say yes, or at least the illusion of it is practically perfect.

The Screenshot actually shows two blending modes compared. The one above the thick red line is "multiply" applied to a 60% transparent green polygons, while below is "burn", also to a 60% green polygon. Burn gave a brighter, more '3D' result.

Multiply vs Burn

Two points to note: I still found the contour lines necessary to promote the effect; without them the DEM lacked visual form. The contours are above the polygon layer this time (looks better), whereas my old screenshot had them under (looks worse). Secondly, when using Burn, I had to put the cadastral boundaries as a separate layer over the green fill layer, because otherwise 'burn' burned the lines out.

share|improve this question
1  
Hillshading is always a raster covering the whole area, so how should a vector file with hillshading look like? Do you want to shade the line color? –  AndreJ Feb 4 at 6:43
    
Could you polygonise the raster and do a basic spatial location query between the two vector layers? –  Morgan Ellingham Feb 4 at 6:45
    
#Andre - No, I'd like to vary the shade of the polygon fill. Probably the answer is no, you can't unless you make a jpeg image of the flat surface and drape that. But I thought I'd ask. You never know. –  IanS Feb 4 at 6:46

3 Answers 3

up vote 8 down vote accepted

Even better results can be achieved using layer blending modes (try "multiply") instead of transparency. The colors will be more vibrant. You can find a lot of examples for blending and hillshades on the QGIS Map Showcase, e.g.

enter image description here

share|improve this answer
    
Hm, looking at the QGIS Map Showcase now .. not seen it before ... some inspiring cartography there. I'm about to look up layer blending modes and try that out. –  IanS Feb 4 at 8:35
1  
    
#Alexandre - Excellent map. That's truly something to aim for. No doubt you are drawing my atention to it because the maker says "blending mode 'Multiply' was used for the shade layer." I will be looking into this shortly! –  IanS Feb 4 at 11:34

Why not simply overlay the vectors with your hillshade raster layer and set the raster transparency to about 60% or 70%? This is an approach I regularly use with good effect in QGIS, Mapnik and ArcMap.

In QGIS you can use GRASS but a simpler approach to calculating a hillshade raster from your SRTM is to go Raster->Terrain Analysis->Hillshade.

share|improve this answer
    
That worked quite well, but using the layer blend modes is even better. –  IanS Feb 5 at 11:15

you can only have a single value per polygon, but if your polygons are not to large it can still look ok. So you first compute your hillshade from your DEM (r.shaded.relief), then you extract the mean of the illumination value for each polygon (v.rast.stats). With this new value in the attribute field, you us a graduated color symbology in QGIS and you have your hillshade.

For very large polygon with respect to the display scale, you should draw the boundaries only on top of the DEM or make it slightly transparent (in the symbol tag, select all the symbol classes, right click and choose set transparency from the context menu).

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.