Due to a minor bug in QGIS you need a very recent testing build. 2.16.3 is not recent enough but 2.16.4 would be.
For cool tricks like vignetting or other eye candy, having a geometry that spans the whole map canvas in QGIS can be very useful.
Using the @map_*
Variables available in expressions in combination with a Geometry generator style allows you to do this.
@map_extent_center
returns a Point geometry of the current map canvas center, with x(@map_extent_center)
and y(@map_extent_center)
you get the x and y coordinates of it in the current CRS.
@map_extent_width
and @map_extent_height
return the width respectively height of the map canvas in CRS units.
Our goal is to create a polygon that exactly matches the map canvas extents. Some simple math gets you there.
First create Points for each of the corners by alternating the x+/-width and y+/-height. Then create a Line from all of them (the last point does not need to be the first again, make_polygon
does that for you). And use the line as outer ring for a Polygon.
make_polygon( make_line( make_point(x(@map_extent_center)-@map_extent_width/2, y(@map_extent_center)-@map_extent_height/2), make_point(x(@map_extent_center)+@map_extent_width/2, y(@map_extent_center)-@map_extent_height/2), make_point(x(@map_extent_center)+@map_extent_width/2, y(@map_extent_center)+@map_extent_height/2), make_point(x(@map_extent_center)-@map_extent_width/2, y(@map_extent_center)+@map_extent_height/2) ) ) |
To actually see this, you need to use the style on a layer with at least one feature that is always visible where you want to focus your map canvas. Just make a polygon layer with one polygon that encloses the whole area. The layer must be in the same CRS as the project I think.
You now have a Polygon that corresponds with the map canvas. Give it a radial gradient fill with some transparency and party!
All aerial images in the examples are
Lizenz: Datenlizenz Deutschland Namensnennung 2.0
Namensnennung: Freie und Hansestadt Hamburg, Landesbetrieb Geoinformation und Vermessung
http://daten-hamburg.de/geographie_geologie_geobasisdaten/digitale_orthophotos/DOP20/DOP20_HH_fruehjahrsbefliegung_2015.zip
To make sure the feature you want to highlight is in the center, you could use another layer and @map_extent_center
.
Yes, this totally is a hack but it’s fun!
Pingback: This Stain On Old Paper Looks Just Like Germany OMG! : Hannes ihm sein Blog
Pingback: A hurricane map in QGIS, from geodata and hacks : Hannes ihm sein Blog