Google Earth : KML, COM API のメモ
最近はずっとWindowsアプリ(C#)を制作してて
その中でGoogle Earth用のKMLファイルを生成させてるんですが
そのときのちょっとしたノウハウをメモっておきます。
■ Google Earth
無料のWebGISビュアー。表示は強いが編集は弱い。
http://earth.google.com/intl/ja/
■ KML Documentation
GoogleのKML公式ドキュメント(英語)
http://code.google.com/apis/kml/documentation/
■ KMLファイルフォーマット Version 2
公式ドキュメントを参考にした日本語ドキュメント(非公式)
http://bubble.atnifty.com/modules/bwiki/index.php?KML
■ Google Earth COM API Documentation
Google Earth COM API の公式ドキュメント(英語)
http://earth.google.com/comapi/
■ 参考書

KML2.2対応 Google Earthコンテンツ&アプリ作成ガイドブック
KML、COMのサンプル解説が非常に重宝した。
■ KMLメモ
・ <Folder>タグ内には<Style>タグは1つしか定義できないみたい。
・ <Document>タグ内には<Style>タグが複数定義できる。
・ <kml>タグのあとに<Document>タグを書くようにすると間違いないかも。
・ <Placemark>を複数定義するには<Folder>タグ内に入れる。
・ <Folder>タグの<visibility>属性を変更しても<Folder>内要素の<visibility>属性に引っ張られる。
・ <IconStyle> の<color>属性でアイコンの色を変えてもデフォルトが黄色だから変な色になる。
・ タグの大文字・小文字のミスは地味に痛い。
・ <description>属性内は<br>ではなく<br />と書くこと。
・ 座標は世界測地系に変換してから使用すること。
■ COM API メモ
・ LoadKmlData() を使うとエンコード処理しても日本語が文字化けする。
・ KMLをテンポラリに生成してOpenKmlData() で読み込むと日本語が文字化けしない。
・ GetFeatureById() がない・・・すごい残念。
・ SetCamera() など起動が必要なものには IsInitialized() で初期化済みかを実行前確認を。
・ LoadKmlData() は初期化前でも実行可能(初期化後に実行してくれる)
KML生成クラスを作ろうと思ったけど設計するスキルがなかったために
例のごとく、1枚板のプログラムを書きました。
再利用性 : 10%
悔しいので、最近はオブジェクト指向設計の本を読み始めました。
なかなか胸に刺さる本です。
つまり、Google Earth で何かやりたい方はどしどしご連絡ください。

PR
コメント
かなりナイスタイミングですね!
修論でMASとGoogleEarthをコラボするつもりです!
勉強しなきゃ、教えてツツミさーん。
460 | 2008年03月06日 19:53
今週はお手数懸けました!
GEマスターTUTSUMI!
GE絡みで近々また連絡します!
WATT | 2008年03月07日 06:47
■ 460さん、WATTさん
あのね、2人ともね、KABOSUというハンドルネームの意味がないでしょうが。
まあ、今更いいけどね。
MASとGoogleEarthやるんだ。
おもしろそうねぇ。
GEマスターが何でも教えてあげますぜ。
KABOSU | 2008年03月09日 21:02
はじめまして。
GPSデータ(緯度・経度)をグーグルアースにプロットし、そのプロット上を3Dポリゴンを動かす。
といったことがしたいのですが、なかなか。
それができるようなサイト等ご存知であれば教えてください。
Bianchi | 2008年09月13日 22:54
■ Bianchiさん
はじめまして。
Google Earth API とかで出来るかもしれません。
以下の公式サイトにデモがありますのでやりたいことが出来そうなデモを探してみてください。
http://code.google.com/apis/earth/documentation/examples.html
現状、私が知る限りでは、ポリゴンを動かすにはKMLを再生成・再描画するぐらいしか思いつきません。
KABOSU | 2008年09月14日 22:11
はじめましてカプチ2です。
GPSの各ポイントごとに3Dポリゴンを配置して、それぞれにを設定すればそれっぽく見えますよ。ただ3Dモデルのデータによっては大量のメモリを消費しますが..
カプチ2 | 2008年10月08日 19:55
失礼しました。「TimeSpanを設定すれば」です。
カプチ2 | 2008年10月08日 21:07