SV: [UMN_MAPSERVER-USERS] WFS Filter

Sture Dingsøyr candalt at ONLINE.NO
Thu Apr 6 07:01:33 EDT 2006


I am using Microsoft ODBC (via a DSN created in windows) to fetch my data. It is a really simple tabel, so a SQL where clause is of cource no problem in ODBC...

But...who can confirm if this behaviour is a mapserver related thing or not?

The problem sems to be that Mapserver, when using OGR/ODBC, do not create a correct SQL WHERE clause when FILTER is used (both in WFS and directly in the mapfile). All the data is fetched


-----Opprinnelig melding-----
Fra: UMN MapServer Users List [mailto:MAPSERVER-USERS at LISTS.UMN.EDU] På vegne av Yewondwossen Assefa
Sendt: 5. april 2006 19:38
Til: MAPSERVER-USERS at LISTS.UMN.EDU
Emne: Re: [UMN_MAPSERVER-USERS] WFS Filter

You are right, the filter transforms it to an expression with a WHERE in 
front of it. This expression should then be used by the underlying 
driver when retreiving data. I am assuming that your are using ODBC to 
connect to the MS SQL server ?  The ODBC driver has the support of 
filter setting but I am not really familiar with what happen at the 
driver level.


Sture Dingsøyr wrote:
> Hi again and thanx for answer..
> 
> I have tried this (in my mapfile, displaying an GIF image):
> 
> If i use a regular mapserver filter expression, my layer gets correctly filtered. E.g: FILTER ('[servicename]' = 'Camping')
> 
> But if i use a SQL WHERE clause e.g. like this: FILTER "servicename = 'Camping'" no records are shown in my map.
> 
> I read that when using OGR and FILTER you should include "WHERE" in the filter (http://ms.gis.umn.edu/docs/howto/ogr_howto), so i tried that also: FILTER "WHERE servicename = 'Camping'". This time all the records are shown in the map.
> 
> So i guess the WFS FILTER transelates the XML into a WHERE clause, but i get the same result as with the WFS FILTER.... All records are returned...the filter expression is not "used"...?
> 
> Is this "a bug" or is this a feature that will be implemented later in Mapserver?
> 
> As mentioned before...this problem is only with OGR layers..not SHAPE, POSTGIS...
> 
> Regards
> Sture
> 
> 
> 
> The way things work is that the filter encoding  is transformed into something suitable for each layer and the layer's filter element is set with it :
>   * For shape file, It will be a normal mapserver expression,
>   * for postgis, oracle and ogr, it will be transformed into an sql expression. For OGR It should result into something like WHERE
> (Item_name='Item_Value')
> 
>   Bug http://mapserver.gis.umn.edu/bugs/show_bug.cgi?id=1292 has more details on this.
> 
>   What you could try is to set manually a valid sql expression on you layer's filter and see if that works.
> 
> Later,
> 
> Sture Dingsøyr wrote:
> 
>>Hi all
>>
>>Been doing some testing with Mapserver WFS and FILTER.
>>
>>When the Mapserver layer is getting its data from e.g. SHAPE, POSTGRESQL the WFS FILTER functions seem to work fine.  I can filter data by using both BBOX or e.g. a PropertyIsLike query. 
>>
>>But...i was now testing the FILTER functions on a layer where the data is from a MS SQL server (point layer). I am fetching my data via OGR. Mapserver renders the layer just fine, i can use WFS BBOX FILTER, but when i try a WMS FILTER using e.g. WFS  PropertyIsLike query, Mapserver returns all records in the layer. Nothing gets filtered...
>>
>>Should not Mapserver (via WFS) filter data in the same way regardless 
>>of how the data is fetched...that is e.g. via SHAPE, POSTGRESQL, OGR 
>>etc
>>
>>Regards
>>Sture
> 
> 
> 


-- 
----------------------------------------------------------------
Assefa Yewondwossen
Software Analyst

Email: assefa at dmsolutions.ca
http://www.dmsolutions.ca/

Phone: (613) 565-5056 (ext 14)
Fax:   (613) 565-0925
----------------------------------------------------------------



More information about the mapserver-users mailing list