[gdal-dev] WFS and -where with non-ASCII characters
Rahkonen Jukka
Jukka.Rahkonen at mmmtike.fi
Tue Jan 3 05:34:06 EST 2012
Even Rouault <even.rouault <at> mines-paris.org> writes:
> On Windows, there might perhaps be a problem with the shell passing strings in
> the local code page (CP1252 or whatever variant of it that is used in
> Finland), whereas the WFS server perhaps expect it to be UTF-8. I'm not sure
> which encoding we are supposed to send through Filter Encoding in KVP, and I'm
> not sure how it is escaped (or not) currently. But if it works with Linux, it is
> likely not an escaping problem, but one related with the encoding. Sending the
> Filter Encoding as a POST content will likely get rid of the encoding problem
> from a theoritical point of view, but there would still be the problem of
> Windows passing non-UTF8 strings to the command line utilities
POST method has been reliable for me both with GIS clients or when sending
requests through Firefox and Poster.
> Jukka, I have not the means of checking for now (behind corporate firewall that
> blocks your servre). But perhaps you could try with the following OGR Python
> script :
>
> from osgeo import ogr
> ds = ogr.Open('WFS:http://hip.latuviitta.org/cgi-bin/tinyows')
> lyr = ds.GetLayerByName('lv:pks_tilastoalue_piste')
> lyr.SetAttributeFilter("name='Hämeenkylä'")
> feat = lyr.GetNextFeature()
> feat.DumpReadable()
>
> The python shell should send UTF8 strings to GDAL.
Error is about the same as with ogr2ogr
>>> ds = ogr.Open('WFS:http://hip.latuviitta.org/cgi-bin/tinyows')
>>> lyr = ds.GetLayerByName('lv:pks_tilastoalue_piste')
>>> lyr.SetAttributeFilter("name='Hämeenkylä'")
0
>>> feat = lyr.GetNextFeature()
ERROR 1: Error returned by server : <?xml version='1.0' encoding='UTF-8'?>
<ows:ExceptionReport
xmlns='http://www.opengis.net/ows'
xmlns:ows='http://www.opengis.net/ows'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://www.opengis.net/ows http://schemas.opengis.net/ows/1
.0.0/owsExceptionReport.xsd'
version='1.1.0' language='en'>
<ows:Exception exceptionCode='MissingParameterValue' locator='request'>
<ows:ExceptionText>QUERY_STRING contains forbidden characters</ows:ExceptionTe
xt>
</ows:Exception>
</ows:ExceptionReport>
>>> feat.DumpReadable()
I do not know if this is TinyOWS error but Mapserver 6.0 is not happy either. It
gives me http 500 error with browser
ogr2ogr -f "ESRI Shapefile" -spat 377346 6673628 392155 6684806 test.shp
WFS:http://hip.latuviitta.org/cgi-bin/mapserver_wfs
pks_tilastoalue_piste -where name='Hämeenkylä'
ERROR 1: HTTP error code : 500
ERROR 1: Error returned by server : HTTP error code : 500 (0)
and a bit better report when sent through python
ERROR 1: Error returned by server : <?xml version="1.0" encoding="UTF-8"?>
<ows:ExceptionReport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns
:ows="http://www.opengis.net/ows" version="1.1.0" language="en-US" xsi:schemaLoc
ation="http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExcept
ionReport.xsd">
<ows:Exception exceptionCode="NoApplicableCode" locator="mapserv">
<ows:ExceptionText>msWFSGetFeature(): WFS server error. FLTApplyFilterToLaye
r() failed
msPostGISLayerWhichShapes(): Query error. Error (ERROR: invalid byte sequence f
or encoding "UTF8": 0x84
) executing query: select "gid","ogc_fid","name",encode(ST_AsBinary(ST_Force_2D(
"the_geom"),'NDR'),'hex') as geom,"gid" from pks_tilastoalue_piste where the_geo
m && GeomFromText('POLYGON((61600 6597900,61600 7776800,733000 7776800,7
33000 6597900,61600 6597900))',3067) and ( ("name"= 'Hämeenkylä') ) limit 100000
msEvalRegex(): Regular expression error. String failed expression test.</ows:Exc
eptionText>
</ows:Exception>
</ows:ExceptionReport>
-Jukka-
> Best regards,
>
> Even
>
More information about the gdal-dev
mailing list