I tried following the tutorials: http://www.gistutor.com/openlayers/22-advanced-openlayers-tutorials/47-openlayers-wfs-t-using-a-geoserver-hosted-postgis-layer.html and: http://apps.who.int/tools/geoserver/www/wfs-t.html
With the following results:
- the delete-function works, ergo I am able to alter my data in the postgres file.
- when inserting or editing a polygon I always get the answer:
<wfs:FAILED></wfs:FAILED> </wfs:Status> <wfs:Message>Error performing insert: Error inserting features</wfs:Message>
or
<wfs:InsertResult>
<ogc:FeatureId fid="none"></ogc:FeatureId>
</wfs:InsertResult>
<wfs:TransactionResult>
<wfs:Status>
<wfs:FAILED></wfs:FAILED>
</wfs:Status>
<wfs:Message>Update error: Error occured updating features</wfs:Message>
I made a simple file, using only one kind of projection (EPSG:32647)- still, same problem. Where do I go wrong?!
My Postgres Data-Table:
- gid - Integer, not null
- fid - double precision
- geom - geometry(MultiPolygon,32647)
Here is my code:
function init(){
//Save-strategy
var saveStrategy = new OpenLayers.Strategy.Save();
//empty map, bounds are test-layer bounds (EPSG:32647)
map = new OpenLayers.Map({
div: "map",
allOverlays: true,
maxExtent: new OpenLayers.Bounds(
653237.69439077,1519879.063165,655229.57939001,1520825.6733868
)
});
//WFS-Layer Test= editable data
var test = new OpenLayers.Layer.Vector("Editable Features", {
strategies: [new OpenLayers.Strategy.Fixed(), saveStrategy],
protocol: new OpenLayers.Protocol.WFS({
url: "http://..../wfs",
featurePrefix: 'testkf',
featureNS: "http://.../testkf",
featureType: "test",
geometryName: "geom",
})
});
map.addLayer(test);
//Toolbar:
var panel = new OpenLayers.Control.Panel(
{'displayClass': 'customEditingToolbar'}
);
var navigate = new OpenLayers.Control.Navigation({
title: "Pan Map"
});
var draw = new OpenLayers.Control.DrawFeature(
test, OpenLayers.Handler.Polygon,
{
title: "Draw Feature",
displayClass: "olControlDrawFeaturePolygon",
multi: true
}
);
var edit = new OpenLayers.Control.ModifyFeature(test, {
title: "Modify Feature",
displayClass: "olControlModifyFeature"
});
var save = new OpenLayers.Control.Button({
title: "Save Changes",
trigger: function() {
if(edit.feature) {
edit.selectControl.unselectAll();
}
saveStrategy.save();
},
displayClass: "olControlSaveFeatures"
});
panel.addControls([save, edit, draw, navigate]);
panel.defaultControl = navigate;
map.addControl(panel);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.zoomToMaxExtent();
}
Thanks for your help!!
Edit: I use Geoserver 2.1.4 and PostGIS 2.0 for PostgreSQL 9.1