QGIS中从标签到要素的直线?


11

我想做的是标注一系列点要素,但是由于点要素的密度,我将不得不将标签从点要素上移开。然后,我想使用一条简单的直线(而不是箭头)来显示哪个标签指向哪个点。

我使用了插件“ Easy Custom Labels”来生成标签并将其移动到我想要的位置。但是我无法做的是在该点和表格之间创建一条简单的细直线。

我所取得的最好成绩是将“符号层类型”(“标签层”>“属性”>“样式”)更改为“箭头”,取消选中“弯曲箭头”并取消选中“在每个线段上重复箭头”。然后使磁头的长度和厚度为0,并尽可能使“箭头宽度”和“开始时的箭头宽度”。但是,这仍然会产生一条粗线。参见图A。

我尝试将“稍后符号类型”设置为“简单线条”,但这会导致线条中出现扭结/顶点/角。见图B。

理想情况下,我希望标签和特征之间的直线(与图像A中的宽度)与图像B中的相似。

两种标签的例子

Answers:


11

您可以使用表达式在标签和几何之间创建线

在此处输入图片说明

表示式:

CASE 
 WHEN (label_x IS NOT NULL AND label_y IS NOT NULL) THEN
  make_line(centroid($geometry),make_point(label_x -2,label_y), make_point(label_x ,label_y))
ELSE
  NULL
END

这应该是结果:

在此处输入图片说明


只是一个旁注,如果使用标签属性工具栏手动移动标签并将位置存储在项目中,则label_x,y变量将更改为名为“ auxiliary_storage_labeling_positionx”和“ auxiliary_storage_labeling_positiony”的字段。
加布里埃尔·

1
将您的中点2个单位放置在西边,就像在这里make_point(label_x -2,label_y)所做的那样,会使西海岸的标签看起来很有趣。同样,以不同的规模工作将使此操作无用。相对于到标签的距离和距质心的相对位置,将此点设置得更好。
艾伯特

2

卡洛斯(Carlos)的回答使标签末端的水平对齐的引导线全部消失,而几何图形生成器中只有一点减少了直线。在我的示例中,我使用QGIS 3.0.3中的标签工具栏手动移动了标签。注意,可以在问题232709中找到该技术。

我需要做的唯一更改是表达式中的x,y值:

CASE
   WHEN ("auxiliary_storage_labeling_positionx" IS NOT NULL AND "auxiliary_storage_labeling_positiony" IS NOT NULL) THEN
        make_line(centroid($geometry),make_point("auxiliary_storage_labeling_positionx","auxiliary_storage_labeling_positiony"))
   ELSE
      NULL
END

至于领导线本身,则符号树如下所示:

    • 几何生成器
      • 线
        • 标记线
          • 记号笔
            • 简单标记
          • 简单的线条

为了确保引线在标签中心结束,只需将标签数据定义的对齐方式中的值编辑为水平为“中心”,垂直为“半”。要将线条设置为所需的样式,请使用嵌套在标记行中的简单线条。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.