StreetComplete-Statistiken
Ich habe ein paar statistische Auswertungen rund um StreetComplete gemacht, und in diesem Post beschreibe ich was ich Ausgewertet habe und was die Ergebnisse sind.
Zunächst einmal: Wie habe ich diese Daten ausgewertet, bzw. woher habe ich all die Infos, über die ich hier rede? Grundlage war das Skript StreetCompleteNumbers, dass ich vor einiger Zeit geschrieben habe. Es ist ein Python-Skript, mit dem man die Anzahl der gelösten Quests für einen Nutzer herausfinden kann. Das Skript gibt es auch auf GitHub. Dieses Skript kann man sehr einfach verwenden:
from StreetCompleteNumbers import StreetCompleteNumbers
StreetCompleteNumbers("maxmustermann")
Dann galt es nur noch herauszufinden, wer denn die Nutzer sind, deren StreetComplete-Zahlen wir herunterladen wollen. Dabei habe ich versucht eine Methode zu entwickeln, die eine möglichst kleine Anzahl an Anfragen an die OpenStreetMap-Server stellt. Also einfach für jeden Nutzer der mir unterkommt die gesamte Changeset-History runterladen sollte vermieden werden.
Ich nutzte die täglichen replication-Diffs seit Oktober 2021 (also seit vor einem halben Jahr). Ich lud jede diff-Datei herunter, und sah mir jedes Changeset, dass in ihm vorkommt, an. Sollte ein Changeset den Changeset-Tag StreetComplete:QuestType
enthalten, löse ich für diesen Nutzer ein herunterladen und abspeichern seiner Zahlen aus. Außerdem merkt sich das Programm, für welche Nutzer es schon StreetComplete-Zahlen abgespeichert hat, damit sie nicht zweimal für den selben Nutzer heruntergeladen werden.
Dadurch hatte ich am Ende die StreetComplete-Zahlen für 5284 Nutzer, was meine Datenbasis darstellte. Und so sind wir auch direkt bei der ersten Limitierung dieser Auswertung angelangt. In dieser Statistik tauchen nur Nutzer auf, die zwischen Oktober 2021 und März 2022 mindestens eine StreetComplete-Quest gelöst haben.
Bevor wir jetzt zu den Statistiken kommen, sei noch gesagt, dass ich in dieser Auswertung keine Nutzer beim Namen nennen möchte, weswegen wir gleich nur die Länder der Top-Nutzer sehen werden. So, kommen wir jetzt aber zu den Statistiken:
Wie viele ★ haben die Top-Nutzer?
Die unten stehende Statistik zeigt die Liste an Top-Nutzern in meinem Datensatz zusammen mit ihren Sternen und dem Land, aus dem sie kommen. Hier sei gesagt, dass ich das "Land aus dem sie kommen" "manuell" ermittelt habe. Also ich habe mir die OSM-Profile der betreffenden Nutzer angesehen und einfach nachgesehen wo ihre letzten Changesets so gemacht wurden. Es könnte also absolut sein, dass ich einfach einen ungünstigen Zeitpunkt erwischt habe und die betreffende Person einfach gerade woanders im Urlaub war.
Wie viele Nutzer haben deaktivierte Quests aktiviert?
Dafür habe ich selbst eine Liste mit den standardmäßig deaktivierten Quests erstellt und für jeden Nutzer in meiner Datenbasis überprüft, ob er für mindestens eine dieser Quests mindestens eine Lösung hat. Die Auswertung zeigte, ein Drittel der Nutzer hat nicht eine einzige standardmäßig deaktivierte Quest gelöst. Das muss in der Theorie nicht heißen, dass diese Nutzer keine dieser Quests aktiviert haben, aber da viele Quests deaktiviert sind, weil sie so spammy sind, haben wir hier denke ich eine gute Abschätzung.
Wie viele Quests wurden insgesamt gelöst?
Die Daten, die mir zur Verfügung stehen, weisen darauf hin, dass über 14 Millionen Quests mit StreetComplete gelöst wurden. (Genau gesagt waren es zum Zeitpunkt der Erhebung 13.975.938 Quests, weswegen die Prozentzahlen in der unteren Tabelle auch von diesem Wert ausgehen.)
Wie verteilen sich die gelösten Quests auf die Farben?
Bei StreetComplete hat jede Quest eine Farbe, die sie einer groben Kategorie zuordnet. Die Kategorien sind die Folgenden:
- Blau steht für Gehwege und Fußgänger
- Gelb steht für Straßen und Autos
- Hellgrau (Beige?) steht für Gebäude
- Dunkelgrau steht für
man_made
, also so ungefähr "Infrastruktur" - Orange steht für Geschäfte
- Pink steht für Fahrräder
- Grün steht für öffentliche Einrichtungen wie Bänke und Mülleimer
- Braun steht für Natur
Hier ist die Verteilung als Grafik:
Und hier als Tabelle:
Einzelne Farbe | Gesamt | Prozent | |
---|---|---|---|
Hellbraun | 91112 | 13975938 | 0,65% |
Grau | 109326 | 13975938 | 0,78% |
Orange | 307434 | 13975938 | 2,20% |
Grün | 391304 | 13975938 | 2,80% |
Pink | 585953 | 13975938 | 4,19% |
Gelb | 2963361 | 13975938 | 21,20% |
Blau | 4697256 | 13975938 | 33,61% |
Hellgrau | 4830192 | 13975938 | 34,56% |
Welche Quests werden am häufigsten/seltensten gelöst?
Hier ist eine Grafik, die die 3 am häufigsten gelösten Quests zeigt, sowie die Quests, die insgesamt von allen Nutzern unter 100 mal gelöst wurden:
Ich denke, die Quests mit den extrem wenigen Lösungen lassen sich alle relativ einfach erklären:
- "Kann man an dieser Tankstelle selbst Tanken?" wird in Deutschland - was bei OSM und StreetComplete sehr stark vertreten ist - nicht angezeigt
- "Gibt es an diesem Gipfel ein Gipfelbuch?" ist wahrscheinlich deswegen nicht so oft beantwortet worden, weil es zum einen nicht so viele Gipfel gibt. Zum anderen ist mit StreetComplete durch eine Stadt zu rennen das eine, aber mit StreetComplete auf Berggipfel zu klettern schon was anderes :D
- Die Barrieren-Quests, Klimaanlagen-Quest und physische-Höhe-Quest sind alle relativ neu und wahrscheinlich deshalb noch kaum beantwortet. Bei der Klimaanlagen-Quest kommt hinzu, dass sie standardmäßig deaktiviert ist, und die physische-Höhe-Quest ist meiner Meinung nach auf dem letzten Platz, da man für sie das AR-Vermessungstool nutzen muss, was nicht alle Handys haben
Diese Grafik zeigt ein paar mehr der Quests:
Und hier ist die ganze Liste mit Quests aufsteigend nach der Anzahl ihrer Lösungen:
Quest-ID | Anzahl gelöst | Alle gelösten Quests | Anteil dieser Quest an allen Lösungen |
---|---|---|---|
AddMaxPhysicalHeight | 19 | 13975938 | 0,0001% |
AddAirConditioning | 52 | 13975938 | 0,0004% |
AddBarrierOnRoad | 60 | 13975938 | 0,0004% |
AddSummitRegister | 65 | 13975938 | 0,0005% |
AddBarrierOnPath | 76 | 13975938 | 0,0005% |
AddFuelSelfService | 93 | 13975938 | 0,0007% |
AddAcceptsCash | 122 | 13975938 | 0,0009% |
AddPoliceType | 126 | 13975938 | 0,0009% |
AddCyclewayWidth | 149 | 13975938 | 0,0011% |
AddTrafficCalmingType | 214 | 13975938 | 0,0015% |
AddWheelchairAccessToiletsPart | 376 | 13975938 | 0,0027% |
CheckOpeningHoursSigned | 380 | 13975938 | 0,0027% |
AddFerryAccessPedestrian | 389 | 13975938 | 0,0028% |
AddFerryAccessMotorVehicle | 454 | 13975938 | 0,0032% |
AddStileType | 502 | 13975938 | 0,0036% |
AddBarrierType | 631 | 13975938 | 0,0045% |
AddCameraType | 717 | 13975938 | 0,0051% |
AddBikeParkingFee | 756 | 13975938 | 0,0054% |
AddWheelchairAccessOutside | 756 | 13975938 | 0,0054% |
AddStreetParking | 771 | 13975938 | 0,0055% |
AddLevel | 802 | 13975938 | 0,0057% |
AddBikeParkingAccess | 938 | 13975938 | 0,0067% |
AddChargingStationOperator | 992 | 13975938 | 0,0071% |
AddReligionToPlaceOfWorship | 1027 | 13975938 | 0,0073% |
AddRoadWidth | 1032 | 13975938 | 0,0074% |
AddMotorcycleParkingCapacity | 1060 | 13975938 | 0,0076% |
AddIsBuildingUnderground | 1102 | 13975938 | 0,0079% |
AddSelfServiceLaundry | 1169 | 13975938 | 0,0084% |
AddClothingBinOperator | 1313 | 13975938 | 0,0094% |
AddBusStopRef | 1335 | 13975938 | 0,0096% |
SpecifyShopType | 1354 | 13975938 | 0,0097% |
AddIsDefibrillatorIndoor | 1388 | 13975938 | 0,0099% |
AddSuspectedOneway | 1501 | 13975938 | 0,0107% |
AddAtmOperator | 1502 | 13975938 | 0,0107% |
AddInternetAccess | 1515 | 13975938 | 0,0108% |
AddDrinkingWater | 1673 | 13975938 | 0,0120% |
AddChargingStationCapacity | 1910 | 13975938 | 0,0137% |
AddPostboxRef | 1919 | 13975938 | 0,0137% |
AddInformationToTourism | 2113 | 13975938 | 0,0151% |
AddPostboxRoyalCypher | 2151 | 13975938 | 0,0154% |
AddBabyChangingTable | 2202 | 13975938 | 0,0158% |
AddReligionToWaysideShrine | 2240 | 13975938 | 0,0160% |
AddOrchardProduce | 2315 | 13975938 | 0,0166% |
AddGeneralFee | 2448 | 13975938 | 0,0175% |
AddCarWashType | 2455 | 13975938 | 0,0176% |
AddToiletAvailability | 2519 | 13975938 | 0,0180% |
AddMotorcycleParkingCover | 2638 | 13975938 | 0,0189% |
AddBicycleBarrierType | 2994 | 13975938 | 0,0214% |
DetermineRecyclingGlass | 3040 | 13975938 | 0,0218% |
CheckShopType | 3736 | 13975938 | 0,0267% |
AddWheelchairAccessPublicTransport | 3834 | 13975938 | 0,0274% |
AddOneway | 4034 | 13975938 | 0,0289% |
AddHalal | 4192 | 13975938 | 0,0300% |
AddVegan | 4536 | 13975938 | 0,0325% |
AddKosher | 5104 | 13975938 | 0,0365% |
AddFireHydrantDiameter | 5136 | 13975938 | 0,0367% |
AddWheelchairAccessToilets | 5293 | 13975938 | 0,0379% |
AddSport | 5531 | 13975938 | 0,0396% |
AddBoardType | 5706 | 13975938 | 0,0408% |
AddPicnicTableCover | 6012 | 13975938 | 0,0430% |
AddBusStopName | 6301 | 13975938 | 0,0451% |
AddRecyclingType | 7075 | 13975938 | 0,0506% |
AddToiletsFee | 7367 | 13975938 | 0,0527% |
MarkCompletedBuildingConstruction | 7492 | 13975938 | 0,0536% |
AddFireHydrantPosition | 9948 | 13975938 | 0,0712% |
AddRecyclingContainerMaterials | 11610 | 13975938 | 0,0831% |
AddVegetarian | 11861 | 13975938 | 0,0849% |
AddFireHydrantType | 11906 | 13975938 | 0,0852% |
AddBridgeStructure | 12060 | 13975938 | 0,0863% |
AddCrossing | 16934 | 13975938 | 0,1212% |
AddPostboxCollectionTimes | 17080 | 13975938 | 0,1222% |
AddBollardType | 18123 | 13975938 | 0,1297% |
AddPitchLit | 19606 | 13975938 | 0,1403% |
AddRailwayCrossingBarrier | 20071 | 13975938 | 0,1436% |
AddBikeParkingType | 20437 | 13975938 | 0,1462% |
AddPitchSurface | 22116 | 13975938 | 0,1582% |
AddMaxWeight | 22556 | 13975938 | 0,1614% |
AddCyclewaySegregation | 25751 | 13975938 | 0,1843% |
AddBikeParkingCapacity | 26817 | 13975938 | 0,1919% |
AddProhibitedForPedestrians | 27273 | 13975938 | 0,1951% |
AddCyclewayPartSurface | 28265 | 13975938 | 0,2022% |
AddShoulder | 28278 | 13975938 | 0,2023% |
AddFootwayPartSurface | 28794 | 13975938 | 0,2060% |
AddBikeParkingCover | 31671 | 13975938 | 0,2266% |
AddPathSmoothness | 33433 | 13975938 | 0,2392% |
AddPlaygroundAccess | 35503 | 13975938 | 0,2540% |
MarkCompletedHighwayConstruction | 40526 | 13975938 | 0,2900% |
AddStepCount | 41660 | 13975938 | 0,2981% |
AddTracktype | 41834 | 13975938 | 0,2993% |
AddKerbHeight | 42755 | 13975938 | 0,3059% |
AddMaxHeight | 43728 | 13975938 | 0,3129% |
AddRoadSmoothness | 44434 | 13975938 | 0,3179% |
AddTactilePavingKerb | 44713 | 13975938 | 0,3199% |
AddPlaceName | 46825 | 13975938 | 0,3350% |
AddStepsIncline | 49162 | 13975938 | 0,3518% |
AddPowerPolesMaterial | 62784 | 13975938 | 0,4492% |
AddWheelchairAccessBusiness | 63226 | 13975938 | 0,4524% |
AddTrafficSignalsVibration | 63457 | 13975938 | 0,4540% |
AddTrafficSignalsSound | 69883 | 13975938 | 0,5000% |
AddBusStopLit | 70486 | 13975938 | 0,5043% |
AddHandrail | 72727 | 13975938 | 0,5204% |
AddTrafficSignalsButton | 75446 | 13975938 | 0,5398% |
AddStepsRamp | 77822 | 13975938 | 0,5568% |
AddBinStatusOnBusStop | 82291 | 13975938 | 0,5888% |
AddForestLeafType | 88295 | 13975938 | 0,6318% |
AddRoadName | 93765 | 13975938 | 0,6709% |
AddBenchStatusOnBusStop | 94389 | 13975938 | 0,6754% |
AddBenchBackrest | 98525 | 13975938 | 0,7050% |
AddParkingFee | 100644 | 13975938 | 0,7201% |
AddBusStopShelter | 107404 | 13975938 | 0,7685% |
AddParkingType | 108408 | 13975938 | 0,7757% |
AddTactilePavingBusStop | 119748 | 13975938 | 0,8568% |
CheckExistence | 124524 | 13975938 | 0,8910% |
AddParkingAccess | 141111 | 13975938 | 1,0097% |
AddCrossingType | 145072 | 13975938 | 1,0380% |
AddOpeningHours | 160341 | 13975938 | 1,1473% |
AddCrossingIsland | 170003 | 13975938 | 1,2164% |
AddMaxSpeed | 190915 | 13975938 | 1,3660% |
AddAddressStreet | 268936 | 13975938 | 1,9243% |
AddTactilePavingCrosswalk | 283199 | 13975938 | 2,0263% |
AddLanes | 325145 | 13975938 | 2,3265% |
AddSidewalk | 427435 | 13975938 | 3,0584% |
AddHousenumber | 441068 | 13975938 | 3,1559% |
AddCycleway | 448175 | 13975938 | 3,2068% |
AddRoofShape | 850171 | 13975938 | 6,0831% |
AddPathSurface | 999441 | 13975938 | 7,1512% |
AddBuildingLevels | 1379383 | 13975938 | 9,8697% |
AddWayLit | 1541163 | 13975938 | 11,0273% |
AddRoadSurface | 1726590 | 13975938 | 12,3540% |
AddBuildingType | 1889532 | 13975938 | 13,5199% |
Was können wir aus dieser Statistik mitnehmen?
Wir sehen sehr gut, dass StreetComplete von seinem Nutzen und von seinen Nutzern her ziemich undiversifiziert ist. Wenige Leute sind für den Großteil aller gelösten Quests verantwortlich. Hauptsächlich wird StreetComplete genutzt, um Details zu Häusern, Straßen und Wegen hinzuzufügen. Das scheint aber nicht sonderlich verwunderlich, da eine Stadt nunmal zum großteil aus Häusern, Straßen und Wegen besteht. In dieser Hinsicht ist es also nicht schlimm, dass auch ein Großteil der gelösten Quests auf diese Objekttypen entfällt. Was die Nutzer angeht, sieht es etwas anders aus: Von den über 5000 Nutzern die ich untersuchte sind 100 für 30% aller geösten Quests verantwortlich. Und während ich in der Videoversion dieses Posts zu dem Schluss komme, dass das ein Hinweis auf die nicht so gut aussehende diversifizierung in OpenStreetMap ist, habe ich seit dem noch etwas nachgedacht und komme zu einem anderen Ergebnis. Man muss die Power-User viel mehr rausrechnen, als die anderen Nutzer an ihnen auszurichten. Also der Durchschnittsnutzer macht nicht verhältnismäßig wenig, sondern die Power-User machen verhältnismäßig viel. Betrachtet man es so hat StreetComplete eine gute Nutzerbasis, die relativ gleichmäßig zu OpenStreetMap beiträgt.