RE: [Geoserver-devel] Connecting to GeoServer through FME Viewer or ArcExplorer

Hello Chris and everyone else,

In response to my previous message that I posted regarding connecting GeoServer to “supposedly” WFS compliant clients;

ArcExplorer just does not want to work with any WFS, even WFS’s tested that worked with FME’s Universal Viewer. ArcExplorer probably wants an ArcIMS WFS service.

The WFS’s I use are located at http://www.safe.com/wfs/index.htm
and all 3 seem to work.

FME still has a problem with GeoServer. One problem is FME’s fault, the other is mine (I think), and I will elaborate on my problem later.

I read through the 105 page OpenGIS WFS compliance document for my benefit and to figure out FME’s problem. The WFS standard asks for an initial connection to a WFS using

http://someserver.com/base_path/script
where a client is supposed to initiate …/script?REQUEST=GetCapabilities&…

but GeoServer requires this;

http://someserver.com/geoserver/GetCapabilities?..

So, my first questions are these. Chris, would the dispatcher servlet allow REQUEST at the base path of GeoServer, and/or is there another way to “emulate” CGI paths? Also, how come in the OpenGIS WFS document do they only use CGI? Am I using the correct paths?

Now for my next problem. When I display GML in my browser using the 3 WFS servers listed at the beginning of this message, I get namespace information such as this for

http://www2.dmsolutions.ca/cgi-bin/mswfs_gmap?REQUEST=GetCapabilities&SERVICE=WFS&VERSION=1.0.0

<WFS_Capabilities version=“1.0.0” updateSequence=“0” xmlns=“http://www.opengis.net/wfs” xmlns:ogc=“http://www.opengis.net/ogc” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=“http://www.opengis.net/wfs http://ogc.dmsolutions.ca/wfs/1.0.0/WFS-capabilities.xsd”>

and this for
http://www2.dmsolutions.ca/cgi-bin/mswfs_gmap?REQUEST=GetFeature&TYPENAME=park&SERVICE=WFS&VERSION=1.0.0

<wfs:FeatureCollection xmlns=“http://www.ttt.org/myns” xmlns:myns=“http://www.ttt.org/myns” xmlns:wfs=“http://www.opengis.net/wfs” xmlns:gml=“http://www.opengis.net/gml” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=“http://www.opengis.net/wfs http://ogc.dmsolutions.ca/wfs/1.0.0/WFS-basic.xsd http://www.ttt.org/myns http://www2.dmsolutions.ca/cgi-bin/mswfs_gmap?SERVICE=WFS&VERSION=1.0.0&REQUEST=DescribeFeatureType&TYPENAME=park”>

But when I disply the same for my dataset I get incorrect and/or missing schema references (I think).

Execute this;

http://192.168.1.222/geoserver/GetCapabilities?SERVICE=WFS&VERSION=1.0.0

I get this;

<WFS_Capabilities version=“1.0.0” xmlns=“http://www.opengis.net/wfs” xmlns:myns=“http://192.168.1.222/myns” xmlns:ogc=“http://www.opengis.net/ogc”>

Execute this;

http://192.168.1.222/geoserver/GetFeature?GetFeature&TYPENAME=myns:citytown&SERVICE=WFS&VERSION=1.0.0

I get this;

<wfs:FeatureCollection xmlns=“http://192.168.1.222/myns” xmlns:gml=“http://www.opengis.net/gml” xmlns:wfs=“http://www.opengis.net/wfs” xmlns:xs=“http://www.w3.org/2001/XMLSchema-instance” xs:schemaLocation=“http://192.168.1.222/myns http://192.168.1.222/geoserver/DescribeFeatureType?typeName=myns:citytown http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd”>

I believe that if the schema locations could be corrected to point to my local machine, then FME should be able to muddle through GeoServer.

Sorry for this novel, but I wanted to be able to communicate my problem successfully on the first attempt.

Thank you for any help,

Darren H.

ArcExplorer just does not want to work with any WFS, even WFS's tested that
worked with FME's Universal Viewer. ArcExplorer probably wants an ArcIMS WFS
service.

Figures...

I read through the 105 page OpenGIS WFS compliance document for my benefit
and to figure out FME's problem. The WFS standard asks for an initial
connection to a WFS using
http://someserver.com/base_path/script
where a client is supposed to initiate
.../script?REQUEST=GetCapabilities&...

but GeoServer requires this;

http://someserver.com/geoserver/GetCapabilities?

So, my first questions are these. Chris, would the dispatcher servlet allow
REQUEST at the base path of GeoServer, and/or is there another way to
"emulate" CGI paths? Also, how come in the OpenGIS WFS document do they only
use CGI? Am I using the correct paths?

Yes, I'm pretty sure a dispatcher servlet would allow REQUEST at the base
path of GeoServer. The way I was going to try to implement was first to
have http://someserver.com/geoserver/dispatcher?REQUEST=GetCapabilities
(or request=GetFeature, ect.), so that the dispatcher servlet would
forward the requests on, all requests could be made to dispatcher. And
then I'm pretty sure I can do some stuff in tomcat to get it to work with
the base, to be able to send directly to
http://somserver.com/geoserver?request… But from the reports of FME of
your first email I don't _think_ that the last step is necessary - I think
that it should work if we just have all requests able to go to
http:…/geoserver/dispatcher?, dispatcher would just be the base url.

Also, which section does it say that an initial wfs connection of
http://someserver.com/base_path/script is supposed to initiate
../script?REQUEST=GetCapabilities? I think the fme problem is not in
initiating the initial request, it's the GetFeature request after, since
it tries to send it to http://someserver.com/geoserver/GetCapabilities?,
when it should be parsing the capabilities document and getting the
correct url. But I'm pretty sure that the dispatcher will fix it, as it
will allow our capabilities document to look like what fme is expecting.
And it's a fix we should make, because other clients may make the same
assumption, as the example in the spec has the same url for all requests.
But if it were part of the spec that they _must_ point to the same url
then there would be no reason to list the onlineResource each time. If
you need the dispatcher soon and can work off of cvs, let me know, and
I'll bump it up the priority list - it'll probably take a day or two, if
that.

Now for my next problem. When I display GML in my browser using the 3 WFS
servers listed at the beginning of this message, I get namespace information
such as this for
http://www2.dmsolutions.ca/cgi-bin/mswfs_gmap?REQUEST=GetCapabilities&SERVIC
E=WFS&VERSION=1.0.0

<WFS_Capabilities version="1.0.0" updateSequence="0"
xmlns="http://www.opengis.net/wfs&quot; xmlns:ogc="http://www.opengis.net/ogc&quot;
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot;
xsi:schemaLocation="http://www.opengis.net/wfs
http://ogc.dmsolutions.ca/wfs/1.0.0/WFS-capabilities.xsd&quot;&gt;

and this for
http://www2.dmsolutions.ca/cgi-bin/mswfs_gmap?REQUEST=GetFeature&TYPENAME=pa
rk&SERVICE=WFS&VERSION=1.0.0

<wfs:FeatureCollection xmlns="http://www.ttt.org/myns&quot;
xmlns:myns="http://www.ttt.org/myns&quot; xmlns:wfs="http://www.opengis.net/wfs&quot;
xmlns:gml="http://www.opengis.net/gml&quot;
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot;
xsi:schemaLocation="http://www.opengis.net/wfs
http://ogc.dmsolutions.ca/wfs/1.0.0/WFS-basic.xsd http://www.ttt.org/myns
http://www2.dmsolutions.ca/cgi-bin/mswfs_gmap?SERVICE=WFS&VERSION=1.0.0&REQU
EST=DescribeFeatureType&TYPENAME=park">

But when I disply the same for my dataset I get incorrect and/or missing
schema references (I think).

Execute this;

http://192.168.1.222/geoserver/GetCapabilities?SERVICE=WFS&VERSION=1.0.0

I get this;

<WFS_Capabilities version="1.0.0" xmlns="http://www.opengis.net/wfs&quot;
xmlns:myns="http://192.168.1.222/myns&quot;
xmlns:ogc="http://www.opengis.net/ogc&quot;&gt;

Execute this;

http://192.168.1.222/geoserver/GetFeature?GetFeature&TYPENAME=myns:citytown&
SERVICE=WFS&VERSION=1.0.0

I get this;

<wfs:FeatureCollection xmlns="http://192.168.1.222/myns&quot;
xmlns:gml="http://www.opengis.net/gml&quot;
xmlns:wfs="http://www.opengis.net/wfs&quot;
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance&quot;
xs:schemaLocation="http://192.168.1.222/myns
http://192.168.1.222/geoserver/DescribeFeatureType?typeName=myns:citytown
http://www.opengis.net/wfs
http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd&quot;&gt;

I believe that if the schema locations could be corrected to point to my
local machine, then FME should be able to muddle through GeoServer.

I can do that for you pretty quick. I'll do it as soon as I finish the
morning's emails. It's been on my todo list for awhile, to put local
copies on geoserver installs and reference them instead of the schemas on
opengis. Can you work off of cvs? I'll let you know when I get the fix
in to there. And let me know how soon you need the dispatcher.

Sorry for this novel, but I wanted to be able to communicate my problem
successfully on the first attempt.

Never apologize for writing too much in a request for help. It makes my
job _far_ easier. And thank you for taking the time to help us get
GeoServer working with FME - the server isn't much use if it's spec
compliant but not working with any clients.

  best regards,

      Chris