OSMnxはOpenStreetMap のデータを取得できるPythonライブラリーです。
ここでは、Windows上のAnacondaで使ってみます。
最新のAnacondaなどではosmnxのimportでエラーになる場合があります(モジュールのバージョン違い?)。
動作が確認できているのはWindows 10 + Anaconda3-5.3.1-Windows-x86_64(64-bit)です。
Anacondaのインストーラーはここなどを参照。
インストール自体に特に難しいところはありません。
インストール後、Anaconda Prompt(Anaconda3)を起動し、以下のコードを実行。
conda-forgeを高優先度にする
仮想環境にOSMnxをインストール。
strict-channel-priorityという引数が分かりません…..とかいうエラーが出た場合は
>conda create -n ox -c conda-forge osmnx
環境をアクティベートしてosmnxを使用できるようにして、Pythonコンソールを開きます。
OSMnxを使って道路ネットワーク情報を取得してみます。
例えば….
「大阪府のすべての道路に関する情報を取得してShape形式でデータをダウンロード」
ちなみに以下の環境で実行時間は5時間ほどでした。
Windows 10 64bit、Intel Core i3 3.1GHz RAMー>4GB
Shapeファイルは格納先を指定しない場合はdataというフォルダーが作成されその中にedgesとnodesの2つのカテゴリで保存されます。
必要なのはedgesです。
QGISで読み込むとこんな感じ。
属性テーブルです。
5時間はあんまりなので、対象を絞ってみます。
「吹田市の私道でないすべての道路や小道を取得してShape形式でデータをダウンロード」
これなら、2~3分で実行終了しました。
ちなみにnetwork_typeは以下のようなものがあります。
drive
– 運転可能な公道を取得する(ただし、整備道路は取得しない)drive_service
– 整備道路を含む運転可能な道路を取得するwalk
– 歩行者が使用できるすべての道路と小道を取得する(このネットワークタイプは一方通行は無視します)bike
– サイクリストが使用できるすべての道路と小道を取得するall
– すべての私道でないOSMの道路と小道をダウンロードするall_private
– 私道を含むすべてのOSMの道路と小道をダウンロードする
こんな感じです。
最短経路探索してみます。
こんな感じ。
万博記念公園の迎賓館からパナスタへ向かう最短経路です。
Shape形式ではなくCSV形式でデータを取得してみます。
実行時間は1時間半くらいでした。
edgeはこんなデータです。
QGISで読み込む場合はデリミテッドテキスト。
サンプルは66万行以上あるので、結構時間がかかります。
別々に取得した隣接する2つの地域のネットワークは、当然のことながら、連続していません。
結合する2つのノードを探して、接続するエッジ(リンクとも言う)を新しく作成すれば、2つの地域のネットワークは連続します。
やり方は?
これを実行できるアルゴリズムを探すか作る、あるいはツールやライブラリを探すか作る。
ArcGISなら簡単にできるのかな?
工事中
graph_from_place()では、場所の指定は住所の英語表現の順に記述します。
例えば大阪府は’Osaka,Japan’ですが、もっと範囲を絞って「淀川区」のような場合は’Yodogawa-ku,Osaka,Osaka,Japan’になります。
行政区をまたぐような場合は、Place指定ではなく範囲を指定する方法もあります。
バウンディングボックスなら
graph_from_bbox(north,south,east,west,network_type=’all’)
バウンディングボックスの四つの値はOpenStreetMapにアクセスしてエクスポートをクリックすると画面の領域の範囲で表示されます。
「ドラッグして別の領域を選択」をクリックすれば、白っぽい枠で範囲を指定できます。
地点座標と距離(例えば1km)で指定する場合は
graph_from_point((latitude,longitude),distance=1000,network_type=’all’)
地点座標はGoogleMapsナビゲーションV3などで取得できます。
距離の目安ならGoogle Maps 距離計算(積算)V3などをご参照ください。
抽出範囲例
ちなみに、Webサービスを使う場合は、Webサービスを使って道路ネットワークを取得してみるをご参照ください。
OpenStreetMapの道路ネットワークデータも100%ではありません。
OSMは自分で編集することもできますが、事前に知っておくべきことがいくつかあります。
下記のようなサイトを参照しておきましょう。
Leave a Reply