[GPS]Pythonでkmlファイルを作成する


概要

Pythonを使って、三次元地理空間情報であるkmlファイルを作成し、Google Earthで表示する

事前準備

simplekmlが必要なので、OSに合わせてsimplekmlのライブラリをインストールする

目的

緯度、経度、高度をまとめたcsvファイルからkmlファイルを作成することに。xmlベースなので、ElementTreeでも良かったんだが、調べてみたらkmlを作れるsimplekmlがあるので、simplekmlを使ってkmlファイルを作成する。

ソース

※csv読み込みの部分はサンプル用配列に置き換えました。

gpsdata_to_kml.py
#!/usr/bin/python2.7
#-*- coding: utf-8 -*-
import simplekml

# ポイント形式で表示
## [場所名, 経度, 緯度]
sample_points = [["東京駅", 139.766389, 35.681340],
                 ["有楽町駅", 139.763360, 35.675056],
                 ["新宿駅", 139.700432, 35.690938],
                 ["池袋駅", 139.711570, 35.730235],
                 ["秋葉原駅", 139.774091, 35.698704],
                 ["上野駅", 139.777195, 35.713714]]


kml = simplekml.Kml()
for point in sample_points:
    kml.newpoint(name=unicode(point[0], 'utf-8'), coords=[(point[1], point[2])])

kml.save('yamanote_line.kml')

# 高度を含めてLINESTRING形式で表示
## [物体名, 経度, 緯度, 高度, 色]
sample_linestrings = [["スカイツリー", 139.810657, 35.710089, 634.000000, simplekml.Color.grey],
                      ["○ンダム", 139.810557, 35.710089, 18.000000 , simplekml.Color.white],
                      ["○ルトラマン", 139.810657, 35.709989, 40.000000, simplekml.Color.red],
                      ["○イターン3", 139.810757, 35.710089, 120.000000, simplekml.Color.yellow],
                      ["○ンバスター", 139.810657, 35.710189, 200.000000, simplekml.Color.black]]

kml = simplekml.Kml()

for linestring in sample_linestrings:
    ls = kml.newlinestring(name=unicode(linestring[0], 'utf-8'))
    ls.style.linestyle.color = linestring[4]
    ls.style.linestyle.width = 8
    ls.extrude = 1
    ls.altitudemode = simplekml.AltitudeMode.absolute
    ls.coords = [(float(linestring[1]), float(linestring[2]), float(linestring[3]))]

kml.save('skytree.kml')

Google Earthで出力

ポイント形式で表示

LINESTRING形式で表示