如何理解MTA的实时gtfs数据源

时间:2017-02-18 06:09:00

标签: java android gtfs mta

到目前为止,我已为{+ 3}}填写了开发人员的API密钥。然后在我的android项目中,我从MTA online registration form之一实现了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();
}

但是,我现在无法解释打印出来的数据。我知道有来自Google's github repositories的静态数据源,我用它来解释一些数据。这是打印出来的旅行更新之一,

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之类的部分我仍然不确定它,静态源中的文本文件不能最好地解释它们。

1 个答案:

答案 0 :(得分:0)

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

通常,GTFS-RT直接指回静态GTFS'通过trip_id / stop_id /等。由于在纽约市通常存在偏离正常服务(" 2列车通过5线和#34;),RT馈送保留了创建静态馈送中不存在的新行程的选项。

要回答您的直接问题,您需要添加realtime extensions。这应该解决空的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"
  }
}