「PyrOSM Open Street Mapデータとの作業」

「PyrOSMによるOpen Street Mapデータとの取り組み」

OSMマップデータの効率的な地理空間操作

Tabea Schimpfによる写真(画像提供:Unsplash)

もし以前にOSMデータを扱ったことがあるならば、それが簡単ではないことを知っているでしょう。OSMデータは非常に大きく、分析したい内容に対してパフォーマンスが良いソリューションを見つけることはしばしば難しい課題です。PyrOSMはOSMデータの読み込みと操作をより効率的に行うためのパッケージです。なぜ効率的なのかというと、PyrOSMはCython(C Python)上に構築され、OSMデータの逆シリアル化にはより高速なライブラリを使用し、numpy配列のような小さな最適化も行うことで高速にデータを処理することができます。特にOSMnxを使用したことがある場合(非常に類似したユースケースの場合)、大規模なデータセットをメモリに読み込むのに非常に長い時間がかかることをご存知かと思います。その点で、PyrOSMはデータの取り扱いを支援することができます。では、このライブラリがどのようなことができるのか見てみましょう!

🌎 PBFデータ

まず、OSMデータがどのようなファイル形式で提供されているかについて少し説明しましょう。PBFは「Protocolbuffer Binary Format」の略であり、OSMデータを効率的に処理するための形式です。OSMデータは”ファイルブロック”と呼ばれるグループで組織されており、これらは独立してエンコードまたはデコードできるデータのまとまりです。ファイルブロックには”プリミティブグループ”が含まれており、これにはノード、ウェイ、リレーションなどの数千のOSMエンティティが含まれています。

データはユーザーが望む粒度レベルにスケールすることができます。例えば、現在のOSMデータベースの解像度は約1cm程度です。実際には、もし望むのであれば、Open Street Mapsのデータを一つのファイルにまとめてダウンロードすることも可能です(約1000GBのデータ)!

👩‍💻 PyrOSMの基本:データセットの読み込み

PyrOSMは、Geofabrik(世界と国レベルのデータ)とBBBike(都市レベルのデータ)という2つの主要なデータ配布元に基づいてOpen Street MapのPBFデータを読み込むパッケージです。このパッケージを使用すると、多くの種類の地理情報を利用できます:

  • 建物、POI(興味のある場所)、土地利用
  • 通りのネットワーク
  • カスタムフィルター
  • ネットワークとしてのエクスポート
  • その他さまざまな機能

BBBikeによって現在サポートされている都市は世界中に235あり、“sources.cities.available”メソッドを呼び出すことで簡単に完全なリストにアクセスできます。始めるのは非常に簡単で、単にOSMリーダーオブジェクトを初期化し、必要なデータを読み込むだけです:

この時点から先は、OSMオブジェクトを使用してBerkeleyデータと対話する必要があります。では、Berkeleyの運転用ストリートネットワークを取得してみましょう:

BerkeleyのOSMストリートネットワークのデータフレーム

実際のストリートネットワークオブジェクトを出力すると、length、highway、maxspeedなどのOSM属性が含まれたGeoPandas GeoDataFrameに格納されていることが分かります。これはさらなる分析に非常に便利です。

補足:このデータの提供元であるBBBikeには、さまざまなサイズのさまざまなデータ形式があります。その中にはOrganic Maps OSM、Garmin OSM、SVG Mapnikなどがあり、用途に応じて選択することができます。

🔍 より良いフィルタリング

上記のデータの読み込みの結果、Berkeleyのデータだけでなく、隣接する都市のデータも含まれていることがありますが、これは理想的ではありません。もっと狭い範囲やより特定のエリアを取得したい場合はどうすればいいでしょうか?それにはバウンディングボックスを使用することが重要です。バウンディングボックスを作成するには、以下のいずれかの方法を使用します:

  • 手動で[minx、miny、maxx、maxy]の形式で4つの座標のリストを指定する
  • Shapelyのジオメトリ(たとえばLineStringやMultipolygon)を指定する

バウンディングボックスの座標を見つけるためには、通常、bbox finderというウェブサイトを使用します。このウェブサイトでは、四角形を作成して座標をコピーすることができます。以下は、UCバークレーのキャンパス周辺の領域を囲み、徒歩ネットワークを取得する方法です。

バウンディングボックスを使用したストリートネットワーク

🎯 グラフのエクスポートと操作

PyrOSMのもう一つの良い点は、ネットワーク処理や他のネットワーク分析ライブラリへの接続を可能にすることです。ストリートネットワークをジオデータフレームとして保存するだけでなく、PyrOSMではノードとエッジを別々のデータフレームに抽出することもできます。以下は、ノードのデータフレームです。

ストリートネットワークからのノードのデータフレーム

これらのグラフ表現があれば、OSMnx、igraph、Pandanaなどのさまざまな形式で保存し、そこで作業することが非常に簡単です。

💭 まとめ

これは、地理空間作業でのpyrosmの機能についての短い概要でした!特定の地域からデータセットをダウンロードしたり、興味のある地域の範囲を制限したりするなど、非常に役立つメソッドに触れました。また、これが他のライブラリとの関連性にどのように関わるかについても触れました。pyrosmの最も良い点は、巨大なOSMデータセットと、それを使用して解決できるエンジニアリングまたは分析の質問とのギャップを埋めることです。

お読みいただきありがとうございました!

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more