Wie lege ich einen Standardwert für Attribute in Shapefiles fest?

8

In QGIS 2.14.6 möchte ich einen Standardwert für ein Attribut in einem Shapefile (oder auch einer Spatialite-Ebene) definieren, der angewendet wird, wenn der Benutzer den Wert nicht explizit festlegt.

Gibt es eine Möglichkeit, dies mit Standardwerkzeugen / -einstellungen (ohne Python) zu erreichen?

Jochen Schwarze
quelle
1
Abgesehen davon, dass diese virtuellen Felder keine "realen" Attribute meiner Datenquelle sind (soweit ich weiß, dass sie nur im Projekt gespeichert sind), wie würde ich ein virtuelles Feld anweisen, auf Benutzeränderungen zu reagieren, um seinen Wert auf Folgendes festzulegen: Angenommen 3.1415926, der Benutzer legt keinen Attributwert fest. Und können solche in echte Attribute umgewandelt werden? Fragen über Fragen ... Außerdem war 'ohne Python' nicht obligatorisch, ich wäre in Ordnung, selbst wenn ich dies mit 'ein bisschen Python' erreichen könnte ;-) (Und wo ist @ Josephs Kommentar?!)
Jochen Schwarze
Entschuldigung, entfernte meinen Kommentar: "Sie können virtuelle Felder verwenden", um eine mögliche Methode mit einem Plugin bereitzustellen =)
Joseph
Überprüfen Sie diese Frage, aber es handelt sich um einen Python-Code. gis.stackexchange.com/questions/192105/…
Fran Raga

Antworten:

16

QGIS 3

Wählen Sie die Ebene im Ebenenbedienfeld aus und klicken Sie mit der linken Maustaste. Eigenschaften auswählen. Wählen Sie das "Attributformular" wie unten gezeigt. Wählen Sie die Felder aus der Liste "Verfügbare Widgets" wie angezeigt aus. Geben Sie im Dialogfeld "Standardeinstellungen" einen Ausdruck für den Standardwert ein. Wenn das Kontrollkästchen "Standardwert bei Aktualisierung anwenden" aktiviert ist, wird der Wert jedes Mal angepasst, wenn die Geometrie des Features oder ein anderes Attribut geändert wird. Dies ermöglicht Dinge wie einen "last_modified" -Zeitstempel oder einen aktualisierten "Bereich".

Feldstandardwert festlegen QGIS 3.0.3


QGIS 2.18

Ab QGIS 2.18 ist dies ohne zusätzliches Werkzeug möglich.

Gehen Sie einfach zu den Feldeigenschaften, klicken Sie auf die Schaltfläche in dem Feld, dem Sie einen Standardwert zuweisen möchten, und geben Sie einen Ausdruck ein. Es kann auch die Geometrie als Eingabe verwendet werden.

Geben Sie hier die Bildbeschreibung ein

Nebenbemerkung: Ich weiß, dass die ursprüngliche Frage auf QGIS 2.14 abzielt, aber ich denke, dass dies für zukünftige Leser dieser Frage immer noch von Interesse ist.

Matthias Kuhn
quelle
1
Auf jeden Fall von Interesse;)
Joseph
1
Habe mir gerade die Funktion in 2.17 angesehen. Genau das, wonach ich gesucht habe.
Jochen Schwarze
7

Es gibt das AutoFields- Plugin, mit dem Sie Attributfelder erstellen (oder ändern) und diese automatisch mit einem benutzerdefinierten Ausdruck aktualisieren können .

Es wurde auch mit verschiedenen Formaten getestet und Autofelder gelten nicht als virtuelle Felder (zitiert von der Homepage des Plugins ):

Funktionieren AutoFields mit dem Vektorformat 'X'?

Wir haben AutoFields bereits auf PostgreSQL / PostGIS-, SpatiaLite- , Shapefiles-, WFS-T- (Transactional Web Feature Service) und Speicherebenen getestet . Bitte lassen Sie mich wissen, wenn Sie AutoFields für andere Vektorformate verwenden.

Sind AutoFields wie virtuelle Felder?

Nee. Im Gegensatz zu virtuellen Feldern sind AutoFields:

  • Speichern Sie berechnete Werte in den Daten.
  • Sind unabhängig von QGIS-Projekten, dh Sie können zwischen QGIS-Projekten wechseln und AutoFields funktioniert weiterhin.
  • Arbeiten Sie nur mit bearbeitbaren Vektorebenen.
Joseph
quelle
5

Da ich diese oben genannten Attributwerte verwenden möchte, um einige Aspekte der Symbologie (Symbolgröße, Deckkraft) zu steuern, haben einige weitere Untersuchungen ergeben, dass es mit datendefinierten Eigenschaften einen anderen großartigen (und flexiblen) Weg gibt, dies zu erreichen. Ein (generischer) Ausdruck

if("attribute_name" is null, @default_value, "attribute_name")

Dabei @default_valuewird als Projektvariable ein Standardwert zurückgegeben, der vom Benutzer definiert werden kann, wenn für das Attribut kein Wert festgelegt ist attribute_nameund der Wert sonst angegeben wird.

Definieren Sie Variablen in Projekteigenschaften:

Geben Sie hier die Bildbeschreibung ein

Richten Sie einen Ausdruck mit datendefinierten Eigenschaften ein (rote Farbe mit benutzerdefinierter Deckkraft in diesem Fall):

Geben Sie hier die Bildbeschreibung ein

Jochen Schwarze
quelle