On Mon, Dec 6, 2010 at 2:04 AM, Chris Crook <[email protected]> wrote:

> So, for my requirement for memory provider persistance, the only real 
> question is what is the right way to do it.  Although Martin had suggested a 
> spatialite database, my leaning is towards a simple QDataStream.  A simple 
> implementation could be (in crude pseudo code)
>
> Qstring header("Qgis data file");
> Int version = 1;
> stream << header << version;
>
> Foreach memory_provider
>  if provider < persist
>      stream << layer_id
>      stream << attribute_count
>      foreach attribute
>         stream << attribute_definition
>      stream << feature_count
>      foreach feature
>         stream << feature
>
> This could readily be reloaded after the XML project file is read.
>
> Because it is processed sequentially it would sit comfortably in a ZIP file 
> and be sequentially read from it without needing to be extracted and then 
> processed (as a spatialite database would need to be).  It is portable 
> between OS etc.
>
> If the user actually wants a spatialite database, or any other format, then 
> they can save the layer to that.
>
> How does this sound to people?

 It sounds like you're just creating another spatial data format. Why
not, on project exit, just go "You have unsaved memory data layers -
would you like them converted to [gml|shapefile|spatialite|whatever]
and reloaded before saving/qutting or do you want to lose them
forever?".

Barry
_______________________________________________
Qgis-developer mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to