Skip to main content
fix typos and clarify buffer explanation; changed image, added sql option
Source Link
she_weeds
  • 12.6k
  • 1
  • 29
  • 58

To answer question 1: it isn't a bug. It's because you changed the entire line offset of the line that the font marker is applied to, not the offset for the font markers themselves.

Applying a line offset is like drawing the outline of a buffer. At sharp corners, whether concave or convex, in order to maintain a constant line offset distance, the geometry of the resulting line has to change by adding an extra vertex to accommodate, even when the join type is miter (i.e. retains sharpness; join type round will obviously generate way more additional vertices).

Here's a visualisation of an Outline: simple line symbol, with the line offset set to 5 mm. Notice that with the sharp concave corner, the shape cannot retain the same sharpness (=1 vertex) without the extreme point having >5mm distance from the original line. Therefore an extra vertex is added to accommodate. You will see a similar effect for sharp convex corners as well.

enter image description here


Question 2: Going back to your original set up, to adjust font marker position typically you should use the x/y offset parameters of the font marker itself, rather than the line offset for the marker line.

Of course, this only adjusts your font markers in the X/Y direction rather than away from the point.

However, if you just want the font marker at a specific vertex to be shifted, you can use a data-defined override for the font marker offset.

enter image description here

For example, if you want to offset vertex 7 by -10mm in the X dimension:

array(
    if(@geometry_point_num = 7, --vertex no. to apply custom x offset to
       -10,                      --custom x offset
       string_to_array(@value,',')[0]),
    string_to_array(@value,',')[1]
    )
array(
    if(@geometry_point_num = 7, --vertex no. to apply custom x offset to
       -10,                      --custom x offset
       string_to_array(@value,',')[0]),
    string_to_array(@value,',')[1]
    )

enter image description here


Ultimately, though, a geometry generator approach like Babel's is ideal (if you want to use layer styling) as you have full control of the geometry and therefore number of vertices generated, rather than be vulnerable to the number of markers generated by marker line symbology.


If you want full labeling control of your vertices, rather than mucking around with complex offset expressions, you could use Virtual Layer per this answer as long as your polygon layer has an unique ID field (p.id in the linked answer)

To answer question 1: it isn't a bug. It's because you changed the entire line offset of the line that the font marker is applied to, not the offset for the font markers themselves.

Applying a line offset is like drawing the outline of a buffer. At sharp corners, whether concave or convex, in order to maintain a constant line offset distance, the geometry of the resulting line has to change by adding an extra vertex to accommodate, even when the join type is miter (i.e. retains sharpness; join type round will obviously generate way more additional vertices).

Here's a visualisation of an Outline: simple line symbol, with the line offset set to 5 mm. Notice that with the sharp concave corner, the shape cannot retain the same sharpness (=1 vertex) without the extreme point having >5mm distance from the original line. Therefore an extra vertex is added to accommodate. You will see a similar effect for sharp convex corners as well.

enter image description here


Question 2: Going back to your original set up, to adjust font marker position typically you should use the x/y offset parameters of the font marker itself, rather than the line offset for the marker line.

Of course, this only adjusts your font markers in the X/Y direction rather than away from the point.

However, if you just want the font marker at a specific vertex to be shifted, you can use a data-defined override for the font marker offset.

enter image description here

For example, if you want to offset vertex 7 by -10mm in the X dimension:

array(
    if(@geometry_point_num = 7, --vertex no. to apply custom x offset to
       -10,                      --custom x offset
       string_to_array(@value,',')[0]),
    string_to_array(@value,',')[1]
    )

enter image description here


Ultimately, though, a geometry generator approach like Babel's is ideal as you have full control of the geometry and therefore number of vertices generated, rather than be vulnerable to the number of markers generated by marker line symbology.

To answer question 1: it isn't a bug. It's because you changed the entire line offset of the line that the font marker is applied to, not the offset for the font markers themselves.

Applying a line offset is like drawing the outline of a buffer. At sharp corners, whether concave or convex, in order to maintain a constant line offset distance, the geometry of the resulting line has to change by adding an extra vertex to accommodate, even when the join type is miter (i.e. retains sharpness; join type round will obviously generate way more additional vertices).

Here's a visualisation of an Outline: simple line symbol, with the line offset set to 5 mm. Notice that with the sharp concave corner, the shape cannot retain the same sharpness (=1 vertex) without the extreme point having >5mm distance from the original line. Therefore an extra vertex is added to accommodate. You will see a similar effect for sharp convex corners as well.

enter image description here


Question 2: Going back to your original set up, to adjust font marker position typically you should use the x/y offset parameters of the font marker itself, rather than the line offset for the marker line.

Of course, this only adjusts your font markers in the X/Y direction rather than away from the point.

However, if you just want the font marker at a specific vertex to be shifted, you can use a data-defined override for the font marker offset.

enter image description here

For example, if you want to offset vertex 7 by -10mm in the X dimension:

array(
    if(@geometry_point_num = 7, --vertex no. to apply custom x offset to
       -10,                      --custom x offset
       string_to_array(@value,',')[0]),
    string_to_array(@value,',')[1]
    )

enter image description here


Ultimately, though, a geometry generator approach like Babel's is ideal (if you want to use layer styling) as you have full control of the geometry and therefore number of vertices generated, rather than be vulnerable to the number of markers generated by marker line symbology.


If you want full labeling control of your vertices, rather than mucking around with complex offset expressions, you could use Virtual Layer per this answer as long as your polygon layer has an unique ID field (p.id in the linked answer)

fix typos and clarify buffer explanation; changed image
Source Link
she_weeds
  • 12.6k
  • 1
  • 29
  • 58

To answer question 1: it isn't a bug. It's because you changed the entire line offset of the line that the font marker is applied to, not the offset for the font markers themselves.

Applying a line offset is like drawing the outline of a buffer. At sharp corners, whether concave or convex, in order to maintain a constant line offset distance, the geometry of the resulting line has to change by adding an extra vertex to accommodate, even when the join type is miter (i.e. retains sharpness; join type round will obviously generate way more additional vertices).

Here's a visualisation of a markeran Outline: simple line symbol, with many more markers and the line offset set to 5 mm. Notice that with the sharp concave corner, the shape has to be more rounded and thereforecannot retain the same sharpness (=1 vertex) without the extreme point having >5mm distance from the original line. Therefore an extra vertex is added at the tip of the concave sectionto accommodate. You will see a similar effect for sharp convex corners as well.

enter image description hereenter image description here


Question 2: Going back to your original set up, to adjust font marker position typically you should use the x/y offset parameters of the font marker itself, rather than the line offset for the marker line.

Of course, this only adjusts your font markers in the X/Y direction rather than away from the point.

However, if you just want the font marker at a specific vertex to be shifted, you can use a data-defined override for the font marker offset.

enter image description here

For example, if you want to offset vertex 7 by -10mm in the X dimension:

array(
    if(@geometry_point_num = 7, --vertex no. to apply custom x offset to
       -10,                      --custom x offset
       string_to_array(@value,',')[0]),
    string_to_array(@value,',')[1]
    )

enter image description here


Ultimately, though, a geometry generator approach like Babel's is ideal as you have full control of the geometry and therefore number of vertices generated, rather than be vulnerable to the number of markers generated by marker line symbology.

To answer question 1: it isn't a bug. It's because you changed the entire line offset of the line that the font marker is applied to, not the offset for the font markers themselves.

Applying a line offset is like drawing the outline of a buffer. At sharp corners, whether concave or convex, in order to maintain a constant line offset distance, the geometry of the resulting line has to change by adding an extra vertex to accommodate, even when the join type is miter (i.e. retains sharpness; join type round will obviously generate way more additional vertices).

Here's a visualisation of a marker line with many more markers and the line offset set to 5 mm. Notice that with the sharp corner, the shape has to be more rounded and therefore an extra vertex is added at the tip of the concave section. You will see a similar effect for sharp convex corners as well.

enter image description here


Question 2: Going back to your original set up, to adjust font marker position typically you should use the x/y offset parameters of the font marker itself, rather than the line offset for the marker line.

Of course, this only adjusts your font markers in the X/Y direction rather than away from the point.

However, if you just want the font marker at a specific vertex to be shifted, you can use a data-defined override for the font marker offset.

enter image description here

For example, if you want to offset vertex 7 by -10mm in the X dimension:

array(
    if(@geometry_point_num = 7, --vertex no. to apply custom x offset to
       -10,                      --custom x offset
       string_to_array(@value,',')[0]),
    string_to_array(@value,',')[1]
    )

enter image description here


Ultimately, though, a geometry generator approach like Babel's is ideal as you have full control of the geometry and therefore number of vertices generated, rather than be vulnerable to the number of markers generated by marker line symbology.

To answer question 1: it isn't a bug. It's because you changed the entire line offset of the line that the font marker is applied to, not the offset for the font markers themselves.

Applying a line offset is like drawing the outline of a buffer. At sharp corners, whether concave or convex, in order to maintain a constant line offset distance, the geometry of the resulting line has to change by adding an extra vertex to accommodate, even when the join type is miter (i.e. retains sharpness; join type round will obviously generate way more additional vertices).

Here's a visualisation of an Outline: simple line symbol, with the line offset set to 5 mm. Notice that with the sharp concave corner, the shape cannot retain the same sharpness (=1 vertex) without the extreme point having >5mm distance from the original line. Therefore an extra vertex is added to accommodate. You will see a similar effect for sharp convex corners as well.

enter image description here


Question 2: Going back to your original set up, to adjust font marker position typically you should use the x/y offset parameters of the font marker itself, rather than the line offset for the marker line.

Of course, this only adjusts your font markers in the X/Y direction rather than away from the point.

However, if you just want the font marker at a specific vertex to be shifted, you can use a data-defined override for the font marker offset.

enter image description here

For example, if you want to offset vertex 7 by -10mm in the X dimension:

array(
    if(@geometry_point_num = 7, --vertex no. to apply custom x offset to
       -10,                      --custom x offset
       string_to_array(@value,',')[0]),
    string_to_array(@value,',')[1]
    )

enter image description here


Ultimately, though, a geometry generator approach like Babel's is ideal as you have full control of the geometry and therefore number of vertices generated, rather than be vulnerable to the number of markers generated by marker line symbology.

fix typos and clarify buffer explanation
Source Link
she_weeds
  • 12.6k
  • 1
  • 29
  • 58

To answer question 1: it isn't a bug. It's because you changed the entire line offset of the thatline that the font marker is applied to, not the offset for the individual font markers themselves.

Applying a line offset is like drawing the outline of a buffer. At sharp corners, whether concave or convex, in order to maintain a constant line offset distance, the geometry of the resulting line has to change and addby adding an extra verticesvertex to accommodate, even when the join type is miter (i.e. retains sharpness; join type round will obviously generate way more additional vertices).

Here's a visualisation of a marker line with many more markers and the line offset set to 5 mm. Notice that with the sharp corner, the shape has to be more rounded and therefore an extra vertex is added at the tip of the concave section. You will see a similar effect for sharp convex corners as well.

enter image description here


Question 2: Going back to your original set up, to adjust font marker position typically you should use the x/y offset parameters of the font marker itself, rather than the line offset for the marker line.

Of course, this only adjusts your font markers in the X/Y direction rather than away from the point.

However, if you just want the font marker at a specific vertex to be shifted, you can use a data-defined override for the font mrakermarker offset.

enter image description here

For example, if you want to offset vertex 7 by -10mm in the X dimension:

array(
    if(@geometry_point_num = 7, --vertex no. to apply custom x offset to
       -10,                      --custom x offset
       string_to_array(@value,',')[0]),
    string_to_array(@value,',')[1]
    )

enter image description here


Ultimately, though, a geometry generator approach like Babel's is ideal as you have full control of the geometry and therefore number of vertices generated, rather than be vulnerable to the number of markers generated by marker line symbology.

To answer question 1: it isn't a bug. It's because you changed the entire line offset of the that the font marker is applied to, not for the individual font markers.

Applying a line offset is like drawing the outline of a buffer. At sharp corners, whether concave or convex, in order to maintain a constant line offset, the geometry of the resulting line has to change and add extra vertices to accommodate.

Here's a visualisation of a marker line with many more markers and the line offset set to 5 mm. Notice that with the sharp corner, the shape has to be more rounded and therefore an extra vertex is added at the tip of the concave section. You will see a similar effect for sharp convex corners as well.

enter image description here


Question 2: Going back to your original set up, to adjust font marker position typically you should use the x/y offset parameters of the font marker itself, rather than the line offset for the marker line.

Of course, this only adjusts your font markers in the X/Y direction rather than away from the point.

However, if you just want the font marker at a specific vertex to be shifted, you can use a data-defined override for the font mraker offset.

enter image description here

For example, if you want to offset vertex 7 by -10mm in the X dimension:

array(
    if(@geometry_point_num = 7, --vertex no. to apply custom x offset to
       -10,                      --custom x offset
       string_to_array(@value,',')[0]),
    string_to_array(@value,',')[1]
    )

enter image description here


Ultimately, though, a geometry generator approach like Babel's is ideal as you have full control of the geometry and therefore number of vertices generated, rather than be vulnerable to the number of markers generated by marker line symbology.

To answer question 1: it isn't a bug. It's because you changed the entire line offset of the line that the font marker is applied to, not the offset for the font markers themselves.

Applying a line offset is like drawing the outline of a buffer. At sharp corners, whether concave or convex, in order to maintain a constant line offset distance, the geometry of the resulting line has to change by adding an extra vertex to accommodate, even when the join type is miter (i.e. retains sharpness; join type round will obviously generate way more additional vertices).

Here's a visualisation of a marker line with many more markers and the line offset set to 5 mm. Notice that with the sharp corner, the shape has to be more rounded and therefore an extra vertex is added at the tip of the concave section. You will see a similar effect for sharp convex corners as well.

enter image description here


Question 2: Going back to your original set up, to adjust font marker position typically you should use the x/y offset parameters of the font marker itself, rather than the line offset for the marker line.

Of course, this only adjusts your font markers in the X/Y direction rather than away from the point.

However, if you just want the font marker at a specific vertex to be shifted, you can use a data-defined override for the font marker offset.

enter image description here

For example, if you want to offset vertex 7 by -10mm in the X dimension:

array(
    if(@geometry_point_num = 7, --vertex no. to apply custom x offset to
       -10,                      --custom x offset
       string_to_array(@value,',')[0]),
    string_to_array(@value,',')[1]
    )

enter image description here


Ultimately, though, a geometry generator approach like Babel's is ideal as you have full control of the geometry and therefore number of vertices generated, rather than be vulnerable to the number of markers generated by marker line symbology.

Source Link
she_weeds
  • 12.6k
  • 1
  • 29
  • 58
Loading