OziExplorer MAP Kalibrierdaten nach Glopus konvertieren

  • Hier ein kleines Programm, dass von OziExplorer die Kalibierdatei in das Glopus-Format konvertiert.


    Hintergrund war die Möglichkeit unseres geliebten NH-Toptrans, aus Google/Top50/MagicMaps Karten in das Ozi-Format zu konvertieren. Leider passen dann die Kalibierdateien nicht zu einer Glopus-Nutzung. Das ist nun hiermit möglich. Vorteil von NH-Toptrans gegenüber GlopusMapManager (GMM) ist es, dass man einfach die zu konvertierende Fläche in Top50 angeben kann und als OVL speichern. Bei GMM muss man erstmal die Kachelaufteilung berechnen. Aber auch anderes bereits für Ozi vorhandenes Material kann so leicht konvertiert werden.


    Den kleinen Konverter habe ich unter GCC kompiliert (Windows www.cygwin.com). Mit der cygwin1.dll müsste das auch unter Normalwindows laufen. Nur der Batchkonverter als BASH-Script ist für CYGWIN geschrieben. Ich hab jetzt keinen Nerv das in Windows-BAT umzuschreiben, dürfte für euch aber eine Leichtigkeit sein. Andererseits ist Cygwin und BASH schon eine gute Ergänzung zu Windoof.


    Übrigens, das ist Quick & Dirty in einer Stunde zusammengehackt. Kann sein das noch Fehler drin sind (bitte melden!). Ausserdem mag das womöglich nicht mit allen Ozi-Formaten zurechtkommen. Ich habe nur das von NH-Toptrans generierte angesehen. Technisch: es wird die 4-Punkte-Kalibierung von Ozi einfach nur in das Ozi-Format umgeschrieben, weiter nichts.


    Jaa, jetzt ist auch die Google-Satkarte auf meinem Navi ... :D


    Viel Spass


    - update: attachment gelöscht
    eine Verbesserte Version ist im Thread "Umgang mit vielen Karten-Kacheln" als geotools*.zip enthalten

    5 Mal editiert, zuletzt von frank334 ()

  • Hallo,


    also ich habe jetzt mal ein 4x5 Kilometer grosses Stück mit ein paar Kacheln von nh-Toptrans erzeugen lassen. Wenn ich jetzt in den von nh-toptrans erstellten Ordner "Kacheln" das exe und die dll aus deiner zip-Datei kopiere und map2kal.exe starte kommt:


    [Comment]
    Converter = OziMap to Glopus Map Converter
    Author = frank334
    Date = 27.10.2006


    [Kalibration]



    ist ja ganz nett, aber nach einigen Sekunden kommt einem der Gedanke, dass da was nicht so ist wie es soll.


    Also mit Strg-C beendet und versucht der map2kal als Aufrufparameter den Namen einer map-Datei mitzugeben. Wieder nix. Also versucht map2kal zu starten und unter Kalibration den Namen einer map-Datei einzutippen. Wieder nix.


    Also ich bin etwas ratlos. Was muss ich tun um das Tool zu benutzen???


    neugierige Grüsse


    Thomas

  • Zitat

    Original von topo
    Also ich bin etwas ratlos. Was muss ich tun um das Tool zu benutzen???


    Readme-Datei lesen! Das bildet.


    In map2kal.txt steht:
    map2kal < inputfile.map > outputfile.kal


    map2kal ist also als Filterprogramm geschrieben, das Eingaben aus stdin liest und nach stdout schreibt. Das hat Vorteile, weil sich so auch verschiedene Umwandlungen per Pipe-Symbol | verketten lassen. Einzelne Dateien lassen sich per Redirect s.o. bearbeiten (wobei ich nicht denke, dass jemand 100 Kacheln manuell einzeln bearbeiten will).


    Mit dem bash-script lassen sich dann auch Dateien massenweise per Wildcard "topo_heimat_*.map" bearbeiten. Da ein Normalwindoze kein bash kann (im Gegensatz zu richtigen Betriebssystemen), lassen sich wichtige Unix-Funktionen mit Cygwin (www.cygwin.com) nachrüsten. Alternativ könnte das Script auch in DOS-BATCH-Sprache formuliert werden (ich weiss momentan nicht, wie man die darin die File-Extension abschneidet). Kann das ein DOSen-Fan übernehmen?


    Im Gegensatz zu meinen früheren Versuchen manueller Kalibration sind die Karten jetzt metergenau korrekt.


    Ein Problem hatte ich mit einer Deutschlandkarte als Einbild-GIF. Da war auch die 4-Punkte-Kalibration richtig danben. Es liegt daran, dass hier wirklich nur die 4 Punkte übergeben werden und nicht die Art der Projektion. Die Karte muss also Koordinatengrad/pixel-treu sein (wie z.B. die Blue Marble Weltkarte der NASA). Die transversale Mercatorprojektion der Deutschlandkarte kann z.B. Ozi richtig kalibrieren, Glopus aber nicht. Weiss jemand, wie man das entzerren kann?


    p.s. es werden nur die 4 Kalibrierpunkte MMPXY/MMPLL aus dem Ozi-Format übertragen, alles andere wird ignoriert (leider auch die Projektionsart). Mit NH-Toptrans geht's, mit anderen Ozi-Karten u.U. nicht.

  • N'Abend


    ups, ich hätte schwören können da war keine Hilfedatei dabei....
    Kommt jemand günstig an Biovital :D ???


    Hat geklappt, die Dateien werden gerade auf den PDA geschoben.
    Die Batchumwandlung habe ich mit einem


    dir /b *.map > umwandeln.bat


    und einem suchen und ersetzen Kommando im Editor erledigt.


    Die BMPs habe ich per GlopusMapManager in JPGs umgewandelt.



    Danke !!! und noch einen schönen Abend.


    Thomas

    Einmal editiert, zuletzt von topo ()

  • Zitat

    Original von topo
    dir /b *.map > umwandeln.bat
    und einem suchen und ersetzen Kommando im Editor erledigt.
    Die BMPs habe ich per IrfanView in JPGs umgewandelt.


    Naja, bash ist da doch um einiges komfortabler (und dazu noch kostenlos). Das mit der BMP nach JPG Wandlung habe ich anfangs auch benötigt, mit der IrfanView-Batchverarbeitung. Nach Deaktivierung der Mapsticher-Option in NHToptrans werden bei Google gleich JPG's geschrieben. Zu beachten ist, dass auch in den Kalibrierdateien die Dateinamen anpasst werden *.bmp->*.jpg (mein "Notepad++" hat dazu eine praktische Funktion "rename in all files").


    Einen Nachteil von NHToptrans: es kann zwar eine Polygonfläche definiert werden, die gekachelt werden soll. Allerdings wird das Polygon dann zum Rechteck erweitert. Weiss jemand, wie ich die überflüssigen Kacheln wieder rauswerfen kann? Bzw. hat jemand einen kleinen C-Algorithmus der bestimmt ob eine Kachel in der Polygonfläche liegt oder nicht.

  • noch ein nützlicher Helfer: kal2coord


    Wenn man sich anschauen will, welches Gebiet überhaupt von den Kacheln abgedeckt wird, kann hiermit aus einem Kachelverzeichnis eine Liste von Routenpunkten generiert werden. Nach Umwandlung der ASCII-Routenpunkte in KML oder OVL per NH-Toptrans kann man die Kachel-ecken in der Karte ansehen. Ähnlich dem Glopus MapManager, aber hier schön in der Karte eingezeichnet.


    Jetzt fehlt nur noch eine Möglichkeit, diese aus selektiv auszuwählen. Das vermisse ich auch im Glopus Mapmanager. Es ist halt problematisch mit so vielen Kacheln umzugehen.


    -update: jetzt in geotools.zip verpackt

    Einmal editiert, zuletzt von frank334 ()

  • Zitat

    Original von frank334
    ich weiss momentan nicht, wie man die darin die File-Extension abschneidet


    Hoi,


    folgendes DOSen-Konstrukt listet auf dem Bildschirm aus dem aktuellen Verzeichnis alle *.map files auf mit Pfad und schneidet die Extension ab:


    for /F %L in ('dir /B *.map') do echo %~dpnL


    Hilft das weiter?


    Te_Ha

  • Zitat

    Original von Te_Ha
    folgendes DOSen-Konstrukt listet auf dem Bildschirm aus dem aktuellen Verzeichnis alle *.map files auf mit Pfad und schneidet die Extension ab:
    for /F %L in ('dir /B *.map') do echo %~dpnL
    Hilft das weiter?
    Te_Ha


    Hmm, so was kryptisches hab ich mir schon gedacht. Du könntest mal eine Batchdatei draus machen, die wir dann ins Paket mit dem Filterprogramm bündeln können (für diejenigen, die kein Unixerweiterungen installiert haben). Ich selbst arbeite nicht mit dem DOSen-Batch, weil das immer Ärger macht. Z.b. hab ich jetzt eine "command-substitution" gebraucht, die das Ergebnis eines Progrämmchens in die Commandline einbettet. In bash geht das mit den Backticks ganz einfach "mkdir archiv-`date +%F`", aber in DOSen-Batch? Nichts gefunden. Die bash-Sprache ist zum programmieren doch weitaus umfangreicher.