[Geoserver-users] [Geoserver-devel] Editing wfs layer

You may need to take this to the geoserver-users list, or the openlayers-user list.

This email list is for those working on the geoserver project who are not necessarily in position to help you debug an open layers application.

···

On 9 November 2016 at 19:52, rishe28 <rishe28@…84…> wrote:

I’ve tried replicating tutorial on how to edit WFS with
OpenLayers(http://wordpress-dbauszus.rhcloud.com/wfs-t-with-openlayers-3-5/)
but with my own WFS layer from Geoserver. Need some Javascript help finding
what’s wrong with it.

I managed to load the WFS and my basemap successfully and managed to get the
buttons to show up. The buttons appear correctly like in the working example
, for some reason the geometry data isn’t being saved. Delete button is
working fine(whenever i delete a polygon it is deleted and also in the
geoserver published layer) but editing, draw polygon, line,point are not
working fine ie i am able to draw or edit the polygon or line, but is not
saved and whenever i refresh the page it is showing the previous polygon not
the edited one nor newly inserted one

The bit of my code for posting is:

var dirty = {};
var formatWFS = new ol.format.WFS();
var formatGML = new ol.format.GML({
// featureNS: ‘http://argeomatica.com’,
featureNS: ‘http://www.opengis.net/cite’,
// featureType: ‘playa_sample’,
featureType: ‘NARAYANGARH’,
service: ‘WFS’,
version: ‘1.1.0’,
request: ‘GetFeature’,
srsName: ‘EPSG:3857’
});
var transactWFS = function(p,f) {
switch(p) {
case ‘insert’:
node = formatWFS.writeTransaction([f],null,null,formatGML);
break;
case ‘update’:
node = formatWFS.writeTransaction(null,[f],null,formatGML);
break;
case ‘delete’:
node = formatWFS.writeTransaction(null,null,[f],formatGML);
break;
}
s = new XMLSerializer();
str = s.serializeToString(node);
// $.ajax(‘http://geoserver-dbauszus.rhcloud.com/wfs’,{
$.ajax(‘http://localhost:8080/geoserver/cite/wfs’,{
type: ‘POST’,
dataType: ‘xml’,
processData: false,
contentType: ‘text/xml’,
data: str
}).done();
}

$(‘.btn-floating’).hover(
function() {
$(this).addClass(‘darken-2’);},
function() {
$(this).removeClass(‘darken-2’);}
);

$(‘.btnMenu’).on(‘click’, function(event) {
$(‘.btnMenu’).removeClass(‘orange’);
$(this).addClass(‘orange’);
map.removeInteraction(interaction);
select.getFeatures().clear();
map.removeInteraction(select);
switch($(this).attr(‘id’)) {

case ‘btnSelect’:
interaction = new ol.interaction.Select({
style: new ol.style.Style({
stroke: new ol.style.Stroke({color: ‘#f50057’,
width: 2})
})
});
map.addInteraction(interaction);
interaction.getFeatures().on(‘add’, function(e) {
props = e.element.getProperties();
if
(props.status){$(‘#popup-status’).html(props.status);}else{$(‘#popup-status’).html(‘n/a’);}
if
(props.tiendas){$(‘#popup-tiendas’).html(props.tiendas);}else{$(‘#popup-tiendas’).html(‘n/a’);}
coord = $(‘.ol-mouse-position’).html().split(‘,’);
overlayPopup.setPosition(coord);
});
break;

case ‘btnEdit’:
map.addInteraction(select);
interaction = new ol.interaction.Modify({
features: select.getFeatures()
});
map.addInteraction(interaction);

snap = new ol.interaction.Snap({
source: layerVector.getSource()
});
map.addInteraction(snap);

dirty = {};
select.getFeatures().on(‘add’, function(e) {
e.element.on(‘change’, function(e) {
dirty[e.target.getId()] = true;
});
});
select.getFeatures().on(‘remove’, function(e) {
f = e.element;
if (dirty[f.getId()]){
delete dirty[f.getId()];
featureProperties = f.getProperties();
delete featureProperties.boundedBy;
var clone = new ol.Feature(featureProperties);
clone.setId(f.getId());
transactWFS(‘update’,clone);
}
});
break;

case ‘btnDrawPoint’:
interaction = new ol.interaction.Draw({
type: ‘Point’,
source: layerVector.getSource()
});
map.addInteraction(interaction);
interaction.on(‘drawend’, function(e) {
transactWFS(‘insert’,e.feature);
});
break;

case ‘btnDrawLine’:
interaction = new ol.interaction.Draw({
type: ‘LineString’,
source: layerVector.getSource()
});
map.addInteraction(interaction);
interaction.on(‘drawend’, function(e) {
transactWFS(‘insert’,e.feature);
});
break;

case ‘btnDrawPoly’:
interaction = new ol.interaction.Draw({
type: ‘Polygon’,
source: layerVector.getSource()
});
map.addInteraction(interaction);
interaction.on(‘drawend’, function(e) {
transactWFS(‘insert’,e.feature);
});
break;

case ‘btnDelete’:
interaction = new ol.interaction.Select();
map.addInteraction(interaction);
interaction.getFeatures().on(‘change:length’, function(e) {
transactWFS(‘delete’,e.target.item(0));
interaction.getFeatures().clear();
selectPointerMove.getFeatures().clear();
});
break;

default:
break;
}
});

My main problem is how to save user edited data
to the WFS layer?

In my code, while debugging s = new XMLSerializer(); str =
s.serializeToString(node); str is jsfiddle.net/rishe/8nkayjon in the xml
file it is showing the updated points also, but it is not updated in the
shapefile only delete option is reflecting in the shapefile.please tell me
where the problem is


View this message in context: http://osgeo-org.1560.x6.nabble.com/Editing-wfs-layer-tp5295098.html
Sent from the GeoServer - Dev mailing list archive at Nabble.com.


Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi


Geoserver-devel mailing list
Geoserver-devel@…382…sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Jody Garnett