[FOSSGIS-Talk] qlr Layerdateien mit einem Standalone Python Skript in ein geöffnetes qgs Projekt laden

Thomas Baumann rdbath.regiodata at gmail.com
Do Aug 1 16:40:27 CEST 2019


Hallo Anja,
Würde der Ansatz nicht voraussetzen, dass die Projektdatei geschlossen ist?
Im laufenden Betrieb liest meines Wissens nach QGIS nicht ständig die
Projektdatei ein, d.h. wenn ich die Projektdatei extern editiere greift das
erst beim nächsten Neueinlesen.

Wäre denn ein Plugin eine Alternative?

Ich benutze das 'layers menu from project" plugin.

https://plugins.qgis.org/plugins/menu_from_project

Damit kann man in qgis ein Menü erzeugen, welches dynamisch aus den Layern
eines QGIS-Projektes aufgebaut wird. D.h. man legt ein qgis-Projekt mit
Layern und Layergruppen an, die man dynamisch einbinden möchte.

Das stellt man anderen auf einem Netzlaufwerk zur Verfügung und verweist im
Plugin darauf.

Dadurch können alle Nutzer Layer und ganze Layergruppen dynamisch auf
Knopfdruck einbinden.

Ich hab damit gute Erfahrungen gemacht.

Viele Grüße,
Thomas



Riedel, Anja <Riedel.Anja at eglv.de> schrieb am Do., 1. Aug. 2019, 15:34:

> Hallo zusammen,
>
>
>
> hat jemand schon mal Layerdateien (.qlr) über ein Standalone Python Skript
>
> in ein geöffnetes QGis Projekt geladen ?
>
>
>
> Die Idee ist, verschiedene Themen zu verlinken,  die sich der Anwender
>
> In sein geöffnetes QGIS-Projekt hereinladen kann (z.B. per Klick) .
>
>
> import os, sys, glob
> # Append QGIS Python library to python search path
> sys.path.extend(['C:/PROGRA~1/QGIS 3.4/apps/qgis/./python',.......
> # Append location of DLLs to current system PATH envrionment variable
> os.environ['PATH'] += r";C:\Program Files\QGIS
> 3.4\apps\qgis\bin;C:\Program Files\QGIS 3.4\apps\qgis\python"
> from qgis.core import QgsProject
> from osgeo import ogr
> from qgis.core import QgsApplication, QgsProject, QgsVectorLayer,
> QgsLayerDefinition
> from PyQt5.QtCore import QFileInfo
> import qgis.core
> try:
>     import builtins
> except ImportError:
>     import __builtin__ as builtins
>
> # Get the project instance // Console
> project = QgsProject.instance()
> # Load the project // Projekt laden in dem der Layer eingefügt werden soll
> project.read('C:/temp/testQ.qgs')
> # print (project.fileName())
> #Get the reference of the layer tree. //Leere Gruppe wird angelegt
> root = QgsProject.instance().layerTreeRoot()
> group = root.addGroup('adressen')
> # // Hinzufügen der qlr- Datei
> QgsLayerDefinition().loadLayerDefinition('N:/Themen/QGIS/qlr_Vorlagen/adressen.qlr',
> QgsProject.instance(), group)
> # Save the project to the same
> project.write()
>
> Diese Skript läßt sich standalone ausführen, in der Projekinstanz wird
> eine leere Gruppe adressen angelegt, die  .qlr -Datei wird jedoch nicht mit
> hinzugeladen.
> Wenn ich das Skript über die Konsole ausführe, wird die .qlr in die Gruppe
> adressen geladen.
> Hat jemand eine Idee was hier noch fehlen könnte?
>
> Danke und Grüße
> Anja
>
> riedel.anja at eglv.de<mailto:riedel.anja at eglv.de>
>
> --
> ....................................................................
> FOSSGIS 2020, die Konferenz für Open Source GIS mit OpenData und
> OpenStreetMap in Freiburg im Breisgau!
> 11.-14. März 2020 an der Universität Freiburg
> https://fossgis-konferenz.de/2020/
>
> FOSSGIS Veranstaltungen 2019
> https://www.fossgis.de/node/322
>
> FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem
> GIS-Bereich und Freier Geodaten!
> https://www.fossgis.de/             https://twitter.com/fossgis_eV
>
> ____________________________________________________________________
> FOSSGIS-Talk-Liste mailing list
> FOSSGIS-Talk-Liste at fossgis.de
> https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste
>


Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste