# Scale of shape in a Print Layout

I am making an atlas with a fixed scale, and want to include circles with a fixed radius (in scaled kilometers) about the center point in the atlas (see image below). I was able to do this by calculating the appropriate scale using the scale bar and a physical ruler. However, it seems like there should be a more precise way to solve this problem.

Within the expression builder of the circle height and width, the scale of the map can be retrieved with:

``````map_get(item_variable('map'), 'map_scale')
``````

This returns the scale (30,000), however when I try to scale the target distance (2000 m) by this scale it doesn't match length of the scale bar (also 2 km) -- instead it is about 2/3s of the target radius.

• Did you try to build a buffer by using geometry generator around each point (outside print composer)? Should much more convinient and precise. Another question: what CRS do you use? May 1, 2019 at 18:23

Here's an alternate method for creating a circular scale "bar" for your print layout.

Create a point layer in the map canvas.

Place points on the map where you want scale bars on your print layout maps.

Style the points with geometry generator buffers. Remember that the buffer value will be the radius of the circle, so if you want a circle with a 1 km diameter, make a buffer with a 500 m radius: `buffer(\$geometry,500)`

Label the points with rule-based labeling. Create a label rule for each buffer ring.

Use "offset from point" placement method, and offset the labels by the buffer radius. Be sure to choose "map units." Note: use negative values to move the label up, and positive values to move it down (see this question for an explanation).

End result:

Note: If you're making maps at different scales, you might want different sized buffers for different maps. One way to achieve this is to apply scale-based visibility to the various symbol layers. Use an expression to control the "enable layer" setting. Eg, `@map_scale < 50000` will hide the layer at scales between 1:50000 and 1:infinity.

• Can these buffers be dynamically turned off? In some instanced multiple points might be present in the same Atlas page and I would only want the scale circles for the current point. May 1, 2019 at 21:32
• yes. use `@atlas_feature` or another atlas variable to control "enable layer" settings (at the bottom of the style panel).
– csk
May 2, 2019 at 15:27