我々の手元にあるスマホにはかなり高性能な衛星測位システムが備わっている.GPS, GLONASS, QZSS, Galileo など.それぞれ米国,ロシア,日本,EU が管理するものである.これらのシステムを利用したアプリにルートヒストリーというものがあり,移動経路をログとして記録できる.今回はこのアプリから取得したファイルをQGISでシェープファイルに変換し,SQL Serverにアップロードするまでを記事とした.
ルートヒストリーでデータを取る
まずはデータを取らなければならない.ルートヒストリーを起動して下図のように右下にある+のアイコンをタップする.
すると現在地が表示され,画面下部に「開始」「終了」ボタンが表示される.「開始」をタップして記録を開始する.記録を終えるには「終了」をタップする.
ログのエクスポート
ルートヒストリーを起動した初期状態ではログが降順に表示されている.任意のログをタップすると下図のように上部にアイコンがいくつか表示される.左から2番目のアイコンをタップする.
「アクション選択」画面に推移する.SNS共有,Export, Export(ルートヒストリー用)と選択肢が3つ表示される.ここでは Export をタップする.
「ファイル形式選択」画面に推移する.GPX, XML と選択肢が2つ表示される.ここでは GPX をタップする.
メールやGoogle Driveなど任意の方法でファイルを送る.ファイルサイズはさほど大きくならないため,メールに添付しても問題ない.
QGISでGPXファイルを開く
送付した GPX ファイルをQGISにドラッグアンドドロップすると,下図のように「追加するアイテムを選択」画面が開く.route_points, routes, track_points, tracks, waypoints と5つのアイテムがあるようだが,実際のデータは track_points と tracks にしかないようだ.「レイヤを追加」ボタンをクリックする.
シェープファイルにエクスポート
レイヤを右クリックして「エクスポート」「新規ファイルに地物を保存」する.track_points は Point, tracks は LineString のようである.
Shape2SQL で SQL Serverにアップロード
下図のようにアップロードする.しかし SQL Serer にアップロードできたのは Point の track_points だけであった.LineString の track がアップロードできなかった理由は不明である.
クエリで中身を覗く
SELECT geog.Lat AS Latitude , geog.Long AS Longitude , geog.M AS M , geog.Z AS Z , geog.STAsText() AS WKT FROM [CommutingDB].[dbo].[T_From3To1Points]
(1491 行処理されました)
M, Z は NULL が返った.ルートヒストリーの ele にはおそらく標高が格納されていると思われるが,可能なら Z 属性に格納しておいてほしい.また,time に格納されている時刻は世界標準時のようである.アプリで表示される時刻とは異なるため,混乱するかもしれない.
STPointFromText() メソッドでZ属性を追加する
テーブルに Location 列を追加してデータ型を geography とし,下記クエリを実行する.
UPDATE dbo.T_From3To1Points SET Location = geography::STPointFromText('POINT(' + CAST(geog.Long AS varchar(255)) + ' ' + CAST(geog.Lat AS varchar(255)) + ' ' + CAST(ele AS varchar(255)) + ')', 4326)
(1491 行処理されました)
結果を確認する.
SELECT Location.AsTextZM() AS WKT FROM dbo.T_From3To1Points
ルートヒストリーの track_points のメタデータ
ルートヒストリーの track_points のメタデータであるが,作者が仕様を公開していないので詳細は不明である.
track_fid |
track_seg_ |
track_se_1 |
ele |
time |
magvar |
geoidheigh |
name |
cmt |
desc |
src |
link1_href |
link1_text |
link1_type |
link2_href |
link2_text |
link2_type |
sym |
type |
fix |
sat |
hdop |
vdop |
pdop |
ageofdgpsd |
dgpsid |
まとめ
スマホのアプリ(ルートヒストリー)で GPX ファイルとしてログを取得し,QGIS でシェープファイルに変換して Shape2SQL で SQL Serverにアップロードした.LineString データが欲しかったのだが,SQL Server にアップロードできなかった.原因は不明である.Point データは SQL Server にアップロードできた.