web-dev-qa-db-ja.com

ルート全体、Googleマップ、またはOpenStreetMapに沿った正確な地理座標を取得します

ある町から別の町へのルートが定義されているとします。 Google Maps APIから、2つの間のルートを回復できます。ただし、Googleから返されるルートは、脚に別のステップがある場所(たとえば、ある高速道路から別の高速道路に曲がる必要がある場所)でのみ、地理座標を含む運転ルートです。

必要なのは、特定の間隔(たとえば、1/4マイルまたは100mごと)で、ルート全体に沿った地理位置(緯度/経度)です。

Google Maps API/Webサービスを介してこれを達成する方法はありますか?

または、OpenStreetMapデータベースがそれを行う方法でしょうか?

敬具、マドレーヌ。

30

[〜#〜] osrm [〜#〜] は、OpenStreetMapデータベースにある通りの道路形状を持つルートを提供します。たとえば、ルートをGPXとして取得できます(必要に応じてこのファイルを後処理できます)。これは次のようになります。

GET http://router.project-osrm.org/viaroute?hl=en&loc=47.064970,15.458470&loc=47.071100,15.476760&output=gpx

詳細: OSRM APIドキュメント

25
tyr

受け入れられた答えは時代遅れであり、もう機能しないため、ここでは ルートサービス from Project OSRM を使用して、道路に沿ったすべてのノードをクエリする方法を示します。

任意の数のlon、latペアを指定します。インスタンスの場合、次の3つ(ベルリン):

  • 13.388860,52.517037
  • 13.397634,52.529407
  • 13.428555,52.523219

ルートサービスは、これらのポイント間の最速ルートを計算し、次のクエリを使用して、道路に沿ったすべてのノードを返すことが可能です。

http://router.project-osrm.org/route/v1/driving/13.388860,52.517037;13.397634,52.529407;13.428555,52.523219?alternatives=false&annotations=nodes

これは、ルートに沿ったすべてのノードのノードIDを含むjson応答を返します。結果は次のようになります。

{
  "routes": [
    {
      ...
      "legs": [
        {
          "annotation": {
            "nodes": [
              2264199819,
              2045820592,
              21487242,
              ...
    ]
 }

ノードの緯度、経度座標を受け取るには、 OverpassAPI を使用できます。

[out:json];
(
   node(264199819);
   node(...);
   node(...);
   ...
);
(._;>;);
out;

Overpass-turboを使用したリクエストの例を次に示します。 http://overpass-turbo.eu/s/toe

7
user2350644

Google.maps.DirectionsService()。route()メソッドです。サービスリクエストと、サービスリクエストの完了時に実行されるコールバックを渡す必要があります。

https://developers.google.com/maps/documentation/javascript/directions

5
Marlio

Marlioの答えに追加します。

Google Maps Directions API自体を使用できます。指定された発信元と宛先のJSON出力で、次を探します。

"polyline" : {
  "points" : ""
}

デコーダーを使用して、ポリラインから座標を取得できます。 https://github.com/emcconville/google-map-polyline-encoding-tool またはRでgooglewayパッケージを使用して同じものをデコードできます。 https://cran.r-project.org/web/packages/googleway/googleway.pdf

ただし、解像度を希望のレベルに設定する方法はわかりませんが、API出力の解像度は本当に良いです。

0
Adithya Ajith