PythonでGoogle Earth Pro上にbar plotを描画するkmlファイルの作成方法です.こちらのgoogleearthplot packageを使用させて頂きました.

インストール

pandasはインストールされているものとします.simplekmlとgoogleearthplotをインストールします.


pip install simplekml
pip install googleearthplot

このgoogleearthplotはPython2用で,Python3ではprint文に関するエラーが出ます.よって,若干のコードの修正が必要です.まず,googleearthplotのコードがインストールされている場所を次のように特定します.


pip show googleearthplot

その場所にある,googleearthplot.pyをエディタで開き,print文の仕様をPython3形式に変更します.これはprint ****となっている行を,括弧を付けて,print(****)とするだけです.

使い方

Jupyter Notebookを開き,importします.本家を参考に例を示します.作成されたkmlをダブルクリックすれば,Google Earth Proで表示されるはずです.


from googleearthplot import googleearthplot as gep
import pandas as pd

point plot

Point plotの例です.


lon=139.0 #degree
lat=35.5 #degree
gep1=gep.googleearthplot()
gep1.PlotPoints(lat,lon,"point")
gep1.GenerateKMLFile(filepath="sample1.kml")

bar plot

Bar plotの例です.


#A bar plot 
gep2=gep.googleearthplot()
lat=35.5 #degree
lon=139.5 #degree
num=100 #bar height size
size=1  #meter
name="test"
color="red"
gep2.PlotBarChart(lat,lon,num,size,name,color)
gep2.GenerateKMLFile(filepath="sample2.kml")

複数のbar plotはfor loopで作成するだけです.

ファイルからデータを読み込んでbar plotを作る

以下の様なテキストファイルsample3.txtをローカルに用意します.左から経度,緯度,barの高さです.


  139.662750    35.477141   166.771019
  139.663961    35.477226   171.858589
  139.665148    35.477312   169.775301
  139.666306    35.477394   160.395112

このファイルをpandas DataFrameとして読み込み,forループでbarを作成します.


fpath = "sample3.txt"
names = ["lon", "lat", "height"]
df = pd.read_csv(fpath, sep='\s+', header=None, names=names)
### height==0は以下のように除外しておきます
lon_p = df[df['height'] != 0.0]['lon'].values
lat_p = df[df['height'] != 0.0]['lat'].values
height_p = df[df['height'] != 0.0]['height'].values

size=2
name=None
color='red'
gep3 = gep.googleearthplot()
for (lon, lat, height) in zip(lon_p, lat_p, height_p):
    gep3.PlotBarChart(lat, lon, height, size, name, color)
gep3.GenerateKMLFile(filepath="sample3.kml")

なお,csvファイルからはPlotBarChartsFromCSVメソッドで直接bar plotを作成できるようです.その他の例を含め,詳細は本家を参照ください.

参考資料

  • PyPi googleearthplot url
  • GitHub AtsushiSakai/googleearthplot url