トランジット ルート、特にサンフランシスコ MUNI の移動距離を取得しようとしていますが、標準のNextBus、GTFS、およびGoogle Maps APIは普遍的なようです。これらの API はどれも快適に使用できますが、この問題の対処方法がわかりません。
簡単な方法 - Google マップに問い合わせます(これは Web サービスを使用しますが、javascript API もあります)。
この JSON には移動距離が含まれていますが、2 つの問題があります。
- 地図を表示していない限り、Google はこのデータの使用を許可していません。
- 複数のルーティングオプションを提供できる/提供するため、返される距離が正しいルート/ラインであることを確認する必要があります。これはおそらく実行可能ですが、より多くのロジックが必要になります。
編集:を使用alternatives=true
(またはprovideRouteAlternatives: true
JavaScript 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 から除外することにしました。
アドバイスをいただければ幸いです。これは、単純な値を取得するための壮大な作業のように思えます。たぶん、距離を合法的に使用するために地図を投げ込むだけです:)