[mapserver-users] MapServer crash with WFS GetFeature request using multiple typenames
Dejan Gambin
dejan.gambin at coin.hr
Mon Dec 5 01:26:19 PST 2011
Hi Jukka
Accroding to your suggestions, I am trying to use ogc:Contains instead of ogc:BBOX in my OL request, but it fails with "Invalid or Unsupported FILTER in GetFeature" error. So, using something like this:
protocol: OpenLayers.Protocol.WFS({
version: "1.1.0",
url: "http://www.coin.hr/cgi-bin/mywfs6?SERVICE=WFS",
srsName:"EPSG:900913",
//featureNS: "http://www.openplans.org/topp",
featureNS: "http://www.coin.hr",
geometryName: "msGeometry",
featurePrefix: "ms"
}),
box: false,
hover: false,
//multipleKey: "shiftKey",
toggleKey: "ctrlKey",
single: false,
generates the following mapserver SUCCESSFUL request:
<wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.1.0" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><wfs:Query typeName="ms:katastar_vodnjan_poligon" srsName="EPSG:900913" xmlns:ms="http://www.coin.hr"><ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:BBOX><ogc:PropertyName>msGeometry</ogc:PropertyName><gml:Envelope xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:900913"><gml:lowerCorner>1534339.5955039 5613892.0444208</gml:lowerCorner><gml:upperCorner>1534345.5671467 5613898.0160636</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Filter></wfs:Query></wfs:GetFeature>
Using the same OL request but with "filterType: OpenLayers.Filter.Spatial.CONTAINS,", I get the following:
<wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.1.0" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><wfs:Query typeName="ms:katastar_vodnjan_poligon" srsName="EPSG:900913" xmlns:ms="http://www.coin.hr"><ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:Contains><ogc:PropertyName>msGeometry</ogc:PropertyName><gml:Envelope xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:900913"><gml:lowerCorner>1534345.2685645 5613850.242921</gml:lowerCorner><gml:upperCorner>1534348.254386 5613853.2287424</gml:upperCorner></gml:Envelope></ogc:Contains></ogc:Filter></wfs:Query></wfs:GetFeature>
and this is giving me the above error
Obviously I am doing something wrong :-)
Any help? I have MapServer 6.0.1, built from source
dejan
On 14. stu. 2011., at 14:51, Rahkonen Jukka wrote:
> Hi,
>
> Feel free to test with my TinyOWS server at http://188.64.1.61/cgi-bin/tinyows. I would not encourage you to use BBOX filter for finding features. According to the standard BBOX is a synonyme for Intersects but for example Geoserver is using it in a bit different way. It is comparing if feature bounding boxes are intersecting with reference bounding box if BBOX is used. This suits perfectly for filling a screen with features because feature bounding boxes can be found fast from the spatial index of a database. However, with lines and polygons this search is sometimes finding extra features. Intersects is doing a real comparison of geometries which is accurate but slower. If you click on a map why don't you use ogc:Contains for finding polygons or ogc;DWithin filter for finding all kind of features with a buffer?
>
> My TinyOWS has a bug with ogc:BBOX so if you test it, use Intersects, Contains, or DWithin instead.
>
> Naturally WFS should behave in a similar way independently of the data source behind the server.
>
> -Jukka Rahkonen-
>
>> -----Alkuperäinen viesti-----
>> Lähettäjä: Dejan Gambin [mailto:dejan.gambin at coin.hr]
>> Lähetetty: 14. marraskuuta 2011 15:33
>> Vastaanottaja: Rahkonen Jukka
>> Kopio: 'mapserver-users at lists.osgeo.org'
>> Aihe: Re: [mapserver-users] MapServer crash with WFS
>> GetFeature request using multiple typenames
>>
>> Hello Jukka
>>
>> Thanks for the information. I am trying to make a spatial
>> search by clicking on the point on the map. This search
>> should send the requests for every active layer and return
>> the results for some bbox around this point. I have first
>> tried with WMS GetFeatureInfo but also stucked with gml not
>> being recognized by OpenLayers. So I decided to try with WFS.
>> It works OK when data is in PostGIS and also works for one
>> shape file but not for all I need.
>>
>> Of course, it can be done by sending multiple requests, one
>> for each active layer, but I thought this should work for
>> several layers too.
>>
>>
>> On 14. stu. 2011., at 14:20, Rahkonen Jukka wrote:
>>
>>> Hi,
>>>
>>> It is not so very common to make GetFeature requests for a
>> list of FeatureTypes, especially with filters. Therefore
>> servers are for sure not well tested with such requests. Do
>> you have some special need for getting just one GML package
>> out or WFS or can you imagine to do one request per feature type?
>>>
>>> By the way, are you aware of that if you query typeNames
>> "A" and "B" with maxfeatures=10, the resultset will be cut at
>> the 10th feature. If the server finds 10 or more candidates
>> from typeName "A" you will not get any features at all from
>> typeName "B".
>>>
>>> -Jukka Rahkonen-
>>>
>>> Dejan Gambin wrote:
>>>
>>>
>>>>
>>>> Anyway, seems like this ogrinfo error has nothing to do with
>>>> mapserver crash. So the problem persists :-(
>>>>
>>>> dejan
>>>> On 14. stu. 2011., at 11:49, Dejan Gambin wrote:
>>>>
>>>>> Additional info:
>>>>>
>>>>> Everything works OK when data is in postgis. The problem is
>>>> with data coming from shape file on which ogrinfo reports the
>>>> following:
>>>>>
>>>>> dgambin at coin:/$ ogrinfo -so
>>>> sportsko_rekreacijska_namjena.shp sportsko_rekreacijska_namjena
>>>>> ERROR 4: Unable to open sportsko_rekreacijska_namjena.shp
>>>> or sportsko_rekreacijska_namjena.SHP.
>>>>> Had to open data source read-only.
>>>>> INFO: Open of `sportsko_rekreacijska_namjena.shp'
>>>>> using driver `ESRI Shapefile' successful.
>>>>>
>>>>> Layer name: sportsko_rekreacijska_namjena
>>>>> Geometry: Polygon
>>>>> Feature Count: 12
>>>>> Extent: (5401303.525844, 4978030.196207) - (5407353.143421,
>>>> 4986100.367492)
>>>>> Layer SRS WKT:
>>>>> (unknown)
>>>>> ID: Integer (8.0)
>>>>> NAMJENA: String (30.0)
>>>>> POVRSINA: Real (16.2)
>>>>> OZNAKA: String (100.0)
>>>>>
>>>>>
>>>>>
>>>>> On 14. stu. 2011., at 10:35, Dejan Gambin wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I have a serious issue usng MapServer WFS in making
>>>> GetFeature request using multiple typenames. Here is the
>>>> example post request:
>>>>>>
>>>>>> [Mon Nov 14 09:16:06 2011].666863 msWFSParseRequest(): WFS
>>>> post request: <wfs:GetFeature
>>>> xmlns:wfs="http://www.opengis.net/wfs" service="WFS"
>>>> version="1.1.0" maxFeatures="10"
>>>> xsi:schemaLocation="http://www.opengis.net/wfs
>>>> http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><wfs:Que
>>>> ry typeName="ms:ppu_sportska" srsName="EPSG:900913"
>>>> xmlns:ms="http://www.openplans.org/topp"><ogc:Filter
>>>> xmlns:ogc="http://www.opengis.net/ogc"><ogc:BBOX><ogc:Property
>>>> Name>msGeometry</ogc:PropertyName><gml:Envelope
>>>> xmlns:gml="http://www.opengis.net/gml"
>>>> srsName="EPSG:900913"><gml:lowerCorner>1533843.3519844
>>>> 5619282.0492426</gml:lowerCorner><gml:upperCorner>1533938.8982
>>>> 697
>>>> 5619377.595528</gml:upperCorner></gml:Envelope></ogc:BBOX></og
>>>> c:Filter></wfs:Query><wfs:Query typeName="ms:ppu_turisticka"
>>>> srsName="EPSG:900913"
>>>> xmlns:ms="http://www.openplans.org/topp"><ogc:Filter
>>>> xmlns:ogc="http://www.opengis.net/ogc"><ogc:BBOX><ogc:Property
>>>> Name>msGeometry</ogc:PropertyName><gml:Envelope
>>>> xmlns:gml="http://www.opengis.net/gml"
>>>> srsName="EPSG:900913"><gml:lowerCorner>1533843.3519844
>>>> 5619282.0492426</gml:lowerCorner><gml:upperCorner>1533938.8982
>>>> 697
>>>> 5619377.595528</gml:upperCorner></gml:Envelope></ogc:BBOX></og
>>>> c:Filter></wfs:Query></wfs:GetFeature>
>>>>>> [Mon Nov 14 09:16:06 2011].683317 msQueryByFilter():
>>>> Search returned no results. No matching record(s) found.
>>>>>>
>>>>>> It is using 2 typenames: "ms:ppu_sportska" and
>>>> "ms:ppu_turisticka". Seems like no results were found but
>>>> there are bunch of errors in apache log file, like:
>>>>>>
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> *** glibc detected *** /usr/lib/cgi-bin/mapserv61: double
>>>> free or corruption (out): 0x0000000001a83d60 ***, referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> ======= Backtrace: =========, referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /lib/libc.so.6(+0x71ad6)[0x7f58d7c43ad6], referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /lib/libc.so.6(cfree+0x6c)[0x7f58d7c4884c], referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /usr/lib/cgi-bin/mapserv61[0x4328c6], referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /usr/lib/cgi-bin/mapserv61[0x438719], referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /usr/lib/cgi-bin/mapserv61[0x455d2d], referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /usr/lib/cgi-bin/mapserv61[0x455b8c], referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /usr/lib/cgi-bin/mapserv61[0x4df5c4], referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /usr/lib/cgi-bin/mapserv61[0x4bf415], referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /usr/lib/cgi-bin/mapserv61(msLayerApplyPlainFilterToLayer+0x23
>>> )[0x47a99c], referer: http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /usr/lib/cgi-bin/mapserv61[0x4bf362], referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /usr/lib/cgi-bin/mapserv61[0x49ffe0], referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /usr/lib/cgi-bin/mapserv61[0x4a1c8e], referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /usr/lib/cgi-bin/mapserv61[0x495f17], referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /usr/lib/cgi-bin/mapserv61[0x4182b7], referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /lib/libc.so.6(__libc_start_main+0xfd)[0x7f58d7bf0c4d],
>>>> referer: http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /usr/lib/cgi-bin/mapserv61[0x413609], referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> ======= Memory map: ========, referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> ...bunch of library references
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> 7f58db7ca000-7f58db7cb000 r--p 0001d000 ca:01 1855039
>>>> /lib/ld-2.11.2.so, referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> 7f58db7cb000-7f58db7cc000 rw-p 0001e000 ca:01 1855039
>>>> /lib/ld-2.11.2.so, referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> 7f58db7cc000-7f58db7cd000 rw-p 00000000 00:00 0 , referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> 7fff70721000-7fff70736000 rw-p 00000000 00:00 0
>>>> [stack], referer: http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> 7fff70777000-7fff70778000 r-xp 00000000 00:00 0
>>>> [vdso], referer: http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
>>>> [vsyscall], referer: http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> /usr/lib/cgi-bin/mywfs6: line 4: 3294 Aborted
>>>> /usr/lib/cgi-bin/mapserv61, referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>> [Mon Nov 14 09:16:06 2011] [error] [client 83.131.213.54]
>>>> Premature end of script headers: mywfs6, referer:
>>>> http://www.coin.hr/coingis/demo.html
>>>>>>
>>>>>> Sometimes the error was starting with:
>>>>>>
>>>>>> [Mon Nov 14 08:25:06 2011] [error] [client 83.131.213.54]
>>>> *** glibc detected *** /usr/lib/cgi-bin/mapserv61:
>>>> munmap_chunk(): invalid pointer: 0x000000000273ca80 ***,
>>>> referer: http://www.coin.hr/coingis/demo.html
>>>>>>
>>>>>> NOTE: Making individual requests to those typenames works OK
>>>>>>
>>>>>> I would appreciate any help since I am pretty stucked with
>>>> this. Should I report it as a bug?
>>>>>>
>>>>>> Thanks very much
>>>>>>
>>>>>> regards, dejan
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> 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