• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Kartenkonvertierung für MovingMap

cala

Geocacher
Kartenkonvertierung für MovingMap

Ich habe mich in den letzten Wochen gewundert warum mir der Cachewolf die Karten von expedia in
der MovingMap wunderbar darstellt und bei Bedarf die richtige Karte nachlädt aber das selbe
mit meinen selber erzeugten Karten nicht machen will. Jetzt habe ich nach genauem Studium der Dateien
den Fehler gefunden. Die Vorgehensweise und den Fehler den ich gemacht habe möchte ich euch nicht
vorenthalten.
Die Dateien habe ich hier mal zusammengepackt: http://geo.calaspage.de/files/Sachsenlong=12.906559_lat=50.758954.zip

- Kartenkacheln (MagicMaps, TOP50) mit dem GlopusMapManager erzeugen.

- So sehen die damit erzeugten Kalibrierungsdaten aus:
(Datei: Sachsenlong=12.906559_lat=50.758954.kal)

Code:
[Kalibrierung]
ScaleY = 42454.452067
ScaleX = 24044.750179
OffLaenge = 12.880030
OffBreite = 50.748144
[Calibration Point 1]
Longitude = 12.882342
Latitude = 50.771192
Pixel = POINT(10,10)
[Calibration Point 2]
Longitude = 12.930761
Latitude = 50.746697
Pixel = POINT(1266,907)
[Calibration Point 3]
Longitude = 12.880452
Latitude = 50.748385
Pixel = POINT(10,907)
[Calibration Point 4]
Longitude = 12.932676
Latitude = 50.769503
Pixel = POINT(1266,10)
[Map]
Bitmap = Sachsenlong=12.906559_lat=50.758954.png
Size = SIZE(1276,917)
(Anmerkung: Die Punkte werden über Kreuz ermittelt. oben links - unten rechts - unten links - oben rechts)

- Diese müssen jetzt für den Cachewolf so umgeändert werden:
(für diesen Schritt habe ich mir ein kleines Programm mit AutoIt gebastelt http://geo.calaspage.de/files/kal2map.zip )
(Datei: Sachsenlong=12.906559_lat=50.758954.map)

Code:
MMPNUM,4
MMPXY,1,10,10                       [Calibration Point 1]
MMPXY,2,10,907                      [Calibration Point 3] <-- !!!
MMPXY,3,1266,907                    [Calibration Point 2] <-- !!!
MMPXY,4,1266,10                     [Calibration Point 4]
MMPLL,1, 12.882342, 50.771192
MMPLL,2, 12.880452, 50.748385
MMPLL,3, 12.930761, 50.746697
MMPLL,4, 12.932676, 50.769503
(Anmerkung: Die Punkte dürfen nicht über Kreuz sein. oben links - unten links - unten rechts - oben rechts)

- Cachewolf macht dann nach dem Importieren diese Daten draus:
(Datei: Sachsenlong=12.906559_lat=50.758954.wfl)

Code:
-0.000001344347
0.000040064889
-0.000025425307
-0.000002120959
50.771459446537
12.881968810702
50.74669675
12.93076725


#---------------------------------------------------------------------------------------------------#

- So habe ich es vorher gemacht:
(die Kalibrierung im Cachewolf stimmt, in der MovingMap wird aber nicht die passende Karte geladen)
Der Unterschied liegt wirklich nur in der anderen Sortierung der Kalibrierungspunkte
(Datei: Sachsenlong=12.906559_lat=50.758954.map1)

Code:
MMPNUM,4
MMPXY,1,10,10                       [Calibration Point 1]
MMPXY,2,1266,907                    [Calibration Point 2]
MMPXY,3,10,907                      [Calibration Point 3]
MMPXY,4,1266,10                     [Calibration Point 4]
MMPLL,1, 12.882342, 50.771192
MMPLL,2, 12.930761, 50.746697
MMPLL,3, 12.880452, 50.748385
MMPLL,4, 12.932676, 50.769503

- da macht dann der Cachewolf diese Daten draus
(Datei: Sachsenlong=12.906559_lat=50.758954.wfl1)

Code:
-0.000001344347
0.000040064889
-0.000025425307
-0.000002120959
50.771459446537
12.881968810702
50.74838525		<-- hier stehen dann falsche Koordinaten
12.88044575		<-- hier stehen dann falsche Koordinaten


Kann das von den Entwicklern bestätigt werden?

Viele Grüße
Carsten
 

Kappler

Geowizard
Hallo Karsten,

ich habe mir etwas ähnliches zurechtgestrickt wie Du, allerdings in C++.

Bei mir funktioniert die Konvertierung der GMM-Datein wunderbar:

aus
Code:
[Kalibrierung]
ScaleY = 31729.441878
ScaleX = 21536.462409
OffLaenge = 8.127147
OffBreite = 48.558112
[Calibration Point 1]
Longitude = 8.127153
Latitude = 48.585006
Pixel = POINT(10,10)
[Calibration Point 2]
Longitude = 8.173177
Latitude = 48.558763
Pixel = POINT(982,864)
[Calibration Point 3]
Longitude = 8.127610
Latitude = 48.558427
Pixel = POINT(10,864)
[Calibration Point 4]
Longitude = 8.172744
Latitude = 48.585343
Pixel = POINT(982,10)
[Map]
Bitmap = Schnapscache.png
Size = SIZE(992,874)
konvertiere ich zu:
Code:
MMPNUM,4
MMPXY,1,10,10
MMPXY,2,982,864
MMPXY,3,10,864
MMPXY,4,982,10
MMPLL,1,8.127153,48.585006
MMPLL,2,8.173177,48.558763
MMPLL,3,8.127610,48.558427
MMPLL,4,8.172744,48.585343
wobei die Reihenfolge der Kal-Punkte erhalten bleibt.
Der Cachewolf importiert diese Karte und zeigt auch alles korrekt an.
Hast Du eventuell einen Dreher in deinem Konverter?

Ich habe übrigens meinen Code mal Kalli zugeschickt; vielleicht haben wir Glück und die Glopus-Kalibrierung wird einmal direkt in den Wolf importierbar sein.
 
OP
cala

cala

Geocacher
Hallo Kappler,

kannst du die wfl-Datei die der Cachewolf erzeugt auch mal posten.

Danke
Carsten

PS: Ich arbeite übrigens mit der Windows-Version 612.
 

Kappler

Geowizard
Kein Problem,

hier der Inhalt der Datei:
Code:
0.000000346193
0.000046891975
-0.000031123536
0.000000521077
48.585314023429
8.126684869474
48.55842675
8.127604

Mein kal2map kannst Du dir übrigens mal her:
kal2map.zip
runterladen, um es mir deiner kal-Datei zu testen.
Einfach in der Kommandozeile das Programm mit dem Pfad der kal-Datei als Parameter aufrufen, denn wird im selben Verzeichnis die map-Datei erzeugt. Oder mit der Maus im Explorer die Kal-Datei aud die EXE ziehen, das bewirkt dasselbe.
(falls Du dich traust, eine aus dem INet heruntergeladene EXE auszuführen. Man weiß ja nie... :twisted: )



... kein Sorge, ist wirklich kein Virus ... Aber man kannn ja nie vorsichtig genug sein ...
 
OP
cala

cala

Geocacher
Ich hab mich getraut :D

Dein Programm erzeugt die selben falschen Koordinaten wie meine erste Version.
Meines Erachtens beschreiben die Koordinaten die äußersten Abmessungen der Kartenkachel. Wenn du dir aber jetzt mal die beiden Werte 8.126684869474 und 8.127604 anschaust sind diese ja erst in der 3. Nachkommastelle unterschiedlich.
Wobei die Originalpunkte 8.127153 und 8.173177 in der map-Datei sich schon erheblich in der 2. Nachkommastelle unterscheiden.
Die Koordinaten müssten aber ungefähr mit denen in der map-Datei übereinstimmen.

Code:
0.000000346193
0.000046891975
-0.000031123536
0.000000521077
48.585314023429
8.126684869474
48.55876325
8.17318
So müsste es korrekt aussehen.

Das Ganze ist aber nur eine Vermutung von mir. Vielleicht kann einer von den Entwicklern etwas dazu sagen.
 

greiol

Geoguru
hmm. ich bin mir ohnehin nicht sicher ob wir hier nicht in ein problem laufen.
bei ozi sind die MM punkte die eckpunkte der grafik, während die eigentlich kalibrierungspunkte ja die Pointxx angaben sind.
ihr erzeugt mit der derzeitigen konvertierung also etwas ganz leicht anderes. für das berechnen der transformationsmatrix macht das zwar keinen unterschied (ok, es kann ganz weit hinter dem komma abweichungen geben), aber falls die werte auch genutzt werden um herauszufinden welchen bereich eine karte abdeckt, sind punkte die nicht auf den ecken liegen ja nicht ganz so praktisch.
 

Kappler

Geowizard
@greiol:
Es dürfte eigentlich kein Problem sein, wenn die MM-Punkte nicht genau auf den Ecken liegen. Die Karte deckt dann eben einen etwas größeren Bereich ab, als aus diesen MM-Punkten ersichtlich. Und falls der Wolf beim Import, wie cala vermutet hat, dann die genauen Eckpunkte ausrechnet und in der Wolf-Kalibrierungsdatei hinterlegt, ist dies sowieso unwesentlich. Aber hierzu kann eigentlich nur einer der Entwickler etwas genaueres sagen, der den Aufbau der Kalibrierungsdatei kennt.

@cala:
Ich hätte dein erstes Posting genauer lesen sollen, dann wäre es mir auch aufgefallen, dass due nicht von fehlerhafter Kalibrierung sondern von Problem bei der Kartenauswahl gesprochen hast. :oops:
Ich habe nämlich bisher lediglich mit einer Karte ohne angrenzende gearbeitet. Und hierfür klappt der Import wie du ja auch geschrieben hast, ohne Probleme.
Ich habe jetzt mal mit mehreren Karten getestet und es funktioniert auch bei mir nicht. :(
 

Kalli

Geowizard
Den MapImport von fremden Format habe wir für das nächste Release auf der Liste.

Wer "java lesen" kann und wissen möchte, wie die .map-Datei ausgewertet wird, kann sich hier mal die Methode importMap() anschauen. Wie die Transformation in die Werte geschieht, die in dem .wfl-File stehen, ist (hoffentlich) nebensächlich. Ich werde den Thread hervorkramen, wenn ich die Importroutine für die .kal-Dateien programmieren werde, da bin ich dann besser im Thema drin. Dann werde ich mir auch genauer anschauen, was pfeffer beim automatischen Laden der Map macht.
 

pfeffer

Geowizard
habe mir das grad mal angeschaut.
Es ist da tatsächlich ein Fehler in der importMap-Routine. Vielen Dank für Eure super Fehleranalyse, so war es einfach den Fehler zu identifizieren:
Grundsätzlich ist die Reihenfolge der Punkte egal, eigentlich ist auch egal, ob die Punkte auf dem Rand liegen oder mitten im Bild.
Allerdings wird gegenwärtig nicht das Bild selbst geladen, so dass die Routine nicht weiß, wieviele Pixel das Bild horizontal oder vertikal hat. Deswegen wird gegenwärtig angenommen, der dritte Pixel sei rechts unten auf der Kante des Bildes.
Da muss sich was ändern. Ich denke, das schaffe ich noch für die n, allerdings wahrscheinlich nicht mehr dieses WE.

Gruß,
Peffer.
 

Kappler

Geowizard
@Pfeffer:
Benutzt doch einfach die Größeninformation aus der MAP-Datei:
The map image width and height - not used, just for information

IWH,Map Image Width/Height,4440,3590
(aus der MAP-Beschreibung auf der CacheWolf-Homepage)

Im Glopus-KAL-File ist die Größeninformation auch enthalten, so dass wir dies auch in unsere Konverter einbauen können.
 

Kalli

Geowizard
pfeffer liest in einer Testversion die Größe aus dem Image selbst, der vorgeschlagene Weg ist natürlich wesentlich eleganter.
 

Kalli

Geowizard
Kappler schrieb:
Benutzt doch einfach die Größeninformation aus der MAP-Datei:
The map image width and height - not used, just for information

IWH,Map Image Width/Height,4440,3590
(aus der MAP-Beschreibung auf der CacheWolf-Homepage)

Im Glopus-KAL-File ist die Größeninformation auch enthalten, so dass wir dies auch in unsere Konverter einbauen können.
Genau das habe ich gerade gemacht, Rev. 628. pfeffer hat noch einen Fix gemacht, der das Laden der Karten angeht. Wenn Ihr also Eure Tools um die Zeile erweitert, müsste es besser laufen.

Wie geschrieben, hatte pfeffer auch schon etwas entwickelt, um die Größeninformationen aus den Images auszulesen, hier hat es allerdings Probleme mit .bmp-Dateien gegeben, deshalb habe ich die obige Version vorgezogen, damit wir die 0.9n bald releasen können.

Das nächste Release (1.0 oder so) wird dann native .kal-Dateien lesen können.
 

Kappler

Geowizard
Da freue ich mich schon mal auf die nächste RC, damit ich das ausprobieren kann...

Super, vielen Dank für Eure Mühe
 

pfeffer

Geowizard
Kalli schrieb:
pfeffer liest in einer Testversion die Größe aus dem Image selbst, der vorgeschlagene Weg ist natürlich wesentlich eleganter.
finde ich nicht. Denn dadurch fällt erst beim Versuch die Karten anzuzeigen auf, wenn CacheWolf sie nicht decodieren kann.
Das BMP, das Du mir netterweise geschickt hast, mit dem es die Exception gibt, klann ewe nicht decodieren. In Deiner Variante wird beim Import kein Fehler gemeldet, sondern erst beim Anzeigen der Map (was ich recht nervig finde).
Ewe kann BMP mit einer Farbtiefe von 32bit nicht decodieren, das ist in dem Fall des Bildes, das Du mir geschickt hast, der Grund, warum es die Exception gibt.

Gruß,
Pfeffer.
 

Kalli

Geowizard
Shit. Da hat man ja nur die Wahl zwischen Pest und Cholera. Bei meiner Lösung bricht zwar der Import nicht ab, allerdings sieht man dann bei der Anzeige nichts. Bei deiner Version merkt man es früher, dafür bricht der Import ab (OK, da könnte man noch die exception fangen). Es bleiben dann auch noch Fragmente stehen, die man wegräumen muss.

Können wir das Thema auf die nächste Version vertagen? Ich habe so das Gefühl, dass deine Lösung zwar besser ist, aber gut getestet werden muss. Wir haben ja schon gesehen, dass es mit einigen Images klappt, mit anderen nicht. Ich hoffe, dass die verschiedenen Versionen der Ewe-VM nicht noch Zicken machen. Für die nächste Version steht eh ein Redesign des Kartenimports auf dem Programm, da wird das miterledigt.
Somit hätten wir zumindest den Bugfix drin, dass die Größe des Bildes nicht durch den dritten Koordinatenpunkt bestimmt wird.
 

pfeffer

Geowizard
So, jetzt (SVN 629) liest er die Größe aus dem Image und gibt Fehlermeldungen aus, ohne dabei den Import abzubrechen :)

Gruß,
Pfeffer.
 

white_rabbit

Geocacher
Hi.
Ich bin gerade über diesen Artikel gestolpert. Auch ich habe Kacheln mit dem Cachwolf heruntergeladen. Es wurden JPGs und WFL-Dateien erzeugt. Wie sieht's denn nun mit der Nutzung dieser Karten unter Glopus aus? Ist die Konvertierung von WFL nach KAL nun möglich oder nicht?

Natürlich kann ich unter Glopus einzelne Kacheln laden -- aber die werden momentan nicht neu zu einer ganzen Karte zusammengesetzt, so dass ich annehme, dass es am falschen Kalibrierungsformat liegt? Wie habt ihr das Problem "damals" gelöst?
 

Kappler

Geowizard
Für Glopus gibt es inzwischen auch eine Möglichkeit, WMS-Karten zu importieren. Schau mal im Glopus-Forum von Pocketnavigation.de. Da gibt es einen Thread zu...
 

white_rabbit

Geocacher
Hallo. Interessiert habe ich diesen Thread im pocketnavigation-Forum gelesen:
http://forum.pocketnavigation.de/tid1092851-sidebaf97f1a8e16044395276d7de29e679.htm

-- und es auch selbst versucht. Ich bin vom CacheWolf aussgegangen und habe *dort* ein paar kalibrierte Karten heruntergeladen, die ich dann später mit Glopus benutzen wollte. Der erste Schritt hat gut geklappt: Ich erhielt png & wfl Dateien, die ich dann im zweiten Schritt mit Glopus aber nicht öffnen konnte.

Eigentlich dachte ich, dass o.g. Thread die Antwort darauf liefert, wie ich diese Files denn nun in kal konvertiere, aber so ganz steige ich noch nicht durch. Kann der CacheWolf ebenfalls anzeigen, um welchen Kartenausschnitt es sich in den geforderten Koordinaten handelt -- oder wo kann ich das feststellen?

Schöner wäre es natürlich, wenn man das gleich automatisieren könnte?? Gibt es (schon?) irgend einen Weg, CacheWolf und Glopus zu vereinen? Das wäre doch perfekt!?!
 
Oben