1

My task is very straightforward: a user draws a polygon and queries all parcel polygons. The query string extends the URL limit. So I am posting XML to WFS. However, GeoServer always returned 0 feature, but I knew the query polygon overlapped several tax parcels. If I passed a single point, it worked fine. Did I miss anything for sending a polygon? I used the OpenLayers buildGeometry to create the polygon GML. I can't figure out what's wrong.

Please Help.

Here is my code:

var gml = new OpenLayers.Format.GML(); 
var polygonGML = gml.buildGeometry.polygon.apply(gml,[taArray[0].geometry])
console.log(polygonGML); 
var plgGMLString = (new XMLSerializer()).serializeToString(polygonGML);

var geo_req_url = proxyHost + "http://localhost:8080/geoserver/wfs"; 
var query_xml = '<?xml version=' 
    + '<wfs:GetFeature service="WFS" version="1.1.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd">' 
    + '<wfs:Query typeName="topp:tax_parcel"><Filter><Intersects><PropertyName>geom</PropertyName>'
    + plgGMLString 
    + '</Intersects></Filter></wfs:Query></wfs:GetFeature>'; 

$.post(
    geo_req_url,
    query_xml,
    function(data) {
        geoResults = data.features;
        remove_selected_features(); 
        draw_sel_features(); 
    },
    "application/json"
);

Here is the printout of plgGMLString.

<gml:Polygon> <gml:outerBoundaryIs> <gml:LinearRing> <gml:coordinates decimal="." cs="," ts=" ">-74.00567761405651,40.546826958183715 ...</gml:coordinates> </gml:LinearRing> </gml:outerBoundaryIs> </gml:Polygon>

1 Answer 1

2

So is the polygon in north america? Mind that WFS 1.1 assumes by default a lat/lon axis order, so you might have to flip coordinates. See also this: http://docs.geoserver.org/latest/en/user/services/wfs/basics.html#axis-ordering

2
  • It's in NA. My plgGMLString printout is in a right order (-74.00567761405651,40.546826958183715). If I change a polygon to a point, the query works fine.
    – freddell
    Jul 25, 2012 at 16:25
  • 1
    That is not the right order according to WFS 1.1, which expects lat and then lon (so, 40 -74, not the opposite). Maybe when encoding then point the encoder is explicit and states the srs is EPSG:4326 instead of the WFS 1.1 default urn:x-ogc:....:4326 one? Jul 26, 2012 at 7:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.