Mit mgkmap eine IMG beliebiger .osm.pbf erstellen?

Hallo,
meine Frage hat wohl nur indirekt etwas mit OSM zu tun. Doch ich finde in der wiki von Openstreetmap Anleitungen zur Erstellung von img Dateien mit mkgmap, um diese in QMapShack und auf meinem Dakota 20 zu nutzen.

Mein System:
Debian Linux, 1 TB SSD, 16 GB Ram
Version mkgmap 49xx

Problem: soweit ich weiß, kann man diese IMGs nur mit mkgmap erstellen. Wenn ich zB die europe.osm.pbf als Inputdatei verwende, bricht mir das Java zusammen (Java heap space).

Versuche:

  • den Heap Space einfach erhöhen mittels der Java Option --Xmx8G (8 GB Speicher)

Das sieht in meiner CLI so aus:

[Nutzer@OS]─[/usr/share/mkgmap] java -Xmx8g -jar mkgmap.jar --style-file=/PFAD/style.style --route --adjust-turn-headings=3 --gmapsupp --family-id=8001 --read-config=/PFAD/config.txt --max-jobs=1 --output-dir=/PFAD/ --input-file=/PFAD/europe-latest.osm.pbf /PFAD/osm.typ

Das Problem bleibt aber leider bestehen.

Auch bei der DACH.osm.pbf (5,6 GB) bricht das Java ab. Ich glaube, ich mache hier irgend etwas falsch. Zu DACH bekomme ich diese Meldungen:

Mkgmap version 4905
Time started: Sun Sep 15 18:43:57 CEST 2024
SCHWERWIEGEND (global): Out of memory.
Try using the Java -Xmx option to increase the available heap memory.
java.lang.OutOfMemoryError: Java heap space
	at java.base/java.util.regex.Matcher.<init>(Matcher.java:248)
	at java.base/java.util.regex.Pattern.matcher(Pattern.java:1134)
	at uk.me.parabola.imgfmt.app.Label.squashSpaces(Label.java:106)
	at uk.me.parabola.mkgmap.reader.osm.Element.addTagFromRawOSM(Element.java:64)
	at uk.me.parabola.mkgmap.reader.osm.bin.OsmBinHandler$BinParser.parseDense(OsmBinHandler.java:134)
	at crosby.binary.BinaryParser.parse(Unknown Source)
	at crosby.binary.BinaryParser.handleBlock(Unknown Source)
	at crosby.binary.file.FileBlock.process(Unknown Source)
	at crosby.binary.file.BlockInputStream.process(Unknown Source)
	at uk.me.parabola.mkgmap.reader.osm.bin.OsmBinHandler.parse(OsmBinHandler.java:54)
	at uk.me.parabola.mkgmap.reader.osm.OsmMapDataSource.parse(OsmMapDataSource.java:167)
	at uk.me.parabola.mkgmap.reader.osm.OsmMapDataSource.load(OsmMapDataSource.java:142)
	at uk.me.parabola.mkgmap.main.MapMaker.loadFromFile(MapMaker.java:165)
	at uk.me.parabola.mkgmap.main.MapMaker.makeMap(MapMaker.java:58)
	at uk.me.parabola.mkgmap.main.Main.lambda$processFilename$1(Main.java:291)
	at uk.me.parabola.mkgmap.main.Main$Lambda$17/0x00007f0d30008938.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:840)
Number of ExitExceptions: 1
Time finished: Sun Sep 15 18:49:02 CEST 2024
Total time taken: 5 minutes 5 seconds

Ideen:

  • Vielleicht nimmt Java die Option --Xmx8g nicht richtig an, oder etwas ist an der Syntax falsch.
  • 8 GB reichen offensichtlich nicht, um IMGs von 5,6, oder 31 GB zu parsen.

Ich habe es dann mit der Liechtenstein.osm.pbf (2,8 MB) probiert und da geht es.

Ich werde nicht schlauer aus den Anleitungen im Netz.

Kennt sich jemand damit gut aus und mag mir helfen?
Grüße, M.

Hi, das Limit ist viel kleiner deshalb musst Du mit dem Splitter die Kacheln verkleinern.

Ich würde erstmal mit einem kleineren Gebiet zB Deutschland.pbf starten.

Oder gleich eine der vielen fertigen mkgmap basierten Karten probieren.

1 Like

If it helps to look at an example, this might help. You’ll want to adapt it to use your own map style, of course.

Hey, thanks for your replies! :slight_smile: I just split to tiles and then I can process with mkgmap. Thank you!

1 Like