3

到目前为止,我已经填写了开发人员 API 密钥的MTA 在线注册表单然后在我的 android 项目中,我从Google 的 github 存储库之一实现了 gtfs 实时绑定依赖,

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

使用他们的 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();
}

但是,我现在无法解释打印出来的数据。我知道有来自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 之类的部分我仍然不确定,静态提要中的文本文件并不能很好地解释它们。

4

1 回答 1

1

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

通常,GTFS-RT 通过trip_id/stop_id/等直接引用静态GTFS'。由于在纽约市通常存在与正常服务的偏差(“2 火车通过 5 号线”),因此 RT 提要保留了创建静态提要中不存在的新行程的选项。

要回答您的直接问题,您需要添加实时扩展。那应该解决空的1001 : 字段。

为此,要么编译 proto 文件,要么只导入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"
  }
}
于 2017-02-18T13:36:29.073 回答