Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[geogig-dev] Handling of multiple layers with geogig web api and geogig plugin

Hello geogig developers,

I am just implementing an additional GUI for gegig in QGis. This shall be an addition to boundlessgeo/qgis-geogiglight-plugin indented to "normal" users and not "admins" (how ever that distinguish is done).
You can have a look at the description of it in https://github.com/SWM-IT/qgis-netze-gas/blob/master/documents/en_gb/Dokumentation%20GeogigLocalClient.rst

One basic idea of that plugin is, that the user shall not take care on individual layers. Instead all actions are done on all layers of the repository. (Note that in our scenario we will have about 30 layers on the start and potentially a hundred layers in a final state).
To achieve this, I iterate over all layers and do the wanted actions on each layer. But this turns out to be inefficient because it generates too much overhead. So we will soon run into performance issues.

Here my question: Is it possible to do these actions on a list of layers (or all layers of a repository) at once?

I dit some research on the geogig plugin:
- I think repository exportdiff takes the layername only as an optional parameter. Thus if I don't provide it, all changes from the geogig repository should be sent to the client. This means, gpksync.applyLayerChanges could be extended to perform the action on all layers of the repository.
- More complex may be repository.importgepkg. I assume, it should be possible to create a file with changes for each layer via saveaudittables(filename, layername). The question is: Is it possible to send more than one file with one request to the server. Or would it be easier to store all changes of all layers of the repository in one file? Can the server handle such a file?
- Another point is, how to show the local changes of all layers. Here a simple extension of LocalDiffViewerDialog could help. Do not store one layer in LocalDiffViewerDialog .layer but a list of layers (lets say in LocalDiffViewerDialog .layers) and extend computeDiffs to iterate over that list (I implemented a sub class on LocalDiffViewerDialog to do exactly that, but I would prefer to see that in the base class of course, see https://github.com/SWM-IT/qgis-netze-gas/blob/master/source/examples/python/plugins/GeogigLocalClient/gui/dialogs/multilayerlocaldiffviewerdialog.py)


I am interested to hear your opinion on this approach and whether some development in this direction can be done in the geogig plugin (and if needed the geogig and esp. the server api itself).


Mit freundlichen Grüßen / Kind regards

Markus Heße
Software Architekt – Projektleiter /
Software Architect – Project Manager

Mettenmeier GmbH
Klingenderstr. 10 - 14
33100 Paderborn, Germany

T  +49 5251 150-363
F  +49 5251 150-366
M  +49 173 2474123
E  
markus.hesse@xxxxxxxxxxxxxx
I  
www.mettenmeier.de

Mettenmeier GmbHXING - Mettenmeier GmbHFacebook - Mettenmeier GmbHYouTube - Mettenmeier GmbHTwitter - Mettenmeier GmbH

_______________________________________________________

Mettenmeier GmbH
Sitz der Gesellschaft: 33100 Paderborn
Geschaeftsfuehrung: Ulrich Mettenmeier
Handelsregister: Amtsgericht Paderborn B 1114
USt.-ID: DE 811 324 124
Steuer-Nr.: 339/5873/3133
_______________________________________________________


Back to the top