Kartenprojektionen - Hintergrund: Eine Projection engine

Das Problem

Es gibt ein Problem beim Rechnen von Kartennetzen: Die Zahl der Projektionen ist sehr groß. Am besten wäre da natürlich eine Programm, mit dem man alle Netzentwürfe rechnen kann.

Ist ein derartiges Anwenderprogramm denkbar? Wohl kaum. Denn es kann ja Netzentwürfe geben, die der Programmierer des Anwenderprogrammes überhaupt nicht kennt. Computer können durchaus gewisse Wunder vollbringen. Aber eines können sie auf keinen Fall: Ohne Algorithmus rechnen.


Die Lösung

Moment mal: Man braucht eine Formel. Das heißt aber nicht, dass diese auch dem Programmierer der Anwendung bekannt sein muss. Wenn man das Anwenderprogramm und die Formel des Netzentwurfs trennt ... man nehme also ...

1. Eine Programmiersprache .... A Programming Language ...

Die darf natürlich nicht viel Wirtschaft machen. Wir wollen hier weder C++ noch Java nachimplementieren, noch 5000 Schlüsselworte, Befehle, Datentypen, Klassen, Objekte, Strukturen und Funktionen neu erfinden.

Die Programmiersprache soll sich so einfach wie möglich von ihrem Quelltext in Maschinencode übersetzen lassen. Wir nennen das ganze RT („Reduced Transliteration“), nehmen das älteste und einfachste Programmiersprachkonzept, das es gibt: Assembler. Indem wir nun z. B.

add phi 10
sin phi
mul phi A

aufschreiben und so hintereinander Addition, Sinus und Multiplikation anweisen, wird die Formel A*sin(φ+10) umgesetzt. add, sin und mul sind Befehle, phi, 10 und A sind Zahlen oder Variablen. Man braucht etwa 100 verschiedene Befehle um „turingminimal“ zu sein. So werden sich sämtliche in der Kartennetzentwurfslehre üblichen Formeln abcoden lassen.

Hier die RT-Assembler-Sprachdefinition.
• Here the the RTA Language draft.

2. Einen virtuellen Prozessor .... A Virtual Processor ...

Nun nützt so ein Programmiersprache RT allerdings nicht viel, wenn es keine Maschine gibt, die die Assemblerbefehle versteht.

Prozessoren löten ist out, man kann sich aber eine virtuelle Maschine schreiben, „auf der“ ein Programm in RT „laufen kann“. Hierbei muss zunächst ein RT-Assembler das RT-Quellprogramm in einen Code übersetzen. Dann kann ein RT-Prozessor den Code abarbeiten.

Hier der Quellcode von RT-Assembler und RT-Prozessor in Visual Basic.
• Here the RT-Assembler and Processor Source code in Visual Basic.

3. Eine Projection engine .... A Projection Engine ...

Der RT-Prozessor kann nun eine allgemeine Koordinatentransformation einer x, y-Koordinate in eine x', y'-Koordinate vornehmen. Das Ganze kommt nun an die Stelle eines Netzentwurfsprogramm, an der ein Paar geographischer Koordinaten λ, φ in Kartenkoordinaten x, y umzurechnen ist.

Dies ist die Projection engine.

Das Netzentwurfsprogramm selbst ist „dumm“ und kennt keinen einzigen Netzentwurf. Es weiß nur, dass ein λ-φ-Paar ganz allgemein in eine Kartenkoordinate x, y umzurechnen ist. Es fragt nach einem RTA-Programm und den Rest macht dann der RT-Prozessor.

Hier ein Verzeichnis der bereits in RTA implementierten Netzentwürfe und ihrer Quelldateien.
• Here a map projection and RTA-Program directory.

Zum Seitenanfang