GPS 데이터가 포함된 CSV 파일에서 맵 데이터(HTML) 만들기

8600 단어 iOS파이썬foliumGPS
본 기사에서는 위도·경도 등의 GPS 데이터를 지도상에 반영시킨 맵 데이터를 작성하는 스크립트를 소개합니다.

GPS 데이터가 포함된 CSV 파일



이전에 쓴 기사에서 GPS 데이터가 들어있는 CSV 파일을 만들었습니다.
마지막: htps : // 이 m / ょ ぇ ぇ / ms / 03cf83479 A 504344 또는 9
내용은 이런 느낌입니다.
gps log.csv
time,latitude,longitude,altitude,timestamp,horizontal_accuracy,vertical_accuracy,speed,course
2018/11/18 15:52,34.5,136.53,9.39266777,1542523726,65,10,-1,-1
2018/11/18 15:52,34.6,136.3,9.39266777,1542523717,65,10,-1,-1
2018/11/18 15:52,34.7,136,7.835945129,1542523942,10,4,0,-1

조금 읽기가 어렵지만 시간, 위도, 경도, 고도, ...와 데이터가 나란히 있습니다.
수치는 적당합니다.

CSV 파일을 읽어 데이터 정리



그러면 스크립트 설명으로 들어갑니다.
먼저 가져올 라이브러리에서.

gps_mapmaker.py

# 地図を作成するWebアプリ「Leaflet」を利用したライブラリ
import folium 

이번에는 "folium"이라는 라이브러리를 사용합니다. 미리 pip로 설치를 부탁드립니다.

그런 다음 CSV 파일을 엽니다.

# あらかじめ空のリストを2つ用意する
gps_list = []
gps_data = []
# 保存されているgps_log.csvを読み込みモードで開く
with open('gps_log.csv', mode = 'r', encoding = 'utf-8') as f:
# next()で2番目から(csvでは2行目から)データを扱う
    next(f)
# csvのrowそれぞれに対して、改行を省いてカンマで区切ってリストにする
# さらにリストのうち先頭3つ(取得時間、緯度、経度)を抽出する
    for line in f:
        gps_list = line.rstrip('¥n').split(',')
        gps_data.append(gps_list[:3])

이제 gps_data 목록에 필요한 데이터를 저장할 수 있습니다. 그러나이 목록은 문자열 유형 목록이므로 folium에서 처리 할 수 ​​있도록 손을 추가합니다.

읽은 문자열 유형 목록을 소수형 목록으로 변환


gps_data_flt = []
time_data = []
for d in gps_data: # gps_dataリストの各要素(リスト型)に対して処理を実行
    time_data.append(d[0]) # 取得時間のリストを別途用意する
    d.pop(0) # 取得時間の要素を削除する
    for i in d: # 要素(リスト型)の中の要素[文字列型]を順に[小数型]に変換
        gps_data_flt.append([float(i) for i in d])

gps_data 리스트내의 요소를 「취득 시간」리스트와 「위도, 경도」리스트로 나누어, 「위도, 경도」리스트의 요소를 float형으로 했습니다. 마도로코드한 코드인 생각이 듭니다만, 시행착오한 결과이므로 용서해 주세요.

folium 메서드를 사용하여 맵 데이터 만들기



편집한 데이터를 사용하여 맵 데이터를 만듭니다.
# 地図の基準地点として、最後のログの位置を設定
last_log = gps_data_flt[-1]
# 基準地点と初期の倍率を指定し、地図を作成する
map = folium.Map(location=last_log, zoom_start=30)
# 記録した各ログをマークし、popupを自身の計測時間とする
for f,t in zip(gps_data_flt,time_data):
    marker = folium.Marker(f, popup=t)
    map.add_child(marker)

# 置いたマーカー同士を線で結ぶ
gps_line = folium.PolyLine(locations=gps_data_flt)
map.add_child(gps_line)

# 地図をhtml形式でこのスクリプトと同じディレクトリに出力
map.save(outfile= "gps_map.html")

작성한 html 파일을 브라우저에서 살펴 보겠습니다.

지도에 마커가 그려져 있네요.
마커를 클릭하면 팝업(취득 시간)을 볼 수 있습니다.

설명은 이상입니다. 꽤 고전했지만 어떻게든 만들 수있었습니다.
리스트나 사전등의 기초적인 처리는 어쩐지 말해 소중하네요.

참고한 URL:



Folium 0.5.0 documentation
ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ 기주 b. 이오/후우 m/도 cs-v0.5.0/모즈 s. HTML

파이썬 folium 패키지로 지도를 그려보세요
htps : // m / k ↑ t0713 / ms / 85668d 또는 14462c182d

"Python + folium에서 Strava의 "전체"기록을지도로 시각화 🚲"
htps : // 히보마. 하테나아 ry. jp/엔트리/2017/09/13/094056

보충: Pythonista3에서 할 경우



Pythonista3의 경우 Stash를 사용하여 설치해야합니다. 구체적인 방법은 아래를 참조하십시오.
"아직 Pythonista3 사용하지 않았어? - 기본 조작 · StaSh 설치 편"
htps : // 이 m/n_오시미/있어 ms/4아 647f2c8아 3c209fd87b

Stash에서 folium을 설치한 후 branca라는 라이브러리도 함께 설치하십시오. folium 자신이 brance를 사용하는 것 같습니다.

또한 folium을 사용하려면 numpy도 필요하지만 Pythonista3에는 numpy가 기본적으로 설치되어 있습니다. 나는 그것을 깨닫지 않고 설치하고 스크립트가 잘 작동하지 않아 상당히 고민했습니다. 일단 Pythonista3를 다시 다운로드하고 folium과 branca 만 설치하면 움직였습니다. 조심하세요.

좋은 웹페이지 즐겨찾기