(2)二地点の径度、緯度情報から二点間の距離をメートル単位で算出する式を教えてください。
例題:池袋駅からサンシャイン60までの距離を各地点径度、緯度を基に求めよ
http://www.hatena.ne.jp/1090378478
人力検索はてな - ある住所(東京23区でOK)を入力すると、その場所の緯度・経度がわかるようなサイトはないでしょうか?ソフトウェアではありそうですが、できればWebサイトで。どうぞよろ..
インプットに住所、アウトプットに径度、緯度を実現するサイト
前出です。
http://www.hatena.ne.jp/1090387555
人力検索はてな - ある2地点においてそれぞれ緯度と経度が分かっている場合、その2地点の距離はどのように計算すれば出るでしょうか?例えば「北緯35.50.20.100東経139.40.10.200」と「北..
二地点の径度、緯度情報から二点間の距離をメートル単位で算出する式
前出です。
http://www.hatena.ne.jp/awindow?qid=1105008401
awindowさんのプロフィール - はてな
国土地理院のこのサイトから世界測地系による緯度経度が得られます。
経緯度計算についてはここに書いてあります。
ここには、経度緯度から距離を計算するVBのサンプルがあります。(少し精度が落ちますが)
にあるソースの
Option Explicit
の下に
Sub main()
Dim Kyori#, Houi#
GetKyoriHoui 354336, 1394251, 354332, 1394321, Kyori#, Houi#
MsgBox Str(Kyori#) + ” km”
End Sub
とメイン関数を実装し実行した結果、およそ0.78km という結果となりました。
WordかExcelをお持ちなら実際に動かしてみることができます。
電子地図帳Z[zi:]では距離や面積を計測することができます。このソフトで上記2地点の距離を計測した結果、760m という結果が得られました。
http://vldb.gsi.go.jp/sokuchi/surveycalc/bl2stf.html
測量計算(距離と方位角の計算)
計算結果
緯度経度の入力値 楕円体 GRS80
出発点 北緯 35°43′36.4910″
東経 139°42′51.5090″
到着点 北緯 35°43′32.0530″
東経 139°43′21.2660″
距離と方位角 測地線長 760.252(m)
方位角 出発点→到着点 100°21′44.86″
到着点→出発点 280°22′02.24″
760.252mってことですか。。。
住所から緯度経度の対応データは国土交通省国土計画局の街区レベル位置参照情報ダウンロードサービスから取得することができます。番地レベルで緯度経度を知ることができます。
http://www.hatena.ne.jp/1105008401#
(1)インプットに住所、アウトプットに径度、緯度を実現するサイト、またはプロクラム、ASPを紹介ください (2)二地点の径度、緯度情報から二点間の距離をメートル単位で算出.. - 人力検索はてな
2回目の回答ですみません。前回回答した座標指定が間違っていました。緯度経度指定できるように修正しました。
この結果、池袋駅からサンシャイン60までの直線距離は930mとなりました。以下VBAのソースです。
’ From FLand
’(C) Yobito Kayanuma 1996-2004 All rights reserved
’Created: April 12, 1996
Private Const mATN1P45 = 0.0174533 ’atn(1)/45
Private Const ER = 6378.14
Private Const PI = 3.14159265358979
’LHT座標値例
’北緯36度30分 → 365000
’南緯40度45分 → - 407500
’北緯136度30分 → 1365000
’南緯140度45分 → -1407500
Option Explicit
Sub main()
Dim Mypx&, Mypy&, Topx&, Topy&, Kyori#, Houi#
’池袋駅:nl=35.43.36.491/el=139.42.51.509
Mypx& = lht(35, 43, 36.491) ’位置1経度
Mypy& = lht(139, 42, 51.509) ’位置2緯度
’サンシャイン60:nl=35.43.32.053/el=139.43.21.266
Topx& = lht(35, 43, 32.053) ’位置2経度
Topy& = lht(139, 43, 21.266) ’位置2緯度
’距離と方位の計算
GetKyoriHoui Mypx&, Mypy&, Topx&, Topy&, Kyori#, Houi#
MsgBox Str(Kyori# * 1000) + ”m”
End Sub
’度分秒をLHT座標に変換する
Function lht(dig#, min#, sec#)
’dig 度
’min 分
’sec 秒
lht = (dig# + (min# / 60#) + (sec# / 3600#)) * 10000#
End Function
’2点の位置を指定して距離と方位を求める。
Public Sub GetKyoriHoui(ByVal Mypx&, ByVal Mypy&, ByVal Topx&, ByVal Topy&, Kyori#, Houi#)
’Mypx 位置1経度 Mypy 位置2緯度 LHT座標
’Topx 位置2経度 Topy 位置2緯度 LHT座標
’Kyori 計算結果距離 km Houi 計算結果方位 度
Dim xx#, ram#, sig#, ssig#
Dim mx#, my#, tx#, ty#
On Error GoTo getkher
’2点の位置を設定
mx = Mypx
tx = Topx
my = Mypy
ty = Topy
If mx = tx And my = ty Then ’010711
Kyori = 0
Houi = 0
Exit Sub
End If
’ラジアン変換
mx = mx * PI / 1800000
my = my * PI / 1800000
tx = tx * PI / 1800000
ty = ty * PI / 1800000
’距離を求める
ram = tx - mx
xx = Sin(my) * Sin(ty) + Cos(my) * Cos(ty) * Cos(ram)
If xx = -1# Then
sig = PI
ElseIf xx = 1# Then
sig = 0
Else
sig = Atn(-xx / Sqr(-xx * xx + 1)) + PI / 2
End If
Kyori = ER * sig
’方位を求める
ssig = Sin(sig)
If ssig = 0 Then
Houi = 0
Else
xx = Cos(ty) * Sin(ram) / ssig
If -xx * xx + 1 < 0 Then
If Sin(ram) > 0 Then
Houi = 90
Else
Houi = 270
End If
ElseIf Sqr(-xx * xx + 1) = 0 Then
If Sin(ram) > 0 Then
Houi = 90
Else
Houi = 270
End If
Else
Houi = Atn(xx / Sqr(-xx * xx + 1))
If 0 > Cos(my) * Sin(ty) - Sin(my) * Cos(ty) * Cos(ram) Then
Houi = PI - Houi
End If
Houi = Houi * 180 / PI
If Houi < 0 Then Houi = Houi + 360
End If
End If
Exit Sub
’参考
’Arcsin(x) = Atn(x / Sqr(-x * x + 1))
’Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
getkher:
’Errmes Err, ”s_Getkyorihoui”
Resume Next
End Sub
ありがとうございます
具体的にどなたか計算していただけますか?
池袋駅:nl=35.43.36.491/el=139.42.51.509
サンシャイン60:nl=35.43.32.053/el=139.43.21.266
YAHOO!MAPでは、
(1)住所などから径度・緯度を出した後、
(2)径度・緯度と縮尺を基に地図画像を出力
(3)地図画像をクリックしたx,y情報を基に径度・緯度を算出
(4)径度・緯度と縮尺を基に地図画像を出力
このようなことをしていると思われますが、
どういった計算をしているのか教えて下さい