Send offline map to device from Central

1. What is the general goal of the feature?
A simple way of remotely distributing offline maps.

At present I need to supervise this if I am using more than one device and this is even harder if the device is elsewhere - getting non-tech-savvy enumerators to download a (potentially large) file to the right place on their device is challenging! Back in the days when there was an ODK folder this wasn't too hard, but navigating through Android/data/files etc.... is not so easy when doing it remotely 'blind' by phone!

My intuitive sense is that if ODK Collect can download and process external datasets and images into the media folder from Central, can it also transfer a file to the 'layers' folder? This could be either for a given project or the 'common' Layers folder, based on a parameter in Central?

If, for example, an mbtiles file is uploaded to Central within the 'media' for a form, could ODK Collect move files of that type to the layers folder when it checks to update the form(s)?

I know that this has some risks of people using stupidly large mbtiles files, but I'm interested in the functionality. Maybe a 'download over wifi only' option could be included to stop fools like me abusing other people's devices.

2. What are some example use cases for this feature?

A base map for a given area with specific data (e.g. habitat, project boundary) or required / suggested locations for data collection.

Ability to share licensed base maps or orthorectified imagery more easily within a team or project (within the confines of the licenses of course!)

Ability to use different base maps within a team without needing to talk people down from the ledge of 'I don't know where to put this file'

Used in combination with the select_one from a map functionality this becomes an even more useful tool...

3. What can you contribute to making this feature a reality?

Just the usual dumb contributions of 'why doesn't this work like I want it to?' :slight_smile:

I did discover that you can share mbtiles files by Bluetooth if you first change the filetype from .mbtiles to .doc, send the fiile, then on the new device change it back to .mbtiles! Really useful in the field if one device plays up or another team member hasn't prepared properly for their fieldwork (just saying!). But of course you need to be in Bluetooth range...


Just thinking about this from the users' perspective (As I'm in the process of loading maps on to a device).

Would it be possible [for an administrator / manager] to upload maps to Central e.g. in an additional tab marked 'layers'. And then [the enumerator or manager could] use Collect to download maps that are on the Central server in a similar way to 'get blank forms'.

This would (mostly) utilise existing processes rather than a whole new set.

And it could potentially have the 'match the server exactly' setting to download all the maps related to a project or form... Still needs some care when considering bandwidth.

Hi @seewhy !

I remember we discussed about it in the past : Button to select an offline map file on the phone and move it at the right place

We should imagine the "same" possibility for choices csv or json datasets : no need to get and compute the whole regional 100m square grid to show an select_one map on a small site. But these are not as simple as images...

1 Like

I am hoping that there might be a 'simple' alternative that could be implemented...

I have encountered an issue that draws things into sharp focus and might present problems for others, particularly those who work with cautious / controlling IT departments...

I am working on a project with a distributed 'team' of enumerators. I have a small number of devices dedicated to this project that are being shared (which means posting them around the country!), and I have loaded base maps for 60+ locations on these devices. The base maps include a layer to identify existing entities that are being audited (and my form also has points to select_one from the map).

I have been offered use of other devices to speed up data collection, but they are 'locked down' so that the enumerator does not have access to the Android folder (or subfolders), so even though they can download the .mbtiles to the device, they can't get them to the right place. They are not allowed to plug in these devices to a PC so cannot get them on to the device that way...

I am wondering if there might be a way to select an alternative folder for Layers - one that is accessible to the user (e.g. the user creates a sub-folder in 'Download' and ODK Collect points at that?) - it probably requires the user to set that destination in the app settings, but might be a more simple 'solution' to sending the .mbtiles via Central... Lots of other apps seem to be able to use this method to access the device storage (e.g. setting a default folder) so I'm naively assuming it is Android 'legal' / possible and would require a 'layers folder location' variable in settings to over ride the default.

I think that the 'Download' folder is locked, so it would need to be one created by the user or ODK Collect. I recognise there could be an issue that other apps would have access to this folder (but there is also an advantage if the enumerator uses a navigation app that can load .mbtiles to help their navigation to the desired locations). Hopefully that would not be a show-stopper and projects that have highly sensitive baseline data may not be able to use this feature...