[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