Choisir une seule ligne de contour à étiqueter dans QGIS?

12

Est-il possible de sélectionner une seule ligne de contour pour l'étiquetage?

J'ai de nombreuses étiquettes pour chaque ligne et je préfère ne nommer que les principales, telles que 1000 met1500 m

catindri
la source
Je ne sais pas s'il s'agit d'un doublon, mais pouvez-vous consulter gis.stackexchange.com/q/89501/1297 et gis.stackexchange.com/q/59778/1297 pour voir si ceux-ci vous rapprochent de ce que vous êtes à la recherche de? Et puis je pense que cela aiderait votre question si vous fournissiez des détails sur ce que vous avez essayé et peut-être où cela va mal.
SaultDon

Réponses:

13

Dans QGIS 2.6 (peut-être aussi dans les versions antérieures, je ne sais pas), vous pouvez le faire dans la section Propriétés de la couche, Labelsonglet, Renderingsection. À mi-chemin de la liste des options de rendu se trouve un bouton qui vous permettra d'écrire une expression qui définira la liste des fonctionnalités qui seront réellement étiquetées. Votre expression ressemblerait à quelque chose "Elevation" IN (1000, 1500). Voici le bouton (en jaune), celui-ci est défini pour ne nommer que les contours avec une valeur d'élévation de 32:

entrez la description de l'image ici

Dan C
la source
11

Une approche consisterait à charger la couche de contour et à la styliser. Ensuite, chargez à nouveau le même calque et appliquez un filtre (cliquez avec le bouton droit sur le calque et descendez dans 'Filtre ..') Utilisez une expression de filtre similaire à celle montrée dans l'image. Dans mon cas, je voulais des contours majeurs à des intervalles verticaux de 50 mètres et le champ contenant les valeurs d'élévation s'appelait "prop_value".

Lorsque le calque filtré montrant les contours principaux est chargé, appliquez des étiquettes de contour et (si nécessaire) renforcez le style de ligne comme indiqué.

entrez la description de l'image ici

L'expression du filtre:

("prop_value" % 50) = 0

sélectionnera également les contours à des intervalles verticaux de 50 mètres. Fonctionne avec les bases de données Spatialite, pas sûr des fichiers de formes.

nhopton
la source
6

J'utilise cette approche qui facilite l'étiquetage et l'affichage des courbes de niveau par condition.

J'utilise les "Propriétés définies par les données" de la largeur du symbole de ligne et des couleurs des courbes de niveau avec une expression (voir capture d'écran 1) par laquelle vous pouvez appliquer différentes largeurs de ligne en fonction de conditions personnalisées et une expression similaire pour l'étiquetage (voir capture d'écran 2).

Mettez simplement les valeurs nécessaires aux expressions et c'est tout.

Autrement dit, si vous souhaitez masquer des courbes de niveau autres que 500 m, vous pouvez utiliser cette expression pour les propriétés définies par la date du symbole de ligne:

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

c'est-à-dire que pour l'étiquetage à seulement 500 m d'intervalle, utilisez cette expression pour:

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

Par exemple, pour appliquer une largeur de ligne différente, utilisez une expression comme celle-ci pour les propriétés définies par les données:

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

capture d'écran 1 capture d'écran 2

Kay
la source
@catindri, pensez à vérifier une réponse ..
Kay
3

Une autre expression commode est "ELEV" LIKE '%00'(étape 100m) ou "ELEV" LIKE '%00' OR "ELEV" LIKE '%50'(étape 50m) ou "ELEV" LIKE '%0'(étape 10m) etc., où "ELEV" est mon champ d'élévation de données. La deuxième option ne fonctionne que si 50 est un multiple d'intervalle (10m ou 5m ...).

Antonis
la source