直交座標と楕円体高から緯度経度とジオイド高を計算する
直交座標(X,Y)と楕円体高Hが与えられているとします。
まず、下の関数で直交座標(X,Y)から緯度経度(Lon,Lat)に変換します。
座標系は
http://tmizu23.hatenablog.com/entry/20091215/1260868350
https://www.gsi.go.jp/sokuchikijun/jpc.html
あたりを参考に。
def Convert(X,Y):
EPSG4612 = pyproj.Proj("+init=EPSG:4612") #GRS80楕円体(緯度経度)
EPSG2450 = pyproj.Proj("+init=EPSG:2450") #日本平面直角座標系8系
return pyproj.transform(EPSG2450, EPSG4612, X,Y)
さて、標高は楕円体高からジオイド高を引くことで得られるので、ジオイド高を求める必要があります。国土地理院のジオイド高計算用のAPIを使うこととします。
https://vldb.gsi.go.jp/sokuchi/surveycalc/geoid/calcgh/calcframe.html
https://vldb.gsi.go.jp/sokuchi/surveycalc/api_help.html
def Getgeoid(latitude,longtitude):
base_url='https://vldb.gsi.go.jp/sokuchi/surveycalc/geoid/calcgh/cgi/geoidcalc.pl'
outputType='json'
url=base_url + '?outputType=' + outputType + '&latitude=' + str(latitude) + '&longitude=' + str(longtitude)
for j in range(10):
try:
req = urllib.request.Request(url)
body = json.load(urllib.request.urlopen(req))
geoidHeight = float(body['OutputData']['geoidHeight'])
return geoidHeight
except :
print("再試行")
time.sleep(2)
pass
else:
break
else:
print("再試行全失敗")
return geoidHeight
if __name__ == '__main__':
N= #計算数
geoidHeight=np.zeros(N)
for i in range(リスト数):
geoidHeight[i] = Getgeoid(latitude[i],longtitude[i])
time.sleep(1)
time.sleepは地理院サーバーへの思いやり
Author And Source
この問題について(直交座標と楕円体高から緯度経度とジオイド高を計算する), 我々は、より多くの情報をここで見つけました https://qiita.com/Olivine-Ryo/items/7198ee768eb2b26492a4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .