よく使う(あくまで自分が、、)プログラムの小技を紹介します。
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
な感じで動きます。