http://www.openstreetmap.orgから必要なデータを.osmファイル形式で入手できます。
これらは必要な道路を含むxmlファイルです。あなたはosmとそのwikiページについてもっと読むことができます。
距離だけで実際のルートを気にしないと、作業が楽になります。
.osmファイルを解析するスクリプトを作成します。関連性のあるノードやエッジ、歩行できない道路や河川など何も抽出しないでください。次に、このデータを取って、ある種のグラフデータ構造に入れます。
そこから、2点間の距離を求めたい場合は、Dijkstra's Algorithmを実行してください。すべての可能な距離を保存したい場合は、Dijkstraをグラフの各ノードから一度だけ実行し、毎回距離を保存してください。
<node id="111" lat="41" lon="-74" // more stuff here>
<tag k="x" v="y"/> ... // These are the various attributes of a node, optional
</node>
<node id='112' ..../>
<way id='555'>
<nd ref='111'/> // These are the nodes that make up the way
<nd ref='112'/>
<nd ref='543'/>
...
<tag k='highway' v='primary'/>
<tag k='name' v='E. 42nd Street/>
</way>
ご覧のとおり、ウェイには2つ以上のノードがあります。あなたは、ノードのペアのセットの中にそれぞれの道を破る必要がありますので、このファイルは、体重 111、112本 FRMのようなものになるだろう、DIST(111112)
112、111、 "
112、 543、DIST(112543)
543、112、 "
...
あなたはまた、一方通行の通り、およびその他の複雑な要因に対処する必要があると思います。すべての道が道ではないので、それを確認する必要があります。
これらのファイルは、領域の境界やその領域にどれくらいのものがあるかによっても非常に大きくなることがあります。
データをスクラップするために大量のカスタムコードを書く必要があることは間違いありません。私はそれを自分でやった。
興味深いアイデア。それは私が期待していたものですが、.osmファイルについてはわかりませんでした。私は、生データを操作するために多くのカスタムコードが必要になると考えました。これは私に良いスタートを与える。ありがとう! – wlindner