On 10.07.2017 13:58, Even Rouault wrote:

> I did some playing around and came up with some FeatureId mapping code

> which is pretty space efficient (basically requiring just

> 3*nDeletedFeatures entries), see below.

>

> The code however assumes that the gaps in the fid-sequence are filled by

> decreasing the fids after the gap, which may be pretty specific to the

> OGR/Shapefile behaviour.

This should clearly be restricted to Shapefiles. Other drivers don't have this compaction logic and will let happily holes in the feature ids.

> Hence in my view such code should really belong

> into the OGR provider (or perhaps even ogr itself) and not in the

> plugin. Thoughts?

Regarding putting that in OGR itself, there's no such API for that right now, and I'm not completely clear of the value to add one (specific use case, for a single driver)

Perhaps the QGIS OGR provider would be a better place for now.

So that kinda works, but repacking still causes dreadful performance (say after fixing a couple of hundred "minimal area" errors, which results in the small features getting deleted, the shapefile is repacked after every delete).

So I'd really need a way to freeze repacking, even just for the timespan the plugin is busy fixing the errors. Unless there are some better ideas, I'll look at adding corresponding methods. A cool name would be beginTransaction/endTransaction which is kinda generic and could make sense for other providers as well, but unfortunately it collides with the existing transaction logic (QgsTransaction) which is about multi-layer transaction groups...


_______________________________________________
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to