На данный момент я заполнил онлайн-форму регистрации MTA для получения ключа API разработчика. Затем в моем проекте Android я реализовал зависимость привязок gtfs в реальном времени от одного из репозиторий Google на GitHub,
compile group: 'com.google.transit', name: 'gtfs-realtime-bindings', version: '0.0.4'
Используя их класс Java, я попробовал следующий код, чтобы распечатать все данные gtfs по ссылке, предоставленной MTA,
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, время и 1001, я все еще не уверен в этом, а текстовые файлы из статического канала не могут объяснить их наилучшим образом.