Webサービスプロジェクト ~ 時間の話!
2019年8月22日
時間の話!
今日は時間の話です!GPSのデータを読み込むとデータの中に時間の情報が入っている事が分かります。
実はWebサービスを作る場合、この時間の取り扱いは結構重要です。
Webサイトは世界中からアクセスが出来ますが、
時間や日付を表示する時はどうしたらいいでしょうかという話です。
GPSのデータの時間は?
GPSのデータは各レコードに時間が付加されています。
この時間はTCX形式やGPX形式の場合は、UTC(Coordinated Universal Time,協定世界時)という時刻で書かれています。日本時間からは9時間遅れています。
いろいろなやり方がありますが、データベースなどでデータが挿入された時間なども
各国の時刻を使うとデータの挿入された時刻の整合性などの問題が起きるために
殆どはこのUTCに準ずる時刻を利用するのが一般的です。
コンピュータでの時刻の管理によく使われるのが「UNIX時間」で、
1970年1月1日午前0時0分0秒からの経過秒数で表した物です。
厳密には、閏秒などが挿入されているので、厳密な経過時間ではありませんが
殆どこの経過時間と同じになっています。
今回の実装では
GPSファイルの中の文字列から、JavascriptのDateオブジェクトを使って、
UNIX時間に変換して処理しています。
UNIX時間をタイムスタンプとして保持して表示する際は
同じようにDateオブジェクトを使って使用している
コンピュータの時刻設定で表示するようにしています。
var date = new Date(Date.UTC(year,month-1,day,hour,min,sec));
var timestamp = Math.floor(date / 1000);
var timestamp = Math.floor(date / 1000);
こんな感じです。
このタイムスタンプをDateオブジェクトに戻すには
Dateオブジェクトから、日付情報や時刻情報を簡単に得る事ができます。
そうすると、どの国の人が利用しても基本的にはコンピュータの設定時刻で表示できます
こうした扱いは特に、Webサービスで予約システムを構築したりする場合は重要です。
色々な時刻が混在した状況だと、実際に予約されている時間がどの時刻帯の物なのか
わからなくなってしまうので、国をまたがった利用者がいる場合は大きな問題になります
このタイムスタンプをDateオブジェクトに戻すには
var date = new Date(record['timestamp'] * 1000);
とすれば、Dateオブジェクトに戻せます。Dateオブジェクトから、日付情報や時刻情報を簡単に得る事ができます。
そうすると、どの国の人が利用しても基本的にはコンピュータの設定時刻で表示できます
こうした扱いは特に、Webサービスで予約システムを構築したりする場合は重要です。
色々な時刻が混在した状況だと、実際に予約されている時間がどの時刻帯の物なのか
わからなくなってしまうので、国をまたがった利用者がいる場合は大きな問題になります
GPSデータでの利用は?
実際に記録された日付と時刻を知るのと同時に、
移動速度を計算したりするのに使います。
位置情報と、経過時間が分かれば移動速度が簡単に計算できるという事になります。
こうした情報を利用して、GPSのデーターをランニングなどの詳細のデータの解析に
利用する事が出来ます。
登山やハイキングでも!
今回、このGPSデータを解析する目的は、こうした位置情報と時刻、
そして心拍数と標高を合わせてデータを解析する事で、登山やハイキングのペースが
適切かどうかを判断しようという考えです。
ランニング向けのサービスはいろいろ沢山ありますが、
登山やハイキングの物は位置情報と大まかなペースのみで
余り心拍数を詳しく扱ったサービスは多くありません。
これを過去の登山経験を生かして、上手く解析して他の人の登山やハイキングに
役立てて頂くというのが今回のサービスの目的になります。
今回の解析ではこのUNIX時間のタイムスタンプを利用して
- 実際の記録された日付や時刻
- スタートからの経過時間
- レコード間の経過時間
を計算して、データの解析に利用します!
いかがですか?
時刻の扱いはWebサービスでは結構重要な項目である事がお判りいただけたでしょうか?
コメント
コメントを投稿