[mapserver-commits] [MapServer/MapServer] ac6053: Allow Expressions to be set for LABEL properties u...
Seth G
noreply at github.com
Thu Jun 22 03:46:35 PDT 2023
Branch: refs/heads/main
Home: https://github.com/MapServer/MapServer
Commit: ac6053904b0a8877ff88b9a0f139f51c8b08269a
https://github.com/MapServer/MapServer/commit/ac6053904b0a8877ff88b9a0f139f51c8b08269a
Author: Seth G <sethg at geographika.co.uk>
Date: 2023-06-22 (Thu, 22 Jun 2023)
Changed paths:
M mapfile.c
M mapscript/python/tests/cases/label_test.py
M mapscript/swiginc/label.i
Log Message:
-----------
Allow Expressions to be set for LABEL properties using MapScript (#6904)
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`:
```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.
More information about the MapServer-commits
mailing list