トップページ -> プログラミング -> R システム -> 緯度、経度1秒あたりの長さ(メートル)
[サイトマップへ], [サイト内検索へ]

緯度、経度1秒あたりの長さ(メートル)

経度1秒あたりの長さ

# 緯度 lat の値から、経度1秒あたりの長さをメートル単位で求めるプログラム
# GRS80 地球楕円体
a = 6378137
e = 0.081819191042815791
#
pi = 3.141592
lat = 43 + (4/60)
lon_len = pi * a * cos( pi * lat/180 ) / sqrt( 1 - ( ( e * sin( pi * lat/180 ) )^2 ) ) / 648000 
print(lon_len)

緯度1秒あたりの長さ

# 緯度 lat の値から、緯度1秒あたりの長さをメートル単位で求めるプログラム
# GRS80 地球楕円体
a = 6378137
e = 0.081819191042815791
#
pi = 3.141592
lat = 43 + (4/60)
lat_len = pi * a * ( 1 - (e * e) ) / ( ((1 - ((e * sin( pi * lat/180 ))^2) )^(3/2)) * 648000 )
print(lat_len)

以下、書きかけ

lat = a * t * x cos(s) - a * t * y sin(s) + c
lon = b * t * x sin(s) + b * t * y cos(s) + d

t: 拡大縮小率, s: 回転量, a = 1/lat_len, b = 1/lon_len (上記のプログラムで求める)

x1, y1, lat1, lon1, x2, y2, lat2, lon2 が分かったとする。つまり、 次の式が成り立つ

lat1 = a * t * x1 cos(s) - a * t * y1 sin(s) + c
lon1 = b * t * x1 sin(s) + b * t * y1 cos(s) + d
lat2 = a * t * x2 cos(s) - a * t * y2 sin(s) + c
lon2 = b * t * x2 sin(s) + b * t * y2 cos(s) + d

残る変数は s, t, c, d である

まず c, d を消去

lat1 - lat2 = a * t * (x1 - x2) * cos(s) - a * t * (y1 - y2) * sin(s) 
lon1 - lon2 = b * t * (x1 - x2) * sin(s) + b * t * (y1 - y2) * cos(s) 
x <- c(1,2,3)
y <- c(2,3,4)
T = data.fram(x=x, y=y)
nls(y ~ (x + b), T, start = list(b=0), algorithm="port")
r <- nls(y ~ (a * x + b), T, start = list(a=1, b=0), algorithm="port")

本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.

問い合わせ先: 金子邦彦(かねこ くにひこ) [image]