pyicloudによる友達の位置情報の取得②-GPXファイル作成編

前回の「pyicloudによる友達の位置情報の取得①-権限取得編」ではpyicloudを使い、iphoneアプリ「探す」で友達の中で位置情報を共有しているユーザーの情報を取得する権限を得ることができました。

今回はこの権限を使用し、取得した緯度・経度情報をgpxファイルに記録します。

目標:下記のようなgpxファイルを作成します↓

このファイルができると簡単にGoogleMapなどに位置情報を共有しているユーザーの移動ルートを表示させることができます。
参考
たぬきの山ごはん http://sugerich.com/yamagohan/tools/gpx-googlemaps/

やること:前回書いたコードに書き足していきます。

gpxpyについての補足:今回新たにgpxpyというライブラリを使用しています。gpxpyはgpxファイルを解析•作成するためのpython用ライブラリです。

今回書き足す部分↓

#ファイル名 main.py
#位置情報を共有しているユーザーが複数人の時に、複数のgpxファイルが作成されるようfor文で回す
for location in api.friends.locations:
        name = gpxpy.gpx.GPXTrackPoint(location['id'])
# 表示の調整(ないとファイル名が長くなる)
        name = str(name)
        name2 = name[7:23]
#まずcsvファイルを作る
        with open('%s.csv' % name2, 'a') as f:
            writer = csv.writer(f)
            writer.writerow([location['location']['latitude'], location['location']['longitude']])
#gpxpyを使用
        gpx = gpxpy.gpx.GPX()
#GPX の track を作成、gpx.tracksに追加
        gpx_track = gpxpy.gpx.GPXTrack()
        gpx.tracks.append(gpx_track)
#GPXの track内で segment を作成,gpx_track.segmentsに追加 
        gpx_segment = gpxpy.gpx.GPXTrackSegment()
        gpx_track.segments.append(gpx_segment)
#作成したcsvファイルを開き、先に作成したtrackとsegmentを追記
        with open('%s.csv' % name2, "r") as f:
            reader = csv.reader(f)
            rows = [row for row in reader]
            for row in rows:
                  gpx_segment.points.append(gpxpy.gpx.GPXTrackPoint(float
(row[0]), float(row[1]), elevation=123))
#csvファイルからgpxファイルを作成
        f = open('%s.gpx' % name2, "w")
        f.write(gpx.to_xml())
        f.close()

if __name__ == "__main__":
    while True:
        time.sleep(interval)
        run()

こうして作成したmain.pyを実行すると下記のようにcsvファイル、gpxファイルが作成され、実行中60秒毎に位置情報が追記されていきます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です