On Mon, Mar 10, 2008 at 11:38:46AM -0500, Stephen Woodbridge wrote: > Hi all, > > I admit up front that this inquiry might partly be my ignorance on the > subject, but when OpenLayers.Format.WFS serializes a polygon insert > request it looks like: > > <wfs:Insert> > <feature:Geofence xmlns:feature="http://mapserver.gis.umn.edu/mapserver"> > <feature:the_geom> > <gml:MultiPolygon xmlns:gml="http://www.opengis.net/gml"> > <gml:polygonMember> > <gml:Polygon> > <gml:outerBoundaryIs> > <gml:LinearRing> > <gml:coordinates decimal="." cs="," ts=" > ">-105.662109375,40.1591796875 -107.068359375,38.2255859375 > -103.640625,37.7861328125 -105.662109375,40.1591796875</gml:coordinates> > </gml:LinearRing> > </gml:outerBoundaryIs> > </gml:Polygon> > </gml:polygonMember> > </gml:MultiPolygon> > </feature:the_geom> > </feature:Geofence> > </wfs:Insert> > > This appears to be getting done by > OpenLayers.Format.WFS.createFeatureXML(feature) and the namespace is > hardcoded to "feature:..." > > My question is why this namespace and not the wfs namespace and XML > something more like:
Can you provide some evidence that this is how it's supposed to be done? Inserts and Modifys are different in WFS-T: that's just a case of OpenLayerse following the spec, as far as I know? Note that this isn't a case of the difference being the namespace: the difference here is that in Insert, you pass a full, GML-serialized feature. In Modify, you pass a specific property that you are modifying. Essentially, the WFS-T support is largely cobbled together from examples on the web. If you can provide examples of a server which I can post the following data to, and see a successful transaction, I'm interested. > <wfs:Insert typeName="Geofence"> > <wfs:Property> > <wfs:Name>the_geom</wfs:Name> > <wfs:Value> > <gml:MultiPolygon xmlns:gml="http://www.opengis.net/gml"> > <gml:polygonMember> > <gml:Polygon> > <gml:outerBoundaryIs> > <gml:LinearRing> > <gml:coordinates decimal="." cs="," ts=" > ">-105.662109375,40.1591796875 -107.068359375,38.2255859375 > -103.640625,37.7861328125 -105.662109375,40.1591796875</gml:coordinates> > </gml:LinearRing> > </gml:outerBoundaryIs> > </gml:Polygon> > </gml:polygonMember> > </gml:MultiPolygon> > </wfs:Value> > </wfs:Property> > <wfs:Property> > <wfs:Name>name</wfs:Name> > <wfs:Value>noname</wfs:Value> > </wfs:Property> > </wfs:Insert> > > This would more closely follow the <wfs:Modify> format and namespace. WFS-T support was built on examples, primarily from GeoServer, with support from Cameron Shorter and others who wrote the original vector code. The XSDs shipped with the spec are totally useless to me, even when they're actually accurate, so I don't have a good backup of why it was done this way, other than "I thought it should be done this way. > So why should anyone care? mostly the later is much easier to parse as > the tags are predetermined by the wfs namespace and not consturcted from > the arbitrary attributes used in the layer definition. 'arbitrary attributes'? The Layer Definition ('Schema') For a WFS layer is key to all work with WFS, no? > I am interested in the "why of this" so I better understand how all this > works. Reading the code, it looks like this change can be done by > overloading createFeatureXML with code that generates the later XML > above, so I could make the change myself outside of the OL code base for > testing and review. > > If I did that would it be an appropriate change to svn? > A change to svn, would probably break any existing services that depend > on the existing format for <wfs:Insert>. What does the spec say? This matters more than 'existing services', as far as I'm concerned, but the existing insert statements work with GeoServer, Manifold, and at least some others, and GeoServer is what I was working with when I wrote it. Regards, -- Christopher Schmidt MetaCarta _______________________________________________ Users mailing list [email protected] http://openlayers.org/mailman/listinfo/users
