8.25. distgps GPS距離

  • 書式1: distgps(緯度1,経度1,緯度2,経度2,[方位])

2地点の緯度経度座標からその直線距離(km単位)を求める。 緯度経度は10進表記で与える。 地球の球状を考慮した計算を行っている。 緯度経度の指定は、60進表記には対応しておらず10進表記に変換しておくことが必要である。 60進法で表記された度分秒をそれぞれ \(d,m,s\) とすると、 10進の座標は \(d+m/60+s/60/60\) で計算できる。 また方位については、北緯と東経はプラスで表記し、南緯と西経はマイナスで表記する。 例えば、大阪駅(北緯34.702398,東経135.495188),東京駅間(北緯35.681391,東経139.766103)の距離を求めるには 以下のとおり指定すればよい。 egin{verbatim} distgps(34.702398,135.495188,35.681391,139.766103) end{verbatim} またエベレスト(北緯32.655556,東経79.015833),からアコンカグア(南緯27.987778,西経86.944444)の距離は、以下のとおり指定すればよい。 egin{verbatim} distgps(32.655556,79.015833,-27.987778,-86.944444) end{verbatim}

利用例

importと入力データ(CSV)の準備

 1import nysol.mcmd as nm
 2
 3with open('dat1.csv','w') as f:
 4  f.write(
 5'''point1,point2,lat1,lon1,lat2,lon2
 6osaka,tenma,34.702398,135.495188,34.704923,135.512233
 7osaka,tokyo,34.702398,135.495188,35.681391,139.766103
 8osaka,kobe,34.702398,135.495188,34.679453,135.178221
 9osaka,Fuji,34.702398,135.495188,35.360556,138.727500
10Evelest,Aconcagua,32.655556,79.015833,-27.987778,-86.944444
11Denali,Kilimanjaro,63.069444,-151.007222,-3.075833,37.353333
12''')

基本例

1nm.mcal(c='distgps(${lat1},${lon1},${lat2},${lon2})', a='rsl', i="dat1.csv", o="rsl1.csv").run()
2### rsl1.csv の内容
3# point1,point2,lat1,lon1,lat2,lon2,rsl
4# osaka,tenma,34.702398,135.495188,34.704923,135.512233,1.585046048
5# osaka,tokyo,34.702398,135.495188,35.681391,139.766103,405.774306
6# osaka,kobe,34.702398,135.495188,34.679453,135.178221,29.12042213
7# osaka,Fuji,34.702398,135.495188,35.360556,138.727500,304.7527532
8# Evelest,Aconcagua,32.655556,79.015833,-27.987778,-86.944444,16956.12242
9# Denali,Kilimanjaro,63.069444,-151.007222,-3.075833,37.353333,11362.37758