OpenStreetMap、住所座標の取得方法、簡単な部分





最近、私は、ジオデータがないとますます多くの人々が問題に直面しているという傾向を観察しています。 むしろ、そうであっても、彼らの親密さで。 昨日、マーカーを配置するためのマップサービスの可能性に誰もが満足していた場合、ユーザーはもっと多くのことを望みます。通りを強調表示したり、家を表示したり、川の長さを計算したりするなどです そして、サプライズが彼らを待っています。地図上でこれらすべてを見ているように見えますが、彼らは何もできません-それはただの写真です。 Google.Maps、Yandex.Mapsが画像、ジオコーディング、およびナビゲーションの表示を停止した開発。







右に歩き、左に歩けば行き止まりになります。 唯一の方法は、必要なジオメトリを自分で再作成することです。 そして、道路に沿って道路や十数軒の家を非常にすばやく簡単に描くと、他の何百キロメートルもの水路はすべての欲求を落とすと言います。







OpenStreetMapプロジェクトが目に見えるようになるのは、宣伝されているGoogleとYandexの背後にある非常に困難な瞬間であり、彼は次のように述べています







はい、場所によっては完全ではないかもしれませんが、それは面白いデータではなく、ジオデータです。 そして、これは彼らの処理と分析の大きな機会を開きます。 さらに、データはODbLオープンソースライセンスの下で利用でき、2つの主な使用条件があります:データソース(OpenStreetMap参加者)への必須リンクと、パブリック派生データの場合は、ODbLライセンスの下でも公開する必要があります。







行こう



それでは、このデータに飛び込みましょう。 今日の目標は、それらから住所を抽出し、座標を取得することです。 そして、ジオコーダーのように個別にではなく、住所を入力して座標を受け取ることでこれを行いますが、すべて一度に利用できます。 結果をCSV形式で保存します。







単純な方法の特徴は、データベースを必要とせず、コピーして貼り付けることを知っていることです。 しかし、これを可能にするには、犠牲を払わなければなりません。 つまり、簡略化すると、事前に合意した1つの和解の住所を抽出することです。 最初に検索を特定の地域に制限するだけです-共通のデータセットから目的の和解を切り取ります。







ソース素材



そのため、出発点は惑星全体に関するOSMデータです。 しかし、それらは非常に大きいため、地球全体をカバーする必要がない場合は、たとえばGeofabricが大陸に分割されているなど、より多くの地域を使用します。 ロシアのセグメントの場合、最適なオプションはGis-Labで 、地域ごとのファイルが便利にカットされます。 必要なリージョンファイルをpbf形式で取得します。







ツール



さらに作業を進めるにはosmconvertツールosmfilterツールが必要です。 最初の方法を使用すると、さまざまな形式のデータを変換してトリミングし、関心のある領域のみを残して、ボリュームを減らし、結果として処理速度を下げることができます。 2番目は、プロパティによってオブジェクトをフィルタリングするように設計されています。







割礼 うーん...領域を切断



合意されたように、地域のデータのみをローカライズする必要があります。 osmconvertを使用すると、2つのポイントで外接する四角形を定義することにより、これを不器用に行うことができます。 パラメーター-b=<x1>,<y1>,<x2>,<y2>



がこれを担当し、南西ポイントと北東ポイントが設定されます。 集落の形状が複雑で、長方形の切り抜きが適切でない場合は、破線から切り取りポリゴンを作成できます。 そのようなファイルを指定するためのパラメーターは-B=file.poly



です。 その形式は非常に単純です。最初の行は名前です。 次に、「1」回線番号。 次に、NPを完全にカバーするポイントの座標と、最後のポイントが最初のポイントで終了する場所をリストします。 輪郭の終わり。 ファイルの終わり。 フォーマットとその入手方法に関する詳細情報







次に、サンプルファイルを示します。







 kursk 1 36.035249 51.838105 35.991534 51.562810 36.125976 51.563141 36.317305 51.681037 36.333813 51.780274 36.159021 51.837612 36.035249 51.838105 END END
      
      





主なことは、近隣のNPからの家が私たちのカットアウトエリアに入らないことです。 また、簡単にするために、すべての家をポイントに変換します。これには、 --all-to-nodes



キーを使用します。 出力ファイルはo5m形式で作成してください(ファイル拡張子を指定するだけです)。別のユーティリティでしか使用できないためです。







その結果、最初のコマンドは次のようになります。







 osmconvert.exe -B=city.poly --all-to-nodes RU-Region.pbf -o=1_to-node.o5m
      
      





これで、指定されたエリアからのみポイントデータが得られました。 しかし、道路、公園、フェンスなど、最終的には必要のないものがたくさんあります。







フィルタリング



したがって、次のステップは、さまざまな種類の住所を含む家のみを除外することです。 OSMの家は建物タグで示され、アドレス情報はaddrで始まるタグで示されます。 また、作成者とオブジェクトのバージョンに関する情報も破棄しますが、必要はありません。







 osmfilter.exe 1_to-node.o5m --keep="building AND addr*" --drop-author --drop-version -o=2.building-addr.o5m
      
      





さて、ファイルのサイズは再び小さくなり、今は何が残っているかを見る時が来ました。 それを人間が読めるものに変える時です。 約束どおり、これはCSVです。







結果



CSVに出力を提供する同じosmconvertを使用します。 パラメーターから、列に注目し、そこからタグ情報を挿入する価値があります。







 osmconvert.exe 2.building-addr.o5m -o=3.addr.csv --csv-headline --csv-separator=; --csv="@id addr:street addr:housenumber @lat @lon"
      
      





@id addr:通り addr:housenumber @lat @lon
1000000147959515 マサロバ通り 25A 51.6522509 36.0337820
1000000147960436 学校通り 71 51.6546536 36.0139438
1000000147965426 コトバ強羅通り 1 51.7337383 36.1837660


さて、これはすでにある種のジオデータであり、GISに挿入して、何らかの方法で分析することができます。冒頭に示した写真をご覧ください。







ただし、トピックはアドレスに限定されません。 2番目のステップでは、たとえば公共交通機関の停留所を離れ、交通機関のアクセシビリティを視覚化できます。 しかし、これはすでに完全に異なる記事からです...








All Articles