Pythonista3에서 iPhone의 GPS 데이터 얻기

iOS 앱인 Pythonista3.
iPhone, iPad에서도 프로그래밍 언어 Python을 사용할 수 있다는 것으로,
Python 역사 몇 달 동안 나는 흥미로운 본위로 다운로드했다.
사용해 보았던 것은, PC에는 없는 iPhone, iPad의 기능을 이용할 수 있는 것이 좋다!
타이틀의 GPS나 통지 기능이라든지, 앱을 만들고 있는 실감이 있네요-.

그런데 이번에는
"iPhone의 GPS 데이터를 얻고 CSV 파일로 저장"스크립트
소개합니다.

본래라면 스크립트 하나로 충분합니다만, 앱화를 생각하고 있으므로,
UI도 함께 설명합니다. 간단하게 UI를 이용할 수 있는 것도 Pythonista3의 매력이군요.

우선은 사용시의 설명을.


「GPS LOGGER」라고 쓰여진 텍스트 뷰가 있어, 그 아래에 2개의 버튼(NEW, ADD)이 ​​있습니다.
두 버튼 중 하나를 탭하면


이와 같이 GPS 데이터를 취득 시간과 함께 표시합니다.
데이터는 일단 개인정보가 되므로 지우고 있습니다. 나쁘지 않아.

다음 스크립트.
# -*- coding:utf-8 -*-
# location はGPSデータを取得する標準モジュールです
import ui,location,csv,datetime,time   

# NEWボタンをタップすると呼ばれるメソッド
def shinki(sender):
    label = sender.superview['label1'] 
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 現時刻を取得

    # 1.GPSデータを取得
    location.start_updates() # GPSデータ更新を開始
    gps=location.get_location() # GPSデータを取得する
    location.stop_updates()# GPSデータ更新を終了

    # 2.GPSデータを画面に表示
    gps_text = '' 
    for g in gps:
        gps_text=gps_text + str(g)+':'+str(gps[g])+'\n'
    label.text=now + '\n' + gps_text # UIのテキストビューにGPSデータを代入

    # 3-1.GPSデータを編集して、csvファイルに保存
    gps_dict = {'time':now} # GPSデータはディクショナリ型。
    gps_dict.update(gps) # 先に取得時間を入れ、次にGPSデータを追加

    # 3-2.csvファイル用にヘッダー(ディクショナリ型)を作成
    gps_rows=[] # 空のリストを作成
    gps_rows.append(gps_dict)
    parameters = ['time','latitude','longitude','altitude','timestamp','horizontal_accuracy','vertical_accuracy','speed','course']
    header = dict([(val,val) for val in parameters])

    # csvファイルを開いて、gps辞書を書き込む
    with open('gps_log.csv',mode='w', encoding='utf-8') as f:
        writer = csv.DictWriter(f,parameters, extrasaction='ignore')
        writer.writerows(gps_rows)

v = ui.load_view()
v.present('sheet')

위의 스크립트는 NEW 버튼의 메소드이지만 ADD 버튼도 99% 동일합니다.
다른 것은 메소드명을 tsuika()로 하고 있는 것과, csv의 모드를 mode='a'로 하고 있는 것의 2점입니다.

또한 각 버튼의 편집 화면에서 메소드를 설정할 필요가 있으므로 주의하십시오.



스크립트 "gps logger.py"를 실행하고 버튼을 누르면 시작 부분에있는 것처럼 GPS 데이터가 표시됩니다. 또한 스크립트와 동일한 디렉토리에 csv 파일이 저장되어 있어야 합니다.
그리고, 이것은 지금 검토중입니다만, location.start_updates() 다음에 time.sleep(1)
넣는 것이 좋을지도 모릅니다. GPS 데이터의 갱신 시간에 여유를 갖게 한다는 의미로.

길어졌지만 설명은 이상입니다.
다음은 csv 파일을 읽고 맵 데이터를 만드는 스크립트를 소개합니다.

참고한 URL:
h tp : // / m ~ 그 f와 ぁ레. 이 m/py 테니에 s타/도 cs/이오 s/ぉ카치온. HTML

좋은 웹페이지 즐겨찾기