[GIS] QGIS 2.18 QuickMapServices basemap labels shrink when exported to PDF from Print Composer

basemaplabelingqgis

For the love of all that is good on this Earth does anyone have a fix for this? When I export my print composer map in anything greater than 120 DPI the street labels from the ESRI Transportation basemap shrink to unreadable sizes. This also happens with Google Maps layers and I'm going to guess others as well.

enter image description here

The above image is how it looks in the print composer, but when I export as a PDF in anything over 120 dpi (In this case 300) I get the following:

enter image description here

sooooooo tiny.

This just doesn't make much sense to me. Does anyone have a legitimate fix? I see some similar questions around here but with no good answers.

Also, fair warning, my experience with coding is limited to a college class that I dropped after 5 days… So please, if you have an answer, don't make it too complicated. I have seen stuff about XML files and XYZ tile thingies and none of that has worked for me…. I just keep getting blank basemaps and/or errors.

To anyone who can solve my issue: you will be rewarded with my undying gratitude.

Best Answer

This issue has been discussed (and lamented) many times on this site before. Have a look at these questions:

This is a limitation of base layers from WMS services. They're rendered as tiles, which means that the size of the labels is baked into each zoom level. When you increase the resolution, the server provides you a more zoomed-in tile, which has: (1) higher resolution and (2) smaller labels. You can't get (1) without (2).

One workaround is to force the tileserver to give you the zoomed-out version of the tiles. The image will be slightly fuzzy/pixelated but the labels will be larger. There are two ways to do this:

  1. Reduce the dpi of your export. This requires some trial and error to find the highest dpi that will still give you the higher zoom level.

  2. Import the WMS layer as an XYZ tile layer. The basemap will still have a low resolution, but the other elements in your map can have as high a resolution as you want.

    First, find and copy the service URL from the layer properties > Information > GetMapURL

    enter image description here

    Next, open the Browser panel, right click on "XYZ Tiles" > New Connection. Paste the URL you found before. Set the max zoom level, and give the layer a name like "This Basemap max zoom 16". Import the layer from the browser.

    enter image description here

    It takes some trial and error to find the right maximum zoom level for the scale at which you're making maps.

Another workaround is to use a basemap without labels, and add the labels from another source.

  • If you search around, you may find a WMS basemap which is just label, so you can control the label size independently. For example, through the QuickMapServices plugin you can get a layer called "ESRI Boundaries&Places" which has place names (cities, states, parks, natural features) and political boundaries, but no street names.
  • Or you can manually add the labels you want.

It's a trade-off between the convenience of a pre-made basemap versus having control over every aspect of your map.

Related Question