0

I have created layer styles and wanted to create specific map themes with another script. Unfortunately, the styles are not loading properly and the map themes are faulty and sometimes not selectable. Do any of you have an idea where my error lies?

Here is the code I have used:

def Karthenthemen_Generator(Name,AbnehmerStil = None,GebaudeStil = None,KnotenStil = None,BemassungsStil = None,LeitungsStil = None,EinspeisewerkStil = None, WaermetauscherStil = None):
    #Laden der Layer
    Layer_Namen = {"Abnehmer": AbnehmerStil,
                    "Angeschlossene Gebäude":GebaudeStil,
                    "Knoten": KnotenStil,
                    "Bemaßung": BemassungsStil,
                    "Leitungen": LeitungsStil,
                    "Einspeisewerke": EinspeisewerkStil,
                    "Wärmetauscher": WaermetauscherStil
    }
    # Laden der Stile
    root = QgsProject.instance().layerTreeRoot()
    # laden der layer aufgrund ihres Namens
    for Layer_Name, Layer_Stil in Layer_Namen.items():
        Layer = QgsProject.instance().mapLayersByName(Layer_Name)
        # Ausgabe, dass ein Layer nicht gefunden wurde
        if not Layer:
            continue
        
        layer = Layer[0]
        layer_node = root.findLayer(layer.id())
        # ausschalten des Layers, wenn kein Stil angegeben ist
        if Layer_Stil is None:
            if layer_node:
                layer_node.setItemVisibilityChecked(False)

        # Laden des Layer spezifischen Stils
        else:
            if layer_node:
                layer_node.setItemVisibilityChecked(True)
            try:
                layer.loadNamedStyle(Layer_Stil,True)
                layer.triggerRepaint()
            except Exception as e:
                print(f"Fehler beim Laden des Stils '{Layer_Stil}' für Layer '{Layer_Name}': {e}")  
    # erstellen des Kartenthemas
    Kartenthemasammlung = QgsProject.instance().mapThemeCollection()
    try:
        Kartenthema = QgsMapThemeCollection().createThemeFromCurrentState(
            QgsProject.instance().layerTreeRoot(),
            iface.layerTreeView().layerTreeModel())
        QgsProject.instance().mapThemeCollection().insert(Name, Kartenthema)
        print(f"map Theme '{Name}' createt and saved")
    except Exception as e:
        print(f"Error at map Theme '{Name}': {e}")
    
Kartenthemen={"Hochpunkt/Tiefpunkt":{"AbnehmerStil": None,
                                    "GebaudeStil": None,
                                    "KnotenStil": None,
                                    "BemassungsStil": None,
                                    "LeitungsStil": "Vorlauf/Rucklauf",
                                    "EinspeisewerkStil": "Einspeisewerk",
                                    "WaermetauscherStil": "Hochpunkt/Tiefpunkt"}, ....}
for Name, Eintrag in Kartenthemen.items():
    Karthenthemen_Generator(Name,**Eintrag) 

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.