Opened 14 years ago

Closed 14 years ago

#3506 closed defect (fixed)

WFS post request with geometry column fails

Reported by: bartvde Owned by: assefa
Priority: normal Milestone:
Component: WFS Server Version: svn-trunk (development)
Severity: normal Keywords:
Cc:

Description

This is using an Oracle layer as the backend with trunk.

WFS DescribeFeatureType advertizes the geometry column as:

<element name="geometry" type="gml:MultiPolygonPropertyType" minOccurs="0" maxOccurs="1"/>

However when explicitly requesting the geometry column Mapserver gives back an error message:

<?xml version="1.0" encoding="ISO-8859-1"?>
<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:schemaLocation="http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd">
  <ows:Exception exceptionCode="InvalidParameterValue" locator="PROPERTYNAME">
    <ows:ExceptionText>msWFSGetFeature(): WFS server error. Invalid PROPERTYNAME geometry</ows:ExceptionText>
  </ows:Exception>
</ows:ExceptionReport>

WFS request is:

<?xml version="1.0"?>
<wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" service="WFS" version="1.1.0" maxFeatures="1" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd">
  <wfs:Query xmlns:feature="http://mapserver.gis.umn.edu/mapserver" typeName="feature:ORA_POLY" srsName="EPSG:28992">
    <wfs:PropertyName>OBJECTID</wfs:PropertyName>
    <wfs:PropertyName>HECTARES</wfs:PropertyName>
    <wfs:PropertyName>ZONENR</wfs:PropertyName>
    <wfs:PropertyName>NULZONES</wfs:PropertyName>
    <wfs:PropertyName>AREA</wfs:PropertyName>
    <wfs:PropertyName>PERIMETER</wfs:PropertyName>
    <wfs:PropertyName>geometry</wfs:PropertyName>
    <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
      <ogc:BBOX>
        <ogc:PropertyName>geometry</ogc:PropertyName>
        <gml:Envelope xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:28992">
          <gml:lowerCorner>135053.45572354 450377.96976242</gml:lowerCorner>
          <gml:upperCorner>148595.57235421 462494.60043197</gml:upperCorner>
        </gml:Envelope>
      </ogc:BBOX>
    </ogc:Filter>
  </wfs:Query>
</wfs:GetFeature>

Even if I use the native database column SHAPE in the request, the error is still returned.

Change History (3)

comment:1 by bartvde, 14 years ago

Something like this works for me in mapwfs.c:

  const char *geometry_name=NULL;
  geometry_name = msOWSLookupMetadata(&(lp->metadata), "OFG", "geometries");
  if (z == lp->numitems && strcasecmp(tokens[y], geometry_name) != 0)
  {
    msSetError(MS_WFSERR,
      "Invalid PROPERTYNAME %s",  "msWFSGetFeature()", tokens[y]);
    msFreeCharArray(tokens, n);
    return msWFSException(map, "PROPERTYNAME", "InvalidParameterValue", paramsObj->pszVersion);
  }

comment:2 by assefa, 14 years ago

Owner: changed from mapserverbugs to assefa

comment:3 by assefa, 14 years ago

Resolution: fixed
Status: newclosed

Thanks Bart. Fix was committed yesterday in (r10443)

Just added msautotest for this case (r10445)

Note: See TracTickets for help on using tickets.