2017-09-06 58 views
1

MTA地圖數據(以及其他數據)採用GTFS實時格式。爲了將protobuf轉換爲字符串表示,我必須通過一些使用gtfs-realtime.proto的Google protobuf工具來運行它。唯一的問題是,可以看出here的GTFS實時-綁定僅適用於適用於iOS的GTFS實時綁定

  • NET
  • 的Java
  • 的JavaScript/Node.js的
  • PHP
  • 的Python
  • 紅寶石
  • Golang

此外,

我們不爲C++提供生成的代碼,使用官方protoc編譯器對於(從herehere

這些都不是夫特或目的C.雖然有對於2016年的Swift/Objective C版本是開放的issue/request,我想知道爲了做到這一點,我現在可以做些什麼。到目前爲止,我看到的唯一可行的解​​決方案是讓服務器解析數據,然後從該服務器獲取解析的數據(JSON編碼?),而不是直接從MTA獲取。

Here是協議緩衝區的Google頁面。我不確定,但有什麼方法可以用來讀取GTFS實時數據。

這是最好的道路嗎?還有其他的可能嗎?

回答

2

如前所述託尼Laudig,讓您的應用程序直接與MTA通信是違反他們的條款和條件,你幾乎可以肯定將不得不同意,以獲得API密鑰的。

突破條款和條件通常是一個非常糟糕的主意。在這個API的情況下,似乎您的密鑰將被撤銷。

因此,我會不是建議使用圖書館在託尼的答案。取而代之的是,你提出什麼:

有一臺服務器解析數據,然後得到解析的數據從服務器,而不是直接從MTA(?JSON編碼[-sounds好])。

您列出的任何語言都可以完成這項工作,這只是您最熟悉的一個問題。

2

目標C中有一個official library用於解析Protobuf。您可以從GTFS-rt標準和MTA擴展名.proto文件中選擇compile classes

它看起來像您計劃的使用,其應用程序直接連接至MTA,不符合MTA terms and conditions

  1. 在開發應用程序,你會提供的數據MTA飼料 只能從非MTA服務器提供給其他人。因此,您將 將MTA數據饋送下載並存儲到您的應用的用戶 將訪問以獲取數據的非MTA服務器上。 MTA禁止 開發應用程序,這些應用程序將直接從MTA的服務器向其他人 提供數據。