Karte mit zwei Ländern mit mkgmap erzeugen?

Weiss jemand, wie ich eine Garmin-Karte mit mkgmap erzeuge, welche beispielsweise Deutschland und die Niederlande enthält?

Folgendes hat bei mir nicht geklappt:

  • Herunterladen von germany.osm sowie netherlands.osm von der Geofabrik
  • Mit dem Splitter die germany.osm teilen mit MapIDs ab 60000000
  • Mit dem Splitter die netherlands.osm teilen mit MapIDs ab 50000000
  • Zusammenkopieren der areas.list, sowie der template.args
  • mkgmap drüber laufen lassen

Versuch doch mal, das europe.osm herunterzuladen, mit osmosis und einem Polygonfile Deutschland und die Niderlande auszuschneiden und dann den Splitter usw.

Den Polygonfile kannst du recht einfach mit osm2poly.pl erstellen oder aber im Textditor selber schreiben.

Wenn du kein Routing brauchst, sollte das so eigentlich klappen, du wirst lediglich an der Grenze leichte Stoerungen haben.

Wenn du auch grenzuebergreifendes Routing brauchst, dann musst du den weg ueber die europe.osm Datei nehmen, da das Routing von eienr Kachel zur naechsten z.Z. nur funktioniert, wenn die Kacheln mittels Splitter getrennt worden sind.

Zum Ausschneiden aus Europa brauchst du aber wahrscheinlich gar nicht die exakten Polygone von Deutschland und den Niederlanden, wahrscheinlich wird es dich nicht stoeren,w enn die Karte an den Grenzen etwas uebersteht. Am Besten du erzeugst dir mit Splitter mal eine Area-List fuer komplett Europa (das wird je nach Rechner eine Weile dauern), und reduzierts die dann auf die von dir gewuenschten Kacheln.
Oder aber du schneidest im ersten Arbeitsschritt erstmal eine einzelne, grosse, rechteckige Kachel aus Europa aus, die Deutschland und die Neiderlande enthaelt, und schneidest dann diese Kachel ein zweites Mal mit Splitter, um eine brauchbare Area-List fuer den von dir gewuenschten Bereich zu bekommen.

Gruss
Torsten

Richtig. Wenn Du zwei Länder brauchst, mußt Du sie immer gemeinsam aus dem nächstgrößeren Planetfile ausschneiden. Ein Zusammensetzen der Länder ist nicht möglich, weil Osmosis an den Grenzen destruktiv abschneidet, so daß Artefakte entstehen. Beim zusammenwurschteln mit mkgmap geht vermutlich auch noch was schief, aber das ist eigentlich schon egal. :slight_smile:

bye
Nop

Danke schon mal für diese ersten Tipps. Ich sehe, dass das Unterfangen nicht völlig trivial ist.

Die Europakarte durch den Splitter schicken kann ich mir vorstellen. Aber wie sehe ich auf die Schnelle, was welche Kacheln sind? In der areas.list stehen dann beispielsweise folgende Zeilen:

List of areas

Generated Sat May 29 10:11:42 CEST 2010

50000000: 2385920,153600 to 2394112,178176 # : 51.196289,3.295898 to 51.372070,3.823242
50000001: 2394112,153600 to 2406400,178176# : 51.372070,3.295898 to 51.635742,3.823242

Letztlich müsste ich doch dann per Hand vielleicht 200 aus 1500 Kacheln aus der Areas-List rausschneiden, oder?

Dieser Vorschlag scheint interessanter zu sein. Aber wie kann ich an eine grosse, rechteckige Kachel aus Europa kommen? Bislang kannte ich nur die Möglichkeit des Downloads einzelner Länder, z. B. von der Geofabrik.

Da war ich gerade etwas zu vorschnell. Das Programm Osmosis kannte ich noch nicht, aber es scheint für diesen Zweck sinnvoll zu sein. Wäre also eine Lösung des Problems etwa folgender Befehl?

osmosis --read-xml file=“europe.osm” --bounding-polygon file=“country2pts.txt” --write-xml file=“germany_netherlands.osm”

Könnte man für das Polygon-File hierfür einfach die beiden Polygonfiles von cloudmade (germany.poly, netherlands.poly) in eine Datei country2pts.txt zusammenkopieren?

Das Ausschneiden eines Teilgebietes aus einer OSM-Datei entlang einer Polygonkontur klappt mit Osmosis problemlos. Ich nutze das regelmäßig.

Bei mir sieht der Osmosis-Aufruf dann wie folgt aus (Windows 7, Aufruf direkt mit Java ohne das mitgelieferte Skript, Basisdatei germany.osm, ausgeschnittenes Gebiet harz.osm):

java -Xmx1G -cp .\osmosis.jar;.\lib\default\commons-logging-1.1.1.jar;.\lib\default\commons-compress-1.0.jar;.\lib\default\jpf-1.5.jar org.openstreetmap.osmosis.core.Osmosis --read-xml enableDateParsing=no file=.\germany.osm --bounding-polygon file=.\harz_osmosis_poly.txt clipIncompleteEntities=true --write-xml file=.\harz.osm

Die Erstellung der Datei für die Polygonkontur dauert eine Weile. Der Syntax wird irgendwo im OSM-WIKI bei Osmosis aber detailliert beschrieben. Den Aufbau der Polygonfiles von Cloudmade kenne ich nicht. Zu einer Weiternutzung bzw. dem Zusammenkopieren jener kann ich daher nichts sagen.

Probieren geht über studieren…sollte aber funktionieren. Alternativ gäbe es noch --boundingbox. Da kommt dann aber ein Rechteck raus.

Die Zahlenkolonnen haben folgende Bedeutung:
Kachelnummer
:
Splitter-Latitude-Eckpunkt-1
,
Splitter-Longitude-Eckpunt-1
to
Splitter-Latitude-Eckpunkt-2
,
Splitter-Longitude-Eckpunt-2

:

Dezimal-Latitude-Eckpunkt-1
,
Dezimal-Longitude-Eckpunkt-1
to
Dezimal-Latitude-Eckpunkt-2
,
Dezimal-Longitude-Eckpunkt-2

Die Splitter-Koordinaten berechnen sich aus der Dezimal-Koordinate durch 360° mal zwei hoch irgendwas.

Dabei sei daraufhingewiesen, dass nicht an jeder beliebigen Koordinate ein suaberer Schnitt moeglich ist, sondern nur an jeder zwei hoch irgendwasanderes -ten Koordinate. Am Einfachsten faellt es mir, einfach moeglichst passende Koordinaten aus einer von Splitter erzeugten area-List zu waeheln und diese dann nu neue Kacheleckpunkten zu kombinieren.

Im Prinzip ja. Die area-List kann aber auch als Eingangsparameter fuer Splitter benutzt werden, d.h. man kann sich immer wieder die selben Kacheln ausschneiden.

Man kann isch also einmalig die gewuenschten Kacheln aussuchen und basierend darauf dann fuer spaetere Kartengenerierungen eine reduzierte area-List benutzen (oder aber man loescht anschliessend alle erzeugten aber nicht gewuenschten Kacheln).

Indem man Splitter als Eingangsparameter eine area-List mit gibt, die genau eine Kachel mit den gewuenschten Eckpunkten enthaelt.

Gruss
Torsten

Ich gehe auf

http://www.maproom.psu.edu/cgi-bin/dcw/dcwarea.cgi?Europe

wähle dort die benötigten Länder und lade sie als “Download Points” → “Download” the data als

Ländername.txt

herunter. Dann verbinde ich die einzelnen Dateien “Ländername.txt” zu einer Datei “Gesamt.txt” in der ich die END-Tags anpasse und auch die laufenden Kachelnummern, sodass es keine doppelten Kachelnummern gibt.

Schaut dann so aus:

kombiländer
1
     0.8694346E+01     0.4770316E+02
--
     0.8720920E+01     0.4769530E+02
     0.8721282E+01     0.4769348E+02
END
2
     0.8498919E+01     0.5472760E+02
--
     0.8596837E+01     0.5472187E+02
     0.8593785E+01     0.5472050E+02
END
3
     0.8346529E+01     0.5464698E+02
--
     0.8338642E+01     0.5469501E+02
     0.8338860E+01     0.5469397E+02
END
4
     0.8728238E+01     0.5464112E+02
--
     0.8735031E+01     0.5463527E+02
     0.8727431E+01     0.5463242E+02
END
5
     0.8543664E+01     0.5457519E+02
--
     0.8539052E+01     0.5458271E+02
     0.8549738E+01     0.5458472E+02
END
6
     0.8449605E+01     0.5457491E+02
--
     0.8457627E+01     0.5456876E+02
     0.8457767E+01     0.5456237E+02
END
7
     0.8817230E+01     0.5455557E+02
--
     0.8835091E+01     0.5455051E+02
     0.8828317E+01     0.5454834E+02
END
8
     0.8467610E+01     0.5452892E+02
--
     0.8490644E+01     0.5450185E+02
     0.8483921E+01     0.5450034E+02
END
9
     0.8646763E+01     0.5453299E+02
--
     0.8694815E+01     0.5452832E+02
     0.8687024E+01     0.5451199E+02
END
10
     0.8733146E+01     0.5447049E+02
--
     0.8749078E+01     0.5447241E+02
     0.8728488E+01     0.5446748E+02
END
11
     0.8559849E+01     0.5446844E+02
--
     0.8568384E+01     0.5446831E+02
     0.8557600E+01     0.5446321E+02
END
12
     0.8464879E+01     0.5444899E+02
--
     0.8493907E+01     0.5442733E+02
     0.8490662E+01     0.5442441E+02
END
13
     0.8708491E+01     0.5416791E+02
--
     0.8716159E+01     0.5417090E+02
     0.8708752E+01     0.5416188E+02
END
14
     0.8686836E+01     0.5413255E+02
--
     0.8685104E+01     0.5413711E+02
     0.8697947E+01     0.5413760E+02
END
15
     0.8676373E+01     0.5406570E+02
--
     0.8695744E+01     0.5404486E+02
     0.8691676E+01     0.5404058E+02
END
16
     0.8420835E+01     0.5394942E+02
--
     0.8429514E+01     0.5393609E+02
     0.8427952E+01     0.5392560E+02
END
17
     0.8503330E+01     0.5392017E+02
--
     0.8497474E+01     0.5393378E+02
     0.8505120E+01     0.5393161E+02
END
18
     0.9243281E+01     0.5387078E+02
--
     0.9248851E+01     0.5386671E+02
     0.9226361E+01     0.5387281E+02
END
19
     0.7895607E+01     0.5378968E+02
--
     0.7853209E+01     0.5378672E+02
     0.7855020E+01     0.5378811E+02
END
20
     0.7728770E+01     0.5376865E+02
--
     0.7671541E+01     0.5375758E+02
     0.7678788E+01     0.5376969E+02
END
21
     0.7405495E+01     0.5372750E+02
--
     0.7410781E+01     0.5372200E+02
     0.7374688E+01     0.5372675E+02
END
22
     0.7557569E+01     0.5375169E+02
--
     0.7498939E+01     0.5372630E+02
     0.7496997E+01     0.5372648E+02
END
23
     0.8148405E+01     0.5372684E+02
--
     0.8155329E+01     0.5371601E+02
     0.8151005E+01     0.5371309E+02
END
24
     0.7240797E+01     0.5371737E+02
--
     0.7292163E+01     0.5370954E+02
     0.7261432E+01     0.5370756E+02
END
25
     0.9523711E+01     0.5368953E+02
--
     0.9507312E+01     0.5370367E+02
     0.9509747E+01     0.5370567E+02
END
26
     0.6980975E+01     0.5367857E+02
--
     0.6908664E+01     0.5366674E+02
     0.6892913E+01     0.5366652E+02
END
27
     0.6897127E+01     0.5364295E+02
--
     0.6904713E+01     0.5362606E+02
     0.6898955E+01     0.5362561E+02
END
28
     0.6865615E+01     0.5359964E+02
--
     0.6865516E+01     0.5359754E+02
     0.6858223E+01     0.5359412E+02
END
29
     0.9592011E+01     0.5359665E+02
--
     0.9607418E+01     0.5358704E+02
     0.9593545E+01     0.5359173E+02
END
30
     0.9758018E+01     0.5355785E+02
--
     0.9675115E+01     0.5356799E+02
     0.9698476E+01     0.5356465E+02
END
31
     0.1312149E+02     0.5454599E+02
--
     0.1311769E+02     0.5454152E+02
     0.1311717E+02     0.5454924E+02
END
32
     0.1344621E+02     0.5436272E+02
--
     0.1335893E+02     0.5454791E+02
     0.1335737E+02     0.5455236E+02
END
33
     0.1316374E+02     0.5450913E+02
--
     0.1316443E+02     0.5451328E+02
     0.1316971E+02     0.5450835E+02
END
34
     0.1310412E+02     0.5454305E+02
--
     0.1314652E+02     0.5460406E+02
     0.1315437E+02     0.5458376E+02
END
35
     0.1317162E+02     0.5447178E+02
--
     0.1312402E+02     0.5444407E+02
     0.1312079E+02     0.5444864E+02
END
36
     0.1300325E+02     0.5444356E+02
--
     0.1299053E+02     0.5443615E+02
     0.1297705E+02     0.5443522E+02
END
37
     0.1294860E+02     0.5444223E+02
--
     0.1293505E+02     0.5443525E+02
     0.1293024E+02     0.5443457E+02
END
38
     0.1271168E+02     0.5442400E+02
--
     0.1269849E+02     0.5443073E+02
     0.1271309E+02     0.5442876E+02
END
39
     0.1273302E+02     0.5441057E+02
--
     0.1273372E+02     0.5441433E+02
     0.1274162E+02     0.5441302E+02
END
40
     0.1113635E+02     0.5447636E+02
--
     0.1108312E+02     0.5444968E+02
     0.1107997E+02     0.5444708E+02
END
41
     0.1353426E+02     0.5432343E+02
--
     0.1352705E+02     0.5431048E+02
     0.1352342E+02     0.5431220E+02
END
42
     0.1312091E+02     0.5430995E+02
--
     0.1311878E+02     0.5430426E+02
     0.1311272E+02     0.5430979E+02
END
43
     0.1392013E+02     0.5424695E+02
--
     0.1392323E+02     0.5424681E+02
     0.1391681E+02     0.5424121E+02
END
44
     0.1377228E+02     0.5420206E+02
--
     0.1377503E+02     0.5419265E+02
     0.1377241E+02     0.5419097E+02
END
45
     0.1341332E+02     0.5417057E+02
--
     0.1341290E+02     0.5416821E+02
     0.1340618E+02     0.5416923E+02
END
46
     0.1149721E+02     0.5402813E+02
--
     0.1149811E+02     0.5402303E+02
     0.1148838E+02     0.5402471E+02
END
47
     0.1141520E+02     0.5399696E+02
--
     0.1149435E+02     0.5400076E+02
     0.1148532E+02     0.5399973E+02
END
48
     0.1408916E+02     0.5392980E+02
--
     0.1421349E+02     0.5388483E+02
     0.1421288E+02     0.5386478E+02
END
49
     0.1040568E+02     0.5150685E+02
--
     0.8730227E+01     0.5441149E+02
     0.8823519E+01     0.5441615E+02
END
50
     0.1499947E+02     0.4900840E+02
--
     0.1599466E+02     0.4877933E+02
     0.1600000E+02     0.4877775E+02
END
END

Bis 23 waren die Kacheln aus Ländername1.txt, dort habe ich dann den doppelten END-Tag entfernt, habe die Kacheln aus Ländername2.txt angefügt, ohne Ländername aus der ersten Zeile und mit angepassten Kachelnummern, also fortlaufend ab letzter Kachelnummer aus Ländername1.txt und zum Schluss wieder darauf geachtet, dass zwei END-Tags gesetzt sind. Die Datei habe ich de-at.txt benannt, da sie DE und AT beinhaltet.

Damit kann man dann mit

pbzip2 -v -d -c europe.osm.bz2 | /usr/local/bin/osmosis --rx /dev/stdin --bounding-polygon file=de-at.txt --wx /dev/stdout | gzip -c > de-at.osm.gz

aus der europe.osm.bz2 den Bereich herausschneiden und dann mit splitter und mkgmap eine gmapsupp.img erzeugen.

Klappt problemlos und die beiden Länder sind grenzübergreifend routingfähig, wenn sie direkt aneinander grenzen.

flux.