GPS関連の話題を掲載していきます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
GT-730F/Lに蓄積されたログをツール(SkyTraq)で取り出し、コンバートをかけたデータは経度緯度ともに、Google Mapで扱いやすい形に変換されるが、ハイパーターミナルや、それに該当するもので、ロガーから吐き出されるデータをみるとNMEA形式データになっており、リアルタイムに経度、緯度を取得し、Google Mapに表示させようものなら、わけのわからない位置にマッピングされてしまう。
実は、NMEA形式から得られる、経度、緯度はDMM(度分分)形式でこれをGoogle Mapにでも利用できるようにするには、Degree形式に変換してやらなければなりません。従って、以下にその方法を記載いたします。
NMEA形式データから得られる経度緯度成分のみ抽出すると、東京駅ならば以下のようになります。
3540.8581,N,13945.9603,E
正直最初みたときなにやらわかりませんでした、区切りも中途半端だし、一見、DMMでなくDMS(度分秒)表記にも見えました。
ちなみに、Nは北緯、Eは東経を表しています。ここも変換では重要になります。
こいつをDegree形式に変換します。
変換するには、度 + 分/60 + 分/60をしてやればいいだけです。よって、
35 + 40/60 + 0.8581/60,N,139 + 45/60 + 0.9603/60,E
この計算をすると、
35.680969,N,139.766006,E
のような感じになります。
さて最終仕上げです、Degreeの場合は北緯か南緯か、東経か西経かは一般的に、頭にマイナスをつけるかそうでないかで表します。マイナスになるのは、南緯と西経のみですので今回はどちらもマイナスをつけません。
よって、
35.680969,139.766006
が最終的な解になります。
尚、今後、GPSの世界を歩むためには、緯度、経度は非常に基本となるところですので、以下のように整理して覚えておくといいかと思います。
緯度と経度の組み合わせは当然といえば当然ですが、上記のパターンしかなく、緯度は0° - 90°、経度は0° - 180°の範囲であることがポイントです。
何でもそうですが整理しているとわかりやすいですね。
実は、NMEA形式から得られる、経度、緯度はDMM(度分分)形式でこれをGoogle Mapにでも利用できるようにするには、Degree形式に変換してやらなければなりません。従って、以下にその方法を記載いたします。
NMEA形式データから得られる経度緯度成分のみ抽出すると、東京駅ならば以下のようになります。
3540.8581,N,13945.9603,E
正直最初みたときなにやらわかりませんでした、区切りも中途半端だし、一見、DMMでなくDMS(度分秒)表記にも見えました。
ちなみに、Nは北緯、Eは東経を表しています。ここも変換では重要になります。
こいつをDegree形式に変換します。
変換するには、度 + 分/60 + 分/60をしてやればいいだけです。よって、
35 + 40/60 + 0.8581/60,N,139 + 45/60 + 0.9603/60,E
この計算をすると、
35.680969,N,139.766006,E
のような感じになります。
さて最終仕上げです、Degreeの場合は北緯か南緯か、東経か西経かは一般的に、頭にマイナスをつけるかそうでないかで表します。マイナスになるのは、南緯と西経のみですので今回はどちらもマイナスをつけません。
よって、
35.680969,139.766006
が最終的な解になります。
尚、今後、GPSの世界を歩むためには、緯度、経度は非常に基本となるところですので、以下のように整理して覚えておくといいかと思います。
北緯 | N | 0°- 90° | 東経 |
E | 0°- 180° | ||
北緯 | N | 0°- 90° | 西経 | W | - | 0°- 180° | |
南緯 | S | - | 0°- 90° | 東経 | E | 0°- 180° | |
南緯 | S | - | 0°- 90° | 西経 | W | - | 0°- 180° |
緯度と経度の組み合わせは当然といえば当然ですが、上記のパターンしかなく、緯度は0° - 90°、経度は0° - 180°の範囲であることがポイントです。
何でもそうですが整理しているとわかりやすいですね。
PR
前回、GPSロガーGT- 730F/Lで何かやってみる其の3で作った、VBに、事前に指定したエリアに入った時、アラートを出すロジックを組み込んでみることにした。まだ実験もやっていないのに、いいのかは別として・・・。
さて、ある特定の緯度、経度において、その周囲100m以内に入ったかどうかを知りたいとする。
この時、理屈的には、特定の緯度、経度の定点と現在、自分自身がいる場所の経度、緯度の定点を結ぶ直線の距離が、100m以内であればいいわけである。ここで、定点間距離を斜辺とみなし、おなじみの三平方の定理が使えそうである。ここで、大雑把であるが地球の一周は40,000kmとすると、まず緯度だけみれば、360度あるから、1mあたりの緯度は360 ÷ 40000000 = 0.000009度となります。
従い、経度が同一な2定点のmを求めるならば、|緯度2 - 緯度1| ÷ 0.000009をしてやればいいことになります。
また、経度も同じ概念となります。
ここで、特定ポイントの経度、緯度を(x1,y1)、自分自身の位置を(x2,y2)とすれば、この2点間のmは
と表すことができ、これが100m以内であればいいわけです。
注意せねばならないのは、緯度は赤道を 0度とし、南北それぞれ 90度に分けられており、かつ経度は本初子午線を 0度とし、東西それぞれ 180度に分けられているため、ちょうどこの分けられているあたりに重なると厄介なのですが、日本は幸い重なっていないのでこの計算でもどうにかいけます。
しかしながら、これは、大雑把な方法ですのでもっと範囲を狭めるならば他の方法をとる必要はあると思われます。
また、車など、早い乗りものであれば、エリアにはいっても、GPSの測位サイクルが長ければ、測位前にエリアから出てしまうことも考えられますのでなんともいえないところではあります。
いずれにしても、本概念をVBに組み込み実験してみることにします。
さて、ある特定の緯度、経度において、その周囲100m以内に入ったかどうかを知りたいとする。
この時、理屈的には、特定の緯度、経度の定点と現在、自分自身がいる場所の経度、緯度の定点を結ぶ直線の距離が、100m以内であればいいわけである。ここで、定点間距離を斜辺とみなし、おなじみの三平方の定理が使えそうである。ここで、大雑把であるが地球の一周は40,000kmとすると、まず緯度だけみれば、360度あるから、1mあたりの緯度は360 ÷ 40000000 = 0.000009度となります。
従い、経度が同一な2定点のmを求めるならば、|緯度2 - 緯度1| ÷ 0.000009をしてやればいいことになります。
また、経度も同じ概念となります。
ここで、特定ポイントの経度、緯度を(x1,y1)、自分自身の位置を(x2,y2)とすれば、この2点間のmは
と表すことができ、これが100m以内であればいいわけです。
注意せねばならないのは、緯度は赤道を 0度とし、南北それぞれ 90度に分けられており、かつ経度は本初子午線を 0度とし、東西それぞれ 180度に分けられているため、ちょうどこの分けられているあたりに重なると厄介なのですが、日本は幸い重なっていないのでこの計算でもどうにかいけます。
しかしながら、これは、大雑把な方法ですのでもっと範囲を狭めるならば他の方法をとる必要はあると思われます。
また、車など、早い乗りものであれば、エリアにはいっても、GPSの測位サイクルが長ければ、測位前にエリアから出てしまうことも考えられますのでなんともいえないところではあります。
いずれにしても、本概念をVBに組み込み実験してみることにします。
いよいよクライマックスです。VBで、GPSロガーからデータを取得してHTTPでサーバーにアップロードするところまでできたので、あとはサーバーにアクセスした時、Google Map上に最新の位置データをプロットするだけです。
実は、これは、昔遊びで作ったやつがあったので、少し改造すれば簡単にできました。しかしながら、今でこそ簡単ですが、最初はやはり苦労しました。エンコードの問題でしょっぱなから躓いたりしてました。
完成した、Google Mapに最新の位置をプロットする画面は以下の通りです。
いたってシンプルですが、日付ごとにデータを呼び出し、その日付の内、最新データの位置をプロットします。Google Mapでは初期の頃はありませんでしたが、今では、位置から大まかな住所も割り出せるようになってましたのでその関数も組みこんでいます。
また、商用版では、いろいろ便利なAPIも用意されているようですので、私も、いろいろ地図ソフト見ましたが、ASPサービスを展開する上では結構使えると思います。
さてさて、これで、媒体はすべて完成したので、折を見て実験でもしてみます。
実は、これは、昔遊びで作ったやつがあったので、少し改造すれば簡単にできました。しかしながら、今でこそ簡単ですが、最初はやはり苦労しました。エンコードの問題でしょっぱなから躓いたりしてました。
完成した、Google Mapに最新の位置をプロットする画面は以下の通りです。
いたってシンプルですが、日付ごとにデータを呼び出し、その日付の内、最新データの位置をプロットします。Google Mapでは初期の頃はありませんでしたが、今では、位置から大まかな住所も割り出せるようになってましたのでその関数も組みこんでいます。
また、商用版では、いろいろ便利なAPIも用意されているようですので、私も、いろいろ地図ソフト見ましたが、ASPサービスを展開する上では結構使えると思います。
さてさて、これで、媒体はすべて完成したので、折を見て実験でもしてみます。
カレンダー
12 | 2025/01 | 02 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
カテゴリー
フリーエリア
最新コメント
最新記事
(01/29)
(01/06)
(11/23)
(11/21)
(10/10)
(10/10)
(09/12)
(08/04)
(08/03)
(07/31)
最新トラックバック
プロフィール
HN:
Slit
性別:
非公開
ブログ内検索
最古記事
(05/12)
(05/13)
(05/14)
(05/14)
(05/14)
(05/16)
(05/16)
(05/18)
(05/18)
(05/19)
アクセス解析