このSDKにより、開発者はPHPプロジェクトでGTFSデータを簡単に使用できます。現時点では、静的ファイルのみがサポートされています。
このパッケージをComposerからインストールできます
composer require trafiklab/gtfs-php-sdk
GTFSファイルを開く
ローカルGTFS zipファイルをロードするか、httpからダウンロードできます
$ gtfsArchive = GtfsArchive:: createFromPath ( " gtfs.zip " );
$ gtfsArchive = GtfsArchive:: createFromUrl ( " http://example.com/gtfs.zip " );オプションで、GTFS zipファイルを最後の取得以降に変更した場合にのみ、GTFS zipファイルをダウンロードすることを選択できます。これは、毎回同じデータを常に書き換えることなく、データベース内に保存する必要があるGTFS検索を自動化しようとする場合に役立ちます。次のHTTPヘッダーが使用されます。
ほとんどの代理店はラスト修正ヘッダーを提供しますが、それが存在しない場合、ETAGは行くのに最適なルートです。何らかの理由でETAGも提供されていない場合、元のGTFSARCHIVE :: createFromUrl()メソッドを使用するかのように正常に継続します。
$ gtfsArchive = GtfsArchive:: createFromUrlIfModified (
" http://example.com/gtfs.zip " ,
" Wed, 10 Jun 2020 15:56:14 GMT " ,
" 99fa-5a7bce236c526 "
);最初からETAGまたはラスト修飾値を持っていない場合は、単にそれらを除外するだけで、メソッドはそれらを取得します。
if ( $ gtfsArchive = GtfsArchive:: createFromUrlIfModified ( " http://example.com/gtfs.zip " ) {
// Get Methods return null if GTFS Url does not contain the specified Header: ETag, Last-Modified.
$ lastModified = $ gtfsArchive -> getLastModified (); // Wed, 10 Jun 2020 15:56:14 GMT | null
$ eTag = $ gtfsArchive -> getETag (); // "99fa-5a7bce236c526" | null
// You can get the Last-Modified datetime PHP Object (Useful for storing in databases) by doing the following:
$ datetime = $ gtfsArchive ->getLastModifiedDateTime() // DateTime Object | null
// Or Convert it back to a String using the standard Last-Modified HTTP header format.
if ( $ datetime ) {
$ lastModified = GtfsArchive:: getLastModifiedFromDateTime ( $ datetime ); // Wed, 10 Jun 2020 15:56:14 GMT
}
}
ファイルは一時ディレクトリ(/TMP/GTFS/)に抽出され、GTFSARCHIVEオブジェクトが破壊されたときにクリーンアップされます。 $gtfsArchive->deleteUncompressedFiles()を呼び出して、非圧縮ファイルを手動で削除できます。
ファイルを読む
$ agencyTxt = $ gtfsArchive -> getAgencyFile (); // read agency.txt
$ calendarTxt = $ gtfsArchive -> getCalendarFile (); // read calendar.txt
$ routesTxt = $ gtfsArchive -> getRoutesFile (); // read routes.txt
$ stopTimesTxt = $ gtfsArchive -> getStopTimesFile (); // read stop_times.txt
. . .すべてのファイルは怠zyなロードされ、キャッシュされています。つまり、データはgetStopTimesFile()などのメソッドを呼び出した後にのみロードされます。初めてデータを読むのに時間がかかることができることに注意してください。大規模なstop_times.txtファイルを読むのに最大1分かかることがあります。
ファイルデータの読み取り
すべてのファイルクラスには、そのファイル内のすべてのデータを読み取る方法が含まれています。一部のクラスには、IDまたは外部キーによるフィルタリングなど、頻繁に使用されるクエリの追加のヘルパーメソッドが含まれています。
すべて(サポートされている)ファイルに1つのPHPクラスと、そのファイルの1つの行に含まれるデータの別のクラスがあります。各フィールドの定義は、各ゲッター関数のPHPDOCに含まれているため、コーディングに集中でき、仕様とコードの間のaltタビングには少なくなります。
$ stopTimesTxt = $ gtfsArchive -> getStopTimesFile (); // The file is represented by a StopTimesFile object
$ allStopTimes = $ stopTimesTxt -> getStopTimes (); // a method like this is always available
$ stopTimesForStopX = $ stopTimesTxt -> getStopTimesForStop ( $ stopId ); // this is a helper method for foreign keys
$ stopTime = $ allStopTimes [ 0 ]; // Get the first row
$ headsign = $ stopTime -> getStopHeadsign (); // One row of data is represented by a StopTime object プルリクエストを受け入れますが、追加または修正について議論するために、最初に問題を作成してください。新機能が追加されたい場合は、問題を作成して機能要求を作成することもできます。
質問にこだわっている場合は、問題のトラッカーを介してヘルプをお気軽にお問い合わせください。