[GIS] Obtaining feature using ArcGIS for Server and WFS based on featureid

arcgis-servergetfeaturewfs

This has baffled me for hours, I've tried nearly every combination of request parameters without success.

I have a points coverage published in ArcGIS and can download the feature GML via WFS for the entire layer using the following request (sorry the server is not available on the internet):

http://mymachine.com/arcgis/services/DMS/DMS_WELLS/MapServer/WFSServer?SERVICE=WFS&VERSION=1.1.1&REQUEST=GetFeature&typeName=iwiswells&

Which returns XML for each feature member in the layer like so:

<wfs:FeatureCollection xsi:schemaLocation="http://server/arcgis/services/DMS/DMS_WELLS/MapServer/WFSServer http://server/arcgis/services/DMS/DMS_WELLS/MapServer/WFSServer?request=DescribeFeatureType%26version=1.1.0%26typename=iwiswells http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd">
    <gml:boundedBy>
        <gml:Envelope srsName="urn:ogc:def:crs:EPSG:6.9:4326">
            <gml:lowerCorner>28.522 -10.5</gml:lowerCorner>
            <gml:upperCorner>80.469 65.01144</gml:upperCorner>
        </gml:Envelope>
    </gml:boundedBy>
    <gml:featureMember>
        <DMS_DMS_WELLS:iwiswells>
            <DMS_DMS_WELLS:FID>0</DMS_DMS_WELLS:FID>
            <DMS_DMS_WELLS:Shape>
                <gml:Point>
                    <gml:pos>64.994 7.5312</gml:pos>
                </gml:Point>
            </DMS_DMS_WELLS:Shape>
            <DMS_DMS_WELLS:gid>1</DMS_DMS_WELLS:gid>
            <DMS_DMS_WELLS:sitelocid>101</DMS_DMS_WELLS:sitelocid>
            <DMS_DMS_WELLS:site_ref>101/1</DMS_DMS_WELLS:site_ref>
            <DMS_DMS_WELLS:latitude>24.9943</DMS_DMS_WELLS:latitude>
            <DMS_DMS_WELLS:longitude>47.5002</DMS_DMS_WELLS:longitude>
        </DMS_DMS_WELLS:iwiswells>
    </gml:featureMember>
    <gml:featureMember>
        ...
    </gml:featureMember>
</wfs:FeatureCollection>

In GeoServer to select the single feature with a feature id of 10 I would use the following WFS request:

http://mymachine.com/geoserver/iwis/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=iwis:points&featureid=10&

And this results in on feature member begin returned. What I'm looking for is an ArcGIS WFS equivalent!

I have read all the documentation, all the specifications but my request either results in the entire feature list being returned or an error message, here's a few requests I have tried:

http://mymachine.com/arcgis/services/DMS/DMS_WELLS/MapServer/WFSServer?SERVICE=WFS&VERSION=1.1.1&REQUEST=GetFeature&featureid=10&

http://mymachine.com/arcgis/services/DMS/DMS_WELLS/MapServer/WFSServer?SERVICE=WFS&VERSION=1.1.1&REQUEST=GetFeature&typeName=iwiswells&CQL_FILTER=FID='10'&

I've even tried using a filter on a different attribute without success:

http://mymachine.com/arcgis/services/DMS/DMS_WELLS/MapServer/WFSServer?SERVICE=WFS&VERSION=1.1.1&REQUEST=GetFeature&typeName=iwiswells&filter=<Filter><PropertyIsEqualTo><PropertyName>site_ref</PropertyName><Literal>10</Literal></PropertyIsEqualTo></Filter>

Best Answer

Well it took a while to figure out but persistence paid off! After following an example from here http://resources.arcgis.com/en/help/main/10.1/index.html#//0154000004rz000000#ESRI_SECTION1_ACCAFEFDC733487AA2BD9547A768AA08 I managed to get what I was after using the <ogc:filter> tag, when using the filter tag I had to make sure I was fully qualifying the tag (ie <ogc:filter> rather than <filter>)

Here's the solution: http://mymachine.com:6443/arcgis/services/DMS/DMS_WELLS/MapServer/WFSServer?service=WFS&request=GetFeature&version=1.1.0&typename=DMS_DMS_WELLS:iwiswells&Filter=<ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>site_ref</ogc:PropertyName><ogc:Literal>10</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter>

Moral of the story: if you can't get it to work try try try again! (even if you get no responses from the community!!).

Related Question