[mapserver-users] Get current year in a CLASS EXPRESSION (mapfile)

Jeff McKenna jmckenna at gatewaygeomatics.com
Wed Mar 23 07:50:18 PDT 2016


You can read about the postgres "to_char" function that I used (to go 
from date to a string) here: 
http://www.postgresql.org/docs/9.5/static/functions-formatting.html


-jeff


-- 
Jeff McKenna
MapServer Consulting and Training Services
http://www.gatewaygeomatics.com/



On 2016-03-23 11:45 AM, Jeff McKenna wrote:
> Hello Thomas (when you ask for help it's good karma to include your name),
>
> If I was in this situation, here would be my steps:
>
> 1. Focus first on Postgres, and see if I can get the first 4 characters
> of a date column, through the commandline tool "psql".  For example, see
> the "substring" function at
> http://www.postgresql.org/docs/9.5/static/functions-string.html
>
> Here is a psql command that works for me with Postgres 9.5, where I am
> querying a date column "pubdate", using the first 4 characters, and
> trying to return the instances where those characters are '2013':
>
> # select id, geom, substring(to_char(pubdate, 'YYYY-MM-DD') from 1 for
> 4) from "mytable" where substring(to_char(pubdate, 'YYYY-MM-DD') from 1
> for 4) = '2013';
>
> 2. Once that is working, I would move onto test through OGR, directly to
> this Postgres instance, with the commandline utility "ogrinfo".
>
> Here is my first command to connect:
>
> ogrinfo -ro PG:"host=localhost user=postgres password=postgres
> dbname=mydbname_csu port=5438" mytable -summary
>
> Next I want to try that same psql select command through ogrinfo, which
> has a "-sql" switch to test queries:
>
> ogrinfo -ro PG:"host=localhost user=postgres password=postgres
> dbname=mydbname port=5438" mytable -sql "select geom,
> substring(to_char(pubdate, 'YYYY-MM-DD') from 1 for 4) from mytable
> where substring(to_char(pubdate, 'YYYY-MM-DD') from 1 for 4) = '2013'
>
> That should return the correct features.
>
> 3. Once that is working, then I would use that in my mapfile layer, and
> try labeling features just with those 4 date characters, such as:
>
>    LAYER
>      NAME "test"
>      STATUS ON
>      TYPE POLYGON
>      CONNECTIONTYPE OGR
>      CONNECTION "PG:host=localhost user=postgres password=postgres
> dbname=mydbname port=5438"
>      DATA "select geom, id, substring(to_char(pubdate, 'YYYY-MM-DD')
> from 1 for 4) as pubtext from mytable"
>      PROCESSING "CLOSE_CONNECTION=DEFER"
>      LABELITEM "pubtext"
>      CLASS
>        NAME "test"
>        STYLE
>          COLOR 235 234 85
>        END # STYLE
>        LABEL
>          COLOR  255 0 0
>          FONT sans-italic
>          TYPE truetype
>          SIZE 8
>          POSITION AUTO
>          PARTIALS FALSE
>          OUTLINECOLOR 255 255 255
>        END # LABEL
>      END # CLASS
>    END # LAYER
>
>
> The above was tested with MS4W 3.1.3 (MapServer 7.0.1) and PostgreSQL 9.5
>
> -jeff
>
>
>




More information about the mapserver-users mailing list