前回の「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秒毎に位置情報が追記されていきます。