Gelöst&Howto: osmconvert "verliert" ways beim schneiden von srtm-daten

… ist ja richtig spannend dieser Thread …

Zum Perl-Skript (mit ungeplantem Betatest):
An den 8-stelligen IDs liegt es nicht - vielmehr werden String und keine Ganzzahlen sortiert.
Ich werde dies, zusammen mit dem Defekt der leeren Dateien, in Kürze mal korrigieren.

Defekt (2x):
foreach my $ghtdata_id ( sort keys %processing_hashmap ) {

Korrekt (2x):
foreach my $ghtdata_id ( sort {$a <=> $b} keys %processing_hashmap ) {

Klaus

Wahrscheinlich sind die Daten für den Hill-Layer mit Srtm2Osm erzeugt worden ohne x/y Korrektur. Srtm2Osm hat einen 50m Versatz. Irgendwo hier im Forum gab es mal in einem Thread ein paar Koordinaten, wo man die Abweichung sehr schön sehen konnte. Die phyghtmap Daten sind eigentlich ziemlich genau. Es gibt Leute, die behaupten die viewfinderpath Daten hätten 12m Versatz, aber ich habe noch kein Beispiel gesehen.

Thorsten

Könnte das hier (hikebikemap):

im Vergleich zu (Wanderreitkarte):

an den Kachelgrenzen 50°Nord /10° Ost damit im Zusammenhang stehen?

Gruß,
ajoessen

Leider nein… bin mir nicht sicher ob dash richtig funktioniert. Ja osmconvert zeigt keine Fehler mehr an. Splitter läuft auch ohne Probleme durch. Aber mkgmap verweigert mal wieder den Dienst (egal ob ich jetzt die gesplitteten Daten oder die von osmconvert rausgegebenen Daten, oder die Daten die nur durch das Skript gelaufen sind nehme):

openSUSE-121-64-minimal:/home/contourlines # java -ea -jar -Xmx6000M mkgmap.jar --max-jobs=1 --reduce-point-density=5.4 --transparent --overview-mapname=mapset00 --keep-going --gmapsupp kaputt.osm.pbf
Error at line 1, col 1
Bad file format: kaputt.osm.pbf
Error parsing file
Exception in thread “main” java.lang.NullPointerException
at uk.me.parabola.mkgmap.combiners.FileInfo.getFileInfo(FileInfo.java:139)
at uk.me.parabola.mkgmap.main.Main.endOptions(Main.java:413)
at uk.me.parabola.mkgmap.CommandArgsReader.readArgs(CommandArgsReader.java:126)
at uk.me.parabola.mkgmap.main.Main.main(Main.java:112)

(splitter mit java -Xmx6000m -jar splitter.jar --max-threads=4 --max-nodes=10000000 --mapid=75280000 --mixed --overlap=20000 alps*.osm.pbf ; osmconvert topo.osm -o=kaputt.osm.pbf)

BTW wenn ich die Alpendaten von 1.23 mit kukuk’s patches für osmconvert nach dem dash merge_osm.sh verwende, dann läuft osmconvert nicht korrekt durch, sondern gibt folgende Fehlermeldung:
./osmconvert topo.osm -o=alps_user.osm.pbf
osmconvert Error: way 140118426 has too many refs.
osmconvert Error: way 140297241 has too many refs.
osmconvert Error: way 140519102 has too many refs.

Zumindest bei srtm2osm Alpen Ausgangsdaten hab ich weiter

Error at line 1, col 1
Bad file format: 85280001.osm.pbf

als Problem. Ist direkt gesplittet ohne osmconvert/osmosis.

Hallo,

also die Fehlermeldung:

kommt daher, das phyghtmap mit den letzten Änderungen nur noch mit matplotlib < 1.0.0 funktioniert. Debian benutzt noch immer 0.98 in stable, daher funktionert es dort, während openSUSE schon lange 1.0.1 bzw. 1.1.0 verwendet.

https://build.opensuse.org/package/files?package=phyghtmap&project=home%3Akukuk enthält einen Patch “matplotlib-1.0.0.diff”, damit funktioniert es bei mir wieder. Aber ich habe die Ausgabe noch nicht vergleichen können.

Kann jemand mir eine einzelne Kachel mit phyghtmap 1.24 oder 1.25 und matplotlib < 1.0.0 zukommen lassen, sowie die verwendete Kommandozeile? Und bitte von einem ungepatchten phyghtmap. Dann kann ich das mal bei mir Vergleichen.

Besten Dank,
Thorsten

Das gleiche habe ich, wenn ich die SRTM Daten mit osmosis 0.40.1 ausschneide. Wenn ich osmosis 0.39 verwende, funktioniert es. Gab es da Änderungen in osmpbf? Jedes Javatool kommt ja leider mit seiner eigenen Kopie :frowning:

Thorsten

Und was passiert wenn du sie gar nicht schneidest? Weil bei mir gehts ja auch nicht wenn ich einfach die 17GB Rohdaten als Einzeldatei versuche per splitter>mkgmap zu benutzen. Osmosis läuft sowieso nicht bei mir (bekomme nur Version 0.29 noch zum laufen).

Evtl liegts bei mir ja auch daran, dass ich NICHT osmosis 0.39 benutze. Weil mkgmap splitter gibt die Daten ja auch als pbf aus, und schreibt evtl denselben Fehler wie neue Osmosis Versionen…
Nett wäre übrigens ein vollständig gepatchtes phyghtmap – die patches bekomme ich zumindest nicht automatisch gemerged, und händisch ist nicht wirklich ein Spaß…

Werde mal versuchen matplotlib 0.98 unter opensuse zu installieren.

Meine Patches werde ich mergen sobald ich das points=0 Problem final gelöst habe. Solange würde ich mit der phyghtmap 1.23 + patches weiterarbeiten, ich sehe in 1.24 und neuer noch keinen Vorteil.

Thorsten

Hallo,

ok, alle Patches sind auf phyghtmap 1.25 portiert. Ich habe auch den matplotlib 1.0.0 Patch getestet, die Ausgabe ist identisch zu phyghtmap 1.23:
https://build.opensuse.org/package/files?package=phyghtmap&project=home%3Akukuk

Ich habe meine --max-nodes Option nach --max-way-nodes umbenannt, also bitte Scripte anpassen :wink:

Thorsten

Sehr schön!
Selbst mit den 88 Byte großen, “leeren” Dateien wie lon-17.00_-16.00lat27.00_28.00_srtm3.osm bei den Kanaren klappt das.

Nur die “Bounding Box”-Zeile befinde ich als etwas befremdlich.
Wie auch unter
http://wiki.openstreetmap.org/wiki/OSM_XML
zu lesen bin ich von osmconvert

gewohnt.

Dein

mmmh, strange :wink:

Hi,

da muss noch ein Fehler sein, der bei mir nicht auftritt.

Die Bounding Box bilde ich so ab, wie sie von Osmosis (dort aber meist mehr Nachkommastellen mit 0 aufgefüllt) erzeugt wird, z.B:

Beim “Extrahieren” der Koordinaten aus den Dateinamen läuft wohl was falsch. Wie lautet denn die (fast letzte) Bildschirmausgabe in Zeile “Bereich: …”?

Bereich: lon-13.00_-12.00lat27.00_28.00_srtm3.osm 10000000,lon-13.00_-12.00lat27.00_28.00_srtm3.osm 10000000,lon-19.00_-18.00lat28.00_29.00_view3.osm 12015776,lon-19.00_-18.00lat28.00_29.00_view3.osm 12015776

Sollte eigentlich beispielsweise so aussehen:

Bereich: 55.00,6.00,45.00,19.00

Der Fehler liegt beim Extrahieren aus den Dateinamen. Die IDs stehen ja auch noch so dabei wie in der erstellten Tabelle. Keine Ahnung wie ich den Fehler reproduzieren kann, wenn es bei mir funktioniert. Der Umgang mit den Zeichenketten ist ja nicht von den Kachelgrenzen, also vom Gebiet, abhängig. (Nächster Fallstrick dann aber vielleicht bei negativen Koordinaten).

Ja, das wird’s wohl sein, denn neben den Kanaren

phyghtmap --area=-19:27:-12:30 --jobs=1 --line-cat=500,250 --osm-version=0.6 -start-node-id=2000000000 --step=20 --viewfinder-mask=3

tritt es auch noch bei Island auf:

phyghtmap --area=-25:62:-12:68 --jobs=1 --osm-version=0.6 --step=20 --viewfinder-mask=3

Die Schrift ist zu klein, war mir gar nicht aufgefallen. :slight_smile:

Das lässt sich einfach bewerkstelligen. Gib mir ein paar Minuten.

Edit: Fertig - Zeile bounds=“.lon([-0-9.])([-0-9.])lat([-0-9.])([-0-9.]).” geändert.

Fein, nun klappt’s auch bei Atlantis :wink:

Kenn mich ja mit dem Garmin-Zeugs nicht aus.
Wenn ich das nehme


$ java -ea -jar ./mkgmap-gmap-mdr-r2161.jar --max-jobs=1 --reduce-point-density=5.4 --transparent --overview-mapname=mapset00 --keep-going --gmapsupp nixkaputt.osm.pbf
Error at line 1, col 1
Bad file format: nixkaputt.osm.pbf
Error parsing file
Exception in thread "main" java.lang.NullPointerException
        at uk.me.parabola.mkgmap.combiners.FileInfo.getFileInfo(FileInfo.java:139)
        at uk.me.parabola.mkgmap.main.Main.endOptions(Main.java:406)
        at uk.me.parabola.mkgmap.CommandArgsReader.readArgs(CommandArgsReader.java:126)
        at uk.me.parabola.mkgmap.main.Main.main(Main.java:112)
$ echo $?
1
$

, gehts nicht:

Nehme ich jeodch das


$ java -ea -jar ./mkgmap-r2166/mkgmap.jar --max-jobs=1 --reduce-point-density=5.4 --transparent --overview-mapname=mapset00 --keep-going --gmapsupp nixkaputt.osm.pbf
$ echo $?
0
$

dann geht’s. Jedenfalls erhalte ich dann 2 Dateien: 63240001.img & gmapsupp.img
Was immer das sein mag :wink:

Das Perl-Skript zum Zusammenführen der phyghtmap-Tiles habe ich aktualisiert:

Link: http://dl.dropbox.com/u/1677057/process_phyghtmap_data.pl

Änderungen: sort numerically, handling of empty osm files, file globbing for windows7 added

Es sollte jetzt unter Linux, OS X und Windows funktionieren.

Klaus

Sehr fein :slight_smile:

Dürfen wir uns nochwas wünschen, ja?

Wenn per osmconvert nach pbf und zurück-nudle:
osmconvert phyghtmap_result.osm --out-pbf > phyghtmap_result.osm.pbf
osmconvert phyghtmap_result.osm.pbf > phyghtmap_result.osm2
osmconvert topo.osm --out-pbf > topo.osm.pbf
osmconvert topo.osm.pbf > topo.osm2
und dann diff-e:
diff phyghtmap_result.osm2 topo.osm2
2a3
>

wünschen wir uns eine Bounding Box :wink:

Der Wunsch kommt nicht von ungefähr, denn siehe

$ java -ea -jar ./mkgmap-r2166/mkgmap.jar --max-jobs=1 --reduce-point-density=5.4 --transparent --overview-mapname=mapset00 --keep-going --gmapsupp phyghtmap_result.osm.pbf
com.google.protobuf.InvalidProtocolBufferException: Message missing required fields: bbox
at com.google.protobuf.UninitializedMessageException.asInvalidProtocolBufferException(UninitializedMessageException.java:81)
at crosby.binary.Osmformat$HeaderBlock$Builder.buildParsed(Osmformat.java:308)

$ java -ea -jar ./mkgmap-r2166/mkgmap.jar --max-jobs=1 --reduce-point-density=5.4 --transparent --overview-mapname=mapset00 --keep-going --gmapsupp topo.osm.pbf
$

Danke schön.