[FOSSGIS-Talk] QGIS: eindeutige Werte in einer Spalte als jeweils eigene Spalte erzeugen
G. Wagner, Wagner-IT
info at wagner-it.de
Do Mär 23 16:24:33 CET 2023
Hallo Thomas,
recht herzlichen Dank! Auch für die ausführlichen Erläuterungen.
Gestern habe ich es von Hand erledigt aber das nächste Projekt kommt bestimmt. Es geht hier um die Aufbereitung der Flurstücksdaten, u.a. anhand der Nutzungsarten und Bodenschätzung für die Grundsteuerreform.
Und als Basis zum Üben/Einarbeiten ist es auch gut (wenn mal etwas Zeit ist..)
Also nochmals Danke und Grüße
Günter
Von: Thomas B <rdbath.regiodata at gmail.com>
Gesendet: Donnerstag, 23. März 2023 16:03
An: G. Wagner, Wagner-IT <info at wagner-it.de>
Cc: fossgis-talk-liste at fossgis.de
Betreff: Re: [FOSSGIS-Talk] QGIS: eindeutige Werte in einer Spalte als jeweils eigene Spalte erzeugen
Hallo Günter,
mit automatischem Berechnen der Flächen sind es eine Handvoll mehr Zeilen... siehe Update unter
https://gist.github.com/thbaumann/234ada8deda059b4dd88d91e829ebb3b
Ich hab auch noch eine Variable 'anzahl_spaltenzeichen' eingebaut, damit man festlegen kann, wie viele Buchstaben lang die erzeugten Spaltennamen sein sollen.
Von der Grundidee her:
# in einer Schleife durch alle Features gehen... :
anzahl_spaltenzeichen= 8 (max Anzahl an Zeichen für die Spaltenueberschrift)
request = QgsFeatureRequest()
with edit(vectorLayer): # Layer editieren... der Layer sollte dazu nicht schon im Editiermodus sein
for feature in vectorLayer.getFeatures(request): #schleife
relevantes_feld= feature[spaltenname] #aktueller inhalt der spalte mit eindeutigen werten bsp Wert ax_wald in Spalte name (siehe Screenshot)
feature[relevantes_feld[0:anzahl_spaltenzeichen]] =feature.geometry().area() # bsp: spalte (im Bsp. ax_wald) fuellen mit ermittelter flaeche
vectorLayer.updateFeature(feature) #feature updaten
VG
Thomas
Am Mi., 22. März 2023 um 16:53 Uhr schrieb G. Wagner, Wagner-IT <info at wagner-it.de <mailto:info at wagner-it.de> >:
Hallo Thomas,
super – funktioniert einwandfrei.
Wenn ich jetzt noch die Flächenberechnung mit in das Script hineinbekomme ist es perfekt.
(ich muss mich wohl doch endlich mal wieder mit Python beschäftigen)
Vielen Dank und Grüße
Günter
Von: Thomas B <rdbath.regiodata at gmail.com <mailto:rdbath.regiodata at gmail.com> >
Gesendet: Mittwoch, 22. März 2023 15:47
An: G. Wagner, Wagner-IT <info at wagner-it.de <mailto:info at wagner-it.de> >
Cc: Bernd Vogelgesang <bernd.vogelgesang at gmx.de <mailto:bernd.vogelgesang at gmx.de> >; fossgis-talk-liste at fossgis.de <mailto:fossgis-talk-liste at fossgis.de>
Betreff: Re: [FOSSGIS-Talk] QGIS: eindeutige Werte in einer Spalte als jeweils eigene Spalte erzeugen
Hallo Günter,
ein bestehendes Werkzeug, was das macht, ist mir auf Anhieb nicht bekannt.
Ein auf die Schnelle zusammengestelltes Code-Schnipsel, was das in QGIS macht, ist mit ca. 20 Zeilen Code relativ überschaubar:
https://gist.github.com/thbaumann/234ada8deda059b4dd88d91e829ebb3b
Kannst es ja (auf einen Testdatensatz !) mal loslassen in der Python-Console(bzw. dem mehrzeiligen Editor in der Console).
Die eigentliche Arbeit beginnt, wenn man es dann generischer bauen will (dynamische Auswahl der Datentypen der zu erzeugenden Spalten, Abfangen aller möglicher Fehler, in die ein breiterer Nutzerkreis als man selbst dann reinläuft... etc.
Ein Kürzen zu langer Spaltennamen bzw. Ersetzen von Umlauten in zu erzeugenden Spaltennamen etc. ist auch noch nicht drin aber auch nicht weiter wild.
VG
Thomas
Am Mi., 22. März 2023 um 15:31 Uhr schrieb G. Wagner, Wagner-IT <info at wagner-it.de <mailto:info at wagner-it.de> >:
Hallo Bernd,
gerne:
Ich habe z.Bsp. Flurstücksteile mit verschiedenen Nutzungsarten in einer Textspalte "nutzung". Das können 20.000 Datensätze sein, wobei es vielleicht 40 eindeutige Werte sind.
(z.Bsp. Friedhof, Gehölz, Halde, Weg, ...).
Nun soll für jede Nutzungsart eine eigene Spalte im Layer angelegt werden, also die Spalten "Friedhof", "Gehölz", ... In diese Spalten sollen dann die entsprechende Flächenangaben ($area).
Ziel ist, als Ergebnis eine Datenzeile pro Flurstück (nach Aggregieren über Flurstückskennzeichen) zu erhalten, in der dann die einzelnen Nutzungsarten mit deren Fläche aufgeführt werden (das soll dann ins Excel übernommen werden).
Wenn die ausgeschriebenen, z.T. relativ langen Namen der Nutzungsarten wie "Gebäude- und Freifläche Entsorgungsanlage, Abwasserbeseitigung" ein Problem sind, so könnte das auch kürzer über die entsprechende ALKIS-Werte wie " 41002:2611" erfolgen (setzt sich aus Nutzung und Funktion zusammen, daher der ":").
Ich hoffe jetzt ist es klarer.
Gruß
Günter
-----Ursprüngliche Nachricht-----
Von: Bernd Vogelgesang <bernd.vogelgesang at gmx.de <mailto:bernd.vogelgesang at gmx.de> >
Gesendet: Mittwoch, 22. März 2023 14:54
An: G. Wagner, Wagner-IT <info at wagner-it.de <mailto:info at wagner-it.de> >; fossgis-talk-liste at fossgis.de <mailto:fossgis-talk-liste at fossgis.de>
Betreff: Re: [FOSSGIS-Talk] QGIS: eindeutige Werte in einer Spalte als jeweils eigene Spalte erzeugen
Hi Günter,
kannst Du mal einen Beispieldatensatz posten, damit ich mir was drunter vorstellen kann?
Am 22.03.23 um 12:27 schrieb G. Wagner, Wagner-IT:
> Hallo zusammen,
>
> es gibt in QGIS ja unzählige Funktionen für unzählige Anwendungsfälle. Vielleicht auch hierfür:
>
> In einer Spalte stehen verschiedene Werte (z.Bsp. differenzierte Nutzungsarten). Nun würde ich gerne für jede vorhandene Nutzungsart eine eigene Spalte anlegen, um z.Bsp. darin die Fläche zu berechnen.
>
> Gibt es dazu etwas, bzw. hat jemand eine Idee Wie ich eine eigene
> Spalte pro Wert anlegen kann, bzw. den Wert abfragen kann, ist mir
> bekannt, nur vielleicht geht das Anlegen der Spalten auch automatisch
> (so im weitesten Sinne ein Gegenpart zur Aggregat-Funktion)
>
> Danke und Grüße
>
> Günter
>
--
....................................................................
FOSSGIS-Konferenz 2023 mit OpenStreetMap-Event in Berlin!
15.-18. März 2023 an der Humboldt-Universität
https://www.fossgis-konferenz.de - https://twitter.com/FOSSGIS_Konf
FOSSGIS Vereinstermine:
https://fossgis.de/aktivit%C3%A4ten/termine/
FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem
GIS-Bereich und Freier Geodaten!
https://www.fossgis.de/ https://mastodon.online/@FOSSGISeV
https://twitter.com/FOSSGIS_Verein
____________________________________________________________________
FOSSGIS-Talk-Liste mailing list
FOSSGIS-Talk-Liste at fossgis.de <mailto:FOSSGIS-Talk-Liste at fossgis.de>
https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : image001.png
Dateityp : image/png
Dateigröße : 162554 bytes
Beschreibung: nicht verfügbar
URL : <http://lists.fossgis.de/pipermail/fossgis-talk-liste/attachments/20230323/46777334/attachment.png>
Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste