Re: [FOSSGIS-Talk] virtuelle Layer lässt QGIS einfrieren

2021-12-23 Diskussionsfäden Daniel Rüttimann
Hallo Bernd

Besten Dank für den Hinweis bezüglich DB-Manager, es braucht etwas mehr 
Anpassungen als reines rüberkopieren des SQL-Codes, aber mit ein paar weiteren 
Anpassungen des Codes hat dieser Weg funktioniert. 
Die Verwendung von virtuellen Layern hat bei mir auch mit dem Nightly Master 
nicht funktioniert.

Danke allen beteiligten für die Hilfe 
Daniel


-Ursprüngliche Nachricht-
Von: FOSSGIS-Talk-Liste  Im Auftrag von 
bmar...@giswana.de
Gesendet: Mittwoch, 22. Dezember 2021 13:52
An: fossgis-talk-liste@fossgis.de
Betreff: Re: [FOSSGIS-Talk] virtuelle Layer lässt QGIS einfrieren


Hallo Daniel,

bei Arbeiten mit Geodaten gebe ich SpatiaLite gegenüber GeoPackage den Vorzug. 
Für die Darstellung von Layern, deren Information über zwei oder mehr Tabellen 
verteilt sind, können Spatial-Views eingesetzt werden, um Informationen nicht 
redundant in der Datenbank vorzuhalten. Diese Views können wie herkömmliche 
Layer in QGIS eingebunden werden. Bei GeoPackage sind meine Erfahrungen mit 
Spatial-Views eher negativ geprägt, weshalb ich weitere Versuche seit längerem 
aufgegeben habe.

Da ich nicht weiß, ob für dich ein Umstieg auf ein anderes Datenformat in Frage 
kommen könnte, kannst du für die Lösung deines Problems auch den DB-Manager 
nehmen. Deine gpkg Datei sollte als angemeldete Datenbank vorliegen, so dass 
diese unter dem entsprechenden Datenbankanbieter aufgerufen werden kann.  Im 
Editor kannst du den SQL-Code deines Virtuellen Layers nutzen. Evtl. musst du 
die Geometrie als "geom" und nicht als "geometry" ansprechen. Das 
Abfrageergebnis dann "als neuen Layer laden", mit Angabe zur eindeutigen 
Kennung und der Geometrie. Liegen 1:n Beziehungen vor und es gibt kein 
eindeutiges ID-Feld, ist die Option "Objektabfrage nach ID vermeiden" zu 
aktivieren.

Nach meiner Erfahrung sind diese Art Layer wesentlich performanter als 
Virtuelle Layer. Ob es eine Einschränkung in der nutzbaren Anzahl gibt, 
entzieht sich allerdings meiner Kenntnis. Im Gegensatz zu Virtuellen Layern 
konnte ich mit den Db-Layern auch komplexere Layer generieren, die auf mehr als 
nur zwei Tabellen zugriffen (hier mit QGIS 3.16.14).

Ein weiterer Vorteil besteht in der Möglichkeit des Speicherns des 
unterliegenden SQL-Codes, der durch erneuten Aufruf schnell an die jeweiligen 
Bedürfnisse angepasst werden kann, um evtl. einen weiteren Layer zu erstellen.

Allerdings würde ich es mit der Erstellung neuer Layer zu reinen 
Darstellungszwecken nicht übertreiben. Wenn es nur darum geht, vorgefilterte 
Informationen zu präsentieren, ist eine Regel basierte Darstellung die bessere 
Wahl. QGIS bietet darüber hinaus die Möglichkeit für ein und denselben Layer 
unterschiedliche Stile festzulegen.

Grüße vom anderen 

Bernd 



--

FOSSGIS Veranstaltungen
https://www.fossgis.de/news/fossgis-events/

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_Verein


FOSSGIS-Talk-Liste mailing list
FOSSGIS-Talk-Liste@fossgis.de
https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste
-- 

FOSSGIS Veranstaltungen
https://www.fossgis.de/news/fossgis-events/

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_Verein


FOSSGIS-Talk-Liste mailing list
FOSSGIS-Talk-Liste@fossgis.de
https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste


Re: [FOSSGIS-Talk] virtuelle Layer lässt QGIS einfrieren

2021-12-22 Diskussionsfäden bmarcus


Hallo Daniel,

bei Arbeiten mit Geodaten gebe ich SpatiaLite gegenüber GeoPackage den
Vorzug. Für die Darstellung von Layern, deren Information über zwei oder
mehr Tabellen verteilt sind, können Spatial-Views eingesetzt werden, um
Informationen nicht redundant in der Datenbank vorzuhalten. Diese Views
können wie herkömmliche Layer in QGIS eingebunden werden. Bei GeoPackage
sind meine Erfahrungen mit Spatial-Views eher negativ geprägt, weshalb ich
weitere Versuche seit längerem aufgegeben habe.

Da ich nicht weiß, ob für dich ein Umstieg auf ein anderes Datenformat in
Frage kommen könnte, kannst du für die Lösung deines Problems auch den
DB-Manager nehmen. Deine gpkg Datei sollte als angemeldete Datenbank
vorliegen, so dass diese unter dem entsprechenden Datenbankanbieter
aufgerufen werden kann.  Im Editor kannst du den SQL-Code deines Virtuellen
Layers nutzen. Evtl. musst du die Geometrie als "geom" und nicht als
"geometry" ansprechen. Das Abfrageergebnis dann "als neuen Layer laden", mit
Angabe zur eindeutigen Kennung und der Geometrie. Liegen 1:n Beziehungen vor
und es gibt kein eindeutiges ID-Feld, ist die Option "Objektabfrage nach ID
vermeiden" zu aktivieren.

Nach meiner Erfahrung sind diese Art Layer wesentlich performanter als
Virtuelle Layer. Ob es eine Einschränkung in der nutzbaren Anzahl gibt,
entzieht sich allerdings meiner Kenntnis. Im Gegensatz zu Virtuellen Layern
konnte ich mit den Db-Layern auch komplexere Layer generieren, die auf mehr
als nur zwei Tabellen zugriffen (hier mit QGIS 3.16.14).

Ein weiterer Vorteil besteht in der Möglichkeit des Speicherns des
unterliegenden SQL-Codes, der durch erneuten Aufruf schnell an die
jeweiligen Bedürfnisse angepasst werden kann, um evtl. einen weiteren Layer
zu erstellen.

Allerdings würde ich es mit der Erstellung neuer Layer zu reinen
Darstellungszwecken nicht übertreiben. Wenn es nur darum geht, vorgefilterte
Informationen zu präsentieren, ist eine Regel basierte Darstellung die
bessere Wahl. QGIS bietet darüber hinaus die Möglichkeit für ein und
denselben Layer unterschiedliche Stile festzulegen.

Grüße vom anderen 

Bernd 



-- 

FOSSGIS Veranstaltungen
https://www.fossgis.de/news/fossgis-events/

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_Verein


FOSSGIS-Talk-Liste mailing list
FOSSGIS-Talk-Liste@fossgis.de
https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste


Re: [FOSSGIS-Talk] virtuelle Layer lässt QGIS einfrieren

2021-12-17 Diskussionsfäden Bernd Vogelgesang

Hi,

zu Deinem eigentliche Problem kann ich momentan nichts beitragen.

Ich wundere mich aber, dass die Virtuellen Layer bei Dir überhaupt noch
funktionieren.

In 3.22 (Linux Mint) ist diese Funktion bei mir total geschrottet und
ich kann weder neue VL anlegen noch alte bearbeiten.

https://github.com/qgis/QGIS/issues/46025#issuecomment-982711868

Eigentlich sollte das Problem gelöst sein, und ist u.U. schon über den
nightly master verfügbar (versuche das gerade über ne virtuelle Maschine
zu testen).

Dein Problem kann aber auch was ganz anderes sein.


Gruß,

Bernd

Am 17.12.21 um 11:07 schrieb Daniel Rüttimann:

Liebe FOSS-Talk-Liste

Ich habe ein Problem mit QGIS und virtuellen Layern. Ich möchte von einem 
Vektor-Layer mehrere Darstellungslayer machen, die ich filtere. Da das 
Filterkriterium nur über eine Relation zugänglich ist, muss ich die gefilterten 
Layer als virtuelle Layer bereitstellen, damit ich auf das zu filternde 
Attribut in der Relation zugreifen kann. Wenn ich nun den vierten virtuellen 
Layer einrichte, friert QGIS regelmässig ein (keine Rückmeldung). Wenn ich 
weniger als 4 virtuelle Layer erstelle, dann funktioniert das, bis ich das 
Projekt speichere und schliesse. Wenn ich es wieder öffne, werden die 
virtuellen Layer nicht mehr gefunden. Kann mir da jemand helfen, kann das an 
der Installation liegen, gibt es einen Bug oder muss ich etwas bei den 
Einstellungen beachten?

Das Problem besteht sowohl mit QGIS 3.18 und 3.22 (sind die beiden bei mir 
installierten Versionen). Installiert mit OSGeo-Installation auf Windows 10.

Mein Projekt ist folgendermassen aufgebaut:

   *   Daten in Geopackage, erstellt mittels ModelBaker Plugin aus einer 
Interlis-Definitionsdatei mit mehreren Relations
   *   Der betroffene Layer ist mit einer Relation mit einer Tabelle verknüpft, 
in der das zu filternde Attribut liegt (dieses ist gleichzeitig ein Schlüssel 
zu einer darunterliegenden Wertetabelle)
   *   Ich muss eine spezielle Darstellung produzieren, daher brauche ich rund 
10 virtuelle Layer, ich kann das nicht mit Kategorien abbilden. Ohne virtuelle 
Layer habe ich keinen Zugriff auf das zu filternde Attribut wegen der Relation 
(oder gibt es da andere Wege?)

Besten Dank für eure Hilfe

Beste Grüsse
Daniel


[cid:image001.jpg@01D7F334.776D26D0]

-- nächster Teil --
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : image001.jpg
Dateityp: image/jpeg
Dateigröße  : 21359 bytes
Beschreibung: image001.jpg
URL : 


--

FOSSGIS Veranstaltungen
https://www.fossgis.de/news/fossgis-events/

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_Verein


FOSSGIS-Talk-Liste mailing list
FOSSGIS-Talk-Liste@fossgis.de
https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste