[FOSSGIS-Talk] QGIS: Objektabfrageergebnisse nur für belegte Felder?

Bernhard Ströbl bernhard.stroebl at jena.de
Fr Feb 2 11:00:53 CET 2018


Hallo Günter,

was Du Dir wünscht, ist eine Felddarstellung in Abhängigkeit vom 
Feldwert eines Datensatzes (hier NULL/NOT NULL); was in QGIS aber 
implementiert ist, ist die Felddarstellung in Abhängigkeit von 
Feldeigenschaften bzw. nach Vorgaben in der Maske, diese Einstellungen 
gelten dann aber immer für alle Datensätze.

Noch ein Gedanke zu Deinem Beispiel (das vielleicht so in der Realität 
gar nicht auftritt): Wenn bei 10.000 Datensätzen nur bei einem ein Wert 
eingetragen ist, stimmt -mit Verlaub - etwas mit der Datenmodellierung 
nicht.

Beim QGISWebClient I hatte ich seinerzeit implementiert, dass NULL-Werte 
ausgeblendet werden (konfigurierbar), funktioniert aber, glaube ich 
nicht mehr so richtig. Dort ist das aber einfacher zu realisieren, denn 
es werden Werte für einen Datensatz angefragt und als HTML formatiert. 
Da kann man natürlich einen Filter schreiben, der NULL-Werte gar nicht 
mit aufführt. Wenn Du etwas ähnliches in QGIS möchtest, müsstest Du 
genauso vorgehen: Eine Nutzeraktion mit einem Pythonskript, das die 
Werte des angeklickten Features analysiert und nur Nicht-NULL-Werte z.B. 
in ein entsprechendes QWidget ausgibt (nur Anzeige!)

viel Erfolg
Bernhard

Am 02.02.2018 um 09:53 schrieb G. Wagner, Wagner-IT:
> Hallo Jürgen,
>
> Danke für Deine Antwort.
>
> Das setzt aber auch eine einheitliche Vorgehensweise (verbergen entsprechender Spalte) pro Layer voraus, wenn ich es richtig verstehe.
>
> Deshalb bisher auch mein Umweg über verschiedenen Layer, die wiederum nur eine Teilmenge der Attribute haben. Ist aber nicht schön.
> Im QGIS kann ich die Anzeige auch über die "Attributeditorzusammenstellung" (Drag+Drop) steuern aber auch hier nur für den ganzen Layer.
> Wenn von 10000 Objekten bei einem Objekt ein Wert gesetzt ist, wird bei allen anderen der Null-Wert angezeigt.
>
> Mein Wunsch wäre ein "verbergen wenn leer" pro Objekt.
>
> Das Ganze wird noch interessanter, wenn das QGIS-Projekt über den QGIS-Server im Web-Client genutzt wird.
> Hier könnte dann der Web-Client die Aufgabe übernehmen (Attributfeld nur darstellen wenn nicht Null).
> Gibt es hier Erfahrungen/Lösungen der Anwender in den verschiedenen Web-Clients?
>
> Danke und Gruß
>
> Günter
>
>
> -----Ursprüngliche Nachricht-----
> Von: FOSSGIS-Talk-Liste [mailto:fossgis-talk-liste-bounces at fossgis.de] Im Auftrag von Jürgen E. Fischer
> Gesendet: Donnerstag, 1. Februar 2018 19:27
> An: fossgis-talk-liste at fossgis.de
> Betreff: Re: [FOSSGIS-Talk] QGIS: Objektabfrageergebnisse nur für belegte Felder?
>
> Moin Günter,
>
> On Thu, 01. Feb 2018 at 10:14:42 +0100, G. Wagner, Wagner-IT wrote:
>> gibt es im QGIS (2.18) eine Möglichkeit, dass man bei der Abfrage der
>> Sachdaten eines Objektes nur diejenigen angezeigt bekommt, bei denen
>> auch Werte hinterlegt sind?
>
>> Bei Objekten mit umfangreichen Sachdaten sind nicht immer für
>> sämtliche Objekte alle Sachdaten belegt. Das Abfrageergebnis (Fenster
>> der
>> Objektattribute) ist dann oft unnötig groß / lang, da viele
>> "NULL"-Werte angezeigt werden.
>
> Das geht nicht direkt.  Du kannst aber in der Attributtabelle Spalten verbergen (Kontextmenü "Spalte verbergen" oder gleich mehrere über "Spalten anordnen").
>
> Dieses Snippet für die Python-Console macht das für den aktuellen Layer
> automagisch:
>
> l = iface.activeLayer()
> c = l.attributeTableConfig()
> for i in reversed(range(len(l.fields()))):
>   uv = l.uniqueValues(i)
>   if len(uv)==1 and uv[0]==NULL:
>     c.setColumnHidden(i, True)
> l.setAttributeTableConfig(c)
>
>
> Jürgen
>



__________ Information from ESET Mail Security, version of virus signature database 16837 (20180202) __________

The message was checked by ESET Mail Security.
http://www.eset.com




Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste