aboutworks
KABOSU 100%

« IXY DIGITAL 910 IS を買ってみた。 | メイン | Wii : 大乱闘スマッシュブラザーズX »

2008年03月06日

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をコラボするつもりです!
勉強しなきゃ、教えてツツミさーん。

今週はお手数懸けました!
GEマスターTUTSUMI!
GE絡みで近々また連絡します!

■ 460さん、WATTさん
あのね、2人ともね、KABOSUというハンドルネームの意味がないでしょうが。
まあ、今更いいけどね。

MASとGoogleEarthやるんだ。
おもしろそうねぇ。
GEマスターが何でも教えてあげますぜ。

はじめまして。
GPSデータ(緯度・経度)をグーグルアースにプロットし、そのプロット上を3Dポリゴンを動かす。
といったことがしたいのですが、なかなか。

それができるようなサイト等ご存知であれば教えてください。

■ Bianchiさん
はじめまして。
Google Earth API とかで出来るかもしれません。
以下の公式サイトにデモがありますのでやりたいことが出来そうなデモを探してみてください。
http://code.google.com/apis/earth/documentation/examples.html

現状、私が知る限りでは、ポリゴンを動かすにはKMLを再生成・再描画するぐらいしか思いつきません。

 はじめましてカプチ2です。
 GPSの各ポイントごとに3Dポリゴンを配置して、それぞれにを設定すればそれっぽく見えますよ。ただ3Dモデルのデータによっては大量のメモリを消費しますが..

失礼しました。「TimeSpanを設定すれば」です。

コメントを投稿


Copyright © 2003-2007 KABOSU. All Rights Reserved.