-
-
Notifications
You must be signed in to change notification settings - Fork 360
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow Expressions to be set for LABEL properties using MapScript #6904
Conversation
Make char a constant Co-authored-by: Even Rouault <even.rouault@spatialys.com>
Make char a constant Co-authored-by: Even Rouault <even.rouault@spatialys.com>
@rouault - thanks for the review - changes applied. E.g. MapServer/mapscript/swiginc/label.i Line 127 in 257c646
MapServer/mapscript/swiginc/label.i Line 116 in 257c646
MapServer/mapscript/swiginc/label.i Line 142 in 257c646
|
yes |
…Server#6904) This pull request allows the new functionality in MapServer#6884 of using an expression in a LABEL PRIORITY in MapScript. It takes a similar approach to setting attribute bindings for properties, which requires using the appropriate attribute constant such as `MS_LABEL_BINDING_PRIORITY`: ```python label = mapscript.labelObj() label .setExpressionBinding(mapscript.MS_LABEL_BINDING_PRIORITY, "[MY_ATTRIBUTE] * 2") ``` This is a little clunky but is at least consistent with setting attribute bindings: ```python label = mapscript.labelObj() label.setBinding(mapscript.MS_LABEL_BINDING_COLOR, "NEW_BINDING") ``` While testing this I noticed that the `writeLabel` function used to write Mapfile objects ignored expressions. This seems an oversight also for the `LABEL` `SIZE` expression. If this approach seems appropriate I can use this for other expression bindings. Something to note is that a property could have an attribute binding **and** an expression binding set. In this case the attribute binding currently takes precedence when calculating a shape value, so it also takes precedence when writing to a Mapfile. In theory setting an expression could also set the attribute binding to NULL. This is not currently the case for MapScript or when reading a Mapfile twice.
This pull request allows the new functionality in #6884 of using an expression in a LABEL PRIORITY in MapScript.
It takes a similar approach to setting attribute bindings for properties, which requires using the appropriate attribute constant such as
MS_LABEL_BINDING_PRIORITY
:This is a little clunky but is at least consistent with setting attribute bindings:
While testing this I noticed that the
writeLabel
function used to write Mapfile objects ignored expressions. This seems an oversight also for theLABEL
SIZE
expression. If this approach seems appropriate I can use this for other expression bindings.Something to note is that a property could have an attribute binding and an expression binding set. In this case the attribute binding currently takes precedence when calculating a shape value, so it also takes precedence when writing to a Mapfile.
In theory setting an expression could also set the attribute binding to NULL. This is not currently the case for MapScript or when reading a Mapfile twice.