在QGIS中仅选择一条轮廓线进行标记?


12

是否可以仅选择一条轮廓线进行标记?

每行都有很多标签,而我更喜欢只标记主要的标签,例如1000 m1500 m


不知道这是否重复,但是您可以看看gis.stackexchange.com/q/89501/1297gis.stackexchange.com/q/59778/1297来看看它们是否使您更接近自己寻找?然后,如果您提供了有关尝试的内容以及可能出现问题的详细信息,那么我认为这将对您的问题有所帮助。
SaultDon 2014年

Answers:


13

在QGIS 2.6(也许我也不知道是早期版本)中,您可以在“图层属性” Labels选项卡Rendering部分中进行此操作。在渲染选项列表的大约一半处,是一个按钮,您可以通过该按钮编写一个表达式,该表达式将定义将实际标记的功能列表。你的表情会像"Elevation" IN (1000, 1500)。这是按钮(黄色),我将其设置为仅标注高程值为32的轮廓:

在此处输入图片说明


11

一种方法是加载轮廓层并设置其样式。然后再次加载同一层并应用过滤器(右键单击该层,然后转到“ Filter ..”。)使用与图片所示相似的过滤器表达式。在我的情况下,我希望垂直间隔为50米的主要轮廓,并且包含高程值的字段称为“ prop_value”。

当显示主要轮廓的过滤层加载后,请应用轮廓标签并(如果需要)加强线条样式,如图所示。

在此处输入图片说明

过滤器表达式:

("prop_value" % 50) = 0

还将以50米的垂直间隔选择轮廓。与Spatialite数据库一起使用,不确定shapefile。


6

我正在使用这种方法,这使得按条件标记和显示轮廓线非常容易。

我将线符号宽度和轮廓线的颜色的“数据定义的属性”与表达式一起使用(请参见屏幕快照1),通过该表达式,您可以根据自定义条件应用不同的线宽,并使用类似的表达式进行标注(请参见屏幕快照2)。

只需将所需的值放在表达式中就可以了。

即,如果要隐藏500 m以外的轮廓线,则可以将此表达式用于线符号的datadefined属性:

CASE WHEN Elevation / 500 - floor(Elevation / 500) =  0 then 
   color_rgba(255,255,255,100) 
else 
    color_rgba(255,255,255,0) 
end

例如,对于仅标记500m的间隔,可将此表达式用于:

CASE WHEN Elevation /500 - floor(Elevation / 500) = 0 THEN Elevation || ' m' END

例如,对于不同的线宽,对数据定义的属性使用如下表达式:

CASE WHEN Elevation / 100 - floor(Elevation / 100) = 0 THEN 
    0.25 
WHEN Elevation / 50 - floor(Elevation / 50) = 0 THEN 
    0.15 
ELSE 
    0.1 
END

屏幕截图1 屏幕截图2


@catindri,心灵来检查答案..

3

另一个方便的表达式是"ELEV" LIKE '%00'(步骤100m)或"ELEV" LIKE '%00' OR "ELEV" LIKE '%50'(步骤50m)或"ELEV" LIKE '%0'(步骤10m)等,其中“ ELEV”是我的数据标高字段。仅当50是间隔的倍数(10m或5m ...)时,第二个选项才有效。

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.