[[simplekml]]

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
programming:python:packages:simplekml [2019/12/23] – [クリックで開くバルーンを仕込む] ikatakosprogramming:python:packages:simplekml [2020/03/27] (現在) ikatakos
行 1: 行 1:
 ======simplekml====== ======simplekml======
  
-=====KMLについて=====+simplekmlは、PythonでKMLを作成するパッケージ。
  
-Google EarthはGoogle Mapsのアプリ版みたいなもので、地図上にマーカーを置いたりラインを引いたりできる。どこに何を描画するかは、[[wpjp>KML]]という書式で指定する。+  * [[http://simplekml.readthedocs.io/en/latest/|Overview — SIMPLEKML 1.3.0 documentation]] 
 + 
 +====KMLについて==== 
 + 
 +[[wpjp>KML]]は、地理空間情報を記述するための書式の1つ。要は地図上にマーカー設置したりライン引いたりバルーンで情報表示したりできる。 
 + 
 +これを読み取れる主要なアプリに、[[https://www.google.co.jp/intl/ja_ALL/earth/|Google Earth]]がある。 
 + 
 +Google EarthはGoogle MapsのPCアプリ版みたいなもので、衛星写真の地図をぐりぐり動かしたり拡大縮小できる。 
 +KMLを用いると、その上にマーカーを置いたりラインを引いたりできる。
  
   * [[software:google_earth|Google Earth]]   * [[software:google_earth|Google Earth]]
行 10: 行 19:
 Google Earthは無償で利用できる上、数千件のデータを配置しても描画が高速。かなりの倍率までズームできるため、全体の概観から詳細の確認までできて便利。 Google Earthは無償で利用できる上、数千件のデータを配置しても描画が高速。かなりの倍率までズームできるため、全体の概観から詳細の確認までできて便利。
  
-=====simplekmlについて=====+(ただし、衛星写真をなぎ合わせてる関係上、使う写真の撮影時期や条件によっ悪い箇所では見た目と10m規模の誤差は出るので、あくまで目安にとどめる)
  
-simplekmlは、Pythonで簡単なKMLを作成するパッケジ。+=====インストル=====
  
-  * [[http://simplekml.readthedocs.io/en/latest/|Overview — SIMPLEKML 1.3.0 documentation]]+  > pip install simplekml 
 + 
 +パッケージ管理ツールにAnacondaを使う場合は、標準レポジトリにないので、conda-forgeなどからインストール。 
 + 
 +  > conda install -c conda-forge simplekml 
 + 
 +=====とりあえず使ってみる=====
  
 とりあえず点や線を描いたりスタイルを変えるのは、これを使えば簡単にできる。 とりあえず点や線を描いたりスタイルを変えるのは、これを使えば簡単にできる。
 +
 +  * [[https://juno-c.hatenadiary.org/entry/20120218/1329575485|[python] KMLを生成するPythonモジュールsimplekml - chkfj]]
 +  * [[https://qiita.com/morichan1990/items/f81db88c3f891da63f0c|simplekmlのシンプルな使い方 - Qiita]]
  
 それ以上のことは、そもそもKMLでどこまでのことが出来るのか自体をイマイチ知らないんだけど、ドキュメントを見る限りいろんなことが出来る模様。 それ以上のことは、そもそもKMLでどこまでのことが出来るのか自体をイマイチ知らないんだけど、ドキュメントを見る限りいろんなことが出来る模様。
  
-=====とりあえず===== +かくプログラム的に書けるので連続した緯度経度座標を一気にプロットするクラスを作ってみた。
- +
-simplekmlを使List内の緯度経度座標をプロットするクラスを作ってみた。+
  
   * 何を描画するの   * 何を描画するの
行 111: 行 127:
 ==== Styleは使い回す ==== ==== Styleは使い回す ====
  
-Styleは、Pointのアイコンやサイズ・LineStringやPolygonの太さや色・ラベルの色などを規定するものである。+''simplekml.Style'' クラスは、Pointのアイコンやサイズ・LineStringやPolygonの太さや色・ラベルの色などを規定するものである。 
 + 
 +適用するには、点やラインなどの個々のインスタンスに''.style''属性があるので、そこに指定する。 
 +個々のインスタンスは、''kml.newpoint(), kml.newlinestring()'' などで作成すれば返値で受け取れる。
  
-適用するには、''kml.newpoint(), kml.newlinestring()'' などで作成した返値を受け取り、そのオブジェクトに指定するのだが、 
 この時、以下の2通りの方法がある。 この時、以下の2通りの方法がある。
  
-  * その場で色、太さなどを個別に指定する方法 +  * その場で色、太さなどを個別に指定する 
-  * あらかじめ''Style''オブジェクトを定義しておき、それを与える方法+  * あらかじめ''Style''オブジェクトを定義しておき、それを与える
  
 同じStyleを適用する地物をいくつも量産するのであれば、後者の方がよい。前者だと、地物毎に新しいStyleが定義され、KMLのサイズが肥大化する。 同じStyleを適用する地物をいくつも量産するのであれば、後者の方がよい。前者だと、地物毎に新しいStyleが定義され、KMLのサイズが肥大化する。
行 125: 行 143:
  
 # その場で定義 # その場で定義
-pnt = kml.newpoint(name='test1', coords=[[0, 0]]) +for _ in range(100): 
-pnt.style.iconstyle.icon.href = 'http://icon/img/url.png'  # アイコン画像 +    pnt = kml.newpoint(name='test1', coords=[[0, 0]]) 
-pnt.style.labelstyle.color = simplekml.Color.blue  # ラベル文字色+    pnt.style.iconstyle.icon.href = 'http://icon/img/url.png'  # アイコン画像 
 +    pnt.style.labelstyle.color = simplekml.Color.blue  # ラベル文字色 
 +# => 全ての点でStyleインスタンスが別々になる(出力KMLで、Style定義が100回繰り返される)
  
 # 最初に定義してから与える # 最初に定義してから与える
行 134: 行 154:
 style.labelstyle.color = simplekml.Color.blue  # ラベル文字色 style.labelstyle.color = simplekml.Color.blue  # ラベル文字色
  
-pnt = kml.newpoint(name='test2', coords=[[0, 0]]) +for _ in range(100): 
-pnt.style = style+    pnt = kml.newpoint(name='test2', coords=[[0, 0]]) 
 +    pnt.style = style 
 +# => Styleインスタンスは1つのみ(出力KMLで、1回のStyle定義を各地物で使い回す)
 </sxh> </sxh>
  
programming/python/packages/simplekml.txt · 最終更新: 2020/03/27 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0