[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