- GoogleEarthを自作プログラムから制御する(GoogleEarth COM API) -- [[GoogleEarthCOMAPIの仕組]] -- [[GoogleEarthCOMAPIの使い方(導入法)]] * GoogleEarthを外部プログラムから制御する [#d8fc360b] 知っての通りGoogleEarthはGoogleから提供されている地球規模地図アプリケーションであり,KMLファイルというxml形式で記述されたデータをロードさせることで,地図上に様々な情報を表示することができる.表示方法は,例えば - プレイスマーク(目印),バルーン(文章や画像による注釈) - イメージオーバーレイ(画像の重畳) - 3Dポリゴンの追加 - ネットワークリンクの設定 などが挙げられる.このような機能を利用すると,旅行記や人口分布図などを作成することもできる.良く似たサービスにGoogleMapがあるが, - 表示方法が多岐にわたる(利用視点) - Webサービスではないのでオフラインでも使用できる(仕組視点) という点で異なると私は考えている.厳密に言うと地図データは外部Webサーバからダウンロードしているし,GoogleEarthAPI(COM-APIではない!)を使うことでブラウザ上で制御することもできるので,完全にオフラインなアプリケーションではないが,ここでは地図情報は事前に入手しており,オフラインで動作することを前提に話を進める. ここで,一般利用者であれば「GoogleEarth楽しい」「GoogleEarth便利」となるのであろうが,我々研究者は少し観点が異なる.すなわち,情報技術研究におけるインターフェースとして利用できないか,と考える.それはGoogleEarth単体の機能で十分に達成できる場合もあるが,もう一歩踏み込んで「他のアプリケーションと連動させる」ことができればもっと様々な利用法が創出される. ....長くなったが要は,外部プログラムからGoogleEarthを制御しようというわけである. * COMという考え方 [#bff5548a] GoogleEarthはCOMに基づいて構成されている.COMとはComponentObjectModelの略でMicrosoftが提唱している言語非依存なプログラム構成規約を指す.種々の言語を共通のプラットフォームで扱うための取り決めと考えてよい.GoogleEarthはCOMに則って制御用APIを公開しているため,COMに準拠した形で外部から制御できるわけである.具体的には自作の外部プログラム側でCOMインターフェースを用意して,GoogleEathに対してAPI呼び出しをかける仕組みである(図参照).さて,ここで気がついたかもしれないが,COMはMicrosoftが提唱しているので(当然)Windows依存な概念である.すなわちLinux(UNIX)のような他のOSではCOM経由で制御することはできない.Linux用GoogleEarthも配布されているがWine上で動作しているのが実際であるから,結局はWindows依存なバイナリなのである.というわけで(不本意ながら)以降はWindowsを前提に話を進める. #ref(./COM.png,50%) #ref(./COM.png,center,50%)