Kennung: programmieren

gis-tools.py - Geodatenkonverterset

Manchmal muß man sehr alte archæologischen Vermessungen in moderne GIS einlesen. Das einfachste Vermessungsverfahren bevor es Laser-Tachymeter gab, war Distanz und Winkel.

Leider bieten die Opensource GIS-Programme GrassGIS und QuantumGIS keine Möglichkeit Polarkoordinaten einzulesen. Für GrassGIS ist zwar das Add-On Modul m.cogo vorhanden, welches aber derart aufwendige Vorformatierung erfordert, daß man es schneller in einer Tabellenkalkulation selber umgerechnet hat.

Also war eines meiner ersten Projekte mit Python die Umwandlung von Polarkoordinaten zu kartesischen Koordinaten.

Um gewisse Dinge nicht immer neu schreiben zu müssen, habe ich also das ganze Ding modularisiert und es ist der zweite Part (mein erstes Spielzeug war die Umwandlung von Grad zu Dezimalgrad) meiner kleinen gis-tools in Python. Da ich kein Skript gefunden hatte für diese Messreihenumwandlung möchte ich nun auch meinen kleinen Beitrag leisten und es an die Allgemeinheit zurückgeben. Es ist zwar noch in einem sehr unausgereiftem Stadium (simple Datei mit ASCII öffnen, auslesen, umwandeln und in einer neuen Datei speichern), aber vielleicht nützlich für den einen oder anderen mit ähnlichen Daten.

Bisher sind noch etliche Einschränkungen vorhanden:

  • kein Unicode!
  • der Parser ist auf 'Punktname, Distanz, Winkel, zusätzliche Bemerkung' beschränkt und erlaubt keine Abweichungen
  • Der Initialpunkt wird grundsätzlich mit den Koordinaten 0;0 angenommmen
  • keine GUI
  • einfache Genauigkeit

Auf lange Sicht möchte ich das ganze als Plug-In(-Sammlung) für QGIS gestalten, da hier ohnehin gerade die Weichen für Python-Skripte gestellt werden und mit Qt mein bevorzugtes GUI-Toolkit zum Zuge kommt.

Die jeweils aktuelle Version findest Du unter Projekte.

  Nergal

GPL 2 oder 3 und nochmal was zu gis-tools.py

Nun mußte ich mich also entscheiden unter welche Art von Lizenz soll ich meine Software stellen.

Gar nicht so einfach, zum einen soll es eine übliche Lizenz sein, eigentlich wäre mir die, die ich auch für dieses Blog allgemein verwende am liebsten. Dummerweise wird das aber nicht empfohlen von den Leuten bei Creative Commons - schade eigentlich, ich finde es wäre doch ein leichtes die Lizenz auch auf OpenSource Software auszudehnen.

Sei's drum. - Also entschied ich mich wenigstens äußerlich der CC-Lizenz nahe zu bleiben und nahm deren Angebot dankbar an, die GPL über das CC-Emblem dafür einzubinden.

Mich wunderte zwar, daß da überall noch was von GPL 2 stand, hatte ich doch eigentlich gedacht die frisch gebackene GPL 3 zu verwenden.

Also stieß mich hier das Schicksal doch deutlich darauf mir doch mal etwas genauer die Unterschiede anzusehen, bzw. Artikel darüber zu lesen - ich lese gerne, aber juristischen Kauderwelsch zu verdauen fällt bei mir nicht mehr unter das Lesevergnügen.

Da haben mich dann doch ein paar Dinge erstaunt. Vor allem aber folgendes: so würde mich die GPL 3 nach deutschem Recht schlechter stellen. Ich wäre auch noch verpflichtet Lizenzverletzer in einer Frist zu kontaktieren und ich müßte den Lizenzvertrag quasi manuell kündigen, ja wozu mache ich mir denn hier die Mühe eine Lizenz zu wählen, doch um genau so einen Unfug zu vermeiden.

Nicht, daß ich glaube ich würde jemals eine Lizenzüberschreitung zu ahnden haben, dafür ist mein Kram dann doch zu simpel und sicherlich auch nicht einzigartig.

Das meiste betrifft mich glülicherweise gar nicht, da ich ja keine Hardware erstelle und auch kein DRM verwenden werde.

Also habe ich mich erstmal dazu entschieden es auf die GPL 2 zu beschränken, ändern kann ich es später ja immer noch.

Ach ja, nebenher habe ich für die gis-tools.py noch eine Dokumentation erstellt und eine TODO Liste angefangen. Nur das Changelog habe ich noch vergessen

  Nergal

gis-tools.py v 0.4b ist geschlumpft

Juchuu! - nach fleißigem Basteln freue ich mich Version 0.4b der gis-tools.py freizugeben. Mein besonderer Dank geht an Seth Arnold, der mir mit viel Geduld geholfen hat die eine oder andere Hürde zu überwinden.

Hinter den Kulissen hat sich einiges getan:

  • wie bereits angekündigt, ist der Code nun deutlich modularisiert und unterteilt in Benutzerschnittstelle, Konvertierungsfunktionen und dem Syntaxanalysierer (habe ich doch direkt mal das Wort 'parser' mit ding nachgeschlagen - herrliches Wort!), der derzeit noch den Kleber zwischen den anderen Ebenen spielt, sowie eine Hilfe und ein Auxiliarmodul für allgemeine Berechnungen.
  • für die Umwandlung von Längen- und Breitengraden zu UTM-Koordinaten sind die Möglichkeiten hinzugekommen zwischen
    • einer aus den Längengraden berechneten gemeinsamen UTM-Zone,
    • je Koordinatenpaar die optimale Zone zu berechnen und
    • eine vom Anwender vorgegebene Zone, die angegeben werden muß
    • zu wählen.

Ein bisl Zeit und Energie braucht es noch, bis auch das Analysieren der Eingabedatei flexibler von statten gehen kann. Momentan geht die Überlegung dahin, die Datenstruktur aus einer Titelzeile herauszulesen, das wäre am einfachsten für den Anwender, würde aber wiederum erschweren, 'mal eben' was auszulesen. Aber auch da wird es eine Lösung geben.

  Nergal

Nachtrag: v 0.3 mit LL2UTM-Konvertierung

Manchmal hat man Glück. Das Thema Längen- und Breitengrade in UTM (Universal Transverse Mercator) umzuwandeln hat wohl aufgrund seiner enormen Komplexität des öfteren Interessierte veranlasst entsprechende Fragen zu stellen und glücklicherweise höchst fundierte Antworten zu bekommen.

So war es relativ einfach, die hinter der Konvertierung stehende Formel in die gis-tools.py einzubinden. Ein bischen Feinschliff und einige zusätzliche Features möchte ich noch einbinden, um auch große Reihen von Koordinaten elegant umzuwandeln. Version 0.4 wird also schon bald folgen.

  Nergal