Mer

Symboliser fullt ut en vektorfeltmarkør i PyQGIS

Symboliser fullt ut en vektorfeltmarkør i PyQGIS


Jeg designer et symbol for en ekstern applikasjon som må være en vektorfeltmarkør kombinert med en enkel punktmarkør, som viser en linje i en viss vinkel rundt midtpunktet. I PyQGIS er det enkelt å instantiere vektorfeltklassen, så vel som felttypen (Polar) og vinkelenheter (grader). Siden det er polært, må jeg imidlertid angi lengde- og vinkelattributtene fra tabellen til laget jeg prøver å vise. Jeg ser i API -dokumentasjonen for QgsVectorFieldSymbolLayer at det er funksjoner for å angi X- og Y -attributtene, noe som er nødvendig for en kartesisk vektorfeltmarkør, men irrelevant for en polar vektorfeltmarkør. Jeg trenger noe som "setLengthAttribute ()" og "setAngleAttribute ()", omtrent som det som er mulig i QGIS GUI:

Min relevante kodebit ser for øyeblikket slik ut:

symbol = QgsMarkerSymbolV2.createSimple ({}) symbol.deleteSymbolLayer (0) symbol_layer = QgsSimpleMarkerSymbolLayerV2 () symbol_layer.setSize (.5) symbol_layer.setColor (QColor ("yellow")) symbol_layer.setOut.sats.utgang.sett.sett.utgang.sett.settOnlegg.sett.settOnlegg.sett (sett) symbol_layer) symbol_layer = QgsVectorFieldSymbolLayer () symbol_layer.setColor (QColor ("gul")) symbol_layer.VectorFieldType (QgsVectorFieldSymbolLayer.Polar) symbol_layer.AngleUnits (QgsVectorFieldSymbolLayer.Drees. # lengthAttribute? symbol_lag. # angleAttribute? symbol.appendSymbolLayer (symbol_layer) renderer = QgsSingleSymbolRendererV2 (symbol) self.mylayer.setRendererV2 (renderer)

Har du noen ide om hvordan du angir vinkel- og lengdeattributtet?


Du har to alternativer:

  • bruker api direkte:
symbol_layer.setXAttribute ("length_attribute") symbol_layer.setYAttribute ("angle_attribute")
  • ved hjelp av datadefinerte egenskaper:
symbol_layer.setDataDefinedProperty ("x_attribute", "length_attribute") symbol_layer.setDataDefinedProperty ("y_attribute", "angle_attribute")

Håper dette hjelper.


Se videoen: QGIS Python PyQGIS - Show Error, Warning, and Success Messages