war.
Meinem armen, kleinen Netbook (1/12 RAM von extremecarvers Kiste) wollt’ ich die 18 GB (oder so) nicht antun und hab’ mich so auf die Hochalpen beschränkt:
Das Perl-Skript von Klaus bzw. das Shell-Skript von Mario generieren (gleichschnell aus den 103 osm-Dateien
jeweils ein ca. 6 GB große osm-file. Die Sortierung hab’ ich geprüft wie folgt:
osmconvert --out-statistics phyghtmap_result.osm
bzw.
osmconvert --out-statistics topo.osm
In beiden Fällen gab es keine “wrong order/wrong sequence”-Warnung. Dann für beide Fälle
problemlos jeweils ein pbf generiert ( 5.8 GB → 148 MB !) und aus jenen per “omsconvert -B=geneve.poly …”
Genf extrahiert ohne Fehlermeldung und dieses kurz in JOSM angeschaut.
splitter/mkgmap wurde nicht gestestet, da nicht der Garmin-Fraktion angehörend
Denke nicht, dass von 6 GB auf 18 GB sich etwas grundsätzlich ändert, so vermute ich den Fehler woanders.
Debian 6, phyghtmap 1.24 (ohne patches)
EDIT:
Nett wäre es, wenn phyghtmap einen Parameter “–single-file” hätte, bei welchem es eine Art “phyghtmap_result.osm”
generieren würde, indem es 2 temporäre Dateien mit nur ways resp. nur nodes benutzt und jene am Schluß konkateniert.
Dann bräuchte man keine “merge-scripte” mehr und osmconvert könnte das “singe-file” sehr platzsparend nach
pbf konvertieren, da sich in diesem Format die Höhendaten extrem gut packen lassen, besser als mit gzip.
Über diese Aussage bin ich immer wieder gestolpert. Experimentieren ergab, wenn man unsortierte Daten verwendet,
braucht osmconvert 10x so lang beim pbf-Erstellen als mit richtig sortierten Dateien => stets sortierte Daten für osmconvert benutzen.
osmconvert kann aus unsortierten Daten Polygone schneiden und die unsortierten Daten auch in andere Formate konvertieren,
bei “mergen” geht’s jedoch schief:
Seien a.osm, b.osm, c.osm unsortiert, so ist
osmconvert a.osm b.osm c.osm > d.osm
fehlerhaft, denn es fehlen nodes.
=> stets sortierte Daten für osmconvert benutzen.
Ja, das sehe ich genauso und hatte letzte Woche (05.01.) den Programmautor diesbezüglich angeschrieben.
…
Wäre es möglich nur eine (große) Ergebnisdatei statt vieler kleiner zu erzeugen ?
Würde dies eine Qualitätssteigerung, z.B. an den Kachelgrenzen, darstellen?
…
Ich stelle das Ergebnis einer Rückantwort dann hier ein.
Klaus
PS: Dass das Perl-Skript genauso performant ist, wie Marios Shell-Skript wundert mich allerdings - aber gut.
jip, ähnlich. Poste das Korrekte Morgen. Hab zusätzlich noch eine srtm3 Datei durch eine viewfinders3 ausgetauscht. Denke aber nicht dass es daran liegt. Meine phyghtmap hat die patches von kukuk - sowie eine Änderung wo ich die node Zahl von 100.000 auf 100.000.000 hochgesetzt - sonst ident. Poste Morgen nochmal meine komplette Toolchain inkl. Sources.
Der Wert für “–start-node-id=20000000” ist zu klein, es sei denn deine Patches modifizieren intern den Wert.
Besser (weil kollisionsfrei zu OSM-IDs) wäre das: --start-node-id=2000000000
Ich habe nicht vor die Daten zu mergen - daher sollte die start-node-id ziemlich egal sein.
Hier ist mein phyghtmap Aufruf:
phyghtmap --jobs=1 --osm-version=0.6 --area=5.56214:45.24627:16.68790:48.65879 --step=20 --output-prefix=alps --line-cat=500,100 --viewfinder-mask=1 --max-nodes=250 --gzip
– Daten passen zum Alpenextrakt von Geofabrik. Platzbedarf ungepackt 17GB. RAM braucht man nicht so viel. osmconvert war nach umbearbeitung eigentlich recht schnell.
ab und an nutze ich in JOSM den Hill-Layer von Nop’s Reit- und Wanderkarte [1], kombiniert mit einem OSM Mapnik Hintergrund [2]. Wenn ich für das gleiche Gebiet Höhenlinien mit phyghtmap erzeuge, liegen diese etwa 50m Richtung NW versetzt. Die Umrisse der Höhenlinien sehen dagegen auf den ersten Blick gleich aus. Beide Höhenlinien stammen wohl aus der gleichen Quelle.
Wodurch entstehen diese Abweichungen?
Getestet mit phyghtmap 1.25 im Gebiet 6.7793889,49.3146251,6.7921776,49.3199614, Schrittweite 10.
In Version 1.25 ist ein neuer Parameter enthalten: --max-nodes
Allerdings nicht im Sinne von Thomas Patch fuer ways, sondern die Gesamtzahl der nodes pro tile.
Du meinst wahrscheinlich meine Patch, also “Thorsten” und nicht “Thomas”
Keine Ahnung warum der phyghtmap Author meine Patches geflissentlich ignoriert. Ich (und wohl auch andere) habe ihn mehrmals drauf aufmerksam gemacht.
Werde sehen das ich die Patches heute anpasse und meine --max-nodes Option in --max-way-nodes umbennen.
Hmm, wollte mal 1.25 ausprobieren – allerdings läuft das bei mir (wie auch 1.24) weder unter Win noch Opensuse (ohne patches - sourcecode selber kompiliert per python setup.py install) …
hat noch jemand das Problem??
Traceback (most recent call last):
File “C:\Program Files\python_2.7.2\Scripts\phyghtmap-script.py”, line 9, in
load_entry_point(‘phyghtmap==1.25’, ‘console_scripts’, ‘phyghtmap’)()
File “C:\Program Files\python_2.7.2\lib\site-packages\phyghtmap-1.25-py2.7.egg\phyghtmap\main.py”, line 177, in main
processHgtFile(hgtDataFileName, opts)
File “C:\Program Files\python_2.7.2\lib\site-packages\phyghtmap-1.25-py2.7.egg\phyghtmap\main.py”, line 130, in processHgtFile
elevations)
File “C:\Program Files\python_2.7.2\lib\site-packages\phyghtmap-1.25-py2.7.egg\phyghtmap\osmUtil.py”, line 97, in writeXML
contourList = contourData.trace(elevation, points=0)
TypeError: ‘points’ is an invalid keyword argument for this function
Komplett:
c:\contourlines>“C:\Program Files\python_2.7.2\Scripts\phyghtmap.exe” --jobs=1 --osm-version=0.6 --area=5.56214:45.24627:16.68790:48.65879 --step=20 --output-prefix=alps --line-cat=500,100 --viewfinder-mask=1
found existing file hgt\VIEW1\N45E005.hgt.
found existing file hgt\VIEW1\N45E006.hgt.
…
hgt file hgt\VIEW1\N45E005.hgt: 3601 x 3601 points, bbox: (5, 45, 6, 46)
Traceback (most recent call last):
File “C:\Program Files\python_2.7.2\Scripts\phyghtmap-script.py”, line 9, in
load_entry_point(‘phyghtmap==1.24’, ‘console_scripts’, ‘phyghtmap’)()
File “C:\Program Files\python_2.7.2\lib\site-packages\phyghtmap-1.24-py2.7.egg\phyghtmap\main.py”, line 172, in main
processHgtFile(hgtDataFileName, opts)
File “C:\Program Files\python_2.7.2\lib\site-packages\phyghtmap-1.24-py2.7.egg\phyghtmap\main.py”, line 125, in processHgtFile
elevations)
File “C:\Program Files\python_2.7.2\lib\site-packages\phyghtmap-1.24-py2.7.egg\phyghtmap\osmUtil.py”, line 97, in writeXML
contourList = contourData.trace(elevation, points=0)
TypeError: ‘points’ is an invalid keyword argument for this function
Passiert nicht bei phyghtmap Aufruf ohne commands (also ohne echte Konvertierung) - aber sonst immer
sollte man den Thread über phygthmap langsam abrennen oder einen neuen aufmachen?
Ich bin mit dem Author jetzt in Kontakt und dabei, meine Patches upstream rein zu bekommen. Er ist von dem plötzlichen Intresse, Feedback und Patches etwas erschlagen
Zu phygthmap und Problemen auf openSUSE: Ich werde es auf Arbeit versuchen mal nachzuvollziehen und dann mit den Verantwortlichen ein Buero weiter reden
Hab’ meinem armen kleinen Netbook jetzt die volle 17 GB gegeben
$ time phyghtmap --jobs=1 --osm-version=0.6 --area=5.56214:45.24627:16.68790:48.65879 --step=20 --output-prefix=alps --line-cat=500,100 --viewfinder-mask=1
<snip>
real 195m31.245s
user 184m14.111s
sys 4m41.218s
So far, so good!
$ time process_phyghtmap_data.pl alps*
<snip>
writing XML header ...
copying nodes from alps_lon5.56_6.00lat45.25_45.43_view1.osm (10000000) ...
copying nodes from alps_lon11.00_12.00lat46.00_46.06_view1.osm (100019256) ...
Böse Vorahnung, hier wird doch nicht nach 8 Stellen gewrappt?!
copying nodes from alps_lon14.00_15.00lat47.88_48.00_view1.osm (202686253) ...
copying nodes from alps_lon15.00_16.00lat47.00_47.12_view1.osm (203562848) ...
copying nodes from alps_lon7.00_8.00lat45.34_45.43_view1.osm (20376286) ...
copying nodes from alps_lon15.00_16.00lat47.12_47.25_view1.osm (204035536) ...
copying nodes from alps_lon15.00_16.00lat47.25_47.38_view1.osm (204728919) ...
Oh weh!
$ time osmconvert --out-statistics phyghtmap_result.osm
osmconvert Warning: wrong sequence at node 106634514
osmconvert Warning: next object is node 10644806
^C