Viac

Plne symbolizujte značku vektorového poľa v PyQGIS

Plne symbolizujte značku vektorového poľa v PyQGIS


Navrhujem symbol pre externú aplikáciu, ktorá musí byť značkou vektorového poľa kombinovanou s jednoduchou značkou bodu a ktorá zobrazuje čiaru v určitom uhle okolo stredového bodu. V PyQGIS je ľahké vytvoriť inštanciu triedy vektorových polí, ako aj typu poľa (polárne) a uhlových jednotiek (stupne). Keďže je však polárny, musím nastaviť atribúty dĺžky a uhla z tabuľky vrstvy, ktorú sa pokúšam zobraziť. V dokumentácii API pre QgsVectorFieldSymbolLayer vidím, že existujú funkcie na nastavenie atribútov X a Y, ktoré sú nevyhnutné pre karteziánsky vektorový marker, ale pre polárny vektorový marker nie sú relevantné. Potrebujem niečo ako „setLengthAttribute ()“ a „setAngleAttribute ()“, podobne ako to je možné v grafickom rozhraní QGIS:

Môj relevantný útržok kódu v súčasnosti vyzerá takto:

symbol = QgsMarkerSymbolV2.createSimple ({}) symbol.deleteSymbolLayer (0) symbol_layer = QgsSimpleMarkerSymbolLayerV2 () symbol_layer.setSize (.5) symbol_layer.setColor (QColor ("žltá")) symbol_layer.setymbol symbol_layer) symbol_layer = QgsVectorFieldSymbolLayer () symbol_layer.setColor (QColor ("žltá")) symbol_layer.VectorFieldType (QgsVectorFieldSymbolLayer.Polar) symbol_layer.AngleUnits (QgsVectorFieldSymbolLayer.Deg. # dĺžkaPripisovať? symbol_layer. # angleAttribute? symbol.appendSymbolLayer (symbol_layer) renderer = QgsSingleSymbolRendererV2 (symbol) self.mylayer.setRendererV2 (renderer)

Máte nápad, ako nastaviť atribút uhol a dĺžka?


Máte dve možnosti:

  • pomocou API priamo:
symbol_layer.setXAttribute ("length_attribute") symbol_layer.setYAttribute ("angle_attribute")
  • pomocou údajov definovaných vlastností:
symbol_layer.setDataDefinedProperty ("x_attribute", "length_attribute") symbol_layer.setDataDefinedProperty ("y_attribute", "angle_attribute")

Dúfam, že to pomôže.


Pozri si video: QGIS Python PyQGIS - Loading and symbolizing raster layers