[FOSSGIS-Talk] Skript zum Hinzufügen mehrerer Quellfelder und einer gespeicherten Stil-Datei

Christoph Jung jagodki.cj at gmail.com
Fr Dez 28 19:24:45 CET 2018


Hallo Robert,

eine Style-Datei wird mit folgendem Befehl einem bestehenden Vektor-Layer hinzugefügt:

layer.loadNamedStyle(filename, loadFromLocalDb=False)
Der Parameter „filename“ steht für den absoluten Pfad der Style-Datei (getestet mit einer QML-Datei, mit SLD hatte ich bisher meine Probleme in QGIS und habe eine solche per Python noch nicht geladen).

Ein neues Feld kann mittels folgendem Befehl erzeugt werden:
layer.addAttribute(QgsField("mytext", QVariant.String))
bzw. mehrere Felder auf einmal hinzufügen:
layer.dataProvider().addAttributes(
        [QgsField("mytext", QVariant.String),
        QgsField("myint", QVariant.Int)])
Ein Feld kann mittels QgsVectorDataProvider umbenannt werden:
https://qgis.org/pyqgis/master/core/QgsVectorDataProvider.html?highlight=qgsvectordataprovider#qgis.core.QgsVectorDataProvider.renameAttributes <https://qgis.org/pyqgis/master/core/QgsVectorDataProvider.html?highlight=qgsvectordataprovider#qgis.core.QgsVectorDataProvider.renameAttributes>

Um die neuen Felder mit Daten zu füllen, würde ich über alle Features des Layers iterieren und dann die Daten in die Attribute jedes Features schreiben. Siehe hierzu auch das QGIS-Cookbook:
https://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/vector.html <https://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/vector.html>

Viele Grüße,
Christoph


> Am 26.12.2018 um 16:26 schrieb Bob <bob3150 at freenet.de>:
> 
> Hallo,
> 
> Ich habe leider keine Erfahrung mit Skripte in QGis (Programmiererfahrung habe ich schon). 
> 
> Ich hoffe jemand kann mir helfen ein Skript zu erstellen, welches mehrere Quellfelder auf Basis eines Bestehenden erzeugt und eine gespeicherte Stil-Datei dem Layer hinzufügt:
> 
> Als Basis dient eine SHP-Datei die einen Layer darstellt mit dem Quellfeld kg/ha
> 
> "kg/ha" soll umbenannt werden in „Basis“
> Ein Quellfeld (real, 17, 4) Flaeche=$area soll erstellt werden
> Ein Quellfeld (real, 17, 3) GewMW=(Flaeche/sum("Flaeche"))*Basis/100 soll erstellt werden
> Ein Quellfeld (real, 17, 3) Menge1=15*Basis/100 soll erstellt werden
> Ein Quellfeld (real, 17, 3) Menge2=220*Basis/100 soll erstellt werden
> Ein Quellfeld (real, 17, 3) Menge3=2000*Basis/100 soll erstellt werden
> Dem Layer soll eine auf der Festplatte gespeicherte Stil-Datei zugewiesen werden.
> 
> Das Skript denke ich wird bei den Verarbeitungswerkzeugen erstellt und verwaltet.
> 
> Grüße
> Robert
> 
> -- 
> ....................................................................
> FOSSGIS 2019, die Konferenz für Open Source GIS mit OpenData und
> OpenStreetMap in Dresden!
> 13.-16. März 2019 an der HTW Dresden
> https://fossgis-konferenz.de/2019/
> 
> FOSSGIS Veranstaltungen 2018
> https://www.fossgis.de/node/306
> 
> FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem
> GIS-Bereich und Freier Geodaten!
> https://www.fossgis.de/             https://twitter.com/fossgis_eV
> 
> ____________________________________________________________________
> FOSSGIS-Talk-Liste mailing list
> FOSSGIS-Talk-Liste at fossgis.de
> https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste



Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste