LoginSignup
13
15

More than 5 years have passed since last update.

Pythonista3でiPhoneのGPSデータを取得する

Last updated at Posted at 2018-11-21

iOSアプリであるPythonista3。
iPhone,iPadでもプログラミング言語Pythonを使えるということで、
Python歴数か月の私は興味本位でダウンロードしました。
使ってみて思ったのは、PCにはないiPhone,iPadの機能を利用できるのが良い!
タイトルのGPSや通知機能とか、アプリを作っている実感がありますねー。

さて今回は、
「iPhoneのGPSデータを取得し、csvファイルで保存する」スクリプトを
紹介します。

本来ならスクリプト一つで十分なのですが、アプリ化を考えていますので、
UIも一緒に説明します。簡単にUIを利用できるのもPythonista3の魅力ですね。

まずは使用時の説明を。
gps-logger_ui.png

「GPS LOGGER」と書かれたテキストビューがあり、その下に2つのボタン(NEW,ADD)があります。
どちらかのボタンをタップすると、
gps-logger_ui_playing.png.jpg

このように、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_ui_NEW button.jpg
gps-logger_ui_ADD button.jpg

スクリプト「gps logger.py」を実行し、ボタンを押すと、冒頭にある通りGPSデータが表示されます。また、スクリプトと同じディレクトリにcsvファイルが保存されているはずです。
あと、これは今検討中ですが、location.start_updates() のあとにtime.sleep(1)
を入れたほうがいいかもしれません。GPSデータの更新時間に余裕を持たせるという意味で。

長くなりましたが、説明は以上です。
次はcsvファイルを読み込んでマップデータを作成するスクリプトを紹介します。

参考にしたURL:
http://omz-software.com/pythonista/docs/ios/location.html

13
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
15