Formatdefinition GMF-Dateien

  • Hallo,


    Für selbstkalibrierte Karten werden ja GMF-Archive empfohlen. Die Dinger kann aber meines Wissens nur GlopusMapFile erzeugen.


    Ist das Dateiformat irgendwo (und sei es im Source von GlopusMapFile oder den geotools) definiert? Ich würde die Dinger unheimlich gerne von einem Perl-skript oder ähnlich erzeugen lassen damit ich immer aktuelle Kartenpakete auf meinem Server habe ohne daß ich hergehen und manuell ein Windows-Programm starten muß.




    'Tschüß,
    Hakan

  • Hi Hikan,


    Peter hat die Formatdefinition schonmal hier im Forum publiziert, nicht leicht zu finden. Auf der Glopus-Website steht's anscheinend nicht.


    In geotools (Forum s.o.) steht es dokumentiert in
    doc-txt/gmf-extract.txt


    Zur Erzeugung der GMF kannst du auch mein gmf-generate-Programm nehmen. Das kannst du ohne Windows direkt in dein Perl-Script einbetten. Die Liste der einzupackenden Kacheln wird per stdin-Pipe eingespielt. Doku siehe doc-txt


    cat *.kal | gmf-generate directory map.gmf

  • Danke für die schnelle Antwort, inzwischen habe ich auch gesehen daß es in geotools-<xyz>.zip Linux-binaries gibt . Das hätte ich doch wohl *VOR* dem Posten machen sollen :Lesen


    Das gmf-generate aus dem aktuellen geotools-Archiv wirft bei mir allerdings einen SegFault. Das PNG und das dazugegörige kal-file habe ich angehängt, das kal-file mußte ich allerdings für das Forum in *.kal.txt umbenennen. Glopus selber kommt mit diesem Kartenfragment (Für Neugierige: Teil von Antalya aus den OpenStreetMap-Karten) zurecht.


    Der Aufruf ist, wie von dir beschrieben,


    cat *.kal | <pfad-zu-den-binaries>/gmf-generate ../maps antalya.gmf


    Der Pfad ../maps existiert, das Directory ist leer.




    'Tschüß,
    Hakan



    --------------------------------------------------
    [Calibration Point 1]
    Longitude = 30.673828125
    Latitude = 36.9498328147643
    Pixel = POINT(0,0)
    [Calibration Point 2]
    Longitude = 30.76171875
    Latitude = 36.8795617089201
    Pixel = POINT(1023,1023)
    [Map]
    Bitmap = OSM_z12_y1595_x2397_p1024.png
    Size = SIZE(1024,1024)
    [Projection]
    Projection = Geodetic
    CoSys = Geodetic
    --------------------------------------------------

  • Oh, SegFault ist nicht gut. Das habe ich mit deiner Beispieldatei auch in Windows. Ich vermute das hängt mit den neuen KAL-Dateien zusammen. Die waren früher aus GMM 4-Punkt-Kalibriert, jetzt nur noch 2-Punkt. Die geotools habe ich immer nur mit 4-Punkt-KAL's getestet. Mache Sachen wie googlesuperoverlay brauchen auch 4 Karteneckpunkte. Vor einiger Zeit hatte ich die GMF-Tools korrigiert, so dass für gmf-selection.exe 2-Punkt auf 4-Punkt aufgeweitet wird, aber das ist noch nicht publiziert. gmf-generate sollte eigentlich auch 2 Punkte schlucken. Dann ist es sicher ein Bug. Gut dass du mich darauf hinweist. Ich werde das demnächst mal abchecken.

  • Ohne zu drängeln: Ich wollte so am 19.12. in Urlaub fliegen und dabei testweise OpenStreetMap-Karten mitnehmen :D


    Da wäre es doch ganz nett, wenn ich vorher einige Tests machen könnte :P


    Paralell werde ich auch versuchen, meine Perl-Skripte so aufzubohren, daß sie 4 Kalibrierungspunkte schreiben.


    Kann ich dir beim Debuggen helfen? Wie schaut es eigentlich mit Sourcen zu den geotools aus? Siehst du die mehr "privat" oder eher Open Source mäßig?



    'Tschüß,
    Hakan

  • Hi,


    sorry, der C-Source steckt zum größten Teil in privaten Libraries, die ich auch für andere Progrämmchen nutze. Die will ich noch nicht auseinanderpflücken und publizieren. Vielleicht später mal. Aber dafür gibt's ein paar schöne bash-Scripts im Source :)


    Zum Bug: es ist wohl noch ein Bug drin, nachdem gmf-generate mindestens 2 Kacheln braucht um zu funktionieren. Beizeiten werd ich das nochmal checken. Und wie gesagt, mit 2 Kalibrierpunkten läuft es auch nicht. Bisher hatte ich eine derartige Kombination bei meinen Karten nicht, daher sind die Fehler nicht aufgefallen.


    Hier im Anhang ist eine Bastelversion der GMF-Progrämmchen, die teils auch 2-Punktekarten schlucken. Nur gmf-generate nicht, da musst du die offiziellen Tools nehmen. Aber gmf-selection, gmf-correct etc. geht schon. Linux-Version geht momentan nicht, bin nicht zu Hause.


    Wenn du GMF unbedingt auf einem Linux-Server erzeugen willst, kannst du auch das Commandline GlopusMapFile.exe per wine starten.

  • Danke für die Mühe, ich werde vorerst versuchen, meinen Skripten 4 Kalibrierungspunkte beizubringen. Die urprüngliche Idee ist ja, daß meine Skripte von einem völlig leeren Directory ausgehen und am Ende ein korrektes GMF-File herauspurzelt...


    Die Methode mit einer Kachel alleine hatte ich ehrlich gesagt auch nur gewählt damit ich einen möglichst einfachen Testcase für dich habe :D


    Die Wine-Möglichkeit schaue ich mir paralell auch nochmal an, ich will ja doch so nahe wie möglich an den "offiziellen" Tools bleiben ;)



    'Tschüß,
    Hakan

  • Mir hatte auch eine Formel gefehlt, allgemein aus N Kalibrierpunkten die 4 Kartenecken zu berechnen. Da geht sicher bei N>4 noch einiges an Ausgleichsrechnung ein. Die 2 auf 4 geht mit ein paar min-max-Beziehungen im Rechteck (die Reihenfolge soll ja beliebig sein).


    Ich weiss nicht, wie du das mit "leeres Directory" meinst. Du brauchst doch die Bilddateien vorher. Oder willst du die Kacheln Stück für Stück dem GMF anfügen? Das wird problematisch, weil im File-Header die variabel-großen Kalibrierdaten stehen.

  • Zitat

    Original von hakan42
    cat *.kal | <pfad-zu-den-binaries>/gmf-generate ../maps antalya.gmf
    Der Pfad ../maps existiert, das Directory ist leer.


    Moment, das kann ja schon gar nicht gehen. In ../maps müssen die Bilddaten stehen, die von den *.kal-Kalibrierdateien angefordert werden. Dafür ist die Angabe doch da.

  • Zitat

    Original von frank334
    Ich weiss nicht, wie du das mit "leeres Directory" meinst. Du brauchst doch die Bilddateien vorher. Oder willst du die Kacheln Stück für Stück dem GMF anfügen? Das wird problematisch, weil im File-Header die variabel-großen Kalibrierdaten stehen.


    Sorry, das war mißverständlich ausgedrückt.


    Ich meinte, daß sich mein Skript um den ganzen Kleinkram wie z.B. Kacheln von OSM downloaden, *.kal erzeugen, und nicht zu letzt auch <irgendwo>.gmf erzeugen, kümmert ohne daß manuelle Interaktion notwendig wäre.


    Daher wäre ein osm-generate, das mit zwei Punkten zurechtkommt, schön gewesen, aber wenn's dir die Arbeit vereinfacht bringe ich meinem Skript bei, 4 Punkte zu erzeugen. Wie du gesagt hast, ein einfaches min/max tut es ja, da ich selber bestimme, welche Kacheln ich vorher downloade...



    'Tschüß,
    Hakan

  • Arggh. Ich hab's. Peter hat zwischenzeitlich das KAL-Format geändert. Bitte, Peter, sag immer bescheid, wenn du an den Formaten etwas änderst. Ansonsten kann es bei Drittprogrammen Probleme geben.


    Was ist passiert? Nun, früher startete jede KAL-Datei mit dem Schlüsselwort


    [Kalibrierung]


    Das fehlt jetzt in den neuen KAL-Dateien des GMM. Da meine Programme bei einer kontinuierlichen Liste von KAL-Dateien auf dieses Schlüsselwort triggert, kommt es zu einem Fehlerzustand mit falscher Array-Indizierung. Den hätte ich natürlich abfangen können, aber wie gesagt, bei Hobby-Programmen bin ich nur froh wenn es läuft und investiere keine Stunden in der Behandlung aller möglicher Fehlerquellen. Mit den alten KAL's lief ja auch alles.


    Also Hakan, wenn du einfach nur dieses Schlüsselwort an den Anfang der KAL-Dateien schreibst, müsste das gmf-generate Tool funktionieren.


    p.s.
    werd die geotools demnächst mal überarbeiten, damit alles auch mit 4 kalibrierpunkten läuft


    p.p.s. die Zwischenversion der bin-Programme (siehe ZIP weiter oben) sollte das Problem gelöst haben, d.h. auch neue KAL's verdauen. Die Linux-Version kompilier ich nächste Woche, hab momentan keine Linux-Kiste zu Hause. Du kannst aber mal probieren, ob die win32-Version mit wine funktioniert: "cat *.kal | wine gmf-generate ./maps map.gmf". Würd mich selbst mal interessieren, ob das geht.

    Einmal editiert, zuletzt von frank334 ()

  • Zitat

    Original von frank334
    Arggh. Ich hab's. Peter hat zwischenzeitlich das KAL-Format geändert. Bitte, Peter, sag immer bescheid, wenn du an den Formaten etwas änderst. Ansonsten kann es bei Drittprogrammen Probleme geben.


    Ich war's nicht!!! :] GMM und auch Glopus schreiben diese Sektion immer noch mit, obwohl der Inhalt längst überholt ist.

  • Oh, sorry, Peter, du hast recht. Ich hab's gerade nochmal am GMM gecheckt. Da ist die Section noch drin. Dann war's Hakan mit den fehlerhaften KAL-Dateien. Mein KAL-Parser kommt aber jetzt mit beiden Varianten zurecht und triggert am [Calibration Point 1]. Ich selbst brauche ja kaum noch neue Karten, seitdem meine Umgebung in der tollen Top25-Auflösung drin ist.

  • Und, Hakan, hat's funktioniert?


    Wenn du [Kalibrierung] einfügst, müssten ja auch die alten Linuxprogramme funtionieren. Hab momentan keinen Nerv, meine alte Linuxbox wieder anzufahren. Demnächst kommt sowieso ein Update auf OpenSuse 10.3, dann werd ich da wieder rangehen.

  • Sorry, ich bin nicht dazu gekommen, das ganze nochmal zu probieren. Das Wochenende hat doch zu früh aufgehört :-D)


    Ich gebe nochmal Bescheid sobald ich das angetestet habe.



    'Tschüß,
    Hakan