Mais

Osm2po para importar planeta inteiro

Osm2po para importar planeta inteiro


Meu objetivo é usar pgrouting com dados do planeta. o osm2pgrouting falha ao importar o planeta inteiro, então tentei o osm2po. Pareceu bem, gerou arquivo sql em cerca de 2,5h. Depois de importá-lo para o banco de dados, descobri que existem muitas maneiras de excluí-lo do banco de dados. Olhando mais de perto os logs osm2po:

INFO 46.421.095 de 235.414.299 vias extraídas - 25.018M

Portanto, comentei cada entrada wtr.finalMask no arquivo osm2po.config. Ajudou um pouco:

INFO 74.660.756 de 235.414.299 vias extraídas - 15.761M

mas ainda faltam muitos caminhos. Então, descomentei esta linha:

disablePreFilter = true

Mas, então, antes de extrair, eu peguei o seguinte:

INFO 2.362.909.765 de 2.362.909.765 nós extraídos - 29.114 M FATAL Exception at Thu Jul 02 07:34:50 CEST 2015- 8.932 M Message: java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: Array index fora do intervalo: -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)

Depois de ler todas as respostas aqui, entendi que o osm2po não extrai formas com tags que ele não conhece. Eu entendi corretamente que desativar o pré-filtro deve extrair todas as formas? Em caso afirmativo, existe alguma maneira de configurar o osm2po para construir o arquivo sql com todas as formas do osm?

Estou usando a versão osm2po 5.0.0. Foi executado com:

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

no sistema com 64 GB de RAM. O arquivo de mapa é um pouco antigo, mas preciso exatamente desta versão. Minha configuração do osm2po está lá: osm2po.config

Exemplo de caminhos ausentes (ou seções, não tendo certeza do que exatamente "caminho" em osm significa) está lá: part.of.osm.file (isso é parte do arquivo osm mais recente, não o planeta, para ser capaz de fazer o grep razoavelmente rápido, mas parecia semelhante quando eu o grep no arquivo planet), deixando no banco de dados apenas estas 3 linhas:

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

Qual versão do osm2po você usou e como (parâmetros?) Você a iniciou? Hmmm… 74.660.756 de 235.414.299 parece ótimo. O resto são edifícios, lugares, áreas, segmentos de limite, etc. e nenhuma estrada ou caminho roteável.

Posso ver o arquivo de log completo para localizar a exceção ArrayIndexOutOfBounds? A propósito: O erro diz que um array foi preenchido com mais de 2 bilhões de elementos !!! Para contornar esse problema, use o parâmetro tileSize. (tileSize = 30x30,1) por exemplo.

Mas realmente faz sentido misturar todos esses dados (caminhos de polígonos e caminhos de linha) em uma tabela? - Acho que não. OdisablePreFilteropção não influencia o resultado. Ele apenas adia a filtragem e a deixa para a próxima etapa do processo. Útil, se você deseja coletar informações definidas nas relações anteriores, rotas, por exemplo E o mais importante: osm2po faz muito mais do que apenas produzir geometrias. Sua principal tarefa é corrigir caminhos e encontrar cruzamentos (cruzamentos) na rede. Significado, edifícios, áreas, etc. podem tornar-se parte da rede rodoviária.