Hey, ich bin Wieland! Hier sind ein paar meiner Projekte:

DarkViperAU Ramble Liste

Ich mag den Streamer und YouTuber DarkViperAU ziemlich gerne. Während seiner Streams redet er oft vor sich hin und erzählt von bestimmten Themen, die ihn gerade bewegen. Diese Schnipsel schneidet er zusammen und stellt sie auf YouTube als "rambles" (dt. "Brabbelleien") in einem Podcast-Ähnlichen Format zur Verfügung. Ich habe eine Website gemacht, auf der man alle seine Rambles durchsuchen und nachlesen oder nachhören kann.

Ihr könnt sie hier finden.

(Permalink/einzelne Projektseite)

Dönerfinder

Weil ich mit dem Verwenden von OSM-Daten experimentieren wollte, habe ich im Sommer 2020 angefangen, eine App zu entwickeln, mit der man für jede Stadt eine Liste der Dönerläden, die es dort gibt ansehen kann. Die App hat zwei besondere Features:

Die App bietet die Möglichkeit, die Dönerbuden in der Stadt nach bestimmten Eigenschaften zu filtern. Zum Beispiel, ob Lieferung angeboten wird, oder ob es dort vegetarischen Döner gibt.

Dönerfinder

Die App ist relativ redundant, da man ja auch einfach Google nach Dönerbuden in der Nähe fragen kann, aber für den Fall, dass jemand einen Verwendungszweck für diese App sieht, habe ich sie in den Play Store gestellt:

(Permalink/einzelne Projektseite)

Dokuwiki "Druckansicht" Bookmark-Applet

Manchmal kommt es vor, dass man einen Ausdruck einer Seite eines DokuWikis braucht. Doch da sind immer die störenden Seitenleisten, Header und Footer. Deswegen habe ich ein kleines Scriptlet gebaut, dass eine DokuWiki-Seite in eine Druckansicht überführt.

Zieh diesen Link auf deine Lesezeichenleiste. Wenn du auf einer DokuWiki-Seite bist, klicke das Lesezeichen an, um die Seite in die Druckansicht zu überführen.

Hier ist der Code dieses Bookmarklets:

javascript:(
    function()
        { 
        var elem = document.getElementById("dokuwiki__aside");
        elem.remove();
        var bryd = document.getElementsByClassName("pad group"); 
        bryd[1].style.marginLeft = "0em";
        var foot = document.getElementById("dokuwiki__footer");
        foot.remove(); 
        var head = document.getElementById("dokuwiki__header"); 
        head.remove(); 
        }
)();

(Permalink/einzelne Projektseite)

DriveUsageAnalyser

Manchmal kommt es bei mir (und sicher auch bei euch) vor, dass ihr euch denkt: 79 GB von 80 GB belegt!? Aber wo!? Na klar, man könnte bei jedem Ordner auf Eigenschaften rechtsklicken, um die größe des Ordners zu sehen und so Stück für Stück herausfinden, wo der Hund begraben ist. Oder man benutzt einfach den DriveUsageAnalyser, den ich für diesen Zweck geschrieben habe. Er zeigt euch nicht nur die Größe jedes Ordners im aktuellen Ordner an, sondern auch, wie viel Prozent des gesamten verbrauchten Speicherplatzes dieser einnimmt.

(Permalink/einzelne Projektseite)

OpenStreetMap-Linkliste

Hier eine Sammlung nützlicher OpenStreetMap-Projekte von anderen, die ich über die Zeit gesammelt habe:

(Permalink/einzelne Projektseite)

OSM-Staticmaps

Ich hoste hier auf haukauntrie.de eine modifizierte Version von staticMapLite, womit sich statische Ansichten von OpenStreetMap-Karten generieren lassen. Diese können einfach mit einer URL angefragt werden. Bedeutet: Überall, wo ein Bild von einer URL eingebettet werden kann, kann ein immer aktuelles Bild von einer Kartenansicht eingebettet werden.

Original-Version und Änderungen

Das Projekt basiert auf "StaticMapLite" von dfacts. Ich habe das Skript noch mit ein paar Änderungen ausgestattet.

Dokumentation

Der Basis-Endpunkt, an den die GET-Parameter angehangen werden, ist https://haukauntrie.de/online/api/staticmaps/staticmap.php.

GET-Parameter übersicht

Parameter Beschreibung Beispiel
center Das Zentrum der Kartenansicht center=52.51621,13.37842
zoom Die Zoomstufe (1 bis 19) zoom=14
size Die Größe des Bildes, in BreitexHöhe. Das maximum ist 4000. size=865x512
maptype Der Kartentyp. Es gibt mapnik, mapnikde und humaniterarian. maptype=mapnik
nocopy Diesen Parameter kann man auf 1 setzen, damit der Copyright-Verweis nicht eingeblendet wird. Dies sollte man nur tun, wenn man die API für ein privates Projekt verwendet. Ein Bild ohne Copyright-Vermerk öffentlich zu zeigen, stellt eine Urheberrechtsverletzung dar. nocopy=0
markers Hier kann man Marker übergeben, die an den entsprechenden Stellen hingerendert werden. Die Liste wird mit | getrennt, jedes Element der Liste besteht aus lat,lon,marker. Die verfügbaren Marker sind lightblue1 bis lightblue5, emote_1 bis emote_91, [small]_arrow_0_white bis [small]_arrow_359_white, bullseye, (ltblu|pink|purple|red|ylw)-pushpin, ol-marker, ol-marker-blue, ol-marker-gold, ol-marker-green markers=40.70,-74.015,lightblue1

Beispiel

Das ist das Bild, dass man durch den Aufruf von https://haukauntrie.de/online/api/staticmaps/staticmap.php?center=52.51621,13.37842&zoom=18&size=1080x512&maptype=mapnikde&markers=52.51682,13.37944,lightblue1 erhalten würde:

Eine Karte

Und hier eines, dass man durch Aufruf von https://haukauntrie.de/online/api/staticmaps/staticmap.php?center=50.814155,12.930012&zoom=18&size=840x512&maptype=mapnikde&markers=50.814360,12.931163,emote_53|50.814899,12.930728,emote_46|50.813529,12.929200,emote_51|50.814519,12.929167,small_arrow_270_white erhält.

Eine Karte

Icons

Hier ist eine Tabelle mit allen Icons zur Übersicht:
arrow_0_whiteImage arrow_0_white
arrow_100_whiteImage arrow_100_white
arrow_101_whiteImage arrow_101_white
arrow_102_whiteImage arrow_102_white
arrow_103_whiteImage arrow_103_white
arrow_104_whiteImage arrow_104_white
arrow_105_whiteImage arrow_105_white
arrow_106_whiteImage arrow_106_white
arrow_107_whiteImage arrow_107_white
arrow_108_whiteImage arrow_108_white
arrow_109_whiteImage arrow_109_white
arrow_10_whiteImage arrow_10_white
arrow_110_whiteImage arrow_110_white
arrow_111_whiteImage arrow_111_white
arrow_112_whiteImage arrow_112_white
arrow_113_whiteImage arrow_113_white
arrow_114_whiteImage arrow_114_white
arrow_115_whiteImage arrow_115_white
arrow_116_whiteImage arrow_116_white
arrow_117_whiteImage arrow_117_white
arrow_118_whiteImage arrow_118_white
arrow_119_whiteImage arrow_119_white
arrow_11_whiteImage arrow_11_white
arrow_120_whiteImage arrow_120_white
arrow_121_whiteImage arrow_121_white
arrow_122_whiteImage arrow_122_white
arrow_123_whiteImage arrow_123_white
arrow_124_whiteImage arrow_124_white
arrow_125_whiteImage arrow_125_white
arrow_126_whiteImage arrow_126_white
arrow_127_whiteImage arrow_127_white
arrow_128_whiteImage arrow_128_white
arrow_129_whiteImage arrow_129_white
arrow_12_whiteImage arrow_12_white
arrow_130_whiteImage arrow_130_white
arrow_131_whiteImage arrow_131_white
arrow_132_whiteImage arrow_132_white
arrow_133_whiteImage arrow_133_white
arrow_134_whiteImage arrow_134_white
arrow_135_whiteImage arrow_135_white
arrow_136_whiteImage arrow_136_white
arrow_137_whiteImage arrow_137_white
arrow_138_whiteImage arrow_138_white
arrow_139_whiteImage arrow_139_white
arrow_13_whiteImage arrow_13_white
arrow_140_whiteImage arrow_140_white
arrow_141_whiteImage arrow_141_white
arrow_142_whiteImage arrow_142_white
arrow_143_whiteImage arrow_143_white
arrow_144_whiteImage arrow_144_white
arrow_145_whiteImage arrow_145_white
arrow_146_whiteImage arrow_146_white
arrow_147_whiteImage arrow_147_white
arrow_148_whiteImage arrow_148_white
arrow_149_whiteImage arrow_149_white
arrow_14_whiteImage arrow_14_white
arrow_150_whiteImage arrow_150_white
arrow_151_whiteImage arrow_151_white
arrow_152_whiteImage arrow_152_white
arrow_153_whiteImage arrow_153_white
arrow_154_whiteImage arrow_154_white
arrow_155_whiteImage arrow_155_white
arrow_156_whiteImage arrow_156_white
arrow_157_whiteImage arrow_157_white
arrow_158_whiteImage arrow_158_white
arrow_159_whiteImage arrow_159_white
arrow_15_whiteImage arrow_15_white
arrow_160_whiteImage arrow_160_white
arrow_161_whiteImage arrow_161_white
arrow_162_whiteImage arrow_162_white
arrow_163_whiteImage arrow_163_white
arrow_164_whiteImage arrow_164_white
arrow_165_whiteImage arrow_165_white
arrow_166_whiteImage arrow_166_white
arrow_167_whiteImage arrow_167_white
arrow_168_whiteImage arrow_168_white
arrow_169_whiteImage arrow_169_white
arrow_16_whiteImage arrow_16_white
arrow_170_whiteImage arrow_170_white
arrow_171_whiteImage arrow_171_white
arrow_172_whiteImage arrow_172_white
arrow_173_whiteImage arrow_173_white
arrow_174_whiteImage arrow_174_white
arrow_175_whiteImage arrow_175_white
arrow_176_whiteImage arrow_176_white
arrow_177_whiteImage arrow_177_white
arrow_178_whiteImage arrow_178_white
arrow_179_whiteImage arrow_179_white
arrow_17_whiteImage arrow_17_white
arrow_180_whiteImage arrow_180_white
arrow_181_whiteImage arrow_181_white
arrow_182_whiteImage arrow_182_white
arrow_183_whiteImage arrow_183_white
arrow_184_whiteImage arrow_184_white
arrow_185_whiteImage arrow_185_white
arrow_186_whiteImage arrow_186_white
arrow_187_whiteImage arrow_187_white
arrow_188_whiteImage arrow_188_white
arrow_189_whiteImage arrow_189_white
arrow_18_whiteImage arrow_18_white
arrow_190_whiteImage arrow_190_white
arrow_191_whiteImage arrow_191_white
arrow_192_whiteImage arrow_192_white
arrow_193_whiteImage arrow_193_white
arrow_194_whiteImage arrow_194_white
arrow_195_whiteImage arrow_195_white
arrow_196_whiteImage arrow_196_white
arrow_197_whiteImage arrow_197_white
arrow_198_whiteImage arrow_198_white
arrow_199_whiteImage arrow_199_white
arrow_19_whiteImage arrow_19_white
arrow_1_whiteImage arrow_1_white
arrow_200_whiteImage arrow_200_white
arrow_201_whiteImage arrow_201_white
arrow_202_whiteImage arrow_202_white
arrow_203_whiteImage arrow_203_white
arrow_204_whiteImage arrow_204_white
arrow_205_whiteImage arrow_205_white
arrow_206_whiteImage arrow_206_white
arrow_207_whiteImage arrow_207_white
arrow_208_whiteImage arrow_208_white
arrow_209_whiteImage arrow_209_white
arrow_20_whiteImage arrow_20_white
arrow_210_whiteImage arrow_210_white
arrow_211_whiteImage arrow_211_white
arrow_212_whiteImage arrow_212_white
arrow_213_whiteImage arrow_213_white
arrow_214_whiteImage arrow_214_white
arrow_215_whiteImage arrow_215_white
arrow_216_whiteImage arrow_216_white
arrow_217_whiteImage arrow_217_white
arrow_218_whiteImage arrow_218_white
arrow_219_whiteImage arrow_219_white
arrow_21_whiteImage arrow_21_white
arrow_220_whiteImage arrow_220_white
arrow_221_whiteImage arrow_221_white
arrow_222_whiteImage arrow_222_white
arrow_223_whiteImage arrow_223_white
arrow_224_whiteImage arrow_224_white
arrow_225_whiteImage arrow_225_white
arrow_226_whiteImage arrow_226_white
arrow_227_whiteImage arrow_227_white
arrow_228_whiteImage arrow_228_white
arrow_229_whiteImage arrow_229_white
arrow_22_whiteImage arrow_22_white
arrow_230_whiteImage arrow_230_white
arrow_231_whiteImage arrow_231_white
arrow_232_whiteImage arrow_232_white
arrow_233_whiteImage arrow_233_white
arrow_234_whiteImage arrow_234_white
arrow_235_whiteImage arrow_235_white
arrow_236_whiteImage arrow_236_white
arrow_237_whiteImage arrow_237_white
arrow_238_whiteImage arrow_238_white
arrow_239_whiteImage arrow_239_white
arrow_23_whiteImage arrow_23_white
arrow_240_whiteImage arrow_240_white
arrow_241_whiteImage arrow_241_white
arrow_242_whiteImage arrow_242_white
arrow_243_whiteImage arrow_243_white
arrow_244_whiteImage arrow_244_white
arrow_245_whiteImage arrow_245_white
arrow_246_whiteImage arrow_246_white
arrow_247_whiteImage arrow_247_white
arrow_248_whiteImage arrow_248_white
arrow_249_whiteImage arrow_249_white
arrow_24_whiteImage arrow_24_white
arrow_250_whiteImage arrow_250_white
arrow_251_whiteImage arrow_251_white
arrow_252_whiteImage arrow_252_white
arrow_253_whiteImage arrow_253_white
arrow_254_whiteImage arrow_254_white
arrow_255_whiteImage arrow_255_white
arrow_256_whiteImage arrow_256_white
arrow_257_whiteImage arrow_257_white
arrow_258_whiteImage arrow_258_white
arrow_259_whiteImage arrow_259_white
arrow_25_whiteImage arrow_25_white
arrow_260_whiteImage arrow_260_white
arrow_261_whiteImage arrow_261_white
arrow_262_whiteImage arrow_262_white
arrow_263_whiteImage arrow_263_white
arrow_264_whiteImage arrow_264_white
arrow_265_whiteImage arrow_265_white
arrow_266_whiteImage arrow_266_white
arrow_267_whiteImage arrow_267_white
arrow_268_whiteImage arrow_268_white
arrow_269_whiteImage arrow_269_white
arrow_26_whiteImage arrow_26_white
arrow_270_whiteImage arrow_270_white
arrow_271_whiteImage arrow_271_white
arrow_272_whiteImage arrow_272_white
arrow_273_whiteImage arrow_273_white
arrow_274_whiteImage arrow_274_white
arrow_275_whiteImage arrow_275_white
arrow_276_whiteImage arrow_276_white
arrow_277_whiteImage arrow_277_white
arrow_278_whiteImage arrow_278_white
arrow_279_whiteImage arrow_279_white
arrow_27_whiteImage arrow_27_white
arrow_280_whiteImage arrow_280_white
arrow_281_whiteImage arrow_281_white
arrow_282_whiteImage arrow_282_white
arrow_283_whiteImage arrow_283_white
arrow_284_whiteImage arrow_284_white
arrow_285_whiteImage arrow_285_white
arrow_286_whiteImage arrow_286_white
arrow_287_whiteImage arrow_287_white
arrow_288_whiteImage arrow_288_white
arrow_289_whiteImage arrow_289_white
arrow_28_whiteImage arrow_28_white
arrow_290_whiteImage arrow_290_white
arrow_291_whiteImage arrow_291_white
arrow_292_whiteImage arrow_292_white
arrow_293_whiteImage arrow_293_white
arrow_294_whiteImage arrow_294_white
arrow_295_whiteImage arrow_295_white
arrow_296_whiteImage arrow_296_white
arrow_297_whiteImage arrow_297_white
arrow_298_whiteImage arrow_298_white
arrow_299_whiteImage arrow_299_white
arrow_29_whiteImage arrow_29_white
arrow_2_whiteImage arrow_2_white
arrow_300_whiteImage arrow_300_white
arrow_301_whiteImage arrow_301_white
arrow_302_whiteImage arrow_302_white
arrow_303_whiteImage arrow_303_white
arrow_304_whiteImage arrow_304_white
arrow_305_whiteImage arrow_305_white
arrow_306_whiteImage arrow_306_white
arrow_307_whiteImage arrow_307_white
arrow_308_whiteImage arrow_308_white
arrow_309_whiteImage arrow_309_white
arrow_30_whiteImage arrow_30_white
arrow_310_whiteImage arrow_310_white
arrow_311_whiteImage arrow_311_white
arrow_312_whiteImage arrow_312_white
arrow_313_whiteImage arrow_313_white
arrow_314_whiteImage arrow_314_white
arrow_315_whiteImage arrow_315_white
arrow_316_whiteImage arrow_316_white
arrow_317_whiteImage arrow_317_white
arrow_318_whiteImage arrow_318_white
arrow_319_whiteImage arrow_319_white
arrow_31_whiteImage arrow_31_white
arrow_320_whiteImage arrow_320_white
arrow_321_whiteImage arrow_321_white
arrow_322_whiteImage arrow_322_white
arrow_323_whiteImage arrow_323_white
arrow_324_whiteImage arrow_324_white
arrow_325_whiteImage arrow_325_white
arrow_326_whiteImage arrow_326_white
arrow_327_whiteImage arrow_327_white
arrow_328_whiteImage arrow_328_white
arrow_329_whiteImage arrow_329_white
arrow_32_whiteImage arrow_32_white
arrow_330_whiteImage arrow_330_white
arrow_331_whiteImage arrow_331_white
arrow_332_whiteImage arrow_332_white
arrow_333_whiteImage arrow_333_white
arrow_334_whiteImage arrow_334_white
arrow_335_whiteImage arrow_335_white
arrow_336_whiteImage arrow_336_white
arrow_337_whiteImage arrow_337_white
arrow_338_whiteImage arrow_338_white
arrow_339_whiteImage arrow_339_white
arrow_33_whiteImage arrow_33_white
arrow_340_whiteImage arrow_340_white
arrow_341_whiteImage arrow_341_white
arrow_342_whiteImage arrow_342_white
arrow_343_whiteImage arrow_343_white
arrow_344_whiteImage arrow_344_white
arrow_345_whiteImage arrow_345_white
arrow_346_whiteImage arrow_346_white
arrow_347_whiteImage arrow_347_white
arrow_348_whiteImage arrow_348_white
arrow_349_whiteImage arrow_349_white
arrow_34_whiteImage arrow_34_white
arrow_350_whiteImage arrow_350_white
arrow_351_whiteImage arrow_351_white
arrow_352_whiteImage arrow_352_white
arrow_353_whiteImage arrow_353_white
arrow_354_whiteImage arrow_354_white
arrow_355_whiteImage arrow_355_white
arrow_356_whiteImage arrow_356_white
arrow_357_whiteImage arrow_357_white
arrow_358_whiteImage arrow_358_white
arrow_359_whiteImage arrow_359_white
arrow_35_whiteImage arrow_35_white
arrow_36_whiteImage arrow_36_white
arrow_37_whiteImage arrow_37_white
arrow_38_whiteImage arrow_38_white
arrow_39_whiteImage arrow_39_white
arrow_3_whiteImage arrow_3_white
arrow_40_whiteImage arrow_40_white
arrow_41_whiteImage arrow_41_white
arrow_42_whiteImage arrow_42_white
arrow_43_whiteImage arrow_43_white
arrow_44_whiteImage arrow_44_white
arrow_45_whiteImage arrow_45_white
arrow_46_whiteImage arrow_46_white
arrow_47_whiteImage arrow_47_white
arrow_48_whiteImage arrow_48_white
arrow_49_whiteImage arrow_49_white
arrow_4_whiteImage arrow_4_white
arrow_50_whiteImage arrow_50_white
arrow_51_whiteImage arrow_51_white
arrow_52_whiteImage arrow_52_white
arrow_53_whiteImage arrow_53_white
arrow_54_whiteImage arrow_54_white
arrow_55_whiteImage arrow_55_white
arrow_56_whiteImage arrow_56_white
arrow_57_whiteImage arrow_57_white
arrow_58_whiteImage arrow_58_white
arrow_59_whiteImage arrow_59_white
arrow_5_whiteImage arrow_5_white
arrow_60_whiteImage arrow_60_white
arrow_61_whiteImage arrow_61_white
arrow_62_whiteImage arrow_62_white
arrow_63_whiteImage arrow_63_white
arrow_64_whiteImage arrow_64_white
arrow_65_whiteImage arrow_65_white
arrow_66_whiteImage arrow_66_white
arrow_67_whiteImage arrow_67_white
arrow_68_whiteImage arrow_68_white
arrow_69_whiteImage arrow_69_white
arrow_6_whiteImage arrow_6_white
arrow_70_whiteImage arrow_70_white
arrow_71_whiteImage arrow_71_white
arrow_72_whiteImage arrow_72_white
arrow_73_whiteImage arrow_73_white
arrow_74_whiteImage arrow_74_white
arrow_75_whiteImage arrow_75_white
arrow_76_whiteImage arrow_76_white
arrow_77_whiteImage arrow_77_white
arrow_78_whiteImage arrow_78_white
arrow_79_whiteImage arrow_79_white
arrow_7_whiteImage arrow_7_white
arrow_80_whiteImage arrow_80_white
arrow_81_whiteImage arrow_81_white
arrow_82_whiteImage arrow_82_white
arrow_83_whiteImage arrow_83_white
arrow_84_whiteImage arrow_84_white
arrow_85_whiteImage arrow_85_white
arrow_86_whiteImage arrow_86_white
arrow_87_whiteImage arrow_87_white
arrow_88_whiteImage arrow_88_white
arrow_89_whiteImage arrow_89_white
arrow_8_whiteImage arrow_8_white
arrow_90_whiteImage arrow_90_white
arrow_91_whiteImage arrow_91_white
arrow_92_whiteImage arrow_92_white
arrow_93_whiteImage arrow_93_white
arrow_94_whiteImage arrow_94_white
arrow_95_whiteImage arrow_95_white
arrow_96_whiteImage arrow_96_white
arrow_97_whiteImage arrow_97_white
arrow_98_whiteImage arrow_98_white
arrow_99_whiteImage arrow_99_white
arrow_9_whiteImage arrow_9_white
arrow_E_whiteImage arrow_E_white
arrow_NE_whiteImage arrow_NE_white
arrow_NW_whiteImage arrow_NW_white
arrow_N_whiteImage arrow_N_white
arrow_SE_whiteImage arrow_SE_white
arrow_SW_whiteImage arrow_SW_white
arrow_S_whiteImage arrow_S_white
arrow_W_whiteImage arrow_W_white
bullseyeImage bullseye
emote_0Image emote_0
emote_1Image emote_1
emote_10Image emote_10
emote_11Image emote_11
emote_12Image emote_12
emote_13Image emote_13
emote_14Image emote_14
emote_15Image emote_15
emote_16Image emote_16
emote_17Image emote_17
emote_18Image emote_18
emote_19Image emote_19
emote_2Image emote_2
emote_20Image emote_20
emote_21Image emote_21
emote_22Image emote_22
emote_23Image emote_23
emote_24Image emote_24
emote_25Image emote_25
emote_26Image emote_26
emote_27Image emote_27
emote_28Image emote_28
emote_29Image emote_29
emote_3Image emote_3
emote_30Image emote_30
emote_31Image emote_31
emote_32Image emote_32
emote_33Image emote_33
emote_34Image emote_34
emote_35Image emote_35
emote_36Image emote_36
emote_37Image emote_37
emote_38Image emote_38
emote_39Image emote_39
emote_4Image emote_4
emote_40Image emote_40
emote_41Image emote_41
emote_42Image emote_42
emote_43Image emote_43
emote_44Image emote_44
emote_45Image emote_45
emote_46Image emote_46
emote_47Image emote_47
emote_48Image emote_48
emote_49Image emote_49
emote_5Image emote_5
emote_50Image emote_50
emote_51Image emote_51
emote_52Image emote_52
emote_53Image emote_53
emote_54Image emote_54
emote_55Image emote_55
emote_56Image emote_56
emote_57Image emote_57
emote_58Image emote_58
emote_59Image emote_59
emote_6Image emote_6
emote_60Image emote_60
emote_61Image emote_61
emote_62Image emote_62
emote_63Image emote_63
emote_64Image emote_64
emote_65Image emote_65
emote_66Image emote_66
emote_67Image emote_67
emote_68Image emote_68
emote_69Image emote_69
emote_7Image emote_7
emote_70Image emote_70
emote_71Image emote_71
emote_72Image emote_72
emote_73Image emote_73
emote_74Image emote_74
emote_75Image emote_75
emote_76Image emote_76
emote_78Image emote_78
emote_79Image emote_79
emote_8Image emote_8
emote_80Image emote_80
emote_81Image emote_81
emote_82Image emote_82
emote_83Image emote_83
emote_84Image emote_84
emote_85Image emote_85
emote_86Image emote_86
emote_87Image emote_87
emote_88Image emote_88
emote_89Image emote_89
emote_9Image emote_9
emote_90Image emote_90
emote_91Image emote_91
icon_crossLargeImage icon_crossLarge
icon_crossSmallImage icon_crossSmall
icon_exclamationLargeImage icon_exclamationLarge
icon_exclamationSmallImage icon_exclamationSmall
icon_plusLargeImage icon_plusLarge
icon_plusSmallImage icon_plusSmall
lightblue1Image lightblue1
lightblue2Image lightblue2
lightblue3Image lightblue3
lightblue4Image lightblue4
lightblue5Image lightblue5
ltblu-pushpinImage ltblu-pushpin
ol-marker-blueImage ol-marker-blue
ol-marker-goldImage ol-marker-gold
ol-marker-greenImage ol-marker-green
ol-markerImage ol-marker
pink-pushpinImage pink-pushpin
purple-pushpinImage purple-pushpin
red-pushpinImage red-pushpin
small_arrow_0_whiteImage small_arrow_0_white
small_arrow_100_whiteImage small_arrow_100_white
small_arrow_101_whiteImage small_arrow_101_white
small_arrow_102_whiteImage small_arrow_102_white
small_arrow_103_whiteImage small_arrow_103_white
small_arrow_104_whiteImage small_arrow_104_white
small_arrow_105_whiteImage small_arrow_105_white
small_arrow_106_whiteImage small_arrow_106_white
small_arrow_107_whiteImage small_arrow_107_white
small_arrow_108_whiteImage small_arrow_108_white
small_arrow_109_whiteImage small_arrow_109_white
small_arrow_10_whiteImage small_arrow_10_white
small_arrow_110_whiteImage small_arrow_110_white
small_arrow_111_whiteImage small_arrow_111_white
small_arrow_112_whiteImage small_arrow_112_white
small_arrow_113_whiteImage small_arrow_113_white
small_arrow_114_whiteImage small_arrow_114_white
small_arrow_115_whiteImage small_arrow_115_white
small_arrow_116_whiteImage small_arrow_116_white
small_arrow_117_whiteImage small_arrow_117_white
small_arrow_118_whiteImage small_arrow_118_white
small_arrow_119_whiteImage small_arrow_119_white
small_arrow_11_whiteImage small_arrow_11_white
small_arrow_120_whiteImage small_arrow_120_white
small_arrow_121_whiteImage small_arrow_121_white
small_arrow_122_whiteImage small_arrow_122_white
small_arrow_123_whiteImage small_arrow_123_white
small_arrow_124_whiteImage small_arrow_124_white
small_arrow_125_whiteImage small_arrow_125_white
small_arrow_126_whiteImage small_arrow_126_white
small_arrow_127_whiteImage small_arrow_127_white
small_arrow_128_whiteImage small_arrow_128_white
small_arrow_129_whiteImage small_arrow_129_white
small_arrow_12_whiteImage small_arrow_12_white
small_arrow_130_whiteImage small_arrow_130_white
small_arrow_131_whiteImage small_arrow_131_white
small_arrow_132_whiteImage small_arrow_132_white
small_arrow_133_whiteImage small_arrow_133_white
small_arrow_134_whiteImage small_arrow_134_white
small_arrow_135_whiteImage small_arrow_135_white
small_arrow_136_whiteImage small_arrow_136_white
small_arrow_137_whiteImage small_arrow_137_white
small_arrow_138_whiteImage small_arrow_138_white
small_arrow_139_whiteImage small_arrow_139_white
small_arrow_13_whiteImage small_arrow_13_white
small_arrow_140_whiteImage small_arrow_140_white
small_arrow_141_whiteImage small_arrow_141_white
small_arrow_142_whiteImage small_arrow_142_white
small_arrow_143_whiteImage small_arrow_143_white
small_arrow_144_whiteImage small_arrow_144_white
small_arrow_145_whiteImage small_arrow_145_white
small_arrow_146_whiteImage small_arrow_146_white
small_arrow_147_whiteImage small_arrow_147_white
small_arrow_148_whiteImage small_arrow_148_white
small_arrow_149_whiteImage small_arrow_149_white
small_arrow_14_whiteImage small_arrow_14_white
small_arrow_150_whiteImage small_arrow_150_white
small_arrow_151_whiteImage small_arrow_151_white
small_arrow_152_whiteImage small_arrow_152_white
small_arrow_153_whiteImage small_arrow_153_white
small_arrow_154_whiteImage small_arrow_154_white
small_arrow_155_whiteImage small_arrow_155_white
small_arrow_156_whiteImage small_arrow_156_white
small_arrow_157_whiteImage small_arrow_157_white
small_arrow_158_whiteImage small_arrow_158_white
small_arrow_159_whiteImage small_arrow_159_white
small_arrow_15_whiteImage small_arrow_15_white
small_arrow_160_whiteImage small_arrow_160_white
small_arrow_161_whiteImage small_arrow_161_white
small_arrow_162_whiteImage small_arrow_162_white
small_arrow_163_whiteImage small_arrow_163_white
small_arrow_164_whiteImage small_arrow_164_white
small_arrow_165_whiteImage small_arrow_165_white
small_arrow_166_whiteImage small_arrow_166_white
small_arrow_167_whiteImage small_arrow_167_white
small_arrow_168_whiteImage small_arrow_168_white
small_arrow_169_whiteImage small_arrow_169_white
small_arrow_16_whiteImage small_arrow_16_white
small_arrow_170_whiteImage small_arrow_170_white
small_arrow_171_whiteImage small_arrow_171_white
small_arrow_172_whiteImage small_arrow_172_white
small_arrow_173_whiteImage small_arrow_173_white
small_arrow_174_whiteImage small_arrow_174_white
small_arrow_175_whiteImage small_arrow_175_white
small_arrow_176_whiteImage small_arrow_176_white
small_arrow_177_whiteImage small_arrow_177_white
small_arrow_178_whiteImage small_arrow_178_white
small_arrow_179_whiteImage small_arrow_179_white
small_arrow_17_whiteImage small_arrow_17_white
small_arrow_180_whiteImage small_arrow_180_white
small_arrow_181_whiteImage small_arrow_181_white
small_arrow_182_whiteImage small_arrow_182_white
small_arrow_183_whiteImage small_arrow_183_white
small_arrow_184_whiteImage small_arrow_184_white
small_arrow_185_whiteImage small_arrow_185_white
small_arrow_186_whiteImage small_arrow_186_white
small_arrow_187_whiteImage small_arrow_187_white
small_arrow_188_whiteImage small_arrow_188_white
small_arrow_189_whiteImage small_arrow_189_white
small_arrow_18_whiteImage small_arrow_18_white
small_arrow_190_whiteImage small_arrow_190_white
small_arrow_191_whiteImage small_arrow_191_white
small_arrow_192_whiteImage small_arrow_192_white
small_arrow_193_whiteImage small_arrow_193_white
small_arrow_194_whiteImage small_arrow_194_white
small_arrow_195_whiteImage small_arrow_195_white
small_arrow_196_whiteImage small_arrow_196_white
small_arrow_197_whiteImage small_arrow_197_white
small_arrow_198_whiteImage small_arrow_198_white
small_arrow_199_whiteImage small_arrow_199_white
small_arrow_19_whiteImage small_arrow_19_white
small_arrow_1_whiteImage small_arrow_1_white
small_arrow_200_whiteImage small_arrow_200_white
small_arrow_201_whiteImage small_arrow_201_white
small_arrow_202_whiteImage small_arrow_202_white
small_arrow_203_whiteImage small_arrow_203_white
small_arrow_204_whiteImage small_arrow_204_white
small_arrow_205_whiteImage small_arrow_205_white
small_arrow_206_whiteImage small_arrow_206_white
small_arrow_207_whiteImage small_arrow_207_white
small_arrow_208_whiteImage small_arrow_208_white
small_arrow_209_whiteImage small_arrow_209_white
small_arrow_20_whiteImage small_arrow_20_white
small_arrow_210_whiteImage small_arrow_210_white
small_arrow_211_whiteImage small_arrow_211_white
small_arrow_212_whiteImage small_arrow_212_white
small_arrow_213_whiteImage small_arrow_213_white
small_arrow_214_whiteImage small_arrow_214_white
small_arrow_215_whiteImage small_arrow_215_white
small_arrow_216_whiteImage small_arrow_216_white
small_arrow_217_whiteImage small_arrow_217_white
small_arrow_218_whiteImage small_arrow_218_white
small_arrow_219_whiteImage small_arrow_219_white
small_arrow_21_whiteImage small_arrow_21_white
small_arrow_220_whiteImage small_arrow_220_white
small_arrow_221_whiteImage small_arrow_221_white
small_arrow_222_whiteImage small_arrow_222_white
small_arrow_223_whiteImage small_arrow_223_white
small_arrow_224_whiteImage small_arrow_224_white
small_arrow_225_whiteImage small_arrow_225_white
small_arrow_226_whiteImage small_arrow_226_white
small_arrow_227_whiteImage small_arrow_227_white
small_arrow_228_whiteImage small_arrow_228_white
small_arrow_229_whiteImage small_arrow_229_white
small_arrow_22_whiteImage small_arrow_22_white
small_arrow_230_whiteImage small_arrow_230_white
small_arrow_231_whiteImage small_arrow_231_white
small_arrow_232_whiteImage small_arrow_232_white
small_arrow_233_whiteImage small_arrow_233_white
small_arrow_234_whiteImage small_arrow_234_white
small_arrow_235_whiteImage small_arrow_235_white
small_arrow_236_whiteImage small_arrow_236_white
small_arrow_237_whiteImage small_arrow_237_white
small_arrow_238_whiteImage small_arrow_238_white
small_arrow_239_whiteImage small_arrow_239_white
small_arrow_23_whiteImage small_arrow_23_white
small_arrow_240_whiteImage small_arrow_240_white
small_arrow_241_whiteImage small_arrow_241_white
small_arrow_242_whiteImage small_arrow_242_white
small_arrow_243_whiteImage small_arrow_243_white
small_arrow_244_whiteImage small_arrow_244_white
small_arrow_245_whiteImage small_arrow_245_white
small_arrow_246_whiteImage small_arrow_246_white
small_arrow_247_whiteImage small_arrow_247_white
small_arrow_248_whiteImage small_arrow_248_white
small_arrow_249_whiteImage small_arrow_249_white
small_arrow_24_whiteImage small_arrow_24_white
small_arrow_250_whiteImage small_arrow_250_white
small_arrow_251_whiteImage small_arrow_251_white
small_arrow_252_whiteImage small_arrow_252_white
small_arrow_253_whiteImage small_arrow_253_white
small_arrow_254_whiteImage small_arrow_254_white
small_arrow_255_whiteImage small_arrow_255_white
small_arrow_256_whiteImage small_arrow_256_white
small_arrow_257_whiteImage small_arrow_257_white
small_arrow_258_whiteImage small_arrow_258_white
small_arrow_259_whiteImage small_arrow_259_white
small_arrow_25_whiteImage small_arrow_25_white
small_arrow_260_whiteImage small_arrow_260_white
small_arrow_261_whiteImage small_arrow_261_white
small_arrow_262_whiteImage small_arrow_262_white
small_arrow_263_whiteImage small_arrow_263_white
small_arrow_264_whiteImage small_arrow_264_white
small_arrow_265_whiteImage small_arrow_265_white
small_arrow_266_whiteImage small_arrow_266_white
small_arrow_267_whiteImage small_arrow_267_white
small_arrow_268_whiteImage small_arrow_268_white
small_arrow_269_whiteImage small_arrow_269_white
small_arrow_26_whiteImage small_arrow_26_white
small_arrow_270_whiteImage small_arrow_270_white
small_arrow_271_whiteImage small_arrow_271_white
small_arrow_272_whiteImage small_arrow_272_white
small_arrow_273_whiteImage small_arrow_273_white
small_arrow_274_whiteImage small_arrow_274_white
small_arrow_275_whiteImage small_arrow_275_white
small_arrow_276_whiteImage small_arrow_276_white
small_arrow_277_whiteImage small_arrow_277_white
small_arrow_278_whiteImage small_arrow_278_white
small_arrow_279_whiteImage small_arrow_279_white
small_arrow_27_whiteImage small_arrow_27_white
small_arrow_280_whiteImage small_arrow_280_white
small_arrow_281_whiteImage small_arrow_281_white
small_arrow_282_whiteImage small_arrow_282_white
small_arrow_283_whiteImage small_arrow_283_white
small_arrow_284_whiteImage small_arrow_284_white
small_arrow_285_whiteImage small_arrow_285_white
small_arrow_286_whiteImage small_arrow_286_white
small_arrow_287_whiteImage small_arrow_287_white
small_arrow_288_whiteImage small_arrow_288_white
small_arrow_289_whiteImage small_arrow_289_white
small_arrow_28_whiteImage small_arrow_28_white
small_arrow_290_whiteImage small_arrow_290_white
small_arrow_291_whiteImage small_arrow_291_white
small_arrow_292_whiteImage small_arrow_292_white
small_arrow_293_whiteImage small_arrow_293_white
small_arrow_294_whiteImage small_arrow_294_white
small_arrow_295_whiteImage small_arrow_295_white
small_arrow_296_whiteImage small_arrow_296_white
small_arrow_297_whiteImage small_arrow_297_white
small_arrow_298_whiteImage small_arrow_298_white
small_arrow_299_whiteImage small_arrow_299_white
small_arrow_29_whiteImage small_arrow_29_white
small_arrow_2_whiteImage small_arrow_2_white
small_arrow_300_whiteImage small_arrow_300_white
small_arrow_301_whiteImage small_arrow_301_white
small_arrow_302_whiteImage small_arrow_302_white
small_arrow_303_whiteImage small_arrow_303_white
small_arrow_304_whiteImage small_arrow_304_white
small_arrow_305_whiteImage small_arrow_305_white
small_arrow_306_whiteImage small_arrow_306_white
small_arrow_307_whiteImage small_arrow_307_white
small_arrow_308_whiteImage small_arrow_308_white
small_arrow_309_whiteImage small_arrow_309_white
small_arrow_30_whiteImage small_arrow_30_white
small_arrow_310_whiteImage small_arrow_310_white
small_arrow_311_whiteImage small_arrow_311_white
small_arrow_312_whiteImage small_arrow_312_white
small_arrow_313_whiteImage small_arrow_313_white
small_arrow_314_whiteImage small_arrow_314_white
small_arrow_315_whiteImage small_arrow_315_white
small_arrow_316_whiteImage small_arrow_316_white
small_arrow_317_whiteImage small_arrow_317_white
small_arrow_318_whiteImage small_arrow_318_white
small_arrow_319_whiteImage small_arrow_319_white
small_arrow_31_whiteImage small_arrow_31_white
small_arrow_320_whiteImage small_arrow_320_white
small_arrow_321_whiteImage small_arrow_321_white
small_arrow_322_whiteImage small_arrow_322_white
small_arrow_323_whiteImage small_arrow_323_white
small_arrow_324_whiteImage small_arrow_324_white
small_arrow_325_whiteImage small_arrow_325_white
small_arrow_326_whiteImage small_arrow_326_white
small_arrow_327_whiteImage small_arrow_327_white
small_arrow_328_whiteImage small_arrow_328_white
small_arrow_329_whiteImage small_arrow_329_white
small_arrow_32_whiteImage small_arrow_32_white
small_arrow_330_whiteImage small_arrow_330_white
small_arrow_331_whiteImage small_arrow_331_white
small_arrow_332_whiteImage small_arrow_332_white
small_arrow_333_whiteImage small_arrow_333_white
small_arrow_334_whiteImage small_arrow_334_white
small_arrow_335_whiteImage small_arrow_335_white
small_arrow_336_whiteImage small_arrow_336_white
small_arrow_337_whiteImage small_arrow_337_white
small_arrow_338_whiteImage small_arrow_338_white
small_arrow_339_whiteImage small_arrow_339_white
small_arrow_33_whiteImage small_arrow_33_white
small_arrow_340_whiteImage small_arrow_340_white
small_arrow_341_whiteImage small_arrow_341_white
small_arrow_342_whiteImage small_arrow_342_white
small_arrow_343_whiteImage small_arrow_343_white
small_arrow_344_whiteImage small_arrow_344_white
small_arrow_345_whiteImage small_arrow_345_white
small_arrow_346_whiteImage small_arrow_346_white
small_arrow_347_whiteImage small_arrow_347_white
small_arrow_348_whiteImage small_arrow_348_white
small_arrow_349_whiteImage small_arrow_349_white
small_arrow_34_whiteImage small_arrow_34_white
small_arrow_350_whiteImage small_arrow_350_white
small_arrow_351_whiteImage small_arrow_351_white
small_arrow_352_whiteImage small_arrow_352_white
small_arrow_353_whiteImage small_arrow_353_white
small_arrow_354_whiteImage small_arrow_354_white
small_arrow_355_whiteImage small_arrow_355_white
small_arrow_356_whiteImage small_arrow_356_white
small_arrow_357_whiteImage small_arrow_357_white
small_arrow_358_whiteImage small_arrow_358_white
small_arrow_359_whiteImage small_arrow_359_white
small_arrow_35_whiteImage small_arrow_35_white
small_arrow_36_whiteImage small_arrow_36_white
small_arrow_37_whiteImage small_arrow_37_white
small_arrow_38_whiteImage small_arrow_38_white
small_arrow_39_whiteImage small_arrow_39_white
small_arrow_3_whiteImage small_arrow_3_white
small_arrow_40_whiteImage small_arrow_40_white
small_arrow_41_whiteImage small_arrow_41_white
small_arrow_42_whiteImage small_arrow_42_white
small_arrow_43_whiteImage small_arrow_43_white
small_arrow_44_whiteImage small_arrow_44_white
small_arrow_45_whiteImage small_arrow_45_white
small_arrow_46_whiteImage small_arrow_46_white
small_arrow_47_whiteImage small_arrow_47_white
small_arrow_48_whiteImage small_arrow_48_white
small_arrow_49_whiteImage small_arrow_49_white
small_arrow_4_whiteImage small_arrow_4_white
small_arrow_50_whiteImage small_arrow_50_white
small_arrow_51_whiteImage small_arrow_51_white
small_arrow_52_whiteImage small_arrow_52_white
small_arrow_53_whiteImage small_arrow_53_white
small_arrow_54_whiteImage small_arrow_54_white
small_arrow_55_whiteImage small_arrow_55_white
small_arrow_56_whiteImage small_arrow_56_white
small_arrow_57_whiteImage small_arrow_57_white
small_arrow_58_whiteImage small_arrow_58_white
small_arrow_59_whiteImage small_arrow_59_white
small_arrow_5_whiteImage small_arrow_5_white
small_arrow_60_whiteImage small_arrow_60_white
small_arrow_61_whiteImage small_arrow_61_white
small_arrow_62_whiteImage small_arrow_62_white
small_arrow_63_whiteImage small_arrow_63_white
small_arrow_64_whiteImage small_arrow_64_white
small_arrow_65_whiteImage small_arrow_65_white
small_arrow_66_whiteImage small_arrow_66_white
small_arrow_67_whiteImage small_arrow_67_white
small_arrow_68_whiteImage small_arrow_68_white
small_arrow_69_whiteImage small_arrow_69_white
small_arrow_6_whiteImage small_arrow_6_white
small_arrow_70_whiteImage small_arrow_70_white
small_arrow_71_whiteImage small_arrow_71_white
small_arrow_72_whiteImage small_arrow_72_white
small_arrow_73_whiteImage small_arrow_73_white
small_arrow_74_whiteImage small_arrow_74_white
small_arrow_75_whiteImage small_arrow_75_white
small_arrow_76_whiteImage small_arrow_76_white
small_arrow_77_whiteImage small_arrow_77_white
small_arrow_78_whiteImage small_arrow_78_white
small_arrow_79_whiteImage small_arrow_79_white
small_arrow_7_whiteImage small_arrow_7_white
small_arrow_80_whiteImage small_arrow_80_white
small_arrow_81_whiteImage small_arrow_81_white
small_arrow_82_whiteImage small_arrow_82_white
small_arrow_83_whiteImage small_arrow_83_white
small_arrow_84_whiteImage small_arrow_84_white
small_arrow_85_whiteImage small_arrow_85_white
small_arrow_86_whiteImage small_arrow_86_white
small_arrow_87_whiteImage small_arrow_87_white
small_arrow_88_whiteImage small_arrow_88_white
small_arrow_89_whiteImage small_arrow_89_white
small_arrow_8_whiteImage small_arrow_8_white
small_arrow_90_whiteImage small_arrow_90_white
small_arrow_91_whiteImage small_arrow_91_white
small_arrow_92_whiteImage small_arrow_92_white
small_arrow_93_whiteImage small_arrow_93_white
small_arrow_94_whiteImage small_arrow_94_white
small_arrow_95_whiteImage small_arrow_95_white
small_arrow_96_whiteImage small_arrow_96_white
small_arrow_97_whiteImage small_arrow_97_white
small_arrow_98_whiteImage small_arrow_98_white
small_arrow_99_whiteImage small_arrow_99_white
small_arrow_9_whiteImage small_arrow_9_white
star_smallImage star_small
star_small_blueImage star_small_blue
star_small_blue_1xImage star_small_blue_1x
star_small_redImage star_small_red
star_small_red_1xImage star_small_red_1x
star_small_whiteImage star_small_white
star_tinyImage star_tiny
star_tiny_blueImage star_tiny_blue
star_tiny_blue_1xImage star_tiny_blue_1x
star_tiny_redImage star_tiny_red
star_tiny_red_1xImage star_tiny_red_1x
star_tiny_whiteImage star_tiny_white
ylw-pushpinImage ylw-pushpin

(Permalink/einzelne Projektseite)

OඞM

OඞM (ausgesprochen: Oh-sass-emm) ist ein kleines QA-Tool für OpenStreetMap, das ich hauptsächlich für mich selbst geschrieben habe. Es findet "suspekte" OpenStreetMap-Elemente, bei denen sehr wahrscheinlich was faul ist, und deswegen mit relativ wenig nachdenken das Problem gelöst werden könnte. Aber Rot ist halt nicht immer der Imposter und deswegen braucht jedes Objekt eine manuelle Prüfung.

Ein Pythonskript geht mithilfe von pyosmium die sachsen-latest.osm.pbf-Datei durch und wendet verschiedene pyosmium-Handler auf sie an. Ein Handler pro Quest.

Schlägt ein Handler an, wird das betreffende Objekt zu einer json-Datei hinzugefügt, zusammen mit mit einer kurzen Beschreibung des Problems und einem ID-Editor-Link und einem Bild-Link für meinen StaticMap-Dienst.

Die Website zeigt diese Liste dann einfach zufällig an. Es soll so ein bisschen einen "Grabbelkisten-Vibe" haben. Es gibt keine Möglichkeit, ein Problem als gelöst oder als falsch-positiv zu markieren.

Liste der derzeitigen Aufgaben

(Hier fehlt noch der GitHub-Link)

(Hier fehlt noch der Link zur Ergebnisseite)

(Permalink/einzelne Projektseite)

Parking Studio

Durch das neue StreetComplete-Overlay zu Parkstreifen habe ich mich näher mit Park-Tagging in OpenStreetMap befasst. Leider ist das Tagging fürs Parken doch zum Teil ganz schön sperrig. Insbesondere wenn spezielle Parkbeschränkungen durch Beschilderung ins Spiel kommen. Deshalb habe ich ein Tool gebaut, mit dem man die Art des Parkens am Straßenrand und die Beschilderung der Parkstreifen einfach zusammenklicken kann.

Parking Studio Schaubild

Features:

Das Programm ist hier zu finden.

(Permalink/einzelne Projektseite)

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.

Eine Statistik

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:

Die Farben als Bild

Hier ist die Verteilung als Grafik:

Die Farbenstatistik

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:

Eine Statistik

Ich denke, die Quests mit den extrem wenigen Lösungen lassen sich alle relativ einfach erklären:

Diese Grafik zeigt ein paar mehr der Quests:

Eine Statistik

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.

(Permalink/einzelne Projektseite)

StreetCompleteNess

StreetCompleteNess ist ein kleines Tool, dass ich entwickelt habe, mit dem man sehen kann, zu wie viel Prozent einige ausgewählte StreetComplete-Quests in einer Stadt erledigt wurden. Allerdings ist das Tool nicht nur für StreetComplete-User interessant, sondern für jeden, der für eine Stadt sehen möchte, wo es eventuell noch viele (oder nur ganz wenige) Details zu ergänzen gibt. Das fehlen dieser Attribute kann man nämlich auf einer Karte nicht so gut sehen.

StreetCompleteNess

Was kann mit dem Tool gesucht werden?

Das Tool ist auf Städte ausgelegt, und sucht bei einer Eingabe auch erstmal primär nach Städten, allerdings funktionieren alle Eingaben, die durch ein "Boundary"-Polygon angegeben werden. Bedeutet, auch Stadtteile oder Gemeinden könnten funktionieren. Allerdings sollte man aufpassen, denn nicht nur bei anderen Dingen die durch Grenzen angegeben werden (z.B. Bundesländer), sondern auch einfach bei großen Städten geht meinem Server gerne mal der Arbeitsspeicher aus. Daher ist das Tool eher für kleinere Städte gedacht. Anfangs hatte ich einen speziellen Fall eingebaut, um auch die drei Städte in Deutschland abfragen zu können, die technisch gesehen eigene Bundesländer sind. Da diese aber alle drei sowieso den Arbeitsspeicher übersteigen, habe ich diesen special case wieder ausgebaut und dafür die allgemeine Suche nach einem anderen Boundary-Polygon als Fallbacklösung wieder eingebaut.

StreetCompleteNess ist hier zu finden.

(Permalink/einzelne Projektseite)

StreetCompleteNumbers

StreetCompleteNumbers ist ein Python-Skript, um die Anzahl der gelösten StreetComplete-Quests für einen OpenStreetMap-Benutzer zu ermitteln.

Das Skript ist auf GitHub verfügbar.

Nach dem Importieren kann man die Funktion StreetCompleteNumbers mit einem OSM-Benutzernamen als Parameter aufrufen. Die Funktion akzeptiert auch einen integer als zweiten optionalen maximum-Parameter, der, wenn er gesetzt ist, dafür sorgt, dass das Skript nicht mehr als ( maximum * 100 ) Changesets abruft.

from StreetCompleteNumbers import StreetCompleteNumbers
StreetCompleteNumbers("maxmustermann")

Beispielausgabe

Die Funktion liefert ein Tupel mit der Gesamtzahl der gelösten Quests (in StreetComplete als ★ dargestellt) als ersten Wert und ein JSON-Objekt mit den gelösten Questzahlen für jeden Questtyp.

(31549, {'AddMaxSpeed': 231, 'DetermineRecyclingGlass': 29, 'AddRecyclingType': 44, 'AddFootwayPartSurface': 71, 'AddCyclewayPartSurface': 68, 'AddAddressStreet': 30, 'AddHousenumber': 129, 'AddCycleway': 455, 'AddMaxWeight': 28, 'AddParkingFee': 131, 'AddParkingType': 184, 'AddParkingAccess': 209, 'AddPostboxCollectionTimes': 75, 'AddPlaygroundAccess': 85, 'AddRecyclingContainerMaterials': 58, 'AddTrafficSignalsButton': 82, 'AddTrafficSignalsVibration': 102, 'AddTrafficSignalsSound': 93, 'AddVegetarian': 75, 'AddOpeningHours': 450, 'AddPlaceName': 98, 'AddWheelchairAccessBusiness': 307, 'AddVegan': 35, 'AddBenchBackrest': 245, 'AddSidewalk': 511, 'AddStepCount': 290, 'AddHandrail': 297, 'AddStepsIncline': 259, 'AddStepsRamp': 315, 'AddPathSurface': 2983, 'AddForestLeafType': 65, 'AddRoadSurface': 987, 'AddLanes': 204, 'AddRoofShape': 4189, 'AddBuildingLevels': 6030, 'AddBuildingType': 8146, 'AddTactilePavingCrosswalk': 155, 'AddCrossingIsland': 58, 'AddCrossingType': 76, 'AddBollardType': 12, 'AddToiletsFee': 6, 'AddWheelchairAccessToilets': 9, 'AddRailwayCrossingBarrier': 18, 'AddInternetAccess': 15, 'AddGeneralFee': 5, 'AddRoadName': 58, 'AddPitchSurface': 22, 'AddBusStopShelter': 42, 'AddBenchStatusOnBusStop': 44, 'AddTactilePavingBusStop': 78, 'CheckExistence': 325, 'AddTracktype': 31, 'AddMaxHeight': 63, 'AddWayLit': 2521, 'AddBusStopLit': 40, 'AddBikeParkingType': 18, 'AddCyclewaySegregation': 83, 'AddProhibitedForPedestrians': 18, 'AddPitchLit': 19, 'AddBikeParkingFee': 1, 'AddBikeParkingCapacity': 34, 'AddClothingBinOperator': 17, 'AddFireHydrantType': 4, 'AddChargingStationOperator': 11, 'AddChargingStationCapacity': 10, 'AddBabyChangingTable': 5, 'AddBikeParkingCover': 26, 'AddBoardType': 21, 'AddBikeParkingAccess': 1, 'SpecifyShopType': 1, 'AddBarrierType': 1, 'MarkCompletedHighwayConstruction': 16, 'AddAtmOperator': 3, 'AddPowerPolesMaterial': 42, 'AddBusStopName': 3, 'AddSummitRegister': 1, 'AddBridgeStructure': 8, 'AddSport': 11, 'AddCarWashType': 4, 'CheckShopType': 5, 'MarkCompletedBuildingConstruction': 3, 'AddSuspectedOneway': 3, 'AddToiletAvailability': 1, 'AddOneway': 2, 'AddInformationToTourism': 3, 'AddWheelchairAccessOutside': 1, 'AddKerbHeight': 1, 'AddTactilePavingKerb': 1, 'AddMotorcycleParkingCover': 2, 'AddFerryAccessMotorVehicle': 1})

(Permalink/einzelne Projektseite)

TUC Mensa Bot

Die Seite der Mensa, auf der man das Essen nachsehen kann, lädt bei gedrosseltem Internet nur schwer und die TU Chemnitz App ist irgendwie auch meistens mit der Aufgabe das Essen anzuzeigen überfordert. Also hab ich einfach einen Bot programmiert, der schnell und einfach das Essen der TU Mensa anzeigt. Das besondere: Man kann diesen Bot mit /english auch so einstellen, dass er das Essen auf Englisch versendet. Damit ist dieser Bot die einzige englischsprachige digitale Möglichkeit, das Essen der Mensa einzusehen. Um das Essen zugeschickt zu bekommen schreib einfach /essen oder irgendeinen Text (und ja, ich meine irgendeinen Text, du kannst ihm auch bnasjfn senden), und er wird mit dem Essen gemäß deiner Einstellungen antworten. Ab 2019 hat der TUC Mensa Bot eine neue, sehr wichtige Funktion! Es ist nun möglich, eine Mensa oder eine Caféteria zu wählen, für die das Essen dann angezeigt wird. Ursprünglich war es immer die Mensa Reichenhainer Straße, und das war meistens auch okay, da es in der Straße der Nationen meistens fast das selbe gibt. Aber es gibt ja auch noch zwei andere Mensen, und die Caféterien, in denen es immer andere Sachen gibt. Deshalb kann man sie jetzt mit dem Kommando /mensa einstellen.

Klicke hier, um mit dem Bot zu sprechen

2019 Update

Mensa-Bot

(Permalink/einzelne Projektseite)

Status-Saver für WhatsApp

Ich habe eine kleine App geschrieben, mit der man WhatsApp-Stories abspeichern kann.

Features
Download
Geplante Features

(Permalink/einzelne Projektseite)

WhatsAppToJSON

Damit ich versuchen kann, einen Chatterbot mit WhatsApp-Chats zu trainieren, musste ich das ganze in eine gut zu verarbeitende Form bringen. Da ich JSON sehr mag, habe ich mich entschieden die Chat-Exports in JSON zu konvertieren.

(Permalink/einzelne Projektseite)

YouTube-Annotation-Archive

Am 15.01.2019 hat YouTube die alten Anmerkungen endgültig gelöscht. In der Hoffnung, dass es irgendwann mal einen costum Player geben wird, der diese wieder anzeigen kann, hat ein GitHub-Nutzer schnell ein Programm zusammengepackt, dass die Anmerkungen Kanalweise exportieren kann. Ich wollte mich am konservieren der Anmerkungen beteiligen, also habe ich einige Kanäle (a.k.a. u.a. alle meine Abonnierten) exportiert, und die Ergebnisse auf GitHub frei verfügbar gemacht. Herausgekommen sind ~8000 XML-Dateien mit den Anmerkungen der Videos.

(Permalink/einzelne Projektseite)