2017-02-18 3 views
2

これまでのところ、Developer's API KeyのMTA online registration formに記入しました。その後、私のアンドロイドのプロジェクトで、私は彼らのJavaクラスを使用して、Google's github repositoriesの1からMTAのリアルタイムgtfsデータフィードの理解方法

compile group: 'com.google.transit', name: 'gtfs-realtime-bindings', version: '0.0.4' 

をGTFSリアルタイムバインディングdependecyを実現し、私は

、MTAによって与えられたリンクから、すべてのGTFSデータをプリントアウトするには、この次のコードを試してみました
try { 
    String urlString = "http://datamine.mta.info/mta_esi.php?key=insertmykeyhere"; 
    URL url = new URL(urlString.toString()); 
    GtfsRealtime.FeedMessage feed = GtfsRealtime.FeedMessage.parseFrom(url.openStream()); 
    for (GtfsRealtime.FeedEntity entity : feed.getEntityList()) { 
     if (entity.hasTripUpdate()) { 
      Log.d("stuff", entity.getTripUpdate().toString()); 
     } 
    } 

} catch (IOException e) { 
      e.printStackTrace(); 
} 

しかし、私は現在、印刷されたデータの解釈に問題があります。 http://web.mta.info/developers/developer-data-terms.htmlの静的データフィードがあることを理解していますが、これを使用して一部のデータを解釈しています。

stuff: trip { 
    trip_id: "036000_GS.N01R" 
    start_date: "20170218" 
    route_id: "GS" 
    1001: "\n\0200S 0600 GCS/TSS\020\001\030\001" 
}  
stop_time_update { 
    departure { 
     time: 1487415600 
    } 
    stop_id: "901N" 
    1001: "\n\0011\022\0011" 
} 
stop_time_update { 
    arrival { 
     time: 1487415690 
    } 
    stop_id: "902N" 
    1001: "\n\0011" 
} 

私はtrip_id、start_date、stop_idなどの一部を理解しています。しかし、trip_id、time、1001などの部分についてはまだ分かりませんが、静的フィードのテキストファイルはそれらを説明するのに最適な仕事をしません。

答えて

0

MTAの地下鉄GTFS-RTフィードは、他のほとんどのものとは少し異なります。

通常、GTFS-RTはtrip_id/stop_id /などで直接静的GTFS 'を参照します。 NYCには通常、通常のサービスからの逸脱(「2列車5線経由」)があるため、RTフィードは静止フィードには存在しない新しいトリップを作成するオプションを保持しています。

すぐに質問にお答えするには、realtime extensionsを追加する必要があります。それは空の1001:フィールドを解決するはずです。どちらか、そうプロトファイルをコンパイル、またはちょうど拡張で、プリコンパイルされていonebusaway-gtfs-realtime-apiライブラリをインポートするには

ExtensionRegistry registry = ExtensionRegistry.newInstance(); 
    registry.add(GtfsRealtimeNYCT.nyctFeedHeader); 
    registry.add(GtfsRealtimeNYCT.nyctStopTimeUpdate); 
    registry.add(GtfsRealtimeNYCT.nyctTripDescriptor); 

    GtfsRealtime.FeedMessage feed = GtfsRealtime.FeedMessage.parseFrom(url.openStream(), registry); 

これは、同様の結果得られます。

trip { 
    trip_id: "B20170217WKD_132800B..S" 
    start_date: "2017-02-17 22:08:00" 
    route_id: "B" 
    [transit_realtime.nyct_trip_descriptor] { 
    train_id: "1B 2208 145/BBC" 
    is_assigned: true 
    direction: SOUTH 
    } 
} 
stop_time_update { 
    arrival { 
    time: 1487390920 
    } 
    departure { 
    time: 1487390920 
    } 
    stop_id: "D39" 
    schedule_relationship: SCHEDULED 
    [transit_realtime.nyct_stop_time_update] { 
    scheduled_track: "A3" 
    actual_track: "A3" 
    } 
} 
stop_time_update { 
    arrival { 
    time: 1487391130 
    } 
    departure { 
    time: 1487391130 
    } 
    stop_id: "D40" 
    schedule_relationship: SCHEDULED 
    [transit_realtime.nyct_stop_time_update] { 
    scheduled_track: "A3" 
    actual_track: "A3" 
    } 
} 
+0

何をonebusaway APIを使用しているコードの結果ですか?私はあまりにもライブラリに精通していない。 –

+0

onebusawayライブラリは、必要な拡張子でコンパイルされたprotobufです。 trip_descriptorが埋め込まれているのを参照してください。 https://github.com/laidig/nyct-gtfs-rt-exampleには、実用的なMavenプロジェクトがあります。 –

+0

こんにちは、私はこの答えを見てからしばらくしていましたので、私はちょうど編集に気づきました。私はMavenにちょっと新しいので、どうすればgithubのレポをインストールできますか?レポをダウンロードしてEclipseのようなIDEでアップロードするだけですか? –

関連する問題