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?
What caused the problem
Inspecting your data, it becomes clear that the problem is the geometry of your line: its 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
Than you can apply your label along the line where you want.
Further options for optimization
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:
Horizontal. When you chose
Curvedtogether with the
strictseting 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 charactersso that the label becomes visible - even if almost illegible (cf. screenshot).
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.
Create a more aesthetic curved label: Another option is to generate a (much simplified) auxiliary 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 - its here only for the sake of a leading line for the label.
On the screenshot, I made some further adjustments like setting a distance of the label from the line, increasing space between characters etc.
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.
Rules for cartographic typography: A last point: consider cartographic conventions for orientation of labels. Labels should follow the direction of the river.