Close

About

東京のコンテンツ制作会社が運営する
時事コラムサイト
株式会社オフィス・サウス

Prev Next
Image
Topics

開発担当のひとりごと「GPSの罠?」

2023.7.3

サウスでアプリケーション等の開発を担当しています。定番の開発もあれば、はじめての技術を使った開発もあり、毎回ドキドキしています。そんな中で、とびっきり(?)苦労したお話をご紹介します。

GPSを使うアプリケーション

開発を依頼されたのは、位置情報を使ったアプリケーションでした。カーナビのようなもので、設定したルート通りに車が走れるよう、ガイドするものです。

ルートはあらかじめ緯度経度でスタートとゴールを設定。車に搭載したGNSS(全地球航法衛星システム)で位置情報を受信、ルート通りに走れているかどうかを画面上に表示します。ファーストバージョンでは直線のみを取り扱えれば良く、比較的簡単なアプリ開発だと思っていました。

球体を平面にする難しさ

開発をはじめてみると、知らないことが多くあることを思い知らされました。球体である地球の位置情報を平面の画面に表示するためには特殊な計算が必要になります。

球体を平面に映し出す際には、どうしてもゆがみが生じるためです。これを最小限に抑えるために日本では、「平面直角座標系」が決められています。国土交通省の告示で定義されているもので、日本を13の地域に分割し、それぞれの基準点を設定しています。

国土地理医院「わかりやすい平面直角座標系」より

アプリケーションでは「平面直角系座標」を使うため、GNSSから送られてくる情報を都度変換します。
例えばオフィス・サウスの事務所の場所は、 「緯度:35°41′21.14″」「経度:139°42′42.63″」ですが、これを平面直角座標系に置換えると「X座標:-34471 m」「Y座標:-10995 m」になります。
テストで使うデータ生成の際も、毎回、国土地理院のサイトで「平面直角系座標」へ変換する必要がありました。

何度やっても向きが違う

「平面直角座標系」の計算式も搭載でき、見る限りでは問題なく動くアプリケーションができました。しかし、テストの段階になって不思議なエラーが出始めました。画面上のマップや、位置ズレの警告表示が左右逆転していたのです。

GNSSの搭載方向が間違っているのかもしれないと、あっちに向けたりこっちに向けたり、受け取っている位置情報のチェックをしたり。でも、どれも間違っていない。受け取った情報をプラスマイナスすればいいのではないかとも考えましたが、理由もわからないままで計算式を変えられません。

小さなヒントでも良いからほしい、ググりまくること数週間。ようやく原因にたどり付きました。

地理学、測量、航海術の標準では、Xが南北方向(縦方向)、Yが東西方向(横方向)になります。数学的なXYとは縦横が逆なので、混乱しないようにご注意ください。

単なる知識不足ですが、衝撃的でした。

ChatGPTに聞いてみる

ちなみに、今回のこのエラーについてChatGPTに聞いてみたところ、数回のやり取りでサクッとお答えが出てきました。

GPSの値が正確であるにもかかわらず、グラフに表示する際に上下左右が逆になる場合、おそらく以下の原因が考えられます。

座標系の不一致: GPSの座標系とグラフの座標系が一致していない可能性があります。GPSは一般的に経度と緯度の座標系を使用しますが、グラフは通常、直交座標系(x軸とy軸)を使用します。座標系の変換が正しく行われていない場合、上下左右が逆に表示されることがあります。


-GPSの座標系とグラフの座標系の違いを詳しく教えて

GPS座標系の経度と緯度の値をグラフに表示する場合、座標変換が必要になります。具体的には、経度をx座標に変換し、緯度をy座標に変換する必要があります。また、グラフの座標系の範囲と目盛り設定に合わせて、GPSの値を正しく配置する必要があります。

開発時にChatGPTを使えていたら開発期間が短くできたかも?人工知能は今後の開発には欠かせない、それ以上にメインの存在になっていくのかもしれません。人工知能に「オマエハイラナイ」と言われないように、精進しようと思っています。

INFO

株式会社オフィス・サウス
160-0022 東京都新宿区新宿1-17-1
ランド・デン4階
TEL:03-5366-8070
FAX:03-5366-8069