osmagent

Hey, for anyone who was wondering what I have been up to in the last year or so, other than playing through very old Clonk scenarios: I have been working on an Android app more or less the past year and I am getting close to a first release.

I am writing this in English because I am just gonna copy the text that I wrote as an announcement in the openstreetmap forum :tongue:
Though, curiously enough, it might be more interesting for you guys than for the people in that forum, because the app is aimed at “OSM newcomers”. Here it goes:

Osmagent is a tool for surveyors that doesn’t require any knowledge about the tagging schemes in OpenStreetMap and also doesn’t require the surveyor to return home after the survey, launch JOSM and spend an equal amount of time inputting the data into the database:

The app searches for incomplete or extendable data in the user’s vicinity and presents the user with a map of “quests” (like i.e. in Mapdust) that each are solvable by answering a simple question while surveying it. Basically, take the concept of Mapdust and Maproulette, add the ability to solve them on-site and you got osmagent. :smiley:
The data input by the user is then directly added to the OSM database, making it available for others immediately and also eliminating the need for editing tools to insert the info later when back from the survey.

Some examples of what the app might ask:

* What is the name of this road / shop / place / bus stop / etc. ?
* What are the opening hours of this shop / place / etc.?
* How many lanes does this road have?
* What is the surface / smoothness of this road? (User selects which photo fits the best)
* Does this road have a sidewalk?
* How many storeys does this building have?
* etc. … many more

The Idea
The idea for the project came to me when I realized how inefficient and time-consuming a GPS survey is:
* regardless of which mapping technique I used, it always boiled down having to spend several hours to “process” the GPS trace in front of the PC
* During a survey, I had no clue how well-surveyed the area already was because many details like road surfaces, building heights, etc. are not shown on the default (offline) map I use during a GPS survey. Also, house numbers might generally be defined, but missing for only one street or a few houses. So, often I noted down information that was already there. Also recording any possible information that might be missing takes a lot of time and a survey starts to feel tedious. Wouldn’t it be nice if someone already collected everything that is missing for me?
* I like to contribute to the OSM, but I realized that many others also like to contribute while only few have the leisure to acquaint themselves with how to survey and even less are able to program tools and apps that help. So I can better contribute to the OSM in helping others to contribute.

The Name
I had the idea for the name when I overheard someone saying something along the lines of that “google has their agents [who survey these things]” when I was impressed on seeing the Google indoor maps of certain shopping centres. Well, with this app, anyone can be an agent for OpenStreetMap!
I realize that “agent” might carry a negative undertone for some people, so I am not set on this name yet. I thought of osmscout, but this name is already taken. Another name that recently crossed my mind is mapcomplete (leaned towards “achievement complete”). Let me know what you think.

Features
* decentralized: The app only communicates with OSM and Overpass, no third server involved. Consequently, you do not need any other account than your OSM account.
* data economic: The app downloads sparse data from Overpass and only that which it needs to display the quests
* offline-usage: Sync-only-on-Wifi option. You can solve the quests offline, when you return to some online-place, the OSM changes are automatically uploaded, conflicts are resolved automatically. You can download the quests for an area beforehand.
* oauth: The answers you give are created as atomic commits with reasonable comments and source tags in your name
* Mu: For each quest, you have the possibility to leave a public note instead of answering the question, i.e. if app asks for the opening hours of the shop but in reality the shop does not exist anymore. A note at a location blocks any other quests, so other users are not bothered about an unanswerable question at that position as long as it is not solved. Alternatively, they can just hide the quest for themselves.
* Answering notes: The other way round, users may also answer on other people’s notes
* 3D Map rendering: I am using Tangram-ES to render the map, which is capable of rendering the buildings in 3D and also apply all kinds of shaders to the map. Other than that the map may look cool, it also means that it would be possible to directly display the answer the user gave on the map (i.e. the building height) :cool:

State of development
See here: https://github.com/westnordost/osmagent

Of the quests, currently implemented are only “road name”, “shop opening hours” and “contribute to note” as proof-of-concepts, I am still working on the base system.
What’s missing on the base system is the logic when the system should download quests and upload the changes the user made. Also, since the app is making direct changes to the DB in the name of the user, I want to write more tests before I make it available.
But that’s it, pretty much, what is missing for a first release.

Tell me your ideas for further quest(ions) the app might ask the user and the user may answer on-site. :slight_smile:
Also, if you want to contribute somehow to the app itself, you are very welcome (also without Android programming knowledge)!

Ihr könnt auch auf deutsch antworten, wie gesagt ich habe das primär für das OSM Forum geschrieben und dachte nur, das könnte auch jemanden hier interessieren.

Funktioniert das offline oder braucht man ne Datenverbindung damit das funktioniert?

Kurze Antwort: Ja.

Du brauchst einmal eine Datenverbindung, um die Quests runterzuladen, danach nicht mehr. Man kann also auch die Quests lösen während man offline ist. Sobald man wieder online kommt, werden die gelösten Quests automatisch hochgeladen.
Die Quests kannst du dir von zuhause in dem Bereich runterladen wo du längs gehen möchtest.

Die Kartenansicht allerdings hängt am Internet, da die Lib die ich benutze derzeit noch keine Offline-Karten unterstützt. Das bedeutet dann, dass wenn du offline bist, du auf der Karte nur die Quest-Marker siehst und deine eigene Position, die Straßenansicht bleibt aber grau. Geht natürlich auch, aber ist nicht so schick.
Edit: Es sei denn die Karte ist noch im Cache, dann siehst du auch die Karte. Die Größe des Caches kannst du selbst einstellen.

Hast du schon mal überlegt, da einen "Gamification"-Ansatz mit reinzubringen? Ich hatte mir das immer bei dem Pokemon Go Hype überlegt, wie man die Manpower sinnvoll nutzen könnte. Das hier wäre ja ein sehr guter Ansatz :slight_smile:

Ja, habe ich. Allerdings noch nichts davon implementiert und ist die Frage wie viel davon noch kommt. :sad:

Gamification war sogar meine ursprüngliche Idee: es sollte unterschiedliche “Questgeber” mit jeweils eigenen Avataren und Charakter geben, die die User dann verschiedene Quests geben, z.B. Der Architekt will wissen wie hoch die Gebäude sind, die Motte will wissen welche STraßen beleuchtet sind, der Skater will wissen wie glatt eine Straße ist, usw.
Je nachdem wie viele Quests man dann von dem einen oder anderen erledigt, kriegt man dann Orden/Achievements, es gibt ein globales Leaderboard und ausgiebige Statistiken über die eigene Leistung/Contributions. Für letzteres würde ich einfach http://hdyc.neis-one.org/?westnordost parsen und aufbereiten :slight_smile:

Allerdings habe ich das erstmal nach hinten geschoben um das Grundsystem zum laufen zu bekommen, mir fehlen auch die Grafiken für diese ganzen Avatare.
Was aber auf jeden Fall kommt, ist ein “Quests erledigt” Counter und ein Leaderboard. Die Daten aus hdyc.neis-one.org zu verarbeiten sollte auch relativ einfach sein. Aber das hat alles geringe Priorität für mich.
Außerdem werde ich wohl früher oder später den Tron 2.0 o.ä Stil einsetzen, weil der ganz cool aussieht und auch bischen zu Gamification passt.

Ich brauch eure Hilfe. Ich kann mich einfach nicht für einen Namen entscheiden. Ich wüsste gern wie ihr die möglichen Namen so findet oder auch gern alternative Namensvorschläge. Ich habe mal eine Umfrage gestartet.

osmagent
OSM ist kurz für OpenStreetMap. Agent weil man praktisch als ein OSM “Agent” herumläuft und die Quests löst. Ausgesprochen wohl “os-mäigent”.

MapGap
Weil die App sich um das Lösen der “gaps” in den OSM Daten dreht. Reimt sich und ist kurz. Openstreetmappern ist MapDust bekannt, ein Tool mit dem man inkonsistente Daten findet. “Map” im Namen könnte allerdings dazu führen dass Google Play User fälschlicherweise erwarten, dies sei eine Karten-App.

Street Complete
Weil die App sich um das Vervollständigen von Informationen rund um Straßen dreht (und wegen OpenStreetMap). Reimt sich, ist aber etwas lang.

osmAgent!

Mit A groß ist es besser. Bei "osmagent" lese ich immer "OS-Magnet".

Ging mir genau so!

Die Umfrage hier im Forum war am Ende leider nicht so aussagekräftig. Ich hatte auch mal in meinem Bekanntenkreis herumgefragt. Da war das dann sehr eindeutig.

Die App heißt jetzt StreetComplete. Ich habe grad auch eine early beta im OSM Forum gepostet, wer Interesse hat -> https://forum.openstreetmap.org/viewtopic.php?pid=620441

Worüber man so zufällig stolpert…