3

トランジット ルート、特にサンフランシスコ MUNI の移動距離を取得しようとしていますが、標準のNextBusGTFS、およびGoogle Maps APIは普遍的なようです。これらの API はどれも快適に使用できますが、この問題の対処方法がわかりません。

簡単な方法 - Google マップに問い合わせます(これは Web サービスを使用しますが、javascript API もあります)。

http://maps.googleapis.com/maps/api/directions/json?origin=37.7954199,-122.397&destination=37.7873299,-122.44691&sensor=false&mode=transit&departure_time=1348109609&alternatives=true

この JSON には移動距離が含まれていますが、2 つの問題があります。

  1. 地図を表示していない限り、Google はこのデータの使用を許可していません。
  2. 複数のルーティングオプションを提供できる/提供するため、返される距離が正しいルート/ラインであることを確認する必要があります。これはおそらく実行可能ですが、より多くのロジックが必要になります。

編集:を使用alternatives=true(またはprovideRouteAlternatives: trueJavaScript API を使用) すると、最大 3 つのルートのみが返されます。これには、ここ SF では、探しているルートが含まれていないことがよくあります (他の交通機関、同じルート上の複数の路線など)。したがって、これはそれほど優れたオプションではありません。

次のバス:

ルート構成の例:

http://webservices.nextbus.com/service/publicXMLFeed?command=routeConfig&a=sf-muni&r=1

各停留所の座標が示されていますが、それらの点を結ぶことは、通過したルートと同じではありません。曲がり角などをカットすることになるため、これを正確にする必要があります。実際のルートは に示され<path>/<point>ていますが、ストップとパスの座標の間に明確な相関関係は見られません。さらに、NextBus はドキュメント (p.10 の一番下) で、<path>セグメント間でポイントを接続してはならないと述べています。セグメントはマップ上に描画することのみを目的としており、重複する可能性があります。

GTFS:

GTFS データは、停止座標と「形状」座標 (NextBus パスなど) も分離します。残念ながら、NextBus と GTFS では同じ停留所の座標が若干異なります (四捨五入)。ただし、停留所 ID/タグは同じです。また、データ ファイルはメガバイト単位であり、これをモバイル アプリに使用する必要があります。すべてのデータをデータベースに入れてクエリを実行できると思いますが、それでもストップと形状を関連付ける方法を理解する必要があります。特に、shapes.txt ファイルの「shapes_distance_traveled」列は有望です。ただし、MUNI はオプションの「shapes_distance_traveled」フィールドを stop_times.txt から除外することにしました。

アドバイスをいただければ幸いです。これは、単純な値を取得するための壮大な作業のように思えます。たぶん、距離を合法的に使用するために地図を投げ込むだけです:)

4

2 に答える 2

1

Google マップを使用する代わりに、 OpenStreetMapの負担のないライセンスを調べます。OSM データを使用できるルーティング エンジンは複数あり ます。個人的には、PostGIS または SQLite でルーティングを使用しますが、スキルセットによっては別のものを選択することもできます。

于 2012-08-29T13:44:54.703 に答える
0

あなたは明らかに調査を行っています (+1)。あなたが言ったように、簡単な方法は Google に尋ねることです。価値がある場合は、Google Maps API を使用するためのビジネス ライセンスの購入を検討し、地図を表示する要件について交渉することをお勧めします。これが、Google API で考えられる唯一の合法的な方法です。別の方法として、米国国勢調査局から無料で入手できるTIGER データ セットのデータを使用して、独自のルーティング エンジンを構築することもできますが、これもおっしゃる通り、壮大な作業のように思えるかもしれません。:-)

于 2012-08-29T07:33:18.010 に答える