[FOSSGIS-Talk] Aufsummieren von Spalten im Ausdruckseditor

Bernd Vogelgesang bernd.vogelgesang at gmx.de
Mo Nov 4 15:45:22 CET 2019


Hi Claas,

FAST hätte ich es geschafft, Dir eine Lösung zu liefern, aber halt
leider nur fast.
Auch wegen meiner SQL-Dyslexie bin ich schnell bei R gelandet.
Leider habe ich in all den Jahren es nicht geschafft, auch nur ein
einziges R-Skript in QGIS zum Laufen zu bringen.

Mal wieder frustriert bleibt mir Dir nur zu sagen, dass in RStudio mit
den simplen Kommandos

library(dplyr)
library(sf)
linie <- st_read("DeinLinienLayer.gpkg")
linie$lauflaenge <- order_by(linie$bereich,cumsum(linie$length))
st_write(linie,"NeuerLinienLayer.gpkg")

der Drops gelutscht gewesen wäre, ohne hakeliges rumgeSQLle.

Aber leider mag QGIS nicht einmal einen unbearbeiteten Eingabevektor
wieder als Ergebnis ausspielen. Nerv, Frust, Kopfschüttel.
Wenn Du bei Interesse noch weitere Infos bräuchtest, einfach melden.

Gruß,

Bernd



Am 04.11.19 um 12:50 schrieb Claas Leiner:
> Hallo Zusammenn,
>
> ich versuche gerade mit dem Ausdruckseditor das Aufsummieren
> von Spaltenwerten umzusetzen, komme aber zu keiner Lösung:
>
> Problemstellung:
>
> Es gibt eine Spalte "Id", die einfach eine Folge von Linenabschnitten
> beschreibt, eine Spalte "length" welche die Längen der
> Linienabschnitte abbildet. Außerdem gibt es die Spalte "bereich", mit
> der die einzelnen Bereiche benannt werden, für die die Aufsummierung
> umgesetzt werden soll.
>
> Jetzt soll für jeden Bereich eine  Aufsummierung der Strecke
> ("length") je folgenden Abschnitt vorgenommen werden, so dass das
> Ergebnis mit der Laufsumme folgendermaßen aussieht:
>
> id    length       bereich    laufsumme
> 1    1631.737272    4306    1631.737272
> 2    11.4693348    4306    1643.2066068
> 3    10.2346697    4306    1653.4412765
> 4    5.1664905    4306    1658.607767
> 5    5.0219197    4306    1663.6296867
> 6    10.4880995    4306    1674.1177862
> 7    57.6267049    4306    1731.7444911
> 8    220.8260778    4306    1952.5705689
> 9    310.3634339    4306    2262.9340028
> 10    121.3497062    4306    2384.283709
>
> In PostGis (leider nicht in den sqlite-versionen, die mit QGIS oder
> SpatiaLite ausgeliefert werden) lässt sich das mit Window-Funktionen
> umsetzen:
> ------
> SELECT
> id,
> "length",
> "bereich",
> SUM("length") OVER (ORDER BY id,bereich ASC) AS laufsumme
>
> FROM strassen
> ORDER BY id ASC
>
> ---------
>
> Im Ausdruckseditor bin ich mit nicht zum Ziel gekommen. Am Ende habe
> ich die aufzusummierenden Abschnitte in Arrays geschrieben:
>
> -------------
>  array_to_string(
>
>  array_slice(
>  ( array_agg(  "length" , group_by:= "bereich"  ) ),
>     (minimum(  "id" ,group_by:= "bereich"  )) -1 , "id" -1
>
>     )
> )
> ---------------------------------------------------------
>
> In der dritten Zeilte steht dann beispielsweise:
>
> 1631.737272,11.4693348,10.2346697
>
> Aber es gibt ja keine sum() Funktion ohne Agreggierung, mit der man
> auf den String zugreifen kann (max und min gibt es).
>
> Hat jemand eine Idee, wie sich die Auffsummierung im Ausdruckseditor
> umsetzen lässt?
>
> Viele Grüße,
>
> Claas
>


Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste