QGIS'de etiketler nasıl birleştirilir?


14

Windows XP makinede QGIS 1.8 kullanıyorum ve öznitelik tablosundaki yerel yolların isimlerini etiketlemek için birkaç alanın bir araya getirilmesine çalışıyorum, ancak doğru sözdizimini bulamıyorum. İlk alan cadden, ikinci bağlantı türünden oluşur, örneğin: Cadde ve üçüncü yön, örneğin Doğu veya Batı. Formüle dayalı etiketlerin iletişim kutusunu kullanarak doğru sözdiziminin nasıl yazılacağını söyleyebilir misiniz? Özellik tablosunu gösteren bir ekran görüntüsü eklendi.

resim açıklamasını buraya girin

Yanıtlar:


19

Birleştirme operatörü ||(tek huh?), Bu yüzden şöyle bir şey kullanırsınız:

street || ', ' || link || ', ' || orientation

İstediğiniz ayırıcılar ve statik dizgilerle bunları dağıtın.

@NathanW'ın belirttiği gibi, alanlardan herhangi biri NULL ise bu başarısız olur, ancak bu durumda bir yedek değer kullanabilirsiniz:

street || ', ' || CASE WHEN ("link" IS NULL) THEN '(nodata)' ELSE "link" END || ', ' || orientation

QGIS, coalescesürüm 2.0'dan beri bir yardımcı işlevi destekler . NULL'ların sorunlarından kaçınmak için orada ve örnek şöyle görünecektir:

 street || ', ' || coalesce(link, '(nodata)') || ', ' || orientation

2
concatDev sürümlerinde de işlev vardır. || kullanımı NULL ile çalışmaz link, NULL ise tüm etiket null değerinde concatbu sorun yoktur. || Postgres alınır postgresql.org/docs/9.1/static/functions-string.html
Nathan W

Durum bildirimlerini doğrudan desteklemiyor gibi görünüyor. Bağlantı sütununun NULL olmayan bir kopyasını oluşturmak için doğrudan SQL kullanmadan tek seçenek mi?
lynxlynxlynx

Ne anlama geliyor?
Nathan W

3
END eksik. Doğru dizeCASE WHEN ("link" IS NULL) THEN '(nodata)' ELSE "link" END
Nathan W

1
Ahh coalescedemek istediğim o.
Nathan W

2

QGIS veriosn 2.0.1'de basit ifade şu şekilde çalıştı:

"alan1" || '(' || "field2" || ')'

istenen çıktı: alan1 (alan2)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.