Ich versuche derzeit, Straßennetze aus OpenStreetMap-Dumps zu extrahieren, die auf Geofabrik heruntergeladen wurden . Ich verwende den folgenden Befehl für die Osmose (Version 0.45), um Straßen zu extrahieren:
osmosis \
--rbf input.osm.pbf \
--tf reject-relations \
--tf accept-ways highway=motorway,motorway_link,trunk,trunk_link,primary,primary_link,secondary,secondary_link,tertiary,tertiary_link,unclassified,residential \
--tf reject-ways highway=construction \
--lp --wb output_roads.osm.pbf
Dies sollte eine Datei zurückgeben, die alle Autostraßen außer Nebenstraßen enthält.
Es fehlen jedoch einige (und manchmal viele) Straßen. Ich habe diesen Befehl an 3 Eingabedateien ausprobiert:
- Französische Region "Midi-Pyrénées": Das Straßennetz scheint fast vollständig zu sein. Die Attributtabelle enthält 72010 Elemente.
- ganz Frankreich: viele Straßen fehlen. Die Attributtabelle enthält nur 65803 Elemente (weniger als eine einzelne Region). Alle Arten von Autobahnen sind betroffen: primär zu Wohngebieten. Es gibt kein offensichtliches Muster für die fehlenden Straßen.
- ganz Europa: Fast alle Straßen fehlen. Die Attributtabelle enthält 62092 Elemente (weniger als ganz Frankreich ...).
Ich denke, es gibt einige Einschränkungen, die mir weder beim Befehl osmosis noch bei der Ausgabedatei bekannt sind. Was mache ich hier falsch?
Dies mag nicht zusammenhängen, aber ich habe versucht, die --used-node
Option zu verwenden, um die Größe der Ausgabedateien zu reduzieren, aber dies erzeugt immer einen Fehler ( org.openstreetmap.osmosis.core.OsmosisRuntimeException: Unable to create object stream writing to temporary file null.
). Ich habe keine Idee warum.
Update 29/08/2018: Ich habe auch versucht, osmfilter
( input.o5m --keep="highway=" > output_roads.osm
) zu verwenden, mit den gleichen Ergebnissen. Ich habe Osmose und Osmfilter sowohl unter Windows 7 als auch unter Debian 9.5 (beide 64 Bit) ausprobiert.
--rb
?
your suggestion gives almost the sames results (65356 elements for France)
: Dies hat meine Aufmerksamkeit erregt: 65356 ist genau eine 16-Bit-Werteinschränkung (2 ^ 16), wie ein Int16-Maximalwert. Ich denke, das muss die Einschränkung sein, nach der Sie suchen. Möglicherweise können Sie nicht mehr als 2 ^ 16 maximale Funktionen erhalten.