Earth on Cubic-Sight

Google Earth(TM) 地図サービスのオススメスポット・Wiki更新状況・おもしろい情報の紹介などを書き綴っていきます。

火曜日, 2月 03, 2009

GoogleEarth5.0とKML

 Google Japanのブログ『新しい Google Earth に飛び込んでください。』でアナウンスされているように、GoogleEarthがバージョンアップしました。

 海底を見ることができたり、ツアーを作ることができたりして、「KMLはどうなるんだろう?」という疑問がでてきます。というわけで、KMLの中身を軽く覗いてみました。
 ただ、後で気づいたのですが、英語のリファレンスには既に新しい内容が反映されていました。。

 まず海底ですが、プレイスマークを作るときの高度(altitudeMode)オプションが増えています。

海底altitudeMode

 それと、coordinatesの3番目に高度を入力出来ますが、これにマイナスの値を入れることでも対応できるようです。

 次にツアーですが、これに関しては新しい名前空間、タグである「gx:何某」で対応しているようです。前述の海底に関するaltitudeModeもgxの名前空間で実現するみたいです。

 タグに関してはリファレンスにある通り、新しく出来たものもあれば、機能アップしたものもあります。

 ツアーや海底がらみでのアップもありますが、個人的に気になったのは「description」のWebkit実装です。これに関してはリファレンスだけ見て試していないので断定的なことは言えないのですが、alert等の一部を除きJavascriptをサポートしているようです。
 もちろん、HTMLやCSSに関しても大幅な対応ではありますが、Javascriptサポートで、いろいろなアイディアが出てくると期待しています。何が出来るのか考えるのも楽しみです。

 KMLリファレンス(英語)

水曜日, 1月 21, 2009

Googleマップのルート検索時をKMLにするGreasemonkeyスクリプト

 かるかるさんの記事を興味深く拝見しました。

 Googleマップのルート検索結果をGPXに変換する方法《にやにや製作:GoogleMapとGPSを自転車で使う》

 ちょうど、我らがMengurume Labsで今週はGreasemonkeyが話題になっていました。(参考:Firefoxまとめサイト Greasemonkey

 Greasemonkeyの詳細はリンク先を見ていただくとして、先ほどのMengurume Labsの記事の続きとして、Googleマップで使えるスクリプトを習作として作成してみました。ご利用は自己責任でお願いします。動作はFirefoxでのみ確認しています。

 gmaproutekml.user.js(先にGreasemonkeyをインストールしてください。)

 ルート検索(車のみ)をすると、

gmroutekml1

 右上にRoute KMLというリンクが表示されて、KMLを簡単にダウンロードできるというだけの機能です。

gmroutekml2

 電車でのルート検索は、KMLを吐き出してくれなかったので車限定にしています。

 (Googleマップで吐き出したKMLで確認はしていませんし、自転車乗りの皆さんの用途を把握していませんが)おそらく、KMLで吐き出しておいてGMM2でGPX変換したほうが、記事にあったブックマークレットでGPXを作るより楽なような気がします。

「GMapToGPX」でGPXが取れるため、特にKMLにして取得する意味はありません


 というのは謙遜でしょう。GMM2は多機能ですし、今回の変換だけに絞っても、ドラッグ・アンド・ドロップ対応なので工程数が少なくなると思います。

 ちなみに、リンク先をお気に入りに保存しておくと、ブックマークレットとしても利用できます。IEだとalertで文字化けしましたが、使えるかもしれません。

金曜日, 1月 02, 2009

SilverlightとJavaScript

 あけましておめでとうございます。今年もよろしくお願いいたします。

 昨年12月は放置していたpgRoutingの復習をしていました。他にもあった試したいことはあったのですが、越年…。越年したことの一つにSilverlight2とGoogleEarthAPIとの連携があります。(Xamlの作成ツールであるExpression BlendのSilverlight2対応のサービスパックのダウンロードすらしていませんでした。)

 というわけで、お正月はSilverlight2とJavaScriptのお勉強です。

 GoogleEarthAPIを利用する際には、リファレンスやサンプルを見ながらHTMLへ(あるいは別に.jsファイルへ)javascriptを書きます。
 SilverlightとGoogleEarthAPIを連携させるには、JavaScriptをSilverlightから呼び出す必要があります。

 これを実現するのに使用するのがInvokeです。

 まずは、JavaScriptです。(一部)
 getlatlon関数というのを書いていますが、これで中心の緯度経度を取得します。内容については後述します。

google.load("earth", "1");
var ge = null;

function init() {
google.earth.createInstance("map3d", initCB, failureCB);
}

function initCB(object) {
ge = object;
ge.getWindow().setVisibility(true);
}

function failureCB(object) {
alert('load failed');
}

function getlatlon(){
var latlon = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
var lat = latlon.getLatitude();
var lon = latlon.getLongitude();
var silverlight = document.getElementById("SEarth");
silverlight.content.findName("coordinates").Text = lat + "," + lon;
}

 次にSilverlight(C#)のコードです。Xamlで作ったボタンをClickしたときに下記のコードを実行するようにしています。

private void getlatlon(object sender, RoutedEventArgs e)
{
HtmlPage.Window.Invoke("getlatlon");

}

 Silverlightのコードで、Invokeを使用してJavaScriptで定義したgetlatlonを呼び出すことが出来ます。(もちろん引数も渡せます。)
 その後、JavaScriptで得た値をSilverlight側で使うことになるのですが、今回はサンプルコードということで、JavaScriptから直接Xamlに値を挿入してみました。

silverlight.content.findName("coordinates").Text = lat + "," + lon;

 これはgetlatlonの一部ですが、coordinatesという名前のついたテキストボックス(Xaml内にあります)に直接値を入力しています。

 というわけで、SilverlightでJavaScriptを使用するには、

■HtmlPage.Window.Invokeを使う
■silverlight.content.findName("*********")という選択肢もある

 といったところです。今回の超テキトーなサンプルはこちらです。

月曜日, 12月 29, 2008

【パプアニューギニア】 タブルブル火山

2008/12/15付け(米時間)にGE画像がアップデートされ、タブルブル火山も噴火状況が写ったため、被災者の皆様には恐縮ですが、wiki写真を差し替えました。ラバウルはここより北西方向になります。 →パプアニューギニアのページ

金曜日, 12月 19, 2008

pgRouting+OpenStreetMapを試す - SQL編の課題

 前回からの続きです。

 前回までで必要なポイントは全部とれることがわかったので、後は実際に線を引くだけです。
 ただ、MULTILINESTRING型ではline_locate_pointが使えず、GeometryNを使ってMULTILINESTRINGの一番最初のLINESTRINGを抽出したのですが、全てのgidに対してこれが通用するのかという疑問が残ります。

 OpenStreetMapでは一つの道(線)ごとに様々な情報を設定するわけですから、実質的にはMULTIになってない気もしますが、これは僕の想像でしかありません。今のところ調べる気力は無いので、知っている方がいらっしゃれば教えてほしいところです。

 pgRoutingをOpenStreetMapのデータで使う復習は、今年はここまでにしたいと思います。実際にこのデータからKMLを作ったりしたいのですが、VM上のUbuntuにRubyを入れたりしないといけません。来年への宿題にします。他に試したいこともありますので…。