.Site search

.Menu

.Knowledge list

.
Top / Google Earth COM API

Google Earth COM API 概要

Google Earth COM APIが公開されています。
これを利用したプログラムは、Google Earthと通信して、命令を出したり、情報を取得できるようになります。

Google Earth COM APIをご覧の通り、現時点ではearth.idlとドキュメントが提供されています。

以降に簡単な説明をしています。 後半は、数種類の開発言語でGoogle Earthと通信するサンプルを用意しました。 サンプルはJScript, VBScript, VBA, C#版です。 ソースとバイナリもダウンロードできるようにしていますので、開発環境構築後の確認などにご利用ください。

Google Earth とは

Googleが提供する地球3Dビューアです。 無償版があるので、説明を読むよりとりあえずダウンロードして使う方が理解が早いでしょう。

COM とは

COM(Component Object Model)は、プログラム部品の規約です。 COMに準拠したプログラムは、他の開発者が開発言語を自由に選択して再利用することができます。
理解し易いかは別として、以下が代表的なサイトかな。

COM APIで何ができるか?

Google Earth COM API は起動しているGoogle Earthと通信するためのルールです。
COM APIのルールはidlファイルで定義されており、多くの開発言語はこれを理解できます。 即ち、COM APIのルールに従えば、以下の図のように自作のプログラムはGoogle Earthと会話して、指示を与えたり、情報を取得できたりします。

GECOMAPI.gif

大きく以下の指示・情報取得ができます。

  • 視点(ビュー)の変更、情報取得
  • 表示位置(地図座標)の取得
  • KMLの読み込み
  • 画面のスナップショット保存

応用例

Google Earth COM API Samples?に各クラス毎のサンプルを用意する予定です。

利用するための準備

Google Earth COM APIを使ったプログラムをPC上で実行する前に、準備が必要です。
手順は以下です。

  1. Google Earth のインストール
  2. Google Earth のCOMレジストリ登録

まず、Google Earthのインストールはオフィシャルサイトでダウンロードして行なってください。無償版が公開されています。 次に、以下のコマンドを実行してCOM登録してください。(デフォルトのインストール先の場合)

"C:\Program Files\Google\Google Earth\googleearth.exe" /RegServer

WSHから動作確認する方法

WSH?(Windows Script Host)でGoogle Earthを操作できます。 WSH?は、Windows 2000/XPならば標準的にインストールされているそうです。

Sample code(LaunchGEJs.js)

サンプルは、Google Earthからタイプとバージョンを取得して、表示します。

var ge = WScript.CreateObject("GoogleEarth.ApplicationGE");
WScript.Echo( "Application Type : " + ge.VersionAppType );
WScript.Echo( "Version : " + ge.VersionMajor + "." + ge.VersionMinor + "." + ge.VersionBuild );

実行

jsファイルのアイコンをダブルクリックしても起動できますが、以下のようにDOSプロンプトから起動してみます。

cscript LaunchGEJs.js
launchgejs.jpg

Sample code(LaunchGEVbs.vbs)

サンプルは、Google Earthからタイプとバージョンを取得して、表示します。

Set ge = WScript.CreateObject("GoogleEarth.ApplicationGE")
WScript.Echo "Application Type : " & ge.VersionAppType
WScript.Echo "Version : " & ge.VersionMajor & "." & ge.VersionMinor & "." & ge.VersionBuild

実行

vbsファイルのアイコンをダブルクリックしても起動できますが、以下のようにDOSプロンプトから起動してみます。

cscript LaunchGEVbs.vbs
launchgevbs.jpg

考察

JavaScript?, VBScriptで記述できました。
これくらいの動作ならば、kmlから起動するのと大差ないです。 今後は、もっと柔軟な動作ができる例を書いていこうと考えています。

VBA(Excel)から動作確認する方法

VBA(Visual Basic for Applications)でも使えました。
以下はExcelでの手順とサンプル、実行結果です。

手順

Excelを起動して、VBEを起動します。

openvbe.jpg

VBEのメニューにある参照設定を選択してダイアログを表示します。

openproject.jpg

利用可能なCOM オブジェクト一覧が表示されます。
"EARTHLib"がリストされているはずなので、チェックして設定してください。

vbaproject.jpg

最後にオブジェクトブラウザを開いてみましょう。
Google Earth COM APIのインタフェース一覧を確認できます。
あとは、ソースをゴリゴリ書いていくだけです。

vbaobjectbrowser.jpg

Sample code

VBAの一部を以下に掲載します。
実装したExcelファイルは公開していませんので、各自作ってみてください。

'Google Earth と通信して、情報を取得する。
Sub LaunchGE()
  Set ge = New EARTHLib.ApplicationGE

  MsgBox "Application Type :  " & ge.VersionAppType & vbCrLf & _
         "Version :  " & ge.VersionMajor & "." & ge.VersionMinor & "." & ge.VersionBuild _
         , , "Google Earth Infomation"
End Sub

実行

上記サンプルをボタンから起動するように実装してみました。 ボタンをクリックすると、Google Earthのタイプとバージョンを表示します。

vbabutton.jpg
vbamsgbox.jpg

考察

ExcelやAccess, Word などの Office製品から Google Earth を利用できることは、大きな意味があるでしょう。 各自が管理している住所データとGoogle Earthを組み合わせることが可能だからです。 実際には管理しているのは"住所という文字列"であって、Google Earthで扱える"座標"とは異なるため、対応表というか辞書が必要になってくるでしょう。

たしか、住所と座標の対応はどこかで取れそうなので、それをどうするかか。。。 次の課題が見えてきた!

.NET Frameworkから動作確認する方法

EARTHLib.dllの作成

以下の手順で、earth.idlからC#が参照するDLLを作成します。

  1. midl.exeでearth.tlbを生成
  2. tlbimpでEARTHlib.dllを生成

まず、midl.exeを使ってearth.tlbを生成します。
midl.exeはMicrosoft Platform SDK?に入っています。

midl.exe /newtlb earth.idl

つづいて、tlbimp.exeを使ってEARTHLib.dllが生成されます。
tlbimpはMicrosoft .NET Framework SDK?に入っています。

tlbimp.exe earth.tlb

Sample code(LaunchGE.cs)

Google Earthのタイプ(無償版 or Plus)とバージョンを取得するサンプルです。

using System;
using EARTHLib;

namespace net{ namespace kyosho{
    class LaunchGE
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Launch GE!");
            IApplicationGE ge = new ApplicationGE();

            Console.WriteLine("Application Type : " + ge.VersionAppType.ToString());
            Console.WriteLine("Version : " + ge.VersionMajor + "." + ge.VersionMinor + "." + ge.VersionBuild);
        }
    }
}}

コンパイル

LaunchGE.csとEARTHLib.dllを同じフォルダに保存して、コンパイルします。

csc.exe /o /r:EARTHLib.dll LaunchGE.cs

実行

LaunchGE.exeができるので、実行してみましょう。 こんな風にデータを取得して表示してくれます。

LaunchGE.exe
launchge.jpg

考察

サンプル実行時にすでにGoogle Earthが起動している状況ならば、そこと通信するようです。
起動していない場合は、勝手に起動してくれます。

また、起動直後に視点のパラメータを取得することはできませんでした。
起動後、しばらくしてからならば取得できました。
うーん、起動後にGoogle Earthがイベントを出して欲しいなぁ。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Counter: 24001, today: 5, yesterday: 0
Last-modified: Sun, 15 Apr 2007 18:08:45 JST (1237d)


. .