osmpng

English version below

Für mein SEGeo-Projekt habe ich gerade an einem neuen Tool gebastelt: osmpng

osmpng erstellt große PNG-Karten basierend auf den Kartenmaterial von OpenStreetMap (OSM).
Im Grunde lädt es kleine Kartenausschnitte von OSM-Servern herunter und erstellt aus diesen Teilausschnitten ("tiles") dann eine große Karte.

osmpng lädt einen Kartenausschnitt herunter
osmpng lädt einen Kartenausschnitt herunter

Getestet habe ich das Tool mit einem recht großen Kartenausschnitt von Innsbruck. Resultat ist eine tadellose PNG-Datei von etwa 50MB. Straßennamen und Häusernummer sind klar ersichtlich, lediglich das Laden der Datei ist etwas mühsam 🙂

Das Tool ist ein eigenes Repository auf GitHub und auf der osmpng-Seite des Blogs.

 

English version

My SEGeo-Project is growing. Today I've written a new tool for the project: osmpng.

osmpng is a simple C++ program that creates arbitrary huge PNG maps based on the data of OpenStreetMap (OSM).
In particular it downloads small map pieces ("tiles") from OSM servers and merges them to a single, possibly giant map.

The test osmpng was a ~50MB big PNG map of Innsbruck (Austria). Street names and house numbers are clear visible, only the loading of the PNG file was a bit annoying.

osmpng is found as a repository on GitHub and at the osmpng page of the blog.

Redshift program

Ich habe ein kleines Programm in C++ geschrieben, mit dem der kosmologische Redshift berechnet werden kann. Das Programm findet ihr hier und kann (unter Linux) mit dem folgenden Befehl ganz einfach kompiliert werden:

g++ -Wall -Werror -pedantic -O3 redshift.cpp -o redshift

Das Programm hat des Weiteren Einzug im (neuen) Feldspaten-Repo gefunden.

Redshift-Programm in Action
Redshift-Programm in Action

 Hintergrund

Der kosmologische Redshift in ein Maß für die Distanz eines Objektes und benutzt dazu die Beobachtungen von Hubble. Hubble stellte fest, dass sich weit entfernte Objekte schneller von uns weg bewegen als nahe Objekte. Interessant dabei ist, dass der Raum isometrisch beschleunigt wird, sprich, die Expansion des Universiums ist überall gleich.

Zusammengefasst lässt sich dieser Sachverhalt in Hubble's law festhalten:


Der Redshift z lässt sich wie folgt darstellen:


Zusammengefasst also

Eine simple Ein- und Ausgabe dieses Sachverhalts mit mehereren Eingabemöglichkeiten für die Distanz (m, ly, pc oder Mpc) ist im Programm beinhaltet.

Trivialimplementierung: MySQL in C++

Ich habe eine sehr einfache Implementierung einer Zugriffsklasse auf MySQL in C++ geschrieben. Dient mehr als Schulungsmaterial und als Vorlage für eigene Implementierungen denn für den produktiven Einsatz.

Download

Im übrigen denke ich ernsthaft darüber nach, die Repository für diverses umzustellen und handlicher zu machen. Das Nackte Apache-Directory Listing ist mir mittlerweile zu einfach geworden 😉

C++ Thread-Klasse

Ich habe soeben eine ganz einfache Thread-Datei für C++ fertiggestellt.
Zur Zeit arbeitet die Datei mit POSIX-Threads, und nur unter Unix-like-systems, vielleicht bauche ich das ganze noch auf 🙂

Nicht vergessen: Wenn man mit POSIX-Threads arbeitet, beim gcc den Kompilerflag -pthread anzugeben!

Als einfaches Beispiel beide Dateien downloaden und mit der folgenden Zeile kompilieren

Jep, ich bin ein pedantic-Fan 😉

 

Die Dateien findet ihr hier

ZUM eigenständigen Programmieren braucht ihr nur die thread.h!! Die thread.cpp beinhaltet lediglich ein Beispielprogramm