差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン | |||
programming:python:packages:simplekml [2019/12/23] – [クリックで開くバルーンを仕込む] ikatakos | programming:python:packages:simplekml [2020/03/27] (現在) – ikatakos | ||
---|---|---|---|
行 1: | 行 1: | ||
======simplekml====== | ======simplekml====== | ||
- | =====KMLについて===== | + | simplekmlは、PythonでKMLを作成するパッケージ。 |
- | Google EarthはGoogle Mapsのアプリ版みたいなもので、地図上にマーカーを置いたりラインを引いたりできる。どこに何を描画するかは、[[wpjp> | + | * [[http:// |
+ | |||
+ | ====KMLについて==== | ||
+ | |||
+ | [[wpjp> | ||
+ | |||
+ | これを読み取れる主要なアプリに、[[https:// | ||
+ | |||
+ | Google EarthはGoogle MapsのPCアプリ版みたいなもので、衛星写真の地図をぐりぐり動かしたり拡大縮小できる。 | ||
+ | KMLを用いると、その上にマーカーを置いたりラインを引いたりできる。 | ||
* [[software: | * [[software: | ||
行 10: | 行 19: | ||
Google Earthは無償で利用できる上、数千件のデータを配置しても描画が高速。かなりの倍率までズームできるため、全体の概観から詳細の確認までできて便利。 | Google Earthは無償で利用できる上、数千件のデータを配置しても描画が高速。かなりの倍率までズームできるため、全体の概観から詳細の確認までできて便利。 | ||
- | =====simplekmlについて===== | + | (ただし、衛星写真をつなぎ合わせている関係上、使う写真の撮影時期や条件によって悪い箇所では見た目と10m規模の誤差は出るので、あくまで目安にとどめる) |
- | simplekmlは、Pythonで簡単なKMLを作成するパッケージ。 | + | =====インストール===== |
- | | + | |
+ | |||
+ | パッケージ管理ツールにAnacondaを使う場合は、標準レポジトリにないので、conda-forgeなどからインストール。 | ||
+ | |||
+ | > conda install -c conda-forge simplekml | ||
+ | |||
+ | =====とりあえず使ってみる===== | ||
とりあえず点や線を描いたりスタイルを変えるのは、これを使えば簡単にできる。 | とりあえず点や線を描いたりスタイルを変えるのは、これを使えば簡単にできる。 | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
それ以上のことは、そもそもKMLでどこまでのことが出来るのか自体をイマイチ知らないんだけど、ドキュメントを見る限りいろんなことが出来る模様。 | それ以上のことは、そもそもKMLでどこまでのことが出来るのか自体をイマイチ知らないんだけど、ドキュメントを見る限りいろんなことが出来る模様。 | ||
- | =====とりあえず===== | + | せっかくプログラム的に書けるので、連続した緯度経度座標を一気にプロットするクラスを作ってみた。 |
- | + | ||
- | simplekmlを使って、List内の緯度経度座標をプロットするクラスを作ってみた。 | + | |
* 何を描画するの | * 何を描画するの | ||
行 111: | 行 127: | ||
==== Styleは使い回す ==== | ==== Styleは使い回す ==== | ||
- | Styleは、Pointのアイコンやサイズ・LineStringやPolygonの太さや色・ラベルの色などを規定するものである。 | + | '' |
+ | |||
+ | 適用するには、点やラインなどの個々のインスタンスに'' | ||
+ | 個々のインスタンスは、'' | ||
- | 適用するには、'' | ||
この時、以下の2通りの方法がある。 | この時、以下の2通りの方法がある。 | ||
- | * その場で色、太さなどを個別に指定する方法 | + | * その場で色、太さなどを個別に指定する |
- | * あらかじめ'' | + | * あらかじめ'' |
同じStyleを適用する地物をいくつも量産するのであれば、後者の方がよい。前者だと、地物毎に新しいStyleが定義され、KMLのサイズが肥大化する。 | 同じStyleを適用する地物をいくつも量産するのであれば、後者の方がよい。前者だと、地物毎に新しいStyleが定義され、KMLのサイズが肥大化する。 | ||
行 125: | 行 143: | ||
# その場で定義 | # その場で定義 | ||
- | pnt = kml.newpoint(name=' | + | for _ in range(100): |
- | pnt.style.iconstyle.icon.href = ' | + | |
- | pnt.style.labelstyle.color = simplekml.Color.blue | + | pnt.style.iconstyle.icon.href = ' |
+ | 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=' | + | for _ in range(100): |
- | pnt.style = style | + | |
+ | pnt.style = style | ||
+ | # => Styleインスタンスは1つのみ(出力KMLで、1回のStyle定義を各地物で使い回す) | ||
</ | </ | ||