[mapserver-users] validation block

Stephen Woodbridge woodbri at swoodbridge.com
Tue Aug 21 13:32:56 PDT 2012


Hi David,

Thank you for the feedback, I have only done this with SQL statements. 
I'm surprised that we implemented this using a different syntax.
Anyway your complete example below will hopefully help others to get it 
working also.

Thanks,
   -Steve W

On 8/21/2012 3:28 PM, Fawcett, David (MPCA) wrote:
> I do something like the second example in one of my applications.  I send the comma-delimited string for use as part of the IN statement.
>
> This basically allows you to symbolize features from your spatial data set based on data passed in through the URL.
>
> I pass these URL vars:
> &group1=129,119,041,005,159,051,011,147,097,015,067,171,081,063,025,093,009,149,079,049,065,003,143,027,039,007,099,121,151,135,107,047,033,031,023,089,001,013,161,109,139,061,055,101,045,127,113,117,167,085,133,073,071,157,105,083,165,077,111,059,115,019,153,125,169,087,043,145,017,131,021,173,035,095,091,155,057,103,075,029,069&group2=137,163,037,141,123&group3=&group4=053
>
> Here is the layer definition:
>
> LAYER
>    NAME "airdata"
>    STATUS DEFAULT
>    DATA 'county_thin'
>    TYPE POLYGON
>    TEMPLATE "templates/emiss_imap_template.html"
>
>    VALIDATION
>       group1 "^[0-9\,]+$"
>       group2 "^[0-9\,]+$"
>       group3 "^[0-9\,]+$"
>       group4 "^[0-9\,]+$"
>    END
>    CLASS
>       NAME "group1"
>             EXPRESSION ('[county_fip]' IN '%group1%')
> 	   STYLE
> 	       COLOR 241 238 246
> 	   END
>    END
>    CLASS
>       NAME "group2"
>             EXPRESSION ('[county_fip]' IN '%group2%')
> 	   STYLE
> 	       COLOR 189 201 225
> 	   END
>    END
>    CLASS
>       NAME "group3"
>             EXPRESSION ('[county_fip]' IN '%group3%')
> 	   STYLE
> 	       COLOR 116 169 207
> 	   END
>    END
>    CLASS
>       NAME "group4"
>             EXPRESSION ('[county_fip]' IN '%group4%')
> 	   STYLE
> 	       COLOR 5 112 176
> 	   END
>    END
>
> END
>
> David.
>
> -----Original Message-----
> From: mapserver-users-bounces at lists.osgeo.org [mailto:mapserver-users-bounces at lists.osgeo.org] On Behalf Of Stephen Woodbridge
> Sent: Tuesday, August 21, 2012 1:16 PM
> To: mapserver-users at lists.osgeo.org
> Subject: Re: [mapserver-users] validation block
>
> Typically the SQL syntax is   column in (a,b,c,d)
> So based on this
>
> [id_bassin] in '%ID_BASSIN%'
>
> would be problematic I think because your syntax is:
>
> column in 'string'
>
> Which is not valid. Also what is your validation for %ID_BASSIN%?
> Is something like this?   ^\([0-9]+(,[0-9]+)*\)$
>
> where ID_BASSIN=(123,234,345)
>
> or do you want something like:
>
> [id_bassin] in (%ID_BASSIN%)
>
> with a valdiation like:  ^[0-9]+(,[0-9]+)*$
>
> where ID_BASSIN=123,234,345
>
> -Steve W
>
> On 8/21/2012 1:33 PM, Marc-André Trottier wrote:
>> here is an example of two class in 'adn_station_max_v.map' :
>>
>> CLASS
>>       NAME "Information non disponible (grande échelle)"
>>       EXPRESSION ( '[etat]' = 'GRIS' AND [id_bassin] in '%ID_BASSIN%')
>>       GROUP "BASSIN"
>>           MINSCALEDENOM 0
>>       MAXSCALEDENOM 150000
>>       STYLE
>>           SYMBOL 'circle'
>>           COLOR 128 128 128
>>           OUTLINECOLOR 0 0 0
>>           SIZE 9
>>       END
>>
>>       LABEL
>>           COLOR           0 0 0
>>           OUTLINECOLOR    255 255 255
>>           ANTIALIAS       FALSE
>>           TYPE            TRUETYPE
>>           FONT            "ubuntu"
>>           SIZE            14
>>           POSITION auto
>>           FORCE                     TRUE
>>       END
>> END
>>
>> CLASS
>>       NAME "Seuil d\'inondation majeure"
>>       EXPRESSION ( '[etat]' = 'ROUGE' AND [region_admin_id] in '%ID_REG%')
>>       GROUP "REG_ADMIN"
>>       MINSCALEDENOM 110000
>>
>>       STYLE
>>           SYMBOL 'circle'
>>           COLOR   255 0 0
>>           OUTLINECOLOR 0 0 0
>>           SIZE 14
>>       END
>>
>>       LABEL
>>           WRAP            "!"
>>           ALIGN           CENTER
>>           COLOR           0 0 0
>>           OUTLINECOLOR    255 255 255
>>           ANTIALIAS       FALSE
>>           TYPE            TRUETYPE
>>           FONT            "ubuntu"
>>           SIZE            14
>>           FORCE                     TRUE
>>           OFFSET          0 12
>>       END
>> END
>>
>> if i understant this meant that for a layer, i must validate all
>> variables of all class even if i don't use them all.
>> My include of 'adn_station_max_v.map' contains X substitutions in X
>> class so i must have X validations even if i don't use all X class.
>>
>> In my example, i include many class with 'adn_station_max_v.map' but
>> i'm using only one variable at a time. All class in CLASSGROUP 'REG_ADMIN'
>> only use 'ID_REG'.
>>
>>
>> 2012/8/21 Stephen Woodbridge <woodbri at swoodbridge.com
>> <mailto:woodbri at swoodbridge.com>>
>>
>>      You probably need to quote:
>>
>>                     'ID_BASSIN' '[[a-zA-Z0-9]{0,10},??]*'
>>
>>                     "#ID_REG' '[[a-zA-Z0-9]{0,10},??]*'
>>
>>      And I would be very suspicious that '#ID_REG' is a value identifier
>>      because of the '#' character.
>>
>>      -Steve W
>>
>>
>>      On 8/21/2012 11:38 AM, Marc-André Trottier wrote:
>>
>>          there is my layer's definition :
>>
>>                LAYER
>>                    VALIDATION
>>                        ID_BASSIN '[[a-zA-Z0-9]{0,10},??]*'
>>                        #ID_REG '[[a-zA-Z0-9]{0,10},??]*'
>>                    END
>>                    INCLUDE "../layers/bd/adn_station_max___v.map"
>>                    CLASSGROUP "BASSIN"
>>                    NAME "adn_station_bassin"
>>                END
>>
>>                LAYER
>>                    VALIDATION
>>                        #ID_BASSIN '[[a-zA-Z0-9]{0,10},??]*'
>>                        ID_REG '[[a-zA-Z0-9]{0,10},??]*'
>>                    END
>>                    INCLUDE "../layers/bd/adn_station_max___v.map"
>>                    CLASSGROUP "REG_ADMIN"
>>                    NAME "adn_station_reg_admin"
>>                END
>>
>>          with these commented lines a got this error :
>>          msValidateParameter(): Regular expression error. Parameter pattern
>>          validation failed.
>>
>>          without comment, i got no error.
>>
>>          CLASSGROUP 'BASSIN' contains many class but each class use only
>>          'ID_BASSIN' and
>>          CLASSGROUP 'REG_ADMIN' contains many class but each class use
>>          only 'ID_REG'
>>
>>          is it the right thing to do ? or like i thought, the validation
>>          block
>>          can contains only the variable used by the layer ?
>>
>>
>>
>>          _________________________________________________
>>          mapserver-users mailing list
>>          mapserver-users at lists.osgeo.__org
>>          <mailto:mapserver-users at lists.osgeo.org>
>>          http://lists.osgeo.org/__mailman/listinfo/mapserver-__users
>>          <http://lists.osgeo.org/mailman/listinfo/mapserver-users>
>>
>>
>>      _________________________________________________
>>      mapserver-users mailing list
>>      mapserver-users at lists.osgeo.__org
>>      <mailto:mapserver-users at lists.osgeo.org>
>>      http://lists.osgeo.org/__mailman/listinfo/mapserver-__users
>>      <http://lists.osgeo.org/mailman/listinfo/mapserver-users>
>>
>>
>>
>>
>> _______________________________________________
>> mapserver-users mailing list
>> mapserver-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>>
>
> _______________________________________________
> mapserver-users mailing list
> mapserver-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>
>



More information about the mapserver-users mailing list