Wo laufen sie denn?

In OpenStreetMap-Karten gibt es auch ÖPNV-Linien. Ich hatte mir mal überlegt, dass man darauf doch ÖPNV-Fahrpläne abbilden könnte. Quasi kleine Fahrzeuge darauf herumfahren lassen.

Stellt sich heraus: Sowas gibt’s schon 🙂

@_stk hat mir heute TRAVIC in die Timeline getwittert. Es handelt sich dabei um ein Projekt der Universität Freiburg, das genau das macht. Das sieht sehr ansehnlich aus:

TRAVICTheoretisch könnte man in dieses Tool auch Echtzeit-Verkehrsdaten einspeisen. Dafür müssten die Verkehrsbetriebe die aber erst einmal zur Verfügung stellen…

Barcodes

Barcodes sind klasse.

Ohne Barcodes müsste man jede Ware beim Verkauf händisch im Kassensystem erfassen oder im Warenbestand suchen.

Aber mit Barcodes: Bip.

ean

Nun bietet das Kassensystem, mit dem ich mich so generell herumschlage, zwar eine Option, mit der Barcodes ausgedruckt werden können. Die ist aber relativ unflexibel. Ich wollte also etwas, mit dem ich selbst EAN-Barcodes basteln kann. Als Vektorgrafik, versteht sich.

Zum Glück hat Wikipedia eine detaillierte Beschreibung, wie so ein Barcode aufgebaut und errechnet wird.

Lange Rede, kurzer Sinn: Ich bastelte ein Python-Skript und ein PHP-Skript, die zu einer EAN den passenden Barcode generieren1. Da das Python-Skript zuerst da war, heißt das Ganze halt noch pyEAN.

Projekt auf GitHub

Die Nutzung des Webdienstes ist kinderleicht: Einfach das PHP-Skript aufrufen und die gewünschte EAN angeben, also zum Beispiel:

http://hscmi.de/ean/makebarcode.php?code=0037600175340

Wer die SVG-Datei lieber zum Download angeboten bekommen möchte, hängt einfach ein &dl=1 an:

http://hscmi.de/ean/makebarcode.php?code=0037600175340&dl=1

So einfach ist das.

Bip.

  1. Warum umständlich anderer Leute Lösungen testen, wenn man auch ganz einfach selbst Aufwand betreiben kann, gell.

Eine Minecraft-Straßenkarte für den Nether basteln

Für den Minecraft-Server auf ironhide.de gibt es seit Mitte Juli eine mit Mapcrafter erstellte Google-Maps-artige Onlinekarte. Die ist sehr cool, da sich mit ihr gut Entfernungen und relative Positionen abschätzen lassen. Und natürlich kann man auf ihr die vielen prächtigen Bauwerke bewundern.1

Im Nether, der anderen Dimension, klappt das leider nicht ganz so gut: Der hat nämlich unten und oben eine Decke, man kann also nur sehr schlecht von oben reinsehen. Abhilfe schaffen entweder die (sehr bunte und unübersichtliche) Cave-Ansicht oder ein Abschneiden aller Blöcke ab einer bestimmten Höhe. Während das auf der betreffenden Karte im Startgebiet noch relativ ansehlich aussieht, weil nach oben relativ viel Platz ist, sieht man anderswo nur noch die rote Decke.

Ich hätte deshalb gerne eine 2D-Karte, auf der die Verkehrswege übersichtlich eingezeichnet und vor allem die Bahnstrecken gut zu erkennen sind. Das lässt sich zwar händisch malen, aber da ich faul bin, suchte ich einen Weg, das Ganze zu automatisieren.

Zum Glück gibt es eine Python-Bibliothek, mit der sich Minecraft-Maps bearbeiten lassen: pymclevel. Mehr brauchte ich eigentlich nicht.

Praktischerweise sind die meisten wichtigen Wege auf unserer Karte aus ästhetischen und sonstigen Gründen aus Stein gebaut, der in dieser Dimension nicht “natürlich” vorkommt. Wenn man also die Position aller Steinblöcke kartographiert, sollte man ein akzeptables Abbild des Wegenetzes bekommen.

Ich schrob also zwei Skripte: Eins, das die Karte lädt, daraus die Nether-Dimension lädt und dann die Position aller Steinblöcke, Schienen, Obsidianblöcke (für Portale) und Netherziegel (für Netherfestungen) ausliest. Und ein zweites, das daraus eine SVG-Karte bastelt.

Für den ironhide-Server sieht die dann zum Beispiel so aus:

mcpaths

Klick misch für die interaktive Version!

Hübsch.

Das Projekt gibt es auf GitHub zum selbst ausprobieren. Bitte zunächst die README.md lesen 😉

Hinweis: Wie wir festgestellt haben (*hust*), sollte man das Tool nicht auf einer Karte ausführen, die gerade bespielt wird. pymclevel setzt offenbar einige Schreibsperren, wodurch sich Minecraft verschluckt und alle Änderungen an der Welt wieder verschwinden, sobald der entsprechende Teil der Welt (Chunk) aus dem Speicher fliegt und eigentlich auf der Festplatte gesichert werden müsste.

Mit Karten der neuen Version 1.8 funktioniert das Tool auch (eben getestet).

Oh, und pymclevel benötigt übrigens die python-Pakete numpy und PyYaml.

  1. Seit dem Upgrade auf die Minecraft-Version 1.8 verschwinden leider die Markierungen wieder, sobald man das betreffende Gebiet der Karte betritt. Hier wäre wohl mal ein Mapcrafter-Upgrade fällig.