Hello, Today I had time to try this test in 3 different systems, and I couldn make it work in any of them, so I think this is a bug, should I create a new ticket in http://trac.osgeo.org/mapserver/. I write the steps below to reproduce the problem
PROBLEM: In wfs layer where the data is retrieved from a mysql table, the intersect filter only returns a result list when the first feature(the first inserted record in the table) is part of the result set. If the filter shall return results, but the first feature is not among them, then we get not list of features: <?xml version='1.0' encoding="ISO-8859-1" ?> <wfs:FeatureCollection...> <gml:boundedBy> <gml:Box srsName="EPSG:4326"> <gml:coordinates>-1.000000,-1.000000 -1.000000,-1.000000</gml:coordinates> </gml:Box> </gml:boundedBy> </wfs:FeatureCollection> Which is diffrent to when a query shall not return any resultst: <?xml version='1.0' encoding="ISO-8859-1" ?> <wfs:FeatureCollection..."> <gml:boundedBy> <gml:null>missing</gml:null> </gml:boundedBy> </wfs:FeatureCollection> TEST: 1. Create Spatial Data CREATE DATABASE mmi_spatial_db; USE mmi_spatial_db; CREATE TABLE positionReal (oid LONG, point POINT); INSERT INTO positionReal(oid, point) VALUES (3, GeomFromText('POINT(-10 -10)',4326)); INSERT INTO positionReal(oid, point) VALUES (2, GeomFromText('POINT(10 10)',4326)); INSERT INTO positionReal(oid, point) VALUES (1, GeomFromText('POINT(0 20)',4326)); 2. Map file: MAP NAME MMI_WFS UNITS METERS TRANSPARENT ON IMAGECOLOR 0 0 0 IMAGETYPE PNG SHAPEPATH "." SYMBOLSET "../symbols.sym" STATUS ON WEB IMAGEPATH "/opt/fsg/tmp/" IMAGEURL "/opt/fsg/" METADATA "wfs_title" "WFS MMI Server for MapServer" ## REQUIRED "wfs_onlineresource" "http://localhost:8080/cgi-bin/mywfs?" ## Recommended "wfs_srs" "EPSG:4326"## Recommended "wfs_abstract" "This text describes my WFS service." ## Recommended "wfs_schemas_location" "http://schemas.opengeospatial.net" END END PROJECTION "init=epsg:4326" END LAYER NAME "PositionReal" STATUS ON TYPE POINT CONNECTIONTYPE OGR CONNECTION "MySQL:mmi_spatial_db,user=mmi,password=*****,host=127.0.0.1,port=3306" DATA "SELECT point from positionReal" #CONNECTIONTYPE POSTGIS #CONNECTION "host=127.0.0.1 port=5432 dbname=mmi_db user=postgres password=postgres" #DATA "point from positionreal" DUMP TRUE ## REQUIRED #TOLERANCE 200 #TOLERANCEUNITS PIXELS METADATA #"wfs_featureid" "oid" "wfs_srs" "epsg:4326" "wfs_onlineresource" "http://localhost:8080/cgi-bin/mywfs?" ## Recommended "wfs_title" "PositionReal" "gml_include_items" "all" ## Optional (serves all attributes for lay "gml_surface_occurances" "0,UNBOUNDED" "wfs_extent" "-180 -90 180 90" "gml_include_items" "all" END END END # Map File 3. Intersect Filter: - This one works because point (-10,-10) is part of the resultset. http://localhost:8080/cgi-bin/mywfs?SERVICE=WFS&VERSION=1.0.0&request=getfeature&typename=PositionReal&Filter= <Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"><Intersects><PropertyName>point</PropertyName> <gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-180,-90 -180,90 180,90 180,-90 -180,-90</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></Intersects></Filter> - This one works, point (-10,-10) is part of the resultset http://localhost:8080/cgi-bin/mywfs?SERVICE=WFS&VERSION=1.0.0&request=getfeature&typename=PositionReal&Filter= <Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"><Intersects><PropertyName>point</PropertyName> <gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-11,-11 -11,-9 -9,-9 -9,-11 -11,-11</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></Intersects></Filter> - This query fails, it should return one feature, but we get the weird behavior because point (-10,-10) is not part of the resultset http://localhost:8080/cgi-bin/mywfs?SERVICE=WFS&VERSION=1.0.0&request=getfeature&typename=PositionReal&Filter= <Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"><Intersects><PropertyName>point</PropertyName> <gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>9,9 9,11 11,11 11,9 9,9</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></Intersects></Filter> Notice that I use gml:polygon instead of gml:box to be able to test this with mapserver in trunk (which works with gml:box) but also with mapserver 5.6.3 (fgs-installer, which dont work with intersect and gml:box) The problem does not ocurr if the database in use is postgres ./createdb -U postgres -T template_postgis mmi_db; CREATE TABLE positionReal (oid int); SELECT AddGeometryColumn('positionreal', 'point', 4326,'POINT',2); INSERT INTO positionReal(oid, point) VALUES (3, GeomFromText('POINT(-10 -10)',4326)); INSERT INTO positionReal(oid, point) VALUES (2, GeomFromText('POINT(10 10)',4326)); INSERT INTO positionReal(oid, point) VALUES (1, GeomFromText('POINT(0 20)',4326)); SYSTEMS: I test this in the following systems: OpenSuse 11 fgs-mapserver_basic_5.6.3-fgs_9.5-linux-i386.bin and building from the sources (branch 5-6) mysql Ver 14.12 Distrib 5.0.67, for suse-linux-gnu (i686) using readline 5.2 and mysql 5.5 too SLES 11 fgs-mapserver_basic_5.6.3-fgs_9.5-linux-i386.bin mysql Ver 14.14 Distrib 5.1.43, for unknown-linux-gnu (x86_64) using readline 5.1 Ubunut fgs-mapserver_basic_5.6.3-fgs_9.5-linux-i386.bin mysql 5.1 Best regards, Joaquín ________________________________________ De: Joaquín Rodriguez-Guerra Urcelay Enviado el: jueves, 31 de marzo de 2011 17:25 Para: mapserver-users@lists.osgeo.org Asunto: RE: [mapserver-users] WFS Intersect with gml:box Hi, I have check the same example using Posgres and it works, so it is a problem with mysql Joaquín Rodríguez-Guerra Urcelay Unidad de Sistemas de Procesamiento de Ciencia y de Observación de la Tierra / Science and Earth Observing Processing Systems Unit GMV AEROSPACE AND DEFENCE, S.A. Isaac Newton, 11 P.T.M. Tres Cantos E-28760 Madrid Tel. +34 91 807 21 00 / 7695 Fax +34 91 807 21 99 www.gmv.com ________________________________________ De: mapserver-users-boun...@lists.osgeo.org [mapserver-users-boun...@lists.osgeo.org] En nombre de Joaquín Rodriguez-Guerra Urcelay [jrgue...@gmv.com] Enviado el: jueves, 31 de marzo de 2011 16:42 Para: mapserver-users@lists.osgeo.org Asunto: RE: [mapserver-users] WFS Intersect with gml:box Hello, Here I am again, this is not over :( I have been testing this all morning, and I have seen that intersect only returns results when the first feature in the mysql table belongs to the resultset, very weird :( When I request a filter which should return results, but the first feature is not in the resultset, then I get this: <?xml version='1.0' encoding="ISO-8859-1" ?> <wfs:FeatureCollection...> <gml:boundedBy> <gml:Box srsName="EPSG:4326"> <gml:coordinates>-1.000000,-1.000000 -1.000000,-1.000000</gml:coordinates> </gml:Box> </gml:boundedBy> </wfs:FeatureCollection> Which is diffrent to when I make a query which should not return any results, then I get: <?xml version='1.0' encoding="ISO-8859-1" ?> <wfs:FeatureCollection..."> <gml:boundedBy> <gml:null>missing</gml:null> </gml:boundedBy> </wfs:FeatureCollection> So, it detects when there are results, but only show them when the first feature is on the result set. Does this make any sense? This is my database (mysql 5): CREATE DATABASE mmi_spatial_db; USE mmi_spatial_db; CREATE TABLE positionReal (id INTEGER, point GEOMETRY); INSERT INTO positionReal(id, point) VALUES (2, GeomFromText('POINT(10 10)',4326)); INSERT INTO positionReal(id, point) VALUES (1, GeomFromText('POINT(0 20)',4326)); INSERT INTO positionReal(id, point) VALUES (3, GeomFromText('POINT(-10 -10)',4326)); The following query returns the expected result http://localhost:8080/cgi-bin/mywfs?SERVICE=WFS&VERSION=1.0.0&request=getfeature&typename=PositionReal&Filter= <Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"><Intersects><PropertyName>point</PropertyName> <gml:Box srsName="epsg:4326"><gml:coordinates decimal="." cs="," ts=" ">10,10 10,10</gml:coordinates> </gml:Box> </Intersects> </Filter> result: <wfs:FeatureCollection... <gml:boundedBy> <gml:Box srsName="EPSG:4326"> <gml:coordinates>10.000000,10.000000 10.000000,10.000000</gml:coordinates> </gml:Box> </gml:boundedBy> <gml:featureMember> <ms:PositionReal fid="PositionReal.2"> <gml:boundedBy> <gml:Box srsName="EPSG:4326"> <gml:coordinates>10.000000,10.000000 10.000000,10.000000</gml:coordinates> </gml:Box> </gml:boundedBy> <ms:msGeometry> <gml:Point srsName="EPSG:4326"> <gml:coordinates>10.000000,10.000000</gml:coordinates> </gml:Point> </ms:msGeometry> <ms:id>2</ms:id> </ms:PositionReal> </gml:featureMember> </wfs:FeatureCollection> And any other query where the point 10,10 is belonging the bounding box, works. If I change the order INSERTS, then this magic point changes for the one I insert first. This is my map file: MAP NAME MMI_WFS UNITS METERS TRANSPARENT ON IMAGECOLOR 0 0 0 IMAGETYPE PNG SHAPEPATH "." SYMBOLSET "../symbols.sym" STATUS ON WEB IMAGEPATH "/opt/fsg/tmp/" IMAGEURL "/opt/fsg/" METADATA "wfs_title" "WFS MMI Server for MapServer" ## REQUIRED "wfs_onlineresource" "http://localhost:8080/cgi-bin/mywfs?" ## Recommended "wfs_srs" "EPSG:4326"## Recommended "wfs_abstract" "This text describes my WFS service." ## Recommended "wfs_schemas_location" "http://schemas.opengeospatial.net" END END PROJECTION "init=epsg:4326" END LAYER NAME "PositionReal" STATUS ON TYPE POINT CONNECTIONTYPE OGR CONNECTION "MySQL:mmi_spatial_db,user=mmi,password=adminis,host=127.0.0.1,port=3306" DATA "SELECT id,point from positionReal" DUMP TRUE ## REQUIRED #TOLERANCE 200 #TOLERANCEUNITS PIXELS METADATA "wfs_featureid" "id" "wfs_srs" "epsg:4326" "wfs_onlineresource" "http://localhost:8080/cgi-bin/mywfs?" ## Recommended "wfs_title" "PositionReal" "gml_include_items" "all" ## Optional (serves all attributes for lay "gml_surface_occurances" "0,UNBOUNDED" "wfs_extent" "-180 -90 180 90" "gml_include_items" "all" END END END # Map File Well, this is weird, but if it sounds familliar or it rings a bell to some one, please help me :) Thanks! Joaquín ________________________________________ De: mapserver-users-boun...@lists.osgeo.org [mapserver-users-boun...@lists.osgeo.org] En nombre de Joaquín Rodriguez-Guerra Urcelay [jrgue...@gmv.com] Enviado el: jueves, 31 de marzo de 2011 11:31 CC: mapserver-users@lists.osgeo.org Asunto: RE: [mapserver-users] WFS Intersect with gml:box Hi, Thank you both for your help, the filter is finally working :D The bug is fixed, gml:box works now with intersect. I wanted to confirm this in the bug report, but I havent found they way to write anything there (is it because the bug is now closed?) Yesterday I was not getting the results I expected because I think my connection to the mysql database had some problem. I tried with a shapefile and it was working perfectly, so I then played a bit with the mysql connection and now it is working :) Joaquín ________________________________________ De: Yewondwossen Assefa [yass...@dmsolutions.ca] Enviado el: miércoles, 30 de marzo de 2011 22:48 Para: Rahkonen Jukka CC: mapserver-users@lists.osgeo.org; Joaquín Rodriguez-Guerra Urcelay Asunto: Re: [mapserver-users] WFS Intersect with gml:box On 30/03/2011 4:16 PM, Rahkonen Jukka wrote: > Hi, > > "Intersect" means the same as "not disjoint", that the two geometries have at > least one point in common. Thus WFS Intersects should select the point that > is inside the "box" in the query. I made a quick test with OpenJUMP which is > using JTS and it really does select such a point with a apatial query > Intersects. > Geos lib used by MapServer should act the same as JTS I beleive. Joaquín, you can maybe attach your simple map/data/url to the bug and I will check it using MapServer trunk. -- ---------------------------------------------------------------- Assefa Yewondwossen Software Analyst Email: yass...@dmsolutions.ca http://www.dmsolutions.ca/ Phone: (613) 565-5056 (ext 14) Fax: (613) 565-0925 ---------------------------------------------------------------- ______________________ This message including any attachments may contain confidential information, according to our Information Security Management System, and intended solely for a specific individual to whom they are addressed. Any unauthorised copy, disclosure or distribution of this message is strictly forbidden. If you have received this transmission in error, please notify the sender immediately and delete it. ______________________ Este mensaje, y en su caso, cualquier fichero anexo al mismo, puede contener informacion clasificada por su emisor como confidencial en el marco de su Sistema de Gestion de Seguridad de la Informacion siendo para uso exclusivo del destinatario, quedando prohibida su divulgacion copia o distribucion a terceros sin la autorizacion expresa del remitente. Si Vd. ha recibido este mensaje erroneamente, se ruega lo notifique al remitente y proceda a su borrado. Gracias por su colaboracion. ______________________ _______________________________________________ mapserver-users mailing list mapserver-users@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/mapserver-users ______________________ This message including any attachments may contain confidential information, according to our Information Security Management System, and intended solely for a specific individual to whom they are addressed. Any unauthorised copy, disclosure or distribution of this message is strictly forbidden. If you have received this transmission in error, please notify the sender immediately and delete it. ______________________ Este mensaje, y en su caso, cualquier fichero anexo al mismo, puede contener informacion clasificada por su emisor como confidencial en el marco de su Sistema de Gestion de Seguridad de la Informacion siendo para uso exclusivo del destinatario, quedando prohibida su divulgacion copia o distribucion a terceros sin la autorizacion expresa del remitente. Si Vd. ha recibido este mensaje erroneamente, se ruega lo notifique al remitente y proceda a su borrado. Gracias por su colaboracion. ______________________ _______________________________________________ mapserver-users mailing list mapserver-users@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/mapserver-users ______________________ This message including any attachments may contain confidential information, according to our Information Security Management System, and intended solely for a specific individual to whom they are addressed. Any unauthorised copy, disclosure or distribution of this message is strictly forbidden. If you have received this transmission in error, please notify the sender immediately and delete it. ______________________ Este mensaje, y en su caso, cualquier fichero anexo al mismo, puede contener informacion clasificada por su emisor como confidencial en el marco de su Sistema de Gestion de Seguridad de la Informacion siendo para uso exclusivo del destinatario, quedando prohibida su divulgacion copia o distribucion a terceros sin la autorizacion expresa del remitente. Si Vd. ha recibido este mensaje erroneamente, se ruega lo notifique al remitente y proceda a su borrado. Gracias por su colaboracion. ______________________ _______________________________________________ mapserver-users mailing list mapserver-users@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/mapserver-users