J'essaie actuellement d'extraire les réseaux routiers des décharges d'OpenStreetMap téléchargées sur Geofabrik . J'utilise la commande d'osmose suivante (version 0.45) pour extraire les routes:
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
Cela devrait renvoyer un fichier contenant toutes les routes automobiles, à l'exception des routes de service.
Cependant, certaines routes (et parfois beaucoup) manquent. J'ai essayé cette commande sur 3 fichiers d'entrée:
- Région "Midi-Pyrénées": le réseau routier semble presque achevé. La table attributaire contient 72010 éléments.
- toute la France: il manque beaucoup de routes. La table attributaire ne contient que 65803 éléments (moins d'une seule région). Tous les types d'autoroutes sont touchés: du primaire au résidentiel. Il n'y a aucun modèle évident pour les routes manquantes.
- toute l'Europe: presque toutes les routes manquent. La table attributaire contient 62092 éléments (moins que toute la France ...).
Je suppose qu'il y a une limitation que je ne connais pas, que ce soit sur la commande d'osmose ou sur le fichier de sortie. Qu'est-ce que je fais mal ici?
Cela peut ne pas être lié, mais j'ai essayé d'utiliser l' --used-node
option afin de réduire la taille des fichiers de sortie, mais cela génère toujours une erreur ( org.openstreetmap.osmosis.core.OsmosisRuntimeException: Unable to create object stream writing to temporary file null.
). Je ne sais pas pourquoi.
Mise à jour 29/08/2018: J'ai également essayé d'utiliser osmfilter
( input.o5m --keep="highway=" > output_roads.osm
), avec les mêmes résultats. J'ai essayé l'osmose et osmfilter sur Windows 7 et Debian 9.5 (les deux 64 bits).
--rb
?
your suggestion gives almost the sames results (65356 elements for France)
: Cela a attiré mon attention: 65356 est exactement une limitation de valeur de 16 bits (2 ^ 16), comme une valeur max Int16. Je suppose que cela doit être la limitation que vous recherchez. Peut-être que vous ne pouvez pas obtenir plus de 2 ^ 16 fonctionnalités maximum.