futurebase’s diary

おもしろいもの、役に立つものを仕事にしたい系ベンチャー企業のブログです。

プログラムねた その一『緯度経度の表示変換メソッド』

 よく使う(あくまで自分が、、)プログラムの小技を紹介します。

Pythonでリモセン、GIS系のプログラムを書いている時によく使う
緯度経度の表示変換メソッドを紹介します。

緯度経度を60進か10進どっちを使うかです。。。関数で一発変換できれば便利ですよね。

参考:http://www.benricho.org/map_latlng_10-60conv/

Pythonソースコードは下記です。


#!/usr/local/bin/python
# -*- coding: utf-8 -*-
'''
緯度経度を60進法 <-----> 10進法に変換する

Created on 2015/04/14
@author: FB rymg
'''
import os, csv, re, sys
import math

class LatLongConv:
def cov60to10(self, dds):
'''
4隅の座標を60進法から10進法に変換する
'''
lat1 = float(dds[1])
lat2 = float(dds[2]) / 60.0
lat3 = float(dds[3]) / 60.0 / 60.0
lat1 = lat1 + lat2 + lat3

long1 = float(dds[4])
long2 = float(dds[5]) / 60.0
long3 = float(dds[6]) / 60.0 / 60.0
long1 = long1 + long2 + long3

print lat1, long1
return lat1, long1

def ddTodds(self, dd):
'''
緯度経度10進法を60進法に変換する
'''
dds = []
da = int(dd)
d1 = dd - float(da)
d2 = d1 * 60.0
db = int(d2)
d3 = d2 - float(db)
dc = int(d3 * 60.0+0.5)

dds.append(str(da))
dds.append(str(db))
dds.append(str(dc))

return dds

#-----
# 実行
#-----
if __name__ == '__main__':
cnv = LatLongConv()

argv = sys.argv # コマンドラインからの引数の取得
argc = len(argv) # 引数の数

print argv # 引数に緯度経度を60進数で指定

ay_latLong = cnv.cov60to10(argv)
print ay_latLong # 10進の緯度経度

#60進法に戻す
lat = cnv.ddTodds(ay_latLong[0])
long = cnv.ddTodds(ay_latLong[1])

print lat
print long


 

実行方法

上記をLatLongConv.pyに保存したとして

python LatLongConv.py 35 39 30.959 139 44 43.594

な感じで動きます。

 

最後まで読んでいただいて、ありがとうございました!

会社のブログには、他の分析記事も載せています。
興味がありましたら是非遊びにきてください。
http://futurebase.co.jp

 ブログランキング・にほんブログ村へ
にほんブログ村