I have been using and learning QGIS for a few years. What I can not figure out is how to get better map quality when I output maps to use in my book projects.

Example 1: I set QGIS to output a JPG map at 300dpi. This causes the street names to shrink on the JPG image to near unreadable using OpenStreet base maps.

Example 2: I tried using OpenTopoMaps. All looks great on my screen and when I go to output the maps, there are a few blank white squares. This is likely a result of zooming in too much. Many of my maps are around 1:25000 or closer.

I guess this is a resolution issue between monitor screen and 300dpi files.

So what is the solution? Higher resolution base maps, or a setting I missed?

I need to use good base maps of Ontario, Canada.

  • I think this is a output scale issue for those basemaps. The scale on screen is not the same as the scale in the output. I can't remember why this is... Anyway are you able to use perhaps the relief layer without the roads/labels, then add those yourself as vector data, which will preview and draw at the correct scale. – DPSSpatial Feb 24 '20 at 23:10
  • OSM dpi is only 72dpi from the web, there are limited high resolution tiles available wiki.openstreetmap.org/wiki/High-resolution_tiles – Mapperz Feb 25 '20 at 1:54
  • I would agree it does appear that OSM would print using screen res even though one would need higher res for printing. So then the right way around this is a separate vector text layer. – Dan R Feb 25 '20 at 14:13


This is indeed a bugbear with using tiled web basemaps intended for low screen dpi (72, 90, or 96) at high dpi, say 300 or more. There are a couple of finicky solutions at QGIS gives different resolution basemap in Print Layout

Alternatively, for truly good quality high-dpi maps, you're going to have to make your own with vector layers. Then the QGIS renderer can display them nicely, including labels, at any dpi you choose. Fortunately, in Canada we have access to very good vector data through CANVEC (link to dataset, or search for "CANVEC" since that link may be temporary).

You will have to download customized files for your ROI using the Geospatial Data Extraction Tool, and then load and style the relevant layers in QGIS. This is a bit of a hassle versus a simple tiled web service, but if you're creating figures for a book project I think you'll want locally-stored fixed data rather than relying on a dynamic web datasource anyway.

  • Thanks for these tips, I shall attempt to implement this. I am a little overwhelmed but will give it a go...today. – Dan R Feb 25 '20 at 14:21
  • I downloaded SHP files from the CANVEC site and sorted out what I needed. These are vector and great for future projects. But still lacking street/place names. I know they are in the tables, still trying to display them on the map. Any clues? I am reading up on it... – Dan R Feb 26 '20 at 18:58
  • @DanR, after adding the layer, double click on it in the layer tree, and choose the Labeling tab (it has a yellow icon). There add labels based on whatever field name they are in the attribute table for the layer -- and you can have a field day styling the labels (and the layer symbology) to your satisfaction. – Houska Feb 26 '20 at 20:09
  • Thanks, I see that. Plenty of work ahead to style these MTB trail maps. I still think I need a plain rastered base map with shading, at high res. Where could I source one for Ontario? – Dan R Feb 27 '20 at 14:34

Coming back to add an alternative: as of version 3.14, QGIS supports vector tiles. See https://www.maptiler.com/news/2020/06/vector-tiles-in-qgis-3-14/

With the MapTiler plugin and this vector tile support, you should be able to generate high quality printed maps at any zoom level/scale and any projection, without having to pre-download specific local data. With the plugin, you have the option of several predefined map styles (layers + styling). You can also tweak the symbology to your heart's content; see below.

Symology editing

Editing to add (based on comments): Note you need to get a login and API key at MapTiler cloud to use their vector tiles. There are (at the present time - Aug 2020) usage limitations on the free tier, and costs/limitations associated with printing maps in particular. Note this is a restriction of the (current) MapTiler vector tile data set, though it's based on OpenStreetMap data. It is not a restriction of the underlying QGIS vector tile support, and so other sources may become available with time.

  • This plugin is brilliant! I was struggling with high dpi exports just yesterday - no more. – M Bain Aug 12 '20 at 22:16
  • I will test this in a few weeks. Just did 55 maps the long way. Need a break off canoeing, away from the screen. – Dan R Aug 13 '20 at 19:51
  • 1
    OK my curiosity got to me, and a quick look told me 55 maps for my book would have cost a fortune... pass – Dan R Aug 13 '20 at 20:15
  • @Dan R, yeah I spoke too soon, pricing does seem to be prohibitive. – M Bain Aug 13 '20 at 21:05
  • Yeah, hadn't looked into pricing/licensing. Updated answer. – Houska Aug 14 '20 at 9:32

I found a nice solution for this old problem yesterday!

As so often, we can solve this task with the indispensible GDAL tools: How to lock a WMS layer to scale in QGIS?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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