0

Openstreetmap を使用してカスタム ルーティング アプリケーションを開発しています。これを行うには、Overpass などの Openstreetmap API を使用して、特定の境界ボックス内のノードとエッジを (少なくとも) 読み取る必要があります。その後、ノードとエッジを処理し、ルーティング アルゴリズムを適用します。私の主な問題は、この境界ボックスのサイズを決定することです。

1 つの方法は、起点と終点のノードを含む大きな境界ボックスを読み取り、その中のすべてのノードとエッジを処理することですが、これは過剰に思え、API からの読み込みに長い時間がかかります。さらに、これは必要なすべての道路があることを保証する方法ではありません。

もう 1 つの方法は、起点ノードの周囲の小さな境界ボックスを読み取り、そこからルーティング アルゴリズム (ダイクストラなど) を開始し、必要に応じてマップの新しい部分を読み取り/処理することです。このアプローチでは、API サーバーに対して複数の呼び出しを行う必要があり、これにも時間がかかる可能性があります。

これら 2 つのアプローチのどちらが OSM ルーティング アプリケーションで一般的か、または別のアプローチが望ましいかを知っていますか?

4

1 に答える 1

1

あなたのアプローチは非常に珍しく、お勧めできません。通常、OSM データベースのローカル コピーがあります。惑星全体または国などの抜粋のいずれかです。

このデータをオンザフライで取得するのは非常に悪い考えであり、多くの問題に遭遇します。API は、そのような重いクエリをサポートする準備ができていません。また、長距離の場合、数百メガバイトのデータを処理する必要があります。さらに、ルートをすばやく計算できるようにしたい場合は、生データを前処理する必要があります。

ローカル データベースをインストールする場合は、switch2osmを読むことをお勧めします。使用できるタイル サーバーの構築に関するガイドがあります。Mapnik、mod_tile、renderd などのインストールはスキップしてください。

于 2014-02-17T07:27:17.683 に答える