
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ANo1です。
反応がないのでわからないのですが、回転楕円体として扱う場合について少し調べてみました。
とは言ってもググってみただけですが・・・
誤解していたのは、緯度は地表に対する法線角度なので地球の中心との角度ではない(中心からの角度と思っていました)とのこと。
もちろん中心からの角度に換算する方法もあるようですが・・・
https://ja.wikipedia.org/wiki/%E7%B7%AF%E5%BA%A6 …
地表での距離計算の方法なども調べれば式があるようですね。
https://ja.wikipedia.org/wiki/%E5%AD%90%E5%8D%88 …
ただし複雑すぎるので私には無理。(汗)
それなら、私にも扱える方法として、地球を真球として計算したらどうなるかを考えてみました。
ANo1で三平方の定理での計算を考えましたが、これだと極地周辺での誤差が大きくなってしまうので、経緯度から直接に立体座標へ変換して、2点間の直線距離を求める方法のほうが誤差が出にくく良さそうに思われます。
この距離をそのまま利用しても良いのですが、距離が長い場合は地表面(弧長)と求めた距離(弦長)の差を無視できない可能性があるので、弦長から弧長(=地表での距離)への換算はしておいた方が良さそうに思います。
経緯度からの座標変換は、真球を仮定した場合は簡単で、
x = r・cosψ・cosλ、y = r・cosψ・sinλ、z = r・sinψ
となるので、距離(弦長)も簡単に求めることができます。
これから半径rの円弧長に換算してあげればよいですね。
一方、ANo1にも紹介しましたgoogle mapの距離計算の説明を見てみると、『The default radius is Earth's radius of 6378137 meters.』との表記があるので、もしかするとこちらも真球として計算しているのかもしれません。
https://developers.google.com/maps/documentation …
ということで、上記の計算をoriginalDistance()、googleの計算をgoogleDistance()として、その差を比較してみました。
簡単なテスト方法として、緯度10度おきに、経線に沿って経度1度分の距離および緯度+1度、経度+1度のポイントまでの斜め(?)の距離を求め、それぞれの差分を求めてみました。(単位メートル)
var lat, d1, d2, p1, p2, p3;
for(lat = 0; lat<90; lat += 10){
p1 = new google.maps.LatLng( lat, 0 );
p2 = new google.maps.LatLng( lat, 1 );
p3 = new google.maps.LatLng( lat + 1, 1 );
d1 = originalDistance(p1, p2) - googleDistance(p1, p2);
d2 = originalDistance(p1, p3) - googleDistance(p1, p3);
console.log("[ 緯度 " + lat + "度 ]");
console.log(" (" + lat + ", 0)-(" + lat + ", 1) : " + d1);
console.log(" (" + lat + ", 0)-(" + (lat+1) + ", 1) : " + d2);
}
<結果>
[ 緯度 0度 ]
(0, 0)-(0, 1) : 0
(0, 0)-(1, 1) : 0
[ 緯度 10度 ]
(10, 0)-(10, 1) : 0
(10, 0)-(11, 1) : 0
[ 緯度 20度 ]
(20, 0)-(20, 1) : -1.4551915228366852e-11
(20, 0)-(21, 1) : -5.820766091346741e-11
[ 緯度 30度 ]
(30, 0)-(30, 1) : 0
(30, 0)-(31, 1) : -2.9103830456733704e-11
[ 緯度 40度 ]
(40, 0)-(40, 1) : 0
(40, 0)-(41, 1) : 4.656612873077393e-10
[ 緯度 50度 ]
(50, 0)-(50, 1) : -1.4551915228366852e-11
(50, 0)-(51, 1) : 6.402842700481415e-10
[ 緯度 60度 ]
(60, 0)-(60, 1) : 0
(60, 0)-(61, 1) : -8.731149137020111e-11
[ 緯度 70度 ]
(70, 0)-(70, 1) : -7.275957614183426e-12
(70, 0)-(71, 1) : -1.3096723705530167e-10
[ 緯度 80度 ]
(80, 0)-(80, 1) : -3.637978807091713e-12
(80, 0)-(81, 1) : -1.0186340659856796e-10
概ね差分が5E-10メートル以下となっていますので、近似計算の誤差から見れば無いくらいの差と考えられます。
これから、同じ考え方に基づいて計算しているものと推測しました。
(差分が出ているのは、計算手順などによる誤差ではないかと思います)
ということで、真球で近似する場合であれば、直接計算したとしても大した手間ではなさそうですね。
さて、一旦諦めた楕円体での計算ですが、再度調べてみると、立体座標への変換式などもいろいろ考えられているようでした。
(国土地理院のサイトにもありました)
http://vldb.gsi.go.jp/sokuchi/surveycalc/surveyc …
http://catalog.lib.kyushu-u.ac.jp/handle/2324/17 …
http://d.hatena.ne.jp/meronpan2007/20090506
私には読み解くのは無理っぽいですが、質問者様にその方面の素養があれば楕円体近似での計算にもトライなさってみるのもよろしいかと思います。
ついでですが、地理座標系も何種類かのものが用いられているようなので、場合によっては測地系間の換算が必要なケースがでてくるかも知れません。
https://ja.wikipedia.org/wiki/%E6%B8%AC%E5%9C%B0 …
No.1
- 回答日時:
こんにちは
javascriptということは、ブラウザベースと考えて良いのでしょうか?
Geolocationはよく知りませんけれど、APIのスペックを見てみると連続取得用のメソッドも用意されているようです。
https://www.w3.org/TR/geolocation-API/#api_descr …
以下は未検証ですが、方法として考えられるのは、
1)一定時間(setIntervalなど)毎にgetCurrentPosition()で位置情報を取得する
2)watchPosition()で位置情報を監視し、一定時間毎に記録する
などの方法により、一定時間ごとの位置座標を得ることが可能なはずです。
2点の座標(経度、緯度)が得られれば、地表面での距離計算を行えば良いので、経度差、緯度差から距離を求め三平方の定理で、2点間の距離とするなどでよろしいのではないでしょうか?
計算の際に、地球を真球で近似するか回転楕円体で近似するかで計算方法や誤差が違ってきます。
https://ja.wikipedia.org/wiki/%E5%9C%B0%E7%90%83 …
もしも、位置情報などをgoogle mapなどで表示なさっていらっしゃるのであれば、確か、map APIには地点情報から距離や面積を計算してくれるクラスがあったと記憶していますので、それを利用なさるのが一番簡単だと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
隣の枝がはみ出してきたら切ってもいい?最もやってはいけないことは?
「隣の木が越境してきて困るが、勝手に切ってはいけないと聞くし…」そう思っている方も多いだろう。実は、2023年4月1日に民法が改正され、この「越境枝」のルールが大きく変わった。 教えて!gooでも「境界から出て...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
変化させるセルが変化しない
-
EXCELなどで「返す」という表現
-
スレッド処理からダイアログを...
-
時間(ミリ秒を含む)の引き算
-
VB4でリサージュ図形の面積測定
-
matlabで計算終了
-
なぜオーバーフローになるので...
-
アドオン利率を実質年率に変換
-
C言語 大至急
-
y=(x^2 +3x+1)^4を微分の定義を...
-
a=2, b=1のとき”x=(a-b+3)%3”の...
-
ファイルの開き方
-
あるプログラムのコマンドライ...
-
正しい五十音順について
-
VBAにてメール作成した際、一部...
-
VBAで仕様書は書きますか?
-
Vba UserFormを前面に出す方法...
-
寿命
-
COBOLでBLOCK CONTAINS句につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAで関数をつくる
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
matlabで計算終了
-
排他的論理和 BCC(水平パリテ...
-
変化させるセルが変化しない
-
引き放し法による除算アルゴリ...
-
モジュラス103の計算とは何でし...
-
C言語についてです。 再帰を使...
-
スレッド処理からダイアログを...
-
階乗のマクロ
-
Perlで時間の計算
-
エクセルで特定のセルのみを任...
-
傾いた四角形内の範囲の条件式
-
モジュロ
-
VBA入力フォームで労働時間の計...
-
三菱シーケンサー works2 の日...
-
Java 電卓の連続計算
-
パソコン
おすすめ情報