図1は、本発明の一実施例の概略構成ブロック図を示す。本実施例は、スマートフォン上の位置記録アプリとして実装されている。
スマートフォン10は、コンピュータと同様にCPU12、ROM14、主記憶としてのRAM16、及び補助記憶としてのSSD(Solid State Drive)18を具備する。SSD18はインターフェース20を介してバス22に接続し、当該バス22にCPU12、ROM14及びRAM16も接続する。バス22は、データと制御信号をバス22に接続するデバイス間で転送する媒体として使用される。
ROM14には、種々の固定データ及びファームウエア等が記録されている。SSD18には、CPU12が実行する基本ソフトウエアであるOS(オペレーティングシステム)50と、CPU12が実行する応用ソフトウエアであるアプリが記録されている。スマートフォン10のSSD18には、応用ソフトウエアとして位置記録アプリ60および位置決定アプリ62が記録されている。なお、位置記録アプリ60と位置決定アプリ62の両方の機能を備えた一つのアプリが記録されていてもよい。位置記録アプリ60は、スマートフォン10の所在の緯度経度を時系列で記録するログファイルを生成する位置情報記録プログラムである。位置決定アプリ62は、位置記録アプリ60で生成されるログファイルを参照し、作成日時付きのファイルの、作成時の位置情報を決定するアプリである。作成日時付きのファイルは例えば、デジタルカメラによる撮影時刻を埋め込む又は付加された画像ファイルであり、作成時の位置情報は撮影時の位置情報に相当する。
バス22には例えば液晶ディスプレイ(LCD)からなる表示装置24と、表示装置24の画面上に接着されたタッチパネル26と、機械的スイッチ類からなる操作装置28が接続する。なお、表示装置24は、着脱可能であってもよい。操作装置28は、電源スイッチ、音量を変更するボリュームスイッチ、及び、画面スリープを指示するスリープボタン等を具備する。バス22に接続する音声入出力装置29は、音声入力のためのマイクと音声出力のためのスピーカからなり、主に通話に使われる。
ユーザが操作装置28の電源スイッチをオンにすると、スマートフォン10が起動し、CPU12は、SSDからOS50を読み出してRAM16に展開し、OS50を逐次取り込んで実行する。また、OSと、OS上にインストールされるアプリケーションに従って、スマートフォン10の各部を制御する。以下の説明では、CPU12がアプリケーション(またはアプリケーションの機能、あるいはOSやOSのサービス等)に従って所定の処理を実行することを、「アプリケーション(またはアプリケーションの機能、あるいはOSやOSのサービス等)は所定の処理を行う」のように表現する。なお、CPU12が装置全体を制御する代わりに、複数のハードウェアが処理を分担することでスマートフォン10の各部を制御してもよい。
電話機能自体は、既存の携帯電話と同じである。バス22には、携帯通信網34との通信を制御するネットワーク制御ユニット(NCU)30が接続し、NCU30に携帯通信アンテナ32が接続する。CPU12(OS50)は、表示装置24にテンキーを表示し、ユーザはタッチパネル26を使って相手電話番号を入力し、発呼をOS50に指示する。OS50は、この発呼指示に従い、バス22に介してNCU30を制御して相手端末に発呼させる。NCU30が出力する発呼信号は、携帯通信アンテナ32及び携帯通信網34を介して相手端末に到達する。相手端末の着呼操作により、スマートフォン10と相手端末との間での通話接続が確立し、通話が可能になる。
相手端末の接続状態において、相手端末からの音声は、NCU30から音声入出力装置29に転送されて音響出力される。また、スマートフォン10のユーザの音声は、音声入出力装置29により入力され、NCU30、携帯通信アンテナ32及び携帯通信網34を介して相手端末に伝送される。
バス22には他に、GPS受信装置36、無線LAN通信装置42及び現在の日時を計時するRTC(Real Time Clock)48が接続する。GPS受信装置36はその起動をCPU12により制御されている。GPS受信装置36は、起動時にはCPU12からの指示に従いGPSアンテナ38によりGPS衛星40からの電波信号を受信し、測位を実行し、緯度・経度(及び標高)の位置データを出力する。無線LAN通信装置42は、無線LANアンテナ44を介して無線LANアクセスポイントと所定のプロトコルで無線通信し、無線LANアクセスポイントはインターネット等に接続する。
RTC48は、図示しないクロックを計数することで、現在の日時を計時する。RTC48が協定世界時UTC(Universal Time, Coordinated)で時刻を計時する。必要に応じてCPU12が、RTC48のUTC出力をスマートフォン10の所在地のタイムゾーンに従いローカルタイムに変換する。日時情報サービス54は、日時情報をUTC、ローカルタイム、及びその両方の何れで日時情報を管理することができる。日時情報サービス54の時刻調整機能54aは、RTC48の出力を、携帯通信網34上のタイマの値に基づき調整する。例えば、携帯通信網34上のタイマがローカルタイムで、RTC48がUTCである場合、日時情報サービス54の時刻調整機能54aは、予め設定される又はGPSで判明するタイムゾーンに従い、ローカルタイムをUTCに変換し、RTC48の出力を変換したUTCを示すように調整する。
RTC48は無線LANで接続するインターネット上のNTPサーバと同期することで時刻調整されてもよいし、GPSによる測位で得られる日時情報で時刻調整されてもよい。
通信装置49は、スマートフォン10を外部装置(以下に説明する例ではデジタルカメラ)との間で相互にデータを送受信する。通信装置49は、例えばUSB規格に準拠する通信により外部装置とデータのやり取りを行う。
データ通信機能として、スマートフォン10は、携帯通信網34を介してインターネット等にアクセスできるだけでなく、無線接続する無線LANアクセスポイントを介してもインターネットにアクセスできる。すなわち、CPU12上で動作するアプリのうち、インターネットアクセスを必要とするアプリ(例えば、ブラウザアプリ及びメールアプリ等)は、携帯通信網34又は無線LANアクセスポイントを介してインターネットに接続できる。
OS50は、スマートフォン10に装備されるデバイスを制御する上述した一般的な機能を具備するだけでなく、アプリに対して種々のサービスを提供する。本実施例に特徴的な機能として、OS50は、位置情報サービス52と日時情報サービス54を具備する。
位置情報サービス52は、位置記録アプリ60等の位置情報を必要とするアプリからの問合せに応じてスマートフォン10の位置情報を提供する。換言すると、位置情報サービス52は、位置記録アプリ60にとって測位手段として機能する。本実施例では、位置情報サービス52は、位置情報要求に対して、スマートフォン10の位置情報を要求元に単純に返信する単一応答モードと、指定された距離の移動ごとに位置情報を要求元に返信する距離毎応答モードとを具備する。
昨今では、無線LANアクセスポイントのMACアドレスをその設置位置と対応付けて記憶し、位置情報を外部に提供する無線LAN位置サービスが存在する。また、携帯通信網34の基地局からの距離によるスマートフォン10の位置探索技術も知られている。位置情報サービス52は、GPSを利用可能な場合にはGPSによる測位を使用し、GPSを利用できない場合には、無線LANアクセスポイント46による測位を使用し、いずれも使用できない場合には、携帯基地局からの測位を使用する。
位置情報サービス52の位置決定機能52aは、GPS受信装置36から位置情報を読み出す、または無線LANアクセスポイント46の出力する無線信号のMACアドレスを上述の無線LAN位置サービスに問い合わせてそれらの無線LANアクセスポイントの位置情報を取得する、あるいは携帯通信網34の基地局からの距離を使って、スマートフォン10の位置を決定する。位置情報サービス52の移動距離演算機能52bは、位置決定機能52aで得られる位置情報を参照して移動距離を算出する手段であり、距離毎応答モードで動作する。
日時情報サービス54の日時調整機能54aは、計時手段としてのRTC48の示す日時を携帯通信網34上の基準タイマと比較し、一定以上の時間差(例えば、1分)を検知すると、RTC48を当該基準タイマに同期させる。これにより、RTC48は、その精度に応じて1日に1乃至数回の頻度で時刻調整される。この日時調整機能54aによるRTC48の計時する日時の調整は、位置情報サービス52とは独立かつ並行して実行される。日時情報サービス54の日時出力機能54bは、位置記録アプリ60等のアプリの問合せに応じて、現在の日時情報をRTC48の出力から取り込み、要求元のアプリに提供する。
図2を参照して、位置記録アプリ60によるログ生成動作を詳細に説明する。図2は位置記録アプリ60に従って動作するCPU12によるログファイル生成のフローチャートを示す。このフローチャートの各処理は、CPU12が位置記録アプリ60およびOS50の機能に従って動作することにより実現される。また、このフローチャートは位置記録アプリ60が起動することにより開始される。図2に示すフローでは位置情報サービス52の距離毎応答モードを利用する。位置記録アプリ60は特徴的な機能としてログ生成機能60a及びログ記録機能60bを具備する。ログ生成機能60aは、ログファイルをオープン/クローズする機能である。ログ記録機能60bは、ログファイルに位置情報と日時情報を対で記録する機能である。
位置記録アプリ60は起動すると、位置情報サービスに設定する移動距離D、時刻調整の有無を判定する閾値Δt及びその他の内部変数を初期化する(S1)。
次に、ログ生成機能60aが、ログファイルを記録媒体上、即ちSSD18上に新規オープンする(S2)。
位置記録アプリ60は、移動距離D(ここでは水平の移動距離)を指定した距離毎応答モードの位置情報要求をOS50の位置情報サービス52に供給する(S3)。この要求に従い、位置情報サービス52の位置決定機能52aはGPS受信装置36を起動し、GPS受信装置36から出力される位置情報の逐次的な取り込みを開始する。この逐次的な取り込みを開始した後、位置情報サービス52は、最初に取りこんだ位置情報を位置記録アプリ60に送信する。その後は、移動距離演算機能52bが、位置決定機能52aにより決定された位置情報と、前回位置記録アプリ60に送信した位置情報とを用いて移動距離を計算し、指定された移動距離Dの移動ごとに、その時点の位置情報(緯度(x),経度(y))を位置記録アプリ60に送信又は供給する。なお、本実施例では、二点間の距離を算出することで移動距離を求める場合を例に挙げて説明するが、移動距離の計算はこれに限られるものではない。例えば、位置情報が取り込まれる度に前回取りこまれた位置情報との差から移動距離を計算し、前回計算した結果に加算していくようにしてもよい。
先に説明したように、位置情報サービス52の位置決定機能52aは、GPS測位を利用できないときには無線LANによる測位を試行し、無線LANによる測位も利用できないときには携帯通信網34の基地局による測位を試行する。位置情報サービス52の位置決定機能52aは、GPS受信装置36からの情報、無線通信LAN通信装置42からの情報、NCU30からの情報を組み合わせて位置情報を決定してもよい。
位置記録アプリ60は、OS50の位置情報サービス52から位置情報を受信するのを待機する(S4)。位置情報サービス52から位置情報を受信すると、受信した緯度及び経度を変数(Px,Py)に代入する(S5)。続いて、位置記録アプリ60は、OS50の日時情報サービス54に現在の日時を問い合わせる(S6)。OS50の日時情報サービス54の日時出力機能54bは、RTC48の出力値である現在日時を読み込み、要求元である位置記録アプリ60に供給する。これにより、位置記録アプリ60は現在日時情報を受信する。
次に、位置記録アプリ60は、ログファイルに既に位置情報が書き込まれているか否かを判定する(S7)。換言すれば、ログファイルにこれから書き込む位置情報が、ログファイルに書きこまれる最初の位置情報となるか否かを判定する。
まず、位置記録アプリ60がログファイルに既に位置情報が書き込まれていないと判定した場合について述べる。この場合、位置記録アプリ60は日時情報サービス54から受信した現在日時情報を変数Tpに代入する(S8)。次いで、位置記録アプリ60のログ記録機能60bが、ステップS5の位置情報(Px,Py)とステップS8の日時情報Tpを対にしてログファイルに記録する(S9)。その後、処理はステップS16に進む。ステップS16以降の説明は後述する。
一方、位置記録アプリ60がログファイルに既に位置情報が書き込まれていると判定した場合について述べる。この場合、位置記録アプリ60は、日時情報サービス54から受信した現在日時情報を変数Tcに代入する(S10)。
位置記録アプリ60は、誤差Δtの下で今回取得の日時Tcと前回取得の日時Tpとを比較し、時間的に隣接する2つの測位時刻間に時間的な矛盾が想定できるかどうかで時刻調整の有無を判定する(S11)。具体的には、Tp+ΔtがTcより小さいかどうかを調べる。例えば、設定した移動距離Dに対して、測位の時間間隔が5分程度になると想定される場合に、Δtを3分と設定する。このとき、TcがTpから3分未満の経過を示す場合に、位置記録アプリ60はRTC48の時刻調整が行われたと判定する。Δtに0を設定している場合、Tc<TpであるとRTC48の時刻調整が実行されたことになる。このステップは、時刻調整検出手段として、また、時刻調整検出ステップとして作用する。
位置記録アプリ60が時刻調整があったと判定した場合、処理はステップS10に進む。具体的にはTp+ΔtがTcより小さい場合(S11でN)、位置記録アプリ60のログ生成機能60aは、オープンしているログファイルをクローズする(S12)。ログ生成機能60aは続いて、ステップS8で取得した日時をファイル名に組み入れた新規ログファイルをオープンする(S13)。そして、ログ記録機能60bが、ステップS6の位置情報(Px,Py)とステップS8の日時情報Tcを対にしてログファイルに追記する(S14)。
位置記録アプリ60が時刻調整がなかったと判定した場合、処理はステップS12に進む。具体的にはTp+ΔtがTc以上である場合(S11でY)、ログ記録機能60bが、ステップS5の位置情報(Px,Py)とステップS8の日時情報Tcを対にしてログファイルに追記する(S14)。
ステップS14の後、位置記録アプリ60は、日時Tcを直前日時の変数Tpに代入し(S15)、ユーザによる終了操作の有無を確認する(S16)。位置記録アプリ60が終了操作を受け付けていないと判断した場合(S16でN)、処理は、ステップS5に戻る。位置記録アプリ60が終了操作を受け付けたと判断した場合(S16でY)、位置記録アプリ60は、ログ生成機能60aによりオープン中のログファイルをクローズさせて(S17)、終了する。
図3は、図2に示すフローチャートにより最初に生成されるログファイルの例を示す。図4は、図3に示すログファイルに続いて、ステップS10で別ファイルとして生成されるログファイル例を示す。図3に示すログファイル及び図4に示すログファイルにおいて、ファイル名はログファイルの生成順に付される連番と、ログファイルに最初に記録された位置情報に対応する日時情報から生成されている。
図3に示すログファイルの最後のレコードの地点から所定距離Dだけ移動した地点での記録が、図4に示すログファイルに最初の地点として記録される。すなわち、図3及び図4に示す例では、地点(35.680999,139.766018)から地点(35.680999,139.766021)に移動するまでの間にRTC48の時刻調整が行われたことになる。図3に示すログファイルの最後のエントリ又はレコードの日時に対して、図4に示すログファイルの先頭のエントリ又はレコードの日時が相対的に過去であり、これがRTC48の時刻調整の発生を示している。
このように、本実施例では、RTC48の有意な時刻調整が行われる都度、新たなログファイルが生成される。これにより、ログデータの記録中にRTC48の時刻調整が行われたとしても、一つのログファイル内での時間の連続性が保たれる。
本実施例では位置情報として緯度と経度を記録するとしたが、標高値を加えても良いことは明らかである。この場合、移動距離Dに対しては、高度差を加味した距離とする。
このように位置記録アプリ60により生成されたログファイルを使って、デジタルカメラによる撮影時刻付きの撮影画像に位置情報を付加することができる。
図5は、撮影時刻付きの撮影画像に位置情報を付加して記録するデジタルカメラの概略構成ブロック図を示す。撮像装置510の制御装置524は、レリーズボタンを含む操作装置528の操作及び設定に従い各部を制御し、特に、レリーズボタンの操作に従い、撮像部514の撮像条件(露出及びシャッタ速度)を決定し、記録処理を始動する。
撮像部514は、撮影レンズ512による被写体の光学像を電気画像信号に変換する。カメラ信号処理装置516は、撮像部514からの画像信号に色バランス調整及びガンマ変換等の周知のカメラ信号処理を施す。符号化装置518は、制御装置524からの記録指示に従い、カメラ信号処理装置516から出力される画像信号を公知の符号化方式、例えば、JPEG方式で圧縮符号化し、圧縮画像データを書込み読み出し装置520に供給する。
制御装置524は、RTC526を参照して撮像時の時刻、すなわち撮影時刻を決定し、撮像条件と共に書込み読出し装置520に供給する。書込み読出し装置520は、符号化装置518からの圧縮画像データに制御装置524からの情報を撮影パラメータとして多重し、記録媒体522に記録する。撮影パラメータは例えば、圧縮画像データを収容する画像ファイルのヘッダに格納されるが、勿論、画像ファイルと1対1に対応する別のファイル又は場所に記録されることもある。記録媒体522は、例えば、フラッシュメモリ又はハードディスク等の不揮発性記録媒体からなる。
制御装置524は、以下に説明するように、通信装置530を介して外部装置、ここではスマートフォン10と協働して記録媒体522に記録される画像ファイルに撮影場所の位置座標(撮影位置座標)を埋め込む又は対応付けることができる。
図6は、スマートフォン10の位置決定アプリ62がデジタルカメラ510と協働して、デジタルカメラ510の記録媒体522に記録される撮影画像に撮影位置座標を埋め込む動作のシーケンス例を示す。
位置決定アプリ62(スマートフォン10)は、カメラ510に対しRTC526が示す日時情報を要求する(S601)。カメラ510の制御装置524は、この要求に応じて、現在の日時情報をRTC526の出力から読み取り、位置決定アプリ62に送信する(S611)。
位置決定アプリ62は、カメラ510から受信したカメラ510の日時情報と、RTC48の出力する日時情報とを比較し、両者の時差を計算する(S602)。この時差を取得することで、カメラ510の撮影画像の撮影時刻と、位置記録アプリ60で記録されるログファイルの測位時刻とを精度良く照合することが可能になる。位置決定アプリ62は、計算した時差で位置記録アプリ60のログ収集期間(開始時刻と終了時刻)を補正し、補正したログ収集期間をカメラ510に送信する(S603)。これにより、ログ収集期間中に撮影された画像のID(例えば、シリアル番号)と撮影時刻を要求する。このように要求する情報をログ収集期間により指定することで、余計な通信を行うことを防ぐことができる。この後、位置決定アプリ62は、カメラ510からの応答を待機する。
カメラ510の制御装置524は、位置決定アプリ62からの時差で補正されたログ収集期間に従い、このログ収集期間内に入る撮影画像を抽出する(S612)。ログ収集期間内に入っているかどうかは、記録媒体522に記録済みの撮影画像に付加されている撮影時刻を読み出し、その撮影時刻がログ収集期間内に入っているかどうかで確認できる。
カメラ510の制御装置524は、抽出した撮影画像から一つを選択し(S613)、選択した撮影画像のID(例えば、シリアル番号)と撮影時刻を、通信装置530を介してスマートフォン10に送信する(S614)。カメラ510は、同じIDに対する位置情報の受信を待機する。
位置決定アプリ62は、カメラ510から送信された撮影時刻をステップS602で計算した時差で補正し(S604)、補正後の撮影時刻と位置記録アプリ60が生成したログファイルに含まれる日時情報とを照合する(S605)。なお、複数のログファイルが記録されている場合、より新しく生成されたログファイルとの照合を優先する。例えば、図3と図4のログファイルが記録されている場合は、先に図4のログファイルと照合する。このようにするのは以下の理由による。例えば図4のログファイルが生成される場合のように、時刻の調整によって新たにログファイルが生成される場合がある。この新たに生成されたログファイルに記録される日時情報は、調整後の日時情報であるため、例えば図3のログファイルの日時情報に比べて、図4のログファイルの日時情報のほうが正確であると考えられる。そのため、より正確な日時情報を用いて生成されるログファイルを優先するという意図で、新たに生成されたログファイルを優先して照合する。位置決定アプリ62は、この照合の結果、時刻が対応する位置情報を撮影位置として決定し、撮影時刻と一緒に受信したIDと対にしてカメラ510に送信する。位置決定アプリ62は、カメラ510から終了通知を受信するか(S606)、次の画像のIDと撮影時刻を受信するのを待機する。
カメラ510の制御装置524は、位置決定アプリ62から位置情報とIDを受信すると、受信した位置情報を、受信したIDが示す撮影画像に付加する(S615)。受信したIDが先にステップS614で位置決定アプリ62に送信したIDと一致しない場合、どこかでエラーが生じていることになる。このとき、制御装置524は、その旨を図示しない表示装置に表示して図6に示す処理を中断する。
カメラ510の制御装置524は、抽出した撮影画像の中で未だ撮影位置を付加していない撮影画像があるかどうかを調べる(S616)。未処理の撮影画像がある場合(S616)、次の未処理の撮影画像を選択し(S617)、ステップS614、S615を繰り返す。抽出した撮影画像の全てを処理した場合(S166)、制御装置524は、位置決定アプリ62に終了通知を送信して(S618)、終了する。
位置決定アプリ62は、カメラ510から終了通知を受信するまで、次の画像のIDと撮影時刻の受信を待機する。カメラ510から終了通知を受信すると、位置決定アプリ62は、終了する。
図6に示すシーケンスでは、カメラ510の制御装置524とスマートフォン10の位置決定アプリ62が相互に作用している。例えば、最近のデジタルカメラの記録媒体は、カメラに装着した状態でUSBマスストレージとして外部装置にマウントできるようになっていることが多い。そこで、スマートフォン10がカメラ510の記録媒体522をUSBのマスストレージとしてマウントする場合には、図6に示すシーケンスをスマートフォン10上のアプリのみで実行できることになる。
図7は、スマートフォン10の位置決定アプリ62が、デジタルカメラ510の記録媒体522に記録される撮影画像に撮影位置座標を埋め込む動作の別のシーケンス例を示す。
位置決定アプリ62(スマートフォン10)は、カメラ510に対しRTC526が示す日時情報を要求する(S701)。カメラ510(の制御装置524)は、この要求に応じて、現在の日時情報をRTC526の出力から読み取り、位置決定アプリ62に送信する(S711)。
位置決定アプリ62は、カメラ510から受信したカメラ510の日時情報と、RTC48の出力する日時情報とを比較し、両者の時差を計算する(S702)。位置決定アプリ62は、計算した時差で位置記録アプリ60のログ収集期間(開始時刻と終了時刻)を補正し、補正したログ収集期間をカメラ510に送信する(S703)。この後、位置決定アプリ62は、カメラ510からの応答を待機する。
カメラ510の制御装置524は、位置決定アプリ62からの時差で補正されたログ収集期間に従い、このログ収集期間内に入る撮影画像を抽出する(S712)。制御装置524は、抽出した各撮影画像の撮影時刻を読み出し、各撮影画像のIDと対にしたリストを生成して位置決定アプリに送信する(S713)。デジタルカメラ510は、位置決定アプリ62からの応答を待機する。
位置決定アプリ62は、カメラ510からリストを受信すると、リストに記述される最初の撮影時刻を選択し(S704)、その撮影時刻を時差で補正する(S705)。位置決定アプリ62は、時差補正した撮影時刻を、位置記録アプリ60がログデータと照合する(S706)。位置決定アプリ62は、この照合の結果、時刻が対応する位置情報を撮影位置として決定し、撮影時刻と一緒に受信したIDと対にして記憶する。
位置決定アプリ62は、リストに次の未処理の撮影時刻があるかどうかを調べ(S707)、ある場合には(S707)、次の撮影時刻を選択してステップS705,S706を繰り返す。未処理の撮影時刻がリストに存在しない場合(S707)、位置決定アプリ62は、ステップS706で決定したIDと撮影位置のリストをカメラ510に送信して(S709)、終了する。
デジタルカメラ510の制御装置524は、位置決定アプリ62から送信されたリストに従い、当該リストのIDで特定される撮影画像に、当該IDと対になる位置情報を撮影位置として付加する(S714)。リストの全IDを処理したら、制御装置524は、図7に示す処理を終了する。
以上のように、本実施例では、日時情報の調整が行われたと判断されたタイミングでログデータを分けることで、一つのログデータ内での日時の連続性を保つ。これにより、例えば、移動経路のグラフ化や、撮影画像の時刻データの位置データへの変換を行う際の不自然な位置ズレ等を防ぐことができる。
図8は、本発明の第2実施例の概略構成ブロック図を示す。図1と同じ構成要素には同じ符号を付してある。具体的には、スマートフォン810は、OS850がOS50の機能とは異なり、この相違に応じて、位置記録アプリ860の機能が位置記録アプリ60とは異なる。
以下、変更部分及び本実施例に特徴的な部分を中心に説明する。OS850は、OS50と同様に、スマートフォン810に装備されるデバイスを制御する一般的な機能を具備するだけでなく、アプリに対して種々のサービスを提供する。
OS850の位置情報サービス852は、位置情報サービス52と同様の機能を具備する。位置決定機能852a、移動距離演算機能852bの機能は、それぞれ実施例1で説明した位置情報サービス52の位置決定機能52a、移動距離演算機能52bと同様である。
日時情報サービス854の日時調整機能854aは、RTC48の時刻調整が発生するとその旨の通知(RTC調整通知信号)を位置記録アプリ860に供給する。また、日時情報サービス854の日時出力機能854bは、日時出力機能54bと同様に、位置記録アプリ860からの問合せに応じて現在の日時情報をRTC48の出力から取り込み、位置記録アプリ860に提供する。
図9を参照して、位置記録アプリ860によるログ生成動作を詳細に説明する。図9は位置記録アプリ860によるログファイル生成のフローチャートを示す。図9に示すフローでは位置情報サービス852の距離毎応答モードを利用する。位置記録アプリ860は特徴的な機能としてログ生成機能860a、ログ記録機能860b及びRTC調整値記憶機能860cを具備する。ログ生成機能860aは、ログファイルをオープン/クローズする機能である。ログ記録機能860bは、ログファイルに位置情報と日時情報を対で記録する機能である。RTC調整値記憶機能860cは、RTC48の時刻調整値と時刻調整を行った日時を記憶する機能である。
位置記録アプリ860は起動すると、位置情報サービスに設定する距離D、その他の内部変数を初期化する(S901)。このとき、位置記録アプリ860は、OS850の日時情報サービス854に対し、RTC48の時刻調整が行われた場合にその調整値を通知するように要求する。この要求に応じて、日時情報サービス854の日時調整機能854aは、RTC48の時刻を調整したときに、調整後の日時と、その調整により変更した日時の量を示す日時調整値とを含む日時調整通知を位置記録アプリ860に通知する。
次に、位置記録アプリ860のログ生成機能860aが、ログファイルをSSD18上に新規オープンする(S902)。
位置記録アプリ860は、移動距離D(ここでは水平の移動距離)を指定した距離毎応答モードの位置情報要求をOS850の位置情報サービス852に供給する(S903)。この要求に従い、位置情報サービス852の位置決定機能52aはGPS受信装置36を起動し、GPS受信装置36から出力される位置情報の逐次的な取り込みを開始する。ステップS903の処理とそれに応答する位置情報サービス852の処理は、図2のステップS3で行われる処理とそれに応答する位置情報サービス52の処理と同様である。
位置記録アプリ860は、OS850の位置情報サービス852から位置情報を受信するのを待機する(S904)。位置情報サービス852から位置情報を受信すると、位置記録アプリ860は、受信した位置情報の2次元座標値を変数(Px,Py)に代入する(S905)。続いて、位置記録アプリ860は、日時情報サービス854に現在の日時を問い合わせる(S906)。日時情報サービス854の日時出力機能854bは、RTC48の出力値である現在日時を読み込み、要求元である位置記録アプリ860に供給する。これにより、位置記録アプリ860は現在日時情報を受信する。
位置記録アプリ860は、日時情報サービス854から取得した現在日時情報を変数Tcに代入する(S907)。
次に、位置記録アプリ860は、ログファイルに既に位置情報が書き込まれているか否かを判定する(S908)。換言すれば、ログファイルにこれから書き込む位置情報が、ログファイルに書きこまれる最初の位置情報となるか否かを判定する。
位置記録アプリ860がログファイルに既に位置情報が書き込まれていないと判定した場合、処理はステップS909を経ずに、ステップS913に進む。位置記録アプリ860のログ記録機能860bは、オープンしているログファイルにステップS905の位置情報(Px,Py)とステップS907の日時情報Tcを対にして追記する(S913)。
一方、位置記録アプリ860がログファイルに既に位置情報が書き込まれていると判定した場合、処理はステップS909に進む。
位置記録アプリ860は、今回の日時取得と前回の日時取得の間に日時調整通知を日時情報サービス854から受け取っていたかどうかを確認する(S909)。RTC調整値記憶機能860cが、日時情報サービス854からの日時調整通知(日時調整後の日時と日時調整値を含む)を記憶している。
日時調整通知を受け取っていた場合(S909でY)、位置記録アプリ860は、起動時からの日時調整値を累積し、ログ記録機能860bがログファイルに累積した日時調整値を記録する(S910)。位置記録アプリ860のログ生成機能860aが、オープンしているログファイルをクローズし(S911)、続いて、ステップS907で取得した日時をファイル名に組み入れた新規ログファイルをオープンする(S912)。そして、位置記録アプリ860のログ記録機能860bは、オープンされたログファイルに、ステップS905の位置情報(Px,Py)とステップS907の日時情報Tcを対にして追記する(S913)。
日時調整通知を受け取っていない場合(S909でN)、位置記録アプリ860のログ記録機能860bは、オープンしているログファイルにステップS905の位置情報(Px,Py)とステップS907の日時情報Tcを対にして追記する(S913)。
ステップS913の後、位置記録アプリ860は、ユーザによる終了操作の有無を確認する(S914)。終了操作が無い場合(S914でN)、位置記録アプリ860は、ステップS904に戻る。終了操作がなされている場合(S914でY)、位置記録アプリ860は、ログ生成機能860aによりオープンしているログファイルをクローズさせて(S915)、終了する。
図10は、図9に示すフローチャートにより最初に生成されるログファイルの例を示す。図11は、図10に示すログファイルに続いて、時刻調整により別ファイルとして生成されるログファイル例を示す。図10に示すログファイルは日時調整の発生によりクローズされるので、ステップS910により、日時調整値が最後に記録されている。図10に示す例では、RTC48が6分だけ後送りされている。この日時調整値は、ログファイルのヘッダ部に記録しても、ファイル名に埋め込む形で記録しても良い。なお、図10に示すログファイル及び図11に示すログファイルにおいて、ファイル名はログファイルの生成順に付される連番と、ログファイルに最初に記録された位置情報に対応する日時情報から生成されている。
図10に示すログファイルの最後のレコードの地点から所定距離Dだけ移動した地点での記録が、図11に示すログファイルに最初の地点として記録される。すなわち、図10及び図11に示す例では、地点(35.680999,139.766018)から地点(35.680999,139.766021)に移動するまでの間にRTC48の日時調整が行われたことになる。
図10に示すログファイルのように、日時調整値が記録されるログファイルでは、各ログデータの日時は、日時調整値により修正された後で時刻比較に利用される。この日時調整値による修正後では、図10に示すログファイルと図11に示すログファイルは、同一時間時上に並ぶデータファイルとなりうる。
例えば、図6及び図7に示すような時刻比較を行う場合、図10に示すログファイルの各時刻データは、同じログファイルに記録されている日時調整値で調整された上で、時差の調整と時刻の比較に供されることになる。
このように、本実施例では、RTC48の日時調整が行われる都度、新たなログファイルが生成され、ログファイルに日時調整値(複数の日時調整を経ている場合には累積値)を記録される。これにより、ログファイルの内容を参照したときに、日時調整を容易に修正して、計時的な移動軌跡や移動速度等を正確に描出できる。まだ、デジタルカメラで撮影しタイムスタンプが埋め込まれた画像に撮影位置情報を関連付ける場合でRTC48の日時調整がなされていても、より適切な位置情報を関連付けることが可能になる。
なお、位置情報として緯度と経度を記録するとしたが、標高値を加えても良いことは明らかである。この場合、移動距離Dに対しては、高度差を加味した距離とする。