QGIS Tek bir katmana aynı anda birden fazla stil yükleyin


10

Birden çok projede benzer katmanlara uyguladığım kaydedilmiş bir qml tarzı dosya kümesi var. Bir örnek, yaklaşık bir düzine farklı stile sahip bir çizgi tipi şekil dosyası tabakasıdır; şu anda yeni bir stil ekleme ve farklı stiller her biri için qml dosyasını yükleme işlemini tekrarlamak zorunda. O zaman bu projede birkaç kez daha yapmak ve bir sonraki projede her şeyi tekrarlamak zorundayım.

Aynı katmanda birden fazla stil dosyasını aynı anda yüklemenin bir yolu olup olmadığını görmeye mi çalışıyorsunuz? Tek bir qml'ye göz atmak yerine, birkaç qml dosyasını çoklu seçebilir ve bir kerede yükleyebilir miyim?

Katman başına birden çok stil örneği


1
Aynı katmana aynı anda birden fazla stil yükleyerek ne demek istersiniz? Yüklenen son stil önceki tüm yüklenmiş stilleri geçersiz kılmaz mı? Yoksa aynı katmanın birden çok kopyasına birçok stil yüklemek mi istiyorsunuz?
artwork21

Geçerli iş akışım katman özelliklerini açmak; yeni bir stil eklemek için stil düğmesini (sol altta) kullanın, bir ad atayın ve ardından kaydedilmiş bir .qml dosyasını yükleyin, ardından katmanın kullandığı birçok (10-20) stil için tekrarlayın. Şu anda bunu yaklaşık 25 projede yaklaşık 7-8 katman için tek tek yapmak zorundayım. (yinelenen veriler, katmanlar ve haritalar, ancak coğrafi olarak belediyeler tarafından ayrılmış proje dosyaları - her belediye ayrı bir istemcidir)
CEL-ma

Burada python kullanmak isteyen ancak henüz bir cevap istemeyen benzer bir soru var, gis.stackexchange.com/questions/294016/…
artwork21

Yanıtlar:


3

Pyqgis komut dosyasını kullanarak birden fazla stil yükleyebilirsiniz (yorumlardaki açıklamalar):

import os
from qgis.core import QgsMapLayerStyle
from qgis.utils import iface

# set path to your styles here
qml_path = '/home/user/qml'

layer = iface.activeLayer()
style_manager = layer.styleManager()

# read valid style from layer
style = QgsMapLayerStyle()
style.readFromLayer(layer)

for qml_file in [f for f in os.listdir(qml_path)
                 if os.path.isfile(os.path.join(qml_path, f)) and
                 f.endswith('.qml')]:
    # get style name from file
    style_name = os.path.basename(qml_file).strip('.qml')
    # add style with new name
    style_manager.addStyle(style_name, style)
    # set new style as current
    style_manager.setCurrentStyle(style_name)
    # load qml to current style
    (message, success) = layer.loadNamedStyle(os.path.join(qml_path, qml_file))
    print message
    if not success:  # if style not loaded remove it
        style_manager.removeStyle(style_name)

QGIS python konsolunda çalıştırabilir veya bir işlem komut dosyasına adapte edebilirsiniz.

(Mevcut LTR sürüm QGIS 2.18 üzerinde test edilmiştir)


1
Çok teşekkür ederim! Birden fazla stil başarıyla yükleyebildim - algoritmayı çalıştırırken bir "[Errno 9] Kötü dosya tanımlayıcı" hata mesajı aldım, ancak yine de başarıyla tamamlandı! Bu bana çok iş kazandıracak!
CEL-ma

Gelecekte bu yazıyı okuyan herkese; yukarıda belirtilen "Hatalı dosya" hata iletisi, hem çizgi hem de düğüm vektör katmanlarına sahip olan qml yolundan kaynaklanmıştır. Ayrıldıktan sonra, artık hata yok.
CEL-ma

Herkes bu kodu python 3 dönüştürmek için yardımcı olabilir böylece QGIS 3 çalışır?
CEL-ma

0

Eğer doğru bir şekilde anlıyorsam, geometri stillerini uygulayabiliyorsunuz ve açık olan herhangi bir projede katmanlara hızlı ve kolay bir şekilde kurallar veya ifadeler uygulamak istemiyor musunuz?

Bu durumda, stilinizi stil yöneticisini kullanarak sembol kitaplığına kaydedebilirsiniz? Katman stili panelini açın ve "kütüphaneyi aç" düğmesini tıklayın.


üzgünüm, evet - toplu yükleme yapmak istediğim stiller kural tabanlı.
CEL-ma
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.