Ok got it. have you tried creating the clone with var clone = new ol.Feature( featureProperties); instead of the clone function?
Vikram <[email protected]> escreveu no dia quarta, 22/01/2020 à(s) 13:01: > It is basically creating a copy of the feature which looks exactly the > same except for the boundedBy property. So the geoserver identifies the > feature you want to update using the id. > > > On 22/01/2020 13:59, Vitor Fonseca wrote: > > > Yes. But cloning creates new features right? > > You are trying to update features that did not exist in the first place, > and that GeoServer is not aware...i'm a bit confused now :) > > > A quarta, 22/01/2020, 12:53, Vikram <[email protected]> > escreveu: > >> No I am trying to update features. If you look at the example that you >> shared, one has to create a clone in order to strip the boundedBy property >> from the feature. >> >> >> On 22/01/2020 13:28, Vitor Fonseca wrote: >> >> >> Wait a minute. Shouldn't you be making insert's instead of update's? >> You are creating new features after all... >> >> Vikram <[email protected]> escreveu no dia quarta, 22/01/2020 >> à(s) 12:14: >> >>> Yes I have seen this example. Gives me the same result. >>> >>> Now, I don't get the assertion error anymore, I create the feature with >>> WKT. But the end result is the same. I think the geoserver is not updating >>> the features separately ie. it reads the features one by one, but stores >>> the properties in the same variable, thus overwriting the properties every >>> time. And then it updates all the features with this set of properties, >>> thus making them all look alike. >>> >>> have you also tried calling writeTransaction within a loop for updating >>> one feature at a time? >>> >>> I just tried this. It doesn't produce the problem, I can see that it is >>> called multiple times through the loop, but in the end, only one feature is >>> updated.. >>> >>> >>> On 22/01/2020 12:53, Vitor Fonseca wrote: >>> >>> >>> The browser console should give you a little bit more detail on the >>> error...(expand all the error lines...) >>> what's the OL version? >>> >>> check this example: >>> https://medium.com/@goldrydigital/wfs-t-with-openlayers-3-16-6fb6a820ac58 >>> >>> see the new feature created with... >>> var clone = new ol.Feature(featureProperties); >>> >>> have you also tried calling writeTransaction within a loop for updating >>> one feature at a time? >>> >>> Vikram <[email protected]> escreveu no dia quarta, 22/01/2020 >>> à(s) 11:40: >>> >>>> It says assertion failed at this line of code : >>>> >>>> node = formatWFS.writeTransaction(null, f, null, formatGML); >>>> >>>> Well I am not able to see where the fid is.. I can only see id_ and >>>> ol_uid on the console. They are different for every clone. >>>> >>>> >>>> >>>> On 22/01/2020 12:33, Vitor Fonseca wrote: >>>> >>>> >>>> I have struggle in the past with the clone feature too. >>>> >>>> You have different id's in the clones or differente fid's? >>>> Because you're setting "clone.setId(feature.getId());" and that's not >>>> the "internal" feature ID. >>>> >>>> BTW what exactly is the assertion error? >>>> >>>> >>>> >>>> Vikram <[email protected]> escreveu no dia quarta, >>>> 22/01/2020 à(s) 11:24: >>>> >>>>> Hi Vitor, >>>>> >>>>> Thanks for your reply. >>>>> >>>>> The clone approach works fine for one feature ie. when I try to update >>>>> one feature. I have checked the console and the clones have different IDs. >>>>> >>>>> I tried creating feature with WKT, but got an assertion error while >>>>> passing the created feature to the writeTransaction method.. >>>>> >>>>> Regards, >>>>> >>>>> Vikram >>>>> >>>>> >>>>> On 22/01/2020 11:58, Vitor Fonseca wrote: >>>>> >>>>> >>>>> Hi, >>>>> >>>>> I think this is a programming problem rather than a Geoserver problem. >>>>> From my experience the issue should be with the *clone* >>>>> functionality. >>>>> >>>>> Check this >>>>> >>>>> https://gis.stackexchange.com/questions/46730/openlayers-cloned-features-get-style-from-original-feature >>>>> >>>>> Someone mentions "I have noticed that cloned features share the same >>>>> featureID as the original. " and this should be the problem when >>>>> sending the features over to WFS-T... >>>>> You could try creating new features some other way (wkt...) >>>>> >>>>> Vikram <[email protected]> escreveu no dia quarta, >>>>> 22/01/2020 à(s) 10:24: >>>>> >>>>>> HI all, >>>>>> >>>>>> I am trying to update features using WFS-T update. I am sending the >>>>>> request from my website (OpenLayers) by passing an array of features. >>>>>> >>>>>> However, I have noticed that the attributes and geometry of last >>>>>> feature in the array is copied to all other features. >>>>>> >>>>>> For example, if I pass 5 features to the writeTransaction method to >>>>>> update an attribute of all 5 features, it copies the attributes and >>>>>> geometry of the 5th feature to the other features. >>>>>> >>>>>> var clones = [] >>>>>> selectedFeatures.forEach(function (feature) { >>>>>> var featureProperties = feature.getProperties(); >>>>>> >>>>>> delete featureProperties.boundedBy; >>>>>> var clone = feature.clone(); >>>>>> clone.setId(feature.getId()); >>>>>> >>>>>> clone.setGeometryName('the_geom'); >>>>>> >>>>>> clone.setProperties({'xyz':'xyz'}) >>>>>> >>>>>> clones.push(clone) >>>>>> >>>>>> >>>>>> }) >>>>>> console.log(clones) >>>>>> transactWFS('update_batch', clones); >>>>>> >>>>>> int the transactWFS method, >>>>>> >>>>>> transactWFS = function (mode, f) { >>>>>> >>>>>> var node; >>>>>> switch (mode) { >>>>>> case 'insert': >>>>>> node = formatWFS.writeTransaction([f], null, null, >>>>>> formatGML); >>>>>> break; >>>>>> case 'update': >>>>>> node = formatWFS.writeTransaction(null, [f], null, >>>>>> formatGML); >>>>>> break; >>>>>> case 'update_batch': >>>>>> node = formatWFS.writeTransaction(null, f, null, formatGML); >>>>>> break; >>>>>> case 'delete': >>>>>> node = formatWFS.writeTransaction(null, null, [f], >>>>>> formatGML); >>>>>> break; >>>>>> } >>>>>> var payload = xs.serializeToString(node); >>>>>> >>>>>> $.ajax('http://localhost:8080/geoserver/TEST/ows', { >>>>>> service: 'WFS', >>>>>> type: 'POST', >>>>>> dataType: 'xml', >>>>>> processData: false, >>>>>> contentType: 'text/xml', >>>>>> data: payload, >>>>>> success: function(data) { >>>>>> >>>>>> }, >>>>>> error: function(e) { >>>>>> var errorMsg = e? (e.status + ' ' + e.statusText) : ""; >>>>>> alert('Error saving this feature to GeoServer.<br><br>' >>>>>> + errorMsg); >>>>>> } >>>>>> }).done(function() { >>>>>> wfsSource.refresh() >>>>>> >>>>>> });}; >>>>>> >>>>>> Does anyone have a solution? >>>>>> >>>>>> Regards, >>>>>> >>>>>> Vikram >>>>>> _______________________________________________ >>>>>> Geoserver-users mailing list >>>>>> >>>>>> Please make sure you read the following two resources before posting >>>>>> to this list: >>>>>> - Earning your support instead of buying it, but Ian Turton: >>>>>> http://www.ianturton.com/talks/foss4g.html#/ >>>>>> - The GeoServer user list posting guidelines: >>>>>> http://geoserver.org/comm/userlist-guidelines.html >>>>>> >>>>>> If you want to request a feature or an improvement, also see this: >>>>>> https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer >>>>>> >>>>>> >>>>>> [email protected] >>>>>> https://lists.sourceforge.net/lists/listinfo/geoserver-users >>>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> www.vfonsecaz.pt >>>>> >>>>> >>>> >>>> -- >>>> <div dir="lt >>>> >>>> -- www.vfonsecaz.pt
_______________________________________________ Geoserver-users mailing list Please make sure you read the following two resources before posting to this list: - Earning your support instead of buying it, but Ian Turton: http://www.ianturton.com/talks/foss4g.html#/ - The GeoServer user list posting guidelines: http://geoserver.org/comm/userlist-guidelines.html If you want to request a feature or an improvement, also see this: https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer [email protected] https://lists.sourceforge.net/lists/listinfo/geoserver-users
