Suite

Osm2po pour importer la planète entière


Mon propos est d'utiliser le pgrouting avec les données de la planète. osm2pgrouting ne parvient pas à importer la planète entière, j'ai donc essayé osm2po. Il avait l'air bien, il a généré un fichier sql en environ 2,5h. Après l'avoir importé dans la base de données, j'ai trouvé qu'il existe de nombreuses façons d'être exclues de la base de données. En regardant de plus près les journaux osm2po :

INFO 46 421 095 sur 235 414 299 voies extraites - 25 018M

J'ai donc commenté chaque entrée wtr.finalMask dans le fichier osm2po.config. ça m'a un peu aidé :

INFO 74 660 756 sur 235 414 299 voies extraites - 15 761M

mais il manque encore de nombreuses façons. J'ai donc décommenté cette ligne :

disablePreFilter = true

Mais juste avant l'extraction, j'ai obtenu ceci:

INFO 2 362 909 765 sur 2 362 909 765 nœuds extraits - 29 114M FATAL Exception at Thu Jul 02 07:34:50 CEST 2015- 8.932M Message : java.lang.RuntimeException : java.lang.ArrayIndexOutOfBoundsException : Index de tableau hors limites : -2147483648 Classe : java .lang.RuntimeException Stacktrace : de.cm.osm2po.converter.OsmXmlParser.parse(OsmXmlParser.java:83) de.cm.osm2po.Main.runTiler(Main.java:214) de.cm.osm2po.Main.main( Main.java:159)

Après avoir lu toutes les réponses ici, je comprends que osm2po n'extrait pas les moyens avec des balises qu'il ne connaît pas. Ai-je bien compris que la désactivation du préfiltre doit extraire tous les moyens ? Si oui, existe-t-il un moyen de configurer osm2po pour créer un fichier SQL avec toutes les méthodes d'osm ?

J'utilise la version osm2po 5.0.0. Il a été exécuté avec :

java -Xmx32G -jar osm2po-core-5.0.0-signed.jar cmd=tjsp tileSize=x,c ./planet-140522.osm

sur un système doté de 64 Go de RAM. Le fichier map est un peu ancien, mais j'ai besoin exactement de cette version. Ma config osm2po est là : osm2po.config

Exemple de chemins manquants (ou de sections, sans être sûr de ce que signifie exactement "chemin" dans osm) : part.of.osm.file (cela fait partie du nouveau fichier osm, pas de la planète, pour pouvoir le saisir raisonnablement rapide, mais cela avait l'air similaire lorsque je l'ai saisi sur le fichier planète) en ne laissant dans la base de données que ces 3 lignes :

osm_id;osm_source_id;osm_target_id 111729593;252343523;1370502399 111729593;1370502399;252343594 111729593;252343594;252343601

Quelle version d'osm2po avez-vous utilisé et comment (paramètres ?) l'avez-vous démarré ? Hmmm… 74 660 756 sur 235 414 299 sonne bien. Les autres sont des bâtiments, des lieux, des zones, des segments de frontière, etc. et pas de routes ou de chemins praticables.

Puis-je voir le fichier journal complet pour trouver l'exception ArrayIndexOutOfBounds ? Au fait : l'erreur indique qu'un tableau a été rempli avec plus de 2 milliards d'éléments !!! Pour contourner ce problème, utilisez le paramètre tileSize. (TileSize=30x30,1) par exemple.

Mais est-il vraiment judicieux de mélanger toutes ces données (polygones et lignes) dans une seule table ? - Je ne pense pas. LedésactiverPréfiltreoption n'influence pas le résultat. Il ne fait que différer le filtrage et le laisse à l'étape suivante du processus. Utile, si vous souhaitez collecter des informations définies dans les relations avant, les routes par ex. Et le plus important : osm2po fait bien plus que simplement produire des géométries. Sa tâche principale est de corriger les chemins et de trouver des intersections (croisements) dans le réseau. Le sens, les bâtiments, les zones, etc. peuvent faire partie du réseau routier.