[MapServer-users] Use SCALETOKEN in FILTER?
Trygve Aspenes
trygve at aspenes.priv.no
Thu Feb 13 00:53:36 PST 2025
Hi Jesper.
The only thing I see at a first glance is the filter run-time
substitution missing ''. See documentation how it is done there
https://mapserver.org/cgi/runsub.html#filters
Not sure if this is your problem, but maybe worth a try.
Trygve
Den 2025-02-12 15:13, skrev Jesper Kempe via MapServer-users:
> Hi
>
> I am trying to show different levels of details based on zoom level in
> a map based on Natural earth 10m data (ne_10m_lakes.zip from
> https://www.naturalearthdata.com/downloads/10m-physical-vectors/)
> using the attribute scalerank in the shape file.
>
> My plan was to use SCALETOKEN to replace the value in a FILTER with
> the current max scalerank to use.
> But I cant get it to work. Nothing is shown in the map.
>
> Should it be possible to use a scaletoken in a filter expresssion?
>
> Looking at
> https://mapserver.org/development/rfc/ms-rfc-86.html#discussion it
> looks like it at least was planned to work?
>
> Now I get errors like this in the log file:
>
> [Wed Feb 12 13:50:20 2025].23938 replacing scaletoken (%ne_scalerank%)
> with (5) in layer->filter (ne_10m_lakes) for scale=221471921.250000
> [Wed Feb 12 13:50:20 2025].24460 msEvalExpression(): General error
> message. Cannot evaluate expression, no item index defined.
> [Wed Feb 12 13:50:20 2025].24474 msEvalExpression(): General error
> message. Cannot evaluate expression, no item index defined.
> [Wed Feb 12 13:50:20 2025].24482 msEvalExpression(): General error
> message. Cannot evaluate expression, no item index defined.
>
> Using this mapfile:
> MAP
> CONFIG "MS_ERRORFILE" "ms_error.txt"
>
> STATUS ON
>
> PROJECTION
> "init=epsg:4326"
> END
>
> EXTENT -180 -90 180 90
>
> WEB
> METADATA
> "wms_title" "WMS Demo Server"
> "wms_srs" "EPSG:4326"
> "wms_enable_request" "*"
> END
> END
>
> LAYER
> DEBUG 5
> NAME 'ne_10m_lakes'
>
> TYPE POLYGON
> PROJECTION
> "init=epsg:4326"
> END
> EXTENT -180 -90 180 90
> DATA "ne_10m_lakes.shp"
>
> SCALETOKEN
> NAME "%ne_scalerank%"
> VALUES
> "0" "10"
> "1000" "8"
> "10000000" "5"
> END # VALUES
> END # SCALETOKEN
>
> FILTER ([scalerank] < %ne_scalerank% )
>
> CLASS
> STYLE
> OUTLINECOLOR "#647078"
> WIDTH 1
> COLOR "#EBEEF0"
> END
> END
>
> END
>
> END
>
> For this request
> https://myserver/wms?&service=WMS&request=GetMap&layers=ne_10m_lakes&styles=&format=image%2Fpng&transparent=false&version=1.1.1&map=ne_10m_lakes.map&height=512&width=512&srs=EPSG%3A4326&bbox=-180,-90,180,90
> [1]
>
> Worth noting is if I replace FILTER ([scalerank] < %ne_scalerank% )
> with FILTER ([scalerank] < 5 ) in the mapfile it works fine.
>
> Anyone with thoughts or ideas on how this can be solved?
>
> I am on Mapserver 7.6.4.
>
> Thanks,
> Jesper
>
>
>
> Links:
> ------
> [1]
> https://myserver/wms?&service=WMS&request=GetMap&layers=ne_10m_lakes&styles=&format=image%2Fpng&transparent=false&version=1.1.1&map=ne_10m_lakes.map&height=512&width=512&srs=EPSG%3A4326&bbox=-180,-90,180,90
> _______________________________________________
> MapServer-users mailing list
> MapServer-users at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/mapserver-users
More information about the MapServer-users
mailing list