[Qgis-user] Offsetting rotated labels proportionate to variable angles/rotations

GMAIL casalbonim at gmail.com
Tue Jul 6 06:03:35 PDT 2021


I had the same problem.
I imported a .sld file from geoserver to qgis and it seems some (or 
many) things are different.
The worst of all is the algorithm applied for rototranslation.
Apparently, the offset x, y and the rotation (or data defined rotation) 
fields, don't work together in a rototranslation function. Searching 
until something like the 10th page on google and merging every little 
piece in as many forums, I found out if you have to apply a 
rototranslation data-defined formula, you must set up some things manually.
First of all, you have to set up the data-defined rotation field, 
remembering that, for some reasons, the angle is shifted by 90 degrees.
Then you have to place the rotated label in a coordinate computed by 
the  real  rototranslation formula (rotation and translation combined). 
To do that, I find this formula to output the best results, in the 
Offset X, Y field:

concat (
-A * sin ((90 - "field") * pi () / 180) -B * cos ((90 - "field") * pi () 
/ 180),
',',
A * cos ((90 - "field") * pi () / 180) -B * sin ((90 - "field") * pi () 
/ 180)
)

where A and B are 2 constants for offset and "field" is your 
data-defined field

Sorry if something is unclear, this method is a quite unfriendly way to 
accomplish this need

Marco


More information about the Qgis-user mailing list