サポート (#26) - shortest_pathでPostgreSQLがダウンします (#319) - Message List

shortest_pathでPostgreSQLがダウンします

shortest_pathを実行するとPostgreSQLがダウンするときがあります。 その際PostgreSQLのログにはこのようなエラーが記録されています。

terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc

少し調べたところ、データ量は関係なく一部のデータが原因のようです。 原因の特定方法などお分かりになりましたら教えてください。

環境

Ubuntu 8.04.3 PostgreSQL 8.4.1 PotGIS 1.4.0 pgRouting 1.03

利用データ

Orkneyルート検索用道路データ 北海道

  • Message #1297

    こんにちは。

    道路データのノードIDの値が大きすぎることによるエラーかもしれませんので、 ご利用されているデータのノードID(フィールド名:id1, id2)を1から振り直してみてはいかがでしょうか。

    ダイクストラの探索で利用するグラフのノードのIDは1~ノード数とするべきだそうです。これはpgRoutingというよりは、ダイクストラの探索で利用しているライブラリ(boost)の仕様です。 ご利用されているデータのノードIDは11桁と大きな値となっており、このノードをグラフに追加しようとすると、グラフはこのノードを含めるためにノード[1..11桁のノードID]をもつような巨大なグラフに拡張しようとしてメモリ確保に失敗してしまうようです。

    ノードIDを振り直すのは手間がかかるかと思いますが、 検討してみてください。

    • Message #1304

      回答ありがとうございます。

      IDの振り直しで解決しました。
      ありがとうございました。