x

Karte mit zwei Ländern mit mkgmap erzeugen?


  1. Karte mit zwei Ländern mit mkgmap erzeugen? · wind (Gast) · 31.05.2010 22:40 · [flux]

    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


    • Re: Karte mit zwei Ländern mit mkgmap erzeugen? · aighes (Gast) · 31.05.2010 22:52 · [flux]

      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.


    • Re: Karte mit zwei Ländern mit mkgmap erzeugen? · de_muur (Gast) · 01.06.2010 06:21 · [flux]

      wind wrote:

      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

      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


    • Re: Karte mit zwei Ländern mit mkgmap erzeugen? · Nop (Gast) · 01.06.2010 06:22 · [flux]

      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. :-)

      bye
      Nop


    • Re: Karte mit zwei Ländern mit mkgmap erzeugen? · wind (Gast) · 02.06.2010 22:05 · [flux]

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

      de_muur wrote:

      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.

      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:

      1. List of areas
      2. 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?

      de_muur wrote:

      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.

      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.


    • Re: Karte mit zwei Ländern mit mkgmap erzeugen? · wind (Gast) · 02.06.2010 22:25 · [flux]

      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?


    • Re: Karte mit zwei Ländern mit mkgmap erzeugen? · Ebbe73 (Gast) · 02.06.2010 23:20 · [flux]

      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.


    • Re: Karte mit zwei Ländern mit mkgmap erzeugen? · aighes (Gast) · 02.06.2010 23:37 · [flux]

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


    • Re: Karte mit zwei Ländern mit mkgmap erzeugen? · de_muur (Gast) · 03.06.2010 06:33 · [flux]

      wind wrote:

      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:

      1. List of areas
      2. 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
      ...

      Die Zahlenkolonnen haben folgende Bedeutung:
      Kachelnummer

      Splitter-Latitude-Eckpunkt-1
      ,
      Splitter-Longitude-Eckpunt-1
      to
      Splitter-Latitude-Eckpunkt-2
      ,
      Splitter-Longitude-Eckpunt-2

      1. :

      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.

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

      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).

      de_muur wrote:

      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.

      Dieser Vorschlag scheint interessanter zu sein. Aber wie kann ich an eine grosse, rechteckige Kachel aus Europa kommen?

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

      Gruss
      Torsten


    • Re: Karte mit zwei Ländern mit mkgmap erzeugen? · flux (Gast) · 03.06.2010 10:27 · [flux]

      Ich gehe auf

      http://www.maproom.psu.edu/cgi-bin/dcw/ … 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.