この記事では、調査規模の情報コンテンツの重要なコンポーネントの1つである道路ネットワークに触れたいと思います。
一番下の行は、地図の調査規模で美しい道路網を表示する必要があるということです。 これは、カードが空にならないようにするためです。 購入データでは、このタスクはスタイルによって正常に解決されています。 すべてのデータが1つのサプライヤからのものである場合、それらは同種のものであり、どの道路をどの縮尺で描く必要があるかを簡単に説明できます。 しかし、OpenStreetMapはそうではありません。 世界中のユーザーが入力するマップには、マッピング方法に多くの違いと地域的な特徴があふれています。 調査規模では、これらの違いは特に顕著です。 そのため、接続された美しい道路網を地図の上に描くことはできません。
初期データに頼ることはできないため、道路網の接続状態を判断する独自のメカニズムを考え出す必要があります。 それについて説明します。
ソースデータ
OpenStreetMapは、
highway
タグを使用して
highway
を示します。 値は、
motorway
、
trunk
、
primary
、
secondary
、
residental
、
service
などの値を取ることができます。 プロジェクトWikiでタグの詳細を読むことができます 。
高速道路のタグは高速道路を意味します。 モスクワでは、彼は有料ルート(ドン、M-11、ニューレニングラードカ)といくつかの出発ルート(シンフェロポリ高速道路)をマークしました。 ただし、このタグはモスクワ環状道路とほとんどの出発ルートを示していません。 ポーランドでは、
motorway
タグが付いているトラックは2、3箇所のみです。 そしてそれらの1つは都市の回り道です。 ヨーロッパとアメリカでは、このタグはより一般的であり、まとまりのある道路網を形成しますが、アメリカからの多くの道路はカナダとの国境で終わります。 これはすべて、単一の
motorway
タグを使用することを不可能にします。
高速道路でタグ付けされた道路
次に重要な道路は、
trunk
タグです。 彼は「高速道路ではない最も重要な道路」とマークしました。 このタグを考慮に入れると、モスクワの環状道路とベトンカがモスクワに表示され、出発ルートの大部分もマークされます。 そしてポーランドでは、いくつかの追加の都市だけが注目されました。 欧州の道路網は完全性を失いました。
highway=trunk
として示される多くの迂回路があります。 米国にはそのような道路はほとんどなく、開発された高速道路ネットワークではほとんど失われています。
その結果、地図上で単一の道路ネットワークが取得されません。 異なる都市では、同じタグが異なる品質の道路を示しています。 多くの場合、「重量のある」タグは都市ツアーのごく一部を示しています。 高速道路全体がこれらのタグでマークされていないため、道路は空中に「ぶら下がっています」。 しかし、問題自体は新しいものではありません。 オスメリア人は長い間、この問題に直面してきました。
計算方法
そのため、タスクは調査規模で道路を描くことです。 さらに、地図はすぐに読めなくなるため、すべての道路を描くことはできません。 「主なもの」だけを上げる必要があることがわかります。 道路の優先順位はさまざまな方法で定義できます。A地点からB地点までのルートの構築にどの程度参加するかによって、道路の重要性を評価する方法を選択しました。これを行うには、ルートを構築し、これらのルートがどの道路を通過したかを確認します。
アドレッシングユニットとして、道路が走るセクションのパスのOSM識別子を選択しました。 厳密に言えば、ルートはOSM要素の一部にしかなれませんが、調査規模でジオメトリが簡素化され、要素自体が比較的短いため、それらを完全に考慮します。
ルーティングに関係する道路を特定するために、OSRMを使用しました。 確かに、このために彼はわずかに修正されなければなりませんでした。 主な役割は、サーバーの特別なプラグインによって果たされます。このプラグインは、ルートポイントの代わりに、ルートが通過する
wayID
シーケンスを表示します。 このプラグインのソースコードは、リポジトリにあります。
最初の試み:道路をすべての首都に接続する
最初の実験として、私は地球上のすべての首都(
capital=yes
タグが付いた都市ポイント)を取得し、「それぞれに」道路を構築しました。 パノラマスケールで、ルートのレイアウトに少なくとも1回使用されたすべての道路を上げました。 その結果、ヨーロッパとロシア西部までをカバーする単一のネットワークを手に入れました。 しかし、ここでも、OSMマッピングプラクティスの地域的な違いが再び現れました。 ロシアでは、
capital=yes
タグは、地域の行政の中心地であるすべての都市、たとえばトゥーラをマークします。 しかし、米国では、ワシントン市だけが
capital
でタグ付けされて
capital
ます。 その結果、結果として得られる米国の道路網はまばらであり、東海岸に沿って走っています。 シベリアも発見されたままでした。
また、時間の経過とともに、首都間の道路網が密集しすぎていることがわかりました。 yes / noの値を定義する提案のタグの説明はかなり理解できますが、最も一般的な値は...
capital=8
です!!!
capital=yes/no
アカウントは3.7%未満です! したがって、このOSMドキュメントの後に信じてください。 さらに、フィリピンで
capital=yes
大量に使用されています。 地方資本を分離するには、
admin_level
の値を考慮する必要があります。 これも世界中で大きく異なります。 wikiには、このタグの読み方に関するタグもあります。
二度目の試み
首都がほとんどなく、それらをさらにフィルタリングした後、建設に普通の都市を追加します。 しかし、それらとそれらの間の道路がたくさんあるので、道路網を構築できる都市のみを利用する必要があります。 サンプルでは、2つの基準を使用しました。都市の人口と、既に選択されているポイントへの近接度です。 近接オプションを使用すると、近くの都市を除外できます。 それらの間の新しい道路は、調査規模では悪く見えます。 人口(存在する場所)を考慮すると、最も重要な都市への道路を描くことができます。
ロシアの例では、ヨーロッパの部分では、タグの
capital
マークされた多くの都市があり、他のすべての都市は排除されています。 しかし、ヤクーチアははるかに少ない人口です。 ここで少なくとも何かを描画するために、アルゴリズムは2831人の住民がいるDeputatskyの村とその地図への道を上げます。 しかし、地図にはそのような都市がはるかに多いので、私はそれらの都市からいくつかの近くの都市への道しか使いません。 これにより、ルーターへの呼び出しの数を減らし、要求自体を簡素化できます。
結論
結果は次のとおりです。
アプリケーションを更新した後、結果の画像は自分の携帯電話で見ることができます。 取られたステップにより、地図の調査規模で道路の凝集したネットワークを取得することができました。 マップが活発に開発されているという事実により、新しい道路がその上にマークされ、現在の道路が更新されるため、計算されたデータはすぐに古くなってしまいます。 実際、データを生成するたびに、道路網をゼロから検討する必要があり、これによりデータの準備に必要な時間が長くなります。 しかし、このような処理により、マップの可視性を高め、OpenStreetMap固有の問題のいくつかを克服することができます。