GeoServer WFS in ArcMap via Data Interoperability Extension - ogc:filter errors

3445
3
03-09-2012 04:22 PM
TomCohen
Occasional Contributor
I have posted a very similar message in the GeoServer forums as this is as much a GeoServer problem as ArcGIS. I'm hoping someone here has experience connecting ArcMap to a GeoServer WFS.

I am connecting ArcGIS (v10, SP3) to a GeoServer (2.1.3) WFS through its Data Interoperability Extension. The extension is unlicensed, but a license isn't required for basic WFS data retrieval.

The DIE has two ways of retrieving data - simple GML features and WFS. Simple GML will always cache the data (24 hours?) but WFS gives the option of always getting live data from GeoServer - this is what I need.

I set up the connection and added a GeoServer WFS resource to the ArcMap table of contents, but when I open the attribute table every single attribute is listed as null. I did some digging and found that ArcMap is making a GetFeature request for every visible row in the attribute table and is using the Filter structure in request parameters. Filters look like this:

<ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>local:ID</ogc:PropertyName><ogc:Literal>149</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter>

GeoServer errors with a parsing exception - it doesn't understand the ogc: prefix because "The prefix "ogc" for element "ogc:Filter" is not bound". If I send the same request but without the ogc: prefix the response is as expected.

So to see live GeoServer WFS data in ArcMap I need to either
1) configure ArcMap to not use the ogc: prefix on Filter, or
2) configure GeoServer to not complain when the ogc: prefix is provided.

Given that ArcMap and GeoServer are both quite common I was hoping this issue had come up before, but so far I've found nothing.

Any suggestions are very welcome.
0 Kudos
3 Replies
TomCohen
Occasional Contributor
Having thought on this for a while I think the problem could also be solved by ArcMap making POST instead of GET requests - then the POST request body would contain an XML document and (hopefully) a namespace declaration for 'ogc:'. I think the problem is that the GET parameters include an XML fragment which assumes the server understands the ogc: prefix, but no namespace declaration is passed.

I know that FME allows me to specify that its WFS reader should use POST, but I don't see the same option in the ArcMap-integrated FME components provided in the Data Interoperability Extension.
0 Kudos
BruceHarold
Esri Regular Contributor
Hi Tom

The POST option will be in the 10.1 release of Data Interoperability.

Regards
0 Kudos
TomCohen
Occasional Contributor
Hi Tom

The POST option will be in the 10.1 release of Data Interoperability.

Regards


Thanks Bruce, I read that 10.1 should be out in May. If this release and its POST capabilities solve my problem I will be very happy.

I am in the fortunate and unusual position of being able to wait a few months to get this resolved. An alternative approach I am considering but would like to avoid is writing a proxy to GeoServer (mainly for more fine-grained security than WFS supports) which could also strip the ogc: prefix out of any filters passed, or construct POST requests from GET parameters.
0 Kudos