Java 如何理解MTA';s实时gtfs数据源

Java 如何理解MTA';s实时gtfs数据源,java,android,gtfs,mta,Java,Android,Gtfs,Mta,到目前为止,我已经填写了开发人员的API密钥。然后在我的android项目中,我从一个 使用他们的Java类,我尝试了以下代码来打印MTA提供的链接中的所有gtfs数据 try { String urlString = "http://datamine.mta.info/mta_esi.php?key=insertmykeyhere"; URL url = new URL(urlString.toString()); GtfsRealtime.FeedMessage fe

到目前为止,我已经填写了开发人员的API密钥。然后在我的android项目中,我从一个

使用他们的Java类,我尝试了以下代码来打印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();
}
然而,我现在很难解释打印出来的数据。我知道有静态数据源,我用它来解释一些数据。这是一份打印出来的旅行更新

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\u id、start\u date和stop\u id。但trip\u id、time和1001等部分我仍然不确定,静态提要中的文本文件并不能很好地解释它们。

MTA Subway GTFS-RT提要与大多数其他提要略有不同

通常,GTFS-RT通过跳闸id/停车id/等直接返回静态GTFS。由于在纽约通常存在偏离正常服务的情况(“通过5号线的2列列车”),RT馈送保留创建静态馈送中不存在的新跳闸的选项

要回答您当前的问题,您需要添加以下内容。这将解决空:字段的问题

要执行此操作,请编译proto文件,或者只导入库,库中预编译了扩展名:

    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"
  }
}

使用onebusaway api的代码的结果是什么?我对这个库不太熟悉。onebusaway库只是用所需扩展编译的protobuf。请参见trip_描述符现在已填充。有一个正在运行的Maven项目要试用。您好,我已经有一段时间没有看到这个答案了,所以我刚刚注意到了编辑。我对Maven有点陌生,那么如何安装github repo呢?我会下载repo,然后将其上传到像Eclipse这样的IDE中吗?如果您安装了Eclipse和Maven插件,只需file->import>Maven即可
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"
  }
}