8

GTFS プロトコル バッファ メッセージ (VehiclePosition.pb) と、対応するプロトコル フォーマット (gtfs-realtime.proto) があります。PHP だけでメッセージを読みたいと思います (それは可能ですか?)。

Google の python チュートリアルhttps://developers.google.com/protocol-buffers/docs/pythontutorialとエンコーディング ドキュメントhttps://developers.google.com/protocol-buffers/docs/encodinghttps://github. com/maxious/ACTBus-ui/tree/master/lib/Protobuf-PHP、しかし、何が起こっているのかを概念化するのに本当に苦労しています。gtfs-realtime.php が gtfs-realtime.proto で定義されたエンコーディングのコンパイル済み命令セットであることは理解していると思いますが (間違っている場合は訂正してください)、VehiclePosition.pb をデコードする方法がわかりません。また、gtfs-realtime.php (または python に相当するもの) の依存関係は何ですか? VehiclePosition.pb を読み取るだけの場合、自分でコンパイルする必要があるもの、または単純な php スクリプトではないものはありますか?

ありがとう。

4

4 に答える 4

2

edmonscommerce と Julian は正しい方向に進んでいます。

しかし、私は同じ道をたどりましたが、Protocol Buffers の PHP 実装は扱いにくいことがわかりました (特に NYCT の MTA フィードの場合)。


代替方法 (コマンドライン + JSON):

コマンド ライン ツールと JSON に慣れている場合は、GTFS リアルタイムを単純な JSON に変換するスタンドアロン ツールを作成しました: https://github.com/harrytruong/gtfs_realtime_json

ダウンロード(インストールなし)して実行するだけです:gtfs_realtime_json <feed_url>

JSON 出力の例を次に示します。

これを PHP で使用するにはgtfs_realtime_json、スクリプトと同じディレクトリに置き、次を実行します。

<?php 

$json = exec('./gtfs_realtime_json "http://developer.mbta.com/lib/GTRTFS/Alerts/VehiclePositions.pb"');
$feed = json_decode($json, TRUE);

var_dump($feed);
于 2015-02-25T07:48:10.263 に答える
1

公式ツールを使用できます: https://developers.google.com/transit/gtfs-realtime/code-samples#php

ごく最近リリースされました。私はそれを数日間使用しており、魅力のように機能します.

于 2015-02-23T21:33:27.220 に答える
0

このスニペットの行に沿って何かを想定します。

<?php
require_once 'DrSlump\Protobuf.php';

use DrSlump\Protobuf;

$data = file_get_contents('data.pb');
$person = new Tutorial\Person($data);
echo $person->getName();

マニュアルページから引用: http://drslump.github.io/Protobuf-PHP/protobuf-php.3.html

そのステップの前に、ここで説明されているように、CLI ツールを使用して PHP クラスを生成する必要があると思います: http://drslump.github.io/Protobuf-PHP/protoc-gen-php.1.html

したがって、次のようなものです:

protoc-gen-php gtfs-realtime.proto
于 2015-01-21T15:22:38.663 に答える
0

申し訳ありませんが、Harry Truong さん、実行ファイルを試してみましたが、常に NULL が返されます。私が間違っていることは何ですか?

編集:問題は、サーバーで実行する権限がないことです。実行可能ファイルをありがとう。

于 2015-04-13T08:03:57.430 に答える