<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Wikimedia on Natenoms Blog</title><link>https://natenom.de/tags/wikimedia/</link><description>Recent content in Wikimedia on Natenoms Blog</description><generator>Hugo -- gohugo.io</generator><language>de</language><copyright/><lastBuildDate>Tue, 27 Jun 2023 05:03:01 +0200</lastBuildDate><atom:link href="https://natenom.de/tags/wikimedia/index.xml" rel="self" type="application/rss+xml"/><item><title>Eine Heatmap aus GPX-Dateien erstellen – Mit einem Python-Tool</title><link>https://natenom.de/2023/06/eine-headmap-aus-gpx-dateien-erstellen-mit-einem-python-tool/</link><pubDate>Tue, 27 Jun 2023 05:03:01 +0200</pubDate><guid>https://natenom.de/2023/06/eine-headmap-aus-gpx-dateien-erstellen-mit-einem-python-tool/</guid><description><![CDATA[<p>Da ich seit Ende Januar <a  href="/2023/01/ein-neuer-fahrradcomputer-teil-1-wieso-weshalb-warum-und-eine-entscheidung/">mit dem neuen Fahrradcomputer</a> alle meine Fahrten aufzeichne, möchte ich natürlich irgendwann auch eine Heatmap erstellen.</p>
<p>Eine Heatmap ist eine Karte, auf der man erkennen kann, welche Strecken man oft gefahren ist und welche eher selten.</p>
<p>Es gibt verschiedene Tools für diesen Zweck. Ich habe mehrere ausprobiert und mich letztlich für eines entschieden.</p>]]></description><content:encoded><![CDATA[<p>Da ich seit Ende Januar <a  href="/2023/01/ein-neuer-fahrradcomputer-teil-1-wieso-weshalb-warum-und-eine-entscheidung/">mit dem neuen Fahrradcomputer</a> alle meine Fahrten aufzeichne, möchte ich natürlich irgendwann auch eine Heatmap erstellen.</p>
<p>Eine Heatmap ist eine Karte, auf der man erkennen kann, welche Strecken man oft gefahren ist und welche eher selten.</p>
<p>Es gibt verschiedene Tools für diesen Zweck. Ich habe mehrere ausprobiert und mich letztlich für eines entschieden.</p>
<p>Sie alle verarbeiten GPX-Dateien, manche auch optional Fit-Dateien.</p>

<h2 id="fit-nach-gpx-konvertieren" data-numberify>.fit nach .gpx konvertieren<a class="anchor ms-1" href="#fit-nach-gpx-konvertieren"></a></h2>
<p>Mittels <code>gpsbabel</code> kann man eine fit-Datei<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> in eine gpx-Datei konvertieren. Mit diesem Aufruf werden z. B. alle .fit-Dateien in einem Verzeichnis in gpx-Dateien konvertiert:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#66d9ef">for</span> file in *.fit; <span style="color:#66d9ef">do</span> gpsbabel -i garmin_fit -f <span style="color:#e6db74">&#34;</span><span style="color:#e6db74">${</span>file<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span> -o gpx -F <span style="color:#e6db74">&#34;</span><span style="color:#e6db74">${</span>file<span style="color:#e6db74">}</span><span style="color:#e6db74">.gpx&#34;</span>; <span style="color:#66d9ef">done</span>
</span></span></code></pre></div>
<h2 id="das-tool--strava-local-heatmap" data-numberify>Das Tool – Strava-local-heatmap<a class="anchor ms-1" href="#das-tool--strava-local-heatmap"></a></h2>
<p>Das Tool gibt es auf Github, <a  class='urlextern'  href="https://github.com/remisalmon/Strava-local-heatmap">siehe hier</a>.</p>
<p>Obwohl &ldquo;Strava&rdquo; ein Teil des Projektnamens ist, braucht man weder Strava-Account noch sonst etwas aus der Cloud. Das ist nur deshalb im Namen, weil solche Heatmaps von Strava bekannt sind.</p>

<h3 id="wichtig-änderungen-am-script" data-numberify>Wichtig: Änderungen am Script<a class="anchor ms-1" href="#wichtig-änderungen-am-script"></a></h3>
<p>Dort ist noch der Tileserver von Wikimedia voreingestellt, der jedoch aus Sicherheitsgründen abgeschaltet wurde. Das bedeutet, man muss das Script etwas ändern, sonst erhält man beim Aufruf nur eine leere Karte.</p>
<p>In Zeile 39 ändert man die URL nach:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>OSM_TILE_SERVER <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;https://tile.openstreetmap.org/</span><span style="color:#e6db74">{}</span><span style="color:#e6db74">/</span><span style="color:#e6db74">{}</span><span style="color:#e6db74">/</span><span style="color:#e6db74">{}</span><span style="color:#e6db74">.png&#39;</span>
</span></span></code></pre></div><p>Und zusätzlich in Zeile 92 den User Agent auf irgend etwas, am besten etwas individuelles, bei mir z. B. auf <code>strava-heatmap</code>.</p>
<p>Ändert man den User Agent nicht, dann bekommt man beim Download einen HTTP-Status 403 (Forbidden), was man sehr gut mit wget testen kann. Im Browser wird ein Tile jedoch angezeigt.</p>

<h3 id="heatmap-erstellen" data-numberify>Heatmap erstellen<a class="anchor ms-1" href="#heatmap-erstellen"></a></h3>
<p>Sobald man die Änderungen eingefügt hat, kann man das Tool verwenden:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>python3 strava_local_heatmap.py --dir /tmp/gpx_files/ --output /tmp/headmap.png
</span></span><span style="display:flex;"><span>Reading 1.fit.gpx
</span></span><span style="display:flex;"><span>Reading 2.fit.gpx
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>…<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>Reading 6.fit.gpx
</span></span><span style="display:flex;"><span>Read <span style="color:#ae81ff">25571</span> trackpoints
</span></span><span style="display:flex;"><span>Auto zoom <span style="color:#f92672">=</span> <span style="color:#ae81ff">14</span>
</span></span><span style="display:flex;"><span>downloading tile 1/54
</span></span><span style="display:flex;"><span>downloading tile 2/54
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>…<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>downloading tile 54/54
</span></span><span style="display:flex;"><span>Saved /tmp/headmap.png
</span></span></code></pre></div><p>Heruntergeladene Tiles werden für den nächsten Aufruf lokal abgespeichert.</p>
<p>Aus Gründen der Privatspähre füge ich hier keine Heatmap von mir ein. Ein Beispiel gibt es auf der Projektseite in der Projektbeschreibung, <a  class='urlextern'  href="https://github.com/remisalmon/Strava-local-heatmap/blob/master/images/heatmap.png">siehe hier</a>.</p>

<h3 id="hilfe" data-numberify>Hilfe<a class="anchor ms-1" href="#hilfe"></a></h3>
<p>Weitere Möglichkeiten gibt es in der Hilfe des Tools, die man mittels <code>--help</code> erreicht.</p>

<h2 id="helferscript" data-numberify>Helferscript<a class="anchor ms-1" href="#helferscript"></a></h2>
<p>Ich werde noch ein kleines Helferscript schreiben, um auf der Kommandozeile mit einem Aufruf eine Heatmap für z. B. Juni erstellen zu können, das dann im Hintergrund temporär fit-Dateien in gpx umwandelt, danach wieder löscht und nur die generierte Heatmap im aktuellen Verzeichnis ablegt.</p>
<p>Das werde ich dann hier später auch verbloggen.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Das neue Format 2.x kann so nicht mehr von gpsbabel verarbeitet werden, der Fahrradcomputer &ldquo;Wahoo Elemnt v2&rdquo; liefert aber noch das &ldquo;alte&rdquo; Format.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>]]></content:encoded></item></channel></rss>