ILWIS Mobile
Introduction
ILWIS Mobile will be a mobile application for android making use of the ILWIS framework. More information can be find in the
blog post.
About the student
I, the student that is working on this project, am Bouke Pieter Ottow. I study Geo-Information Science at the university of wageningen and I have a bachelor in Civil Engineering. Until now I worked on several small projects on developing android apps with a geospatial focus. More about me can be found on my
LinkedIn profile. My mentors are Rob Lemmens, Martin Schouwenburg, Henning Bredel and Bas Retsios.
References
ILWIS Objects
Source Code
The code of the app can be found on
GitHub.
Progress reports
GSoC report week #13 (11/8/2014) | ILWIS Mobile
Status
- Current location is shown with a round marker on the map, the location is refreshed each second with the input from the gps of the device.
- When a template is downloaded a dialog pops up and asks wether or not to download the historical observations. In the map-tab of the template there is a button; show observations with a time-filter.

When the show observations is pressed the downloaded (xml) observations are parsed and shown on the map. A marker is clickable and shows then the data of the observations.
- On Thursday we had a field test. Overall the result was good, the main functions worked correctly. There were some (minor) things which should be improved in futere versions. And there are some recommendations for future functions that can be included.
- I made a start with the technical documentation including the setting up of the developing environment.
Problems
The update location button at the record observation tab seems to be not working.
There might be a little shift in the markers maybe due to the size of the image.
The upload all button doesn't work always, especially not when connection is slow.
Next tasks
- Finish the technical documentation.
- Structure the code.
- Add readme and information in a wiki to the github repo.
- Start with final blogpost.
- Make a demo.
GSoC report week #12 (4/8/2014) | ILWIS Mobile
Status
- When an observation is uploaded the response of the server is shown (see screenshot below). If the uploading fails completely and there is no response, there will be a message that it failed.
- The "continue last template" button works also after the app is restarted.
- The names of the templates are also stored with spaces, so in the lists it is shown with them.
- The location (coordinates) of the observation can be changed with a text input field, but it is not neccesary.
- When a template is downloaded, the app searches the metadata to see if there is a basemap available. If so it asks to download it:

When a template is opened of which a basemap is downloaded an extra tab is shown with "Map". When clicked the downloaded map (png image) is shown which can be panned with taps and zoomed with the buttons. The map shows now two markers, the round one will be the current location of the observer (from the GPS) and the other one a location of an historic observation. It looks like this:
Problems
The QT Location module is not available anymore in QT 5. This makes it harder to make a nice map. I solve this to just show an image and program the markers and actions myself.
Next tasks
- Current location (from the GPS) should be shown on the map.
- Previous observations should be downloaded and parsed from xml.
- Previous observations should be shown as markers on the map.
- Coming Friday I will have a field test of the app at the ITC, Enschede.
- I will create a concise document with how to set up the developing environment.
GSoC report week #11 (28/7/2014) | ILWIS Mobile
Status
- Downloading a template from the server works. First is shown which templates there are:

When one is selected it is downloaded and available for making observations.
- For all the four usecases (as shown above) a QML template is made which is available on the server.
- A settings section is added in the top menu:

Here it is possible to give the server location and the name of the observer. A default is given. This is stored and used for the uploads of the observations.
- The list which is shown to select a template is esthetically nicer:
- When an observations is made and the save button is tapped (the screen is shown in updat #10 and #9) the data of the observation is stored in a local textfile.
- In the main menu a button "Saved observations" is added (as visible in the screenshot above). When tapped an overview of the saved observations is shown:

It is possible to select one and delete it or upload it. When it is uploaded it is also deleted. With "Upload All" all observations are uploaded.
Problems
No currently unsolved problems
Next tasks
- When an observation is uploaded there is a response from the server (if it is succesful or not) this should be shown to the user.
- The "continue last template" button should also work after the app is restarted.
- In the list of templates and observations it should show the template name with spaces.
- I will create a concise document with how to set up the developing environment.
- It should be possible to change the coordinate of the observation manually.
- I will make a start with showing a background map.
GSoC report week #10 (21/7/2014) | ILWIS Mobile
Status
1.
Template file is cut in two and added to the list (from dowload folder for now)
The template file looks (for example) like this:
The first metadata part has 4 fields per input:
1) generic field name.This field name is used to couple UI and information in request/responses in a way that is generic. The field id has a different meaning in each of contexts that is used.
2) Datatype of the field. Either a single value ( e.g. char or position) or a set of values which can be shown in a combox or listview. The set items are always seperated by semi-colons
3) A more descriptive id for the field. Not striclty needed but it makes interpretation of the template line bit easier
4) Marker if the field is read-only ( seen from the client side) or readwrite, meaning that data should also be written back to the server.
S2C = readonly,
C2S = read/write
The second part is qml code for the viewing of the template. At the moment this file is downloaded in the app from the download folder of the android mobile (because the server is not yet online), then cut in two and the QML part stored as a QML file. This file is added to a list, so the template can be selected for an observation.
2.
Template is a little bit nicer with qt quick controls
Some
qt quick controls are used which makes it easier to make a standard field like a text input or comobox look pretty. For example the Water Point Mapping template looks like this:
with the selection of the water color popping up when tapped.
3. GPS position and date/time are added
When the template is opened the gps position and data/time are automatically added. When the gps is turned off it uses the course location based on the telephone signals.
Problems
No currently unsolved problems
Next tasks
- The server will be online today and then the downloading of a template should first look at the server which templates are there to download and then download the selected template from the server to the phone.
- Some more qml's should be made for other use cases (land use mapping and health)
- The observers name should be included
- Observation should be stored locally
- Observation should be uploaded to the server
GSoC report week #9 (14/7/2014) | ILWIS Mobile
Status
I programmed in QML a (functional) basis for the app. This is the opening screen with a main menu:
It gives three options about templates. With a template an observation can be recorded. The first one continues with the last used template, the second gives the option to select a template from the ones that are already in the app. The last option gives the function to download a new template from a server. For now only the second option works (yet). It gives this screen:
It has a list with the local available templates, in this case 'Water access points' and 'Animal observation'. This list is populated from c++, now still static but coming week probably dynamically regarding the dowloaded files. By selecting one item of the list the record observation screen appears:
This is one of the 'templates'. It has three input fields for normal strings and one dropdownmenu to choose of an enumerator.
Problems
The problem I am struggeling with today is to load a QML file (from QML) that is downloaded from outside the app, so it is not in the qrc file.
Next tasks
- A downloaded template file should be cut in two and then the QML part loaded in for the observation.
- The template should be downloaded from a server.
- Save an observation
GSoC report week #8 (7/7/2014) | ILWIS Mobile
Status
- Finished my course for my study where I made another app, code of this can be found here
- Met with mentors at ITC last Friday
- Made a planning
- Put the code on GitHub here
Now it just consists of the first screen:
Problems
I have been working on a good design of the different windows needed for this app. QML doesn't provide an easy method but the method described
here seems handy. I am trying to implement this method and the first screen is loaded but the second after the button is clicked doesn't work yet.
Looks now that it isn't working on desktop but it is on android. To be continued in next update.
Next tasks
- Making (coding) design for the screens
- Make the input screen flexible from available templates.
GSoC report week #7 (30/6/2014) | ILWIS Mobile
Status
- Wrote mid-term blogpost
- Wrote mid-term evaluation
- Put some code with screenshot on GitHub
Problems
Next tasks
- Finalizing (report and presentation) my course for my study (Code for the app I programmed there can be found here and the apk can be found here)
- Meeting with mentors at ITC
- Refine planning for coming period
GSoC report week #6 (23/6/2014) | ILWIS Mobile
Status
- Created a test app in qml which used a class from c++.
Problems
Next tasks
- Write blogpost
- Write mid-term evaluation
- Work on framework for the gatherer app
GSoC report week #5 (16/6/2014) | ILWIS Mobile
Status
- Made some tutorials on linking objects made in c++ with QML.
Problems
Next tasks
- Design gui framework.
- Continue building some gui in QML.
GSoC report week #4 (9/6/2014) | ILWIS Mobile
Status
- Continued practising on QML
Problems
I had difficulties making the connection of QML with c++. So for example, handling the pressing of a button in c++, but which is made in QML.
Next tasks
- Find out what is a convenient flow in the code with regards to what in QML (or Java script) and what in c++.
- Continue building some gui in QML.
GSoC report week #3 (2/6/2014) | ILWIS Mobile
Status
- I started to make a QML layout
- I practised with c++
Problems
No unsolved problems
Next tasks
- Continue working on a first screen lay-out with QML for a data filling template.
- Getting more experience with c++
GSoC report week #2 (26/5/2014) | ILWIS Mobile
Status
Start of the project.
- I finished my blog
- I put content on the wiki
- I did tutorials on c++
Problems
No unsolved problems
Next tasks
- Continue working on a first screen lay-out with QML for a data filling template.
- Getting more experience with c++
GSoC report week #1 (19/5/2014) | ILWIS Mobile
Status
Start of the project.
- I explored QT and QML (made some tutorials).
- I met my mentors in a meeting at the ITC, Enschede.
- I drafted my first blog.
Problems
None
Next tasks (for 8 hours)
- Further Experimenting with the tools to use (QT, c++, QML), I will make a first screen lay-out with QML for a data filling template.
- Finish blog
- Start-up wiki for the project.