1. What is the problem? Be very detailed.
I want to be able to send GPS data down with the form and display the geopoint on the Map before the user interacts with the form. When I go to "Fill Blank Form", a map icon appears, but when I display the map, the geopoint does not display. My geopoints are outside of a repeat group (although there are repeats in the form).
2. What app or server are you using and on what device and operating system? Include version numbers.
I'm using ODKCollect v1.27.2 on Android Version 10.
3. What you have you tried to fix the problem?
I have tried opening the blank form, saving it, and then reloading the map, and this seems to work, but this is not ideal.
4. What steps can we take to reproduce the problem?
I'm not sure what needs to be done with this to display geopoints on blank forms, but I'd like to know if this is a known issue, or whether there is something I can do to facilitate this functionality.
5. Anything else we should know or have? If you have a test form or screenshots or logs, attach below.
welcome to the forum! Please introduce yourself here!
that button in
Fill Blank Form opens a map that displays saved instances of a particular form so it's not something you can use to achieve your goal.
The only way is to add
geopoint question with
maps appearance and add your location as default value.
Thank you for your prompt reply.
If I add the geopoint question with maps appearance, does the form still need to be saved in order to display the geopoint on the blank form?
I was thinking about it as of a replacement. That would be a widget which would display the location you want.
But seems like you want to use that map from Fill Blank Form list so answering your question:
first of all yes the form needs to be saved
and second of all that map displays only locations saved using geowidget without any appearances so it wouldn't even work if you saved the one with maps appearance I mentioned.
I see, ok that's very useful information.
Do you know if this feature is in the works, or do I need to make a suggestion on the board?
We normally have the gps locations of where we want to fill in the form before we arrive on site. So it would be very useful to preload the gps locations on the blank form and have our team know exactly where that form needs to be filled out.
Thanks for your help.
We are not working on such feature so please create a separate topic in Features and describe everything carefully (especially your real use case).
You could create a map layer (mbtiles) with the locations shown on the layer - see the image as an example:
(red crosses are one vector layer exported from QGIS with the background mapping included, the red circle is the ODK data point stored for this instance). There are instructions in the Docs section about using offline maps (mapbox) and layers...
This works really well to navigate to the right location and SHOULD also work with the feature of showing a map with existing data points on your phone (to avoid duplication) - I'm just about to post a support question with a problem I have with this, so your question was (almost) relevant, but I think you're looking for something else perhaps as a default location?
What you're looking for sounds like location-based task assignment. You know you want person A to go to locations A1, A2 and A3 and that person B should go to B1, B2 and B3. There is no seamless solution for doing this currently but it is being considered as part of the broad topic of repeat encounters. Using the form map to display such assignments is something we are keen to work towards.
What would be most helpful instead of a feature description is a more complete description of your workflow. You can share it in this thread and then we can link it from ODK ecosystem entity-based data collection table of contents. Some questions that would be helpful to get insights on:
- how many different data collectors do you have?
- how many different locations does each data collector need to visit?
- how are assignments geographically distributed? That is, is each data collector doing a specific region?
- are the locations identified in any way (e.g. Bob's house, western river bank, etc)
- how are the locations to visit originally discovered (e.g. does someone fill out another form while visiting the region? Is it based on some process completed at a desk?)
- are the same locations visited multiple times? If so, is it always by the same data collector?
I really like @seewhy's approach. If you have a limited number of data collectors or each is in charge of a distinct region you can imagine having a single layer and using different color markers for each person's assignments. Then they can use the form map to navigate to a marker and start filling the form there.
An alternative or something you could use in addition to that approach is having a question in the form that lets a data collector select a particular assignment. For example, you can have a first question where an enumerator enters in or selects their enumerator identifier (or it could be based on metadata such as their username). That can filter down a list of locations that this person is supposed to visit using
choice_filter. Once a data collector selects a location, that can populate a geopoint question or even call out to a navigation application (What is the best way to help direct data collectors to a destination?). There are lots of ways you could make this easier on your data collectors including updating the form daily to reflect daily assignments (you'd likely want your forms to automatically update).
Exactly that! A small team, with allocated areas for this particular purpose. And I've just solved my support question that I was about to post, so my adapted form can be used for navigation to the right point, and the Fill Empty Form map helps ensure that each enumerator doesn't repeat a point (which has happened in poor visibility on a featureless mountain side!).
Really looking forward to that next leap when the map can display points held within repeat groups (I had to adapt my form to 'lose' a level so there are no repeats).
@LN I like the idea of selecting locations from drop-down list (presumably you do that with a calculate field?) - I can see an application for that already with repeat surveys - do you have the form logic available somewhere? The offline map feature of the geopoint widget would work well with this to navigate to that point, similar to the way I've been using the basemap.
Thanks, as always.
Thanks for all your support. Yes, perhaps I should explain in more detail what we do.
We work with water companies in the UK to identify leaks on customer supplies. This involves our site team to visit the external stoptap (a hole in the ground with access to the water pipe), where we attach our sensor. It is important for us to record the connection/disconnection date and varies bits of information about the stoptap. However, a stoptap chamber can have multiple supplies (pipes) and a supply can have multiple properties associated with it (i.e. one pipe can feed multiple houses). To get around this many-to-many relationship, we have one set of forms for the property and another set for the pipes (and more forms for when we locate a previously unknown property or pipe). So, we're essentially using the forms as a jobs list.
This process requires multiple visits and multiple operations team members to carry out the work. We've seen that there are often stoptaps in very obscure locations, so if one person finds a new tap, records it (along with the gps data), the next person may not know where the tap is and on the second sweep the tap may be missed. However, if we have a map of all the geopoints from the first sweep or if we see a job on the forms list that has not been done, being able to locate that tap on a map and show our current location would be very very useful.
To answer your questions directly:
how many different data collectors do you have?
20 at the moment but likely more in the future.
how many different locations does each data collector need to visit?
1000s, but each person visits around 100 per day.
how are assignments geographically distributed? That is, is each data collector doing a specific region?
Yes, Water companies in the UK group properties into DMAs (District Metered Areas), and they can range from 20-2000 properties in each DMA. But we also work across DMAs too, so we can sometimes generate 5000+ forms.
are the locations identified in any way (e.g. Bob's house, western river bank, etc)
Yes, they are broken down into 'Bob's house' and 'the stoptap to Bobs house'.
how are the locations to visit originally discovered (e.g. does someone fill out another form while visiting the region? Is it based on some process completed at a desk?)
Both, we get an address list from the water company (we use this to generate the forms list) and we can identify new stoptaps while visiting the area.
are the same locations visited multiple times? If so, is it always by the same data collector?
Yes, and most likely different data collectors.
I hope this clarifies what we're trying to accomplish.
Take a look at the sample from the form navigation thread. You'll see that there's a choice list with latitudes and longitudes for each selectable item. Those coordinates get pulled into calculates, as you described, and then you can do whatever you need to do with them. For example you could use a calculate to concatenate them with a space in between, make that field readonly and geopoint with the
maps appearance. That way an enumerator could open the map and see the point but not modify it.
I really appreciate your detailed writeup, @J_D1. That gives me a much clearer sense of your needs.
This discussion is timely indeed as the Technical Steering Committee is now considering the general space of selecting existing map features as part of the data collection process. I tagged you in a related feature thread at Ability to load locations into the geowidget to guide data collection and also linked your writeup from ODK ecosystem entity-based data collection table of contents.
I'll try to keep this thread updated on our progress and may get in touch about doing a more formal user interview.