[Mapcss] Questions concerning tests

Andrew Shadura bugzilla at tut.by
Wed Sep 18 08:16:58 UTC 2013

Hello again,

On 18 September 2013 10:09, Andrew Shadura <bugzilla at tut.by> wrote:
> On 16 September 2013 21:32, Stephan Bösch-Plepelits
> <skunk at xover.htu.tuwien.ac.at> wrote:
>> The MapCSS 0.2 specification[1] says the following about unary tests:
>>   way[highway]       /* Matches against all ways with the highway tag set */
>>   way[!highway]      /* Matches against all ways with the highway tag not set (or set to no/false) */

>> Question: Wouldn't it be more logical if the first statement does not match
>> ways with the highway tag set to no or false?

> Well, the idea behind this selector test was to make it easy to tell
> oneway=yes/1/-1 from oneway=no or missing oneway, for example. This
> allows for simpler conditions in selectors. Probably, way[highway]
> form shouldn't match oneway=no. Also, probably 0 should be treated the
> same as no.

> However, JOSM approach to MapCSS is slightly different: they decided
> to remove this boolean condition. So in JOSM way[highway] matches
> highway=no and way[!highway] doesn't match highway=no.

> I don't know which approach is better, but we need to decide somehow.

Just looked into JOSM MapCSS dialect spec. They have way[highway?]
syntax for testing if the tag value is true or not. However, they do
it other way around:

> You can test whether the the value of a tag is logical truth value.
> The value is evaluated to true, if it is either "yes", "true", or "1".
> All other values are evaluated to false.

I find this a little bit strange, as oneway=-1 *is* a oneway road.
Same, building=roof *is* a building, when building=no technically

However, I guess, adopting JOSM question mark syntax may be a good idea.

WBR, Andrew

More information about the Mapcss mailing list