ThinkGeo.com    |     Documentation    |     Premium Support

WFS-T support?

Because MapSuite Web Edition uses Openlayers 2.10, I would expect it to support WFS-T as the base OpenLayers 2.10 does.


However, either that's not the case, or I'm missing something.


I'm still using the sample I got working through my last question (gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/12/aft/9115/afv/topic/Default.aspx) I will add my WFS GetCapabilities on this topic. In it, you will see the server supports full WFS-T. 


So I used the DrawEditShapes sample to build this part in my Proof of Concept app. I can transfer a feature to the EditOverlay without any problems. 


When saving, however, I get an Exception stating my laying isn't editable. How does the API determine if my layer is editable? Can I override that somewhere? (ie. specifying I have a transactional service)


 


Regards, 


Casper Span



wfs_getcapabilities.txt (18.4 KB)

Casper, 
  
 Thank you for your detailed description, could you please provide us detailed information about the exception you mentioned (for example, StackTrace…), or you can provide us a self-contained sample to re-produce your issue? We will keep an eye on your feedback. 
  
 Regards, 
  
 Ivan

Hi Ivan, I think I missed your update... (plus I was out of office for a week) so here is the stacktrace you asked for. It doesn't really seem to be of use though... 



I tried two things. My first test was just adding a feature to the edittools: layer.EditTools.Add(Feature)   (where layer is a WfsFeatureLayer)



This gave me the error "Layer is not editable". I checked with the immediate window: EditTools.IsEditable == false, EditTools.IsInTransaction == false and EditTools.IsTransactionLive == false. 



It gave me a stacktrace: 




at ThinkGeo.MapSuite.Core.x6d719af406ea4c2c.xac6b8900578d5d89(Boolean x8b8d8741c4bac66d)
at ThinkGeo.MapSuite.Core.FeatureSource.AddFeature(Feature feature)    
at ThinkGeo.MapSuite.Core.EditTools.Add(Feature feature)    
at MapSuiteTest._Default.buttonSubmit_Click(Object sender, ImageClickEventArgs e) in D:\test\MapSuiteTest\MapSuiteTest\Default.aspx.cs:line 149
at System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e)
at System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument)    
at System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)   
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)   
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)




Then I thought... Maybe I have to force a new transaction first, so I added a BeginTransactio() and CommitTransaction() arround the Add(feature). 

It gave me the same error (+same debug info): 




at ThinkGeo.MapSuite.Core.x6d719af406ea4c2c.xac6b8900578d5d89(Boolean x8b8d8741c4bac66d)  
at ThinkGeo.MapSuite.Core.FeatureSource.BeginTransaction()    
at ThinkGeo.MapSuite.Core.EditTools.BeginTransaction() 
at MapSuiteTest._Default.buttonSubmit_Click(Object sender, ImageClickEventArgs e) in D:\test\MapSuiteTest\MapSuiteTest\Default.aspx.cs:line 147    
at System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e)
at System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument)    
at System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)   
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)   
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


 


Hi Casper,
I’m sorry but I need to say sorry that we don’t support updating or deleting the features of WFS-T on server side now, that’s why you got the EditTools.IsEditable = false, which means that the FeatureSource doesn’t support editing. However, we can manage this on client side with the help of OpenLayers and EditOverlay of WebEdition. Here are some hints:
1.       Request the Wfs features and add them to the EditOverlay on server side.
2.       Get the features from EditOverlay which is the instance of OpenLayers.Layer.Vector after editing.
3.       Use the OpenLayers client API to update the modified features to WFS-T server.
All the above are what I can get now, please have a try and any question please let us know.
Thanks,
Johnny

Hi Johnny, thanks for your reply. It’s a shame MapSuite WebEdition doesn’t detect WFS-T yet. Are there any plans to add this to the WebEdition any time soon? 
  
 I think this would really make the WebEdition a perfect DK as the global acceptance of the WFS-T standard isn’t as good as I hoped so far. 
  
 regards, 
 Casper

Hi Casper, 
  
 Thank you for your feedback. We’ll carefully consider your suggestions, hopefully it will be implemented in the near future. 
  
 Regards, 
  
 Ivan