We have a current system that uses a combination of SAFE FME and PostGIS data (raster and feature) to create download packages for mobile clients. The clients are typically offline web technology (e.g. Leaflet on mobile or tablets, or electron (uses Chromium and node JS) [Some are QGIS and other desktop map software, but that is not our focus here]
There are a number of drawbacks to the system, I won't list all (you can) but the chief one is that we have no clear way of pushing differential updates, or receiving back-haul data from the clients (currency, audit, as well as simple user generated GeoJSON overlay).
We believe that instead of delivering self-contained static packages (ala OGC GeoPackages) - we should provide a dynamic evergreen refresh version of the data. This could be done if we insert a GeoDataBase (in between the PostGIS and the clients) that can sync both on the host (to stage and manage the centralized store) and "child DB" which resides on each client. We have a couple of ideas (see below) but all have their drawbacks. If anyone any solutions we are unfamiliar with, or suggestions to deal with the problems we have identified - we would love to hear that.
- client is using Web-style Map client: Leaflet or Mapbox GL
- client needs read to raster tiles and read/write geoJson feature data stored in a local (offline) database
- When client comes online, it needs to sync to a master DB which will reconcile changes and multicast new raster and vector data connected clients.
- The database can be fully segmented, so that no two users are writing to the same area (i.e. it is a multiple readers, and single writer problem)
One potential solution could be to use a CouchDB as the master, and PouchDB as the client DB (e.g. leaf-pouch client ) the issue here would be that leaflet-pouch does not seem to support raster tiles.
Alternatively, use Leaflet.TileLayerCached but that seems to be just for raster caches.
Another thought would be to go with Pouch GeoPackage and use the new OGC GeoPackage standard, but one would have to build the sync software from scratch, as well as choose the master DB technology (Probably something compatible with FME so that FME could read/write the source DB and create the GeoPackage diff)
Is there another approach we are missing?