4

How to force a label to be positioned in the center of a line? In QGIS the project I'm working on has this river line that crosses the polygon. I tried all kinds os settings to make the label be in the center of the line but nothing seems to work! How can I do it without placing it manually?

enter image description here

13
  • Does your line consist of one single feature or is it split in multiple features?
    – Babel
    May 25 at 16:53
  • It's one feature (one ID) but constituted of multiple lines, a polyline.
    – Felippe M.
    May 25 at 17:00
  • That might be a problem. Just for testing purpose: try to create a single line (Multipart to singleparts) and see if the problem can be solved this way.
    – Babel
    May 25 at 17:04
  • 2
    This should actually work. Check your other settings as well. Especially "Merge connected lines to avoid duplicates" as well as "Features act as obstacles" and other limitations. For testings it is always good to check "Show all labels including colliding". Alternatively you could also try a geometry generator point as place, something like point_n($geometry,num_points($geometry)/2)
    – MrXsquared
    May 25 at 17:28
  • 1
    make it a single part geometry. It is a single line, no branches or else so you can safely convert the layer to single-lines (not multi-lines as it is now)
    – JGH
    May 25 at 18:06
4

What caused the problem

I inspected your data. The problem is the geometry of your line. It's very weird. Vertices appear in a chaotic order: Start point (first vertex) of the line is somewhere in the middle, next few vertices follow the river, than it jumps to another part and continues there for a few vertices etc.

How to solve the problem

  1. Explode your line.

  2. Select all features of the exploded line and Merge selected features.

Than you can apply your label along the line where you want.


Further options for optimization

  1. Maximum angle: Once solved, depending on your settings, you could observe another problem. When you define label anchor, you have to select strict (as you did on your screenshot). Otherwise, the label might still be shifted to another, more suitable (from the point of view of the algorithm) position.

    But you also have to select a mode for placement of the label: Parallel, Curved or Horizontal. When you chose Curved together with the strict seting for label anchor, the label might disappear. This has to do with the extremely meandering river, especially in the middle part. Increase Maximum angle between curved characters so that the label becomes visible - even if almost illegible. With these settings, the label is forced to be displayed along the meandering river, characters being rotated based on the river's curves. So in this case, better choose parallel or horizontal labeling or another anchor.

    Increasing the maximum angle makes label visible, but almost illegible because characters trace the meandering river-line: enter image description here

  2. Create more aesthetic curved label: Another option is to generate a (much simplified) line of your river, without all these meanders. You can do this using Geometry by expression and an expression like this: smooth (simplify( $geometry,9000),12). This gets you the red line in the next screenshot - hide it (No symbol), but label this line. On the screenshot, I made some further adjustments like setting a distance of the label from the line, increasing space between characters etc.

    Red, simlified and smoothed line can be hidden, but is used in the background as the line the label traces. enter image description here

  3. Consider workflow: GIS or graphic? QGIS has a lot of options to adapt labels to your needs. But maybe you reach a point where all the work to achieve this lead you to the idea to do the labeling as part of a post-processing task in a vector graphic software where creating curved labels can be much more intuitive and faster.

  4. Rules for cartographic typography: A last point: consider cartographic conventions for orientation of labels. Labels should follow the direction of the river.

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.