Spalte "Kumulative Werte"
Ich habe einige der hier veröffentlichten Beispiele und Lösungen zur Berechnung der Verkettung einer Linie oder von kumulativen Werten durchgesehen. Ich bin jedoch immer noch nicht in der Lage, das gewünschte Ergebnis zu erzielen. Ich versuche, die Werte für 'Länge' durch 'Zeilennummer' hinzuzufügen. Also Verkettung / kumulativer Wert von Leitungsabschnitt 1 = 7,69026,2 = 14,83986, 3 = 22,69265 ...... usw. Gibt es einen Ausdruck, den ich im Feldrechner verwenden kann, um dies zu erreichen?
Antworten
Gehen Sie in Ihrem Feldrechner in den Funktionseditor, erstellen Sie eine neue Datei und fügen Sie diese Funktion ein:
"""
Define new functions using @qgsfunction. feature and parent must always be the
last args. Use args=-1 to pass a list of values as arguments
"""
from qgis.core import *
from qgis.gui import *
import sys
if sys.version_info.major == 3:
layer_registry = QgsProject
else:
layer_registry = QgsMapLayerRegistry
@qgsfunction(args="auto", group='Custom')
def get_length_feature(layer_id, feature, parent):
id = feature.id()
len_tot = 0.
for feat in layer_registry.instance().mapLayer(layer_id).getFeatures():
if feat["id"] <= feature["id"]:
len_tot += feat.geometry().length()
return len_tot
Laden Sie es, kehren Sie zur Registerkarte Ausdruck zurück und fügen Sie Folgendes ein: get_length_feature( @layer_id )
+1 für die benutzerdefinierte Funktion, sie sind ein guter Trick, um den Ärmel hochzuhalten.
In diesem Fall können Sie dies mit der integrierten aggregateFunktion tun :
aggregate( 'Line_CHain','sum', "Length" ,"id"<= attribute( @parent,'id'))