ラベル GeoRSS の投稿を表示しています。 すべての投稿を表示
ラベル GeoRSS の投稿を表示しています。 すべての投稿を表示

2008-06-23

今までに生成された The geo microformat を CARWINGS-CASTING するようにしてみた

The geo microformat 生成ツール を改良して、今までに生成された The geo microformat を RSS 2.0 形式でフィードするようにしました。さらに、そのフィードに CARWINGS 情報端末向けの CARWINGS-CASTING のタグセットを付与するようにもしました。

CARWINGS-CASTING は、自動車(カーナビ)をインターネットに繋げて、自動車にインターネットの情報を配信するための仕組みを提供するものです。いわゆるテレマティクスサービスの一種です。

CARWINGS-Lab
CARWINGS-CASTINGは、RSS2.0をコンテナとして、CARWINGS情報配信向けに拡張されたタグセットを用いることでCARWINGS対応端末に位置などの付加情報を配信する方法です。
CARWINGSセンターから送信するパラメータ(車の現在位置など)に連動して動的にCARWINGS-CASTINGを生成することにより車の状況に応じた情報配信が可能です。
さらに、CARWINGS-CASTINGに含まれる緯度経度情報は、CARWINGS対応ナビゲーションの目的地に設定できたり、同じく電話番号はハンズフリーで発呼できるなど、ドライブ中のユーザに適した情報配信が可能です。
とのことです。

なんだか面白そうで、何かに役立ちそうな予感がしたので、手始めに The geo microformat 生成ツールを改良して、次のようなフィードを配信するようにしてみました。

http://developmentor.lrlab.to/postal/microformats/geo?alt=rss
<item>
<title>東京タワー</title>
<link>http://.../microformats/geo/35.658587,139.745428,15</link>
<description>35.658587, 139.745428</description>
<georss:point>35.658587 139.745428</georss:point>
<!--carwings-->
<carwings:readtitle>東京タワー</carwings:readtitle>
<carwings:readtext>35.658587, 139.745428</carwings:readtext>
<carwings:lat>35.658587</carwings:lat>
<carwings:lon>139.745428</carwings:lon>
<carwings:data><![CDATA[
東京タワー<br />
]]></carwings:data>
<carwings:tel>00-0000-0000</carwings:tel>
<!--<carwings:address></carwings:address>-->
<!--<carwings:mail></carwings:mail>-->
<carwings:link>
http://.../microformats/geo/35.658587,139.745428,15
</carwings:link>
<!--/carwings-->
</item>
CARWINGS-CASTING の配信を受けるには、CARWINGS 対応のカーナビが必要です。また、CARWINGS 対応のカーナビは、原則、日産自動車のディーラーオプションとしてしか購入できないようです。

ですが、そんなひとのためにか、CARWINGS エミュレータ という WEB アプリケーションが用意されているので、そのエミュレータを使って、前述したフィードの動作確認をしてみました。

↓がエミュレータのトップページです。このページの地図を使って、自動車の現在地を指定します。現在地は、住所を指定して移動できるようになっています。そして、フィードの URL を指定して、送信ボタンをクリックすると、カーナビの画面が表示されます。

カーナビでは、現在地のほか、目的地、経由地(最大5箇所)、進行方向、進行速度をリクエストパラメータとして、フィードを生成する CGI プログラムに引き渡されるとのことです。ですが、エミュレータは、現在地のみしか扱えないようです。



↓カーナビの画面に item 要素の内容が表示されます。送るやキーボードの上下を使って、item を移動できます。

吹き出しの中身は、音声による読み上げを表しています。carwings:readtitle 要素と carwings:readtext 要素が読み上げの対象です。省略したときは title 要素と description 要素が対象になりますが、読み上げ精度を保つなら、前者の要素に、機械が読み上げしやすいテキストを指定することになります。

carwings:lat 要素と carwings:lon 要素が含まれると、旗のアイコンが表示されます。変わりに georss:point 要素を指定してみましたが、なぜか認識されませんでした。エミュレータと仕様にギャップがあるようです。また、carwings:tel 要素が含まれると、電話のアイコンが表示されます。



↓カーナビの画面には carwings:data 要素の内容が表示されます。限られた HTML タグしか使えませんが、テキストのほかに画像も表示できます。また、carwings:link 要素が含まれると、その URL を表す QR コードが画面に重なる形で表示されます。カーナビと携帯電話などの接点に使えそうです。



読み上げ停止をクリックすると、次のようにメニューが切り替わります。そして、ここに行くをクリックすると、carwings:lat 要素と carwings:lon 要素を目的地に設定するようです。ただ、このエミュレータは、カーナビの機能はエミュレートしないので、あくまでもイメージです。



電話するをクリックすると、carwings:tel 要素の値がメッセージボックスに表示されます。



詳細を見るをクリックすると、title 要素と description 要素の値が表示されます。



現在地表示をクリックすると、現在地を中心とした地図が表示されます。ただ、原因は把握していませんが、フィードが含む位置情報が、あまりにも広域(日本以外など)だと正しく地図が表示できないようです。



今回は、現在地に関わらずフィードを生成していますが、これをエミュレータが送信した現在地位の周辺にしぼってフィードを生成するようにすれば、単なる情報配信を超えた何かが実現できそうです。

でも、このエミュレータだけでは、とても物足りない気がします。音声による読み上げとか、地図をクルージングしながら定期的にフィードを取得できたりするとよいですね。さすがに日産車を購入するにもいかないので、日産車以外にも門戸を開くようなそんなことはできないのかなぁ。何が制約になっているのだろう。

2008-04-24

Picasa Web Albums Data API を使って画像のジオタグを取得する

YouTube フィードのジオタグには2とおりの表現がある?
YouTube Data API を使って、動画の位置情報であるジオタグを取得しようと調べたのですが、そのジオタグは、フィードの中で 2とおりの表現があるようです。1つはタグ(フィードでいうカテゴリ)を使った方法で、もう1つは GeoRSS を使った方法です。
YouTube 動画の位置情報に続いて、ついでに Picasa 画像の位置情報であるジオタグを取得する方法を調べてみました。

Picasa や YouTube のフィードは、Google Data API の上で成り立っているので、YouTube と同じく Picasa のフィードも、画像が位置情報を持つときは、GeoRSS を使ってその位置情報を表現します。

↓こんな感じです。まったく同じですね。プロトコルやフォーマットが同じ、しかもオープンな仕様なので素晴らしい。新しく学習するストレスがなく大助かりです。
<entry>
<georss:where>
<gml:Point>
<gml:pos>10.309514999389648 123.90380859375</gml:pos>
</gml:Point>
</georss:where>
</entry>
で、JavaScript から Picasa Web Albums Data API を使って、その位置情報を取得してみました。↓こんな感じです。

API の URL が違うことを除けば、YouTube Data API とほぼ同じコードになります。繰り返しになりますが、それって素晴らしい。
// http://picasaweb.google.co.jp/<user>/<album>/photo#<photoid>
var picasa = c.match(/^http:\/\/picasaweb\.google\.co\.jp\/([^\/]+)\/([^\/]+)\/photo#([0-9]+)$/);
if (picasa) {

// http://code.google.com/apis/picasaweb/
var url = 'http://picasaweb.google.co.jp/data/entry/base/user'
+ '/' + picasa[1]
+ '/album/' + picasa[2]
+ '/photoid/' + picasa[3]
+ '?callback={fn}'
+ '&alt=json-in-script';

$(document).jsonp(url, function(json) {
var georss = json
.entry
.georss$where;
if (georss) {
georss = georss
.gml$Point
.gml$pos
.$t
.split(/\s+/);

var point = new GLatLng(georss[0], georss[1]);
});
}
Picasa ウェブアルバムの画像の URL から Picasa Web Albums Data API の URL を組み立ててフィードを取得し、その中の GeoRSS から位置情報である緯度と経度を取得しています。

Picasa Web Albums Data API を使って画像を特定するには、ユーザ名、アルバム名(またはアルバムID)、画像IDが必要です。Picasa ウェブアルバムの URL からは、ユーザ名、アルバム名、画像ID が取得できるので、その情報を使ってフィードの URL を組み立てています。

後は JSONP (json-in-script) を使って、フィードを JSON 形式で取得し、その中から GeoRSS を探すだけです。そして GeoRSS が存在すれば、緯度と経度を取得するといった具合です。

この緯度と経度を使って、Google マップに何か効果を与えるとった流れになるんでしょうね。作り手のアイディア次第ってところですね。

YouTube フィードのジオタグには2とおりの表現がある?

YouTube Data API を使って、動画の位置情報であるジオタグを取得しようと調べたのですが、そのジオタグは、フィードの中で 2とおりの表現があるようです。1つはタグ(フィードでいうカテゴリ)を使った方法で、もう1つは GeoRSS を使った方法です。

タグを使って、位置情報を表現したフィードは、次のとおりです。"geotagged" というタグが目印になっていて、"geo:lat=" と "geo:lon=" というタグで緯度と経度を表現しています。

この方法で、動画に位置情報を付与しようとした経緯を調べてみたのですが、何も分かりませんでした。が、Youtube サイトから "geotagged" で検索すると、それなりの件数がヒットします。ざっと目を通してみた範囲では、それなりの位置情報が付与されています。
<entry>
<category
scheme="http://gdata.youtube.com/schemas/2007/keywords.cat"
term="geotagged" />
<category
scheme="http://gdata.youtube.com/schemas/2007/keywords.cat"
term="geo:lon=139.684548" />
<category
scheme="http://gdata.youtube.com/schemas/2007/keywords.cat"
term="geo:lat=35.706569" />
</entry>
GeoRSS を使って、位置情報を表現したフィードは、次のとおりです。この表現は Youtube Data API のリファレンスにも記載がありますので、公式なものです。

また GeoRSS が付与された動作の再生ページを開くと、その "統計 & 情報" の "収録日 & 場所" に Google マップが表示されますので、単なるメタデータだけでなく、サービスの一環として統合されていることがわかります。
<entry>
<georss:where>
<gml:Point>
<gml:pos>10.309514999389648 123.90380859375</gml:pos>
</gml:Point>
</georss:where>
</entry>
「Google Earth」、ジオタグ付きYouTubeビデオをサポート:ニュース - CNET Japan
同オプションは、2007年6月中旬にソフトローンチされたが、今回のリリースまでは実際にはそれを使用しても何も起こらなかった。うれしいことに、アップロードしたクリップの「date and map options」設定により、自分の古いビデオに地図上の位置を加えることができる。
という時期から逆算し、動画をアップロードするときと、アップロードした後も位置情報を編集できるということなので、現在そして今後は、2つ目の GeoRSS を使って位置情報を取得するのが正解ということになりますね。

1つ目のタグを使った方法は、公式な仕様なんでしょうか(だった?)。それとも自主的なルールがあったのでしょうか。謎が残りますね。う~ん。

2008-04-02

The geo microformat 生成ツールを公開しました

The geo microformat の作成を手助けする The geo microformat 生成ツール を公開しました。

郵便番号、住所、場所、または画像の URL を入力すると、自動的に位置情報を取得します。そして、その結果から、ブログやホームページに貼り付けるための HTML を生成します。



例: 160-0021

郵便番号を入力したときは、Postal Search Ajax API を使って、郵便番号から緯度経度を検索して、その結果から HTML を生成します。

例: 新宿区 歌舞伎町

住所を入力したときは、GoogleMaps API のジオコーダを使って、住所から緯度経度を検索して、その結果から HTML を生成します。

例: 新宿コマ劇場

場所を入力したときも同上です。

例: ↓クリック


画像の URL を入力したときは、Flickr API を使って、画像に付与された緯度経度を取得して、その結果から HTML を生成します。ですので、指定できる URL は、Flickr の画像、かつ緯度経度(geoタグ)が付与された画像に限ります。

上記の例のリンクのとおり、本ツールは、外部パラメータも受け取りますので、他のページやツールからリンクして活用することもできます。

本ツールは、The abbr design pattern と The class design pattern を使って、2通りの The geo microformat の HTML を生成します。また、リンクなしと Google マップのリンクありの 2通りの HTML を生成します。

The abbr design pattern は、abbr タグを使います。IE6 は abbr タグに対応していないため、期待どおりの HTML が生成されず表示もできませんので、注意してください。

本ツールが生成した geo microformat が妥当かどうかは、Firefox Operator (Addon) が検出することをもって OK としています。

どのような条件から、どのような HTML を生成するのが有益なのか、まったく実感がありません。Microformats の理解が浅いところがありますので、気づくことや要望がありましたら、コメントしてください。

2008-01-06

GGeoXml を使って Atom+GeoRSS を Google マップに表示してみる

GeoRSS を付与した Atom Feed (Atom Syndication) を Google Maps API の GGeoXml を使って読み込むと、Google マップにエントリの内容を表示できるらしい。ので、さっそく実験してみました。

次のスクリーンショットのように、エントリの位置にマーカーが、エントリの内容が吹き出しに表示されます。実例は GGeoXml を使って Atom+GeoRSS を Google マップに表示してみる から見てください。



JavaScript コードは次のとおりです。Atom Feed の URL を指定して GGeoXml を生成し、それをオーバーレイとして GMap2 に追加するだけです。Atom Feed の内容は、このエントリの末尾に記載しておきます。

なお、GGeoXml を使って読み込んだ Atom Feed は Google 側でキャッシュするようです。ですので、実例では Atom Feed の URL にバージョン番号相当を付与して、キャッシュを防止しています。
<script type="text/javascript">
//<![CDATA[

var map;
var geoXml;

// window.onload
window.onload = function() {
map = new GMap2(document.getElementById('map'));
map.setCenter(new GLatLng(35.689718, 139.691699), 4);

geoXml = new GGeoXml("http://developmentor.lrlab.to/google/geoxml-feed.xml?8");
map.addOverlay(geoXml);
}

//]]>
</script>
<div id="map" style="width:640px; height:480px;"></div>
マーカーの位置である緯度経度は entry/georss:point で決まります。

吹き出し中の見出しのテキストは entry/title、リンク先は entry/link に対応します。

作成者は entry/author/name に対応します。作成者の横のホスト名は feed/link のホスト名のようです。少なくとも entry/link とは対応していません。理解が曖昧なので、今後の課題とします。

作成者の下は feed/summary に対応します。CDATA か テキストを使って XHTML/HTML を記述できます。

Atom Feed の内容は、次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<feed
xmlns="http://www.w3.org/2005/Atom"
xmlns:georss="http://www.georss.org/georss"
>
<title>日本</title>
<link href="http://developmentor.lrlab.to/google/geoxml.html"/>
<updated>2007-01-01T00:00:00Z</updated>
<id>0</id>

<entry>
<title>東京都</title>
<link href="http://www1.lrlab.to/google/geoxml.html?Tokyo"/>
<author>
<name>nakajiman/1</name>
<uri>http://example.com/1</uri>
</author>
<updated>2007-01-01T00:00:00Z</updated>
<id>1</id>
<summary><![CDATA[
トウキョウト<br />
とうきょうと<br />
Tokyo
]]></summary>
<georss:point>35.689718 139.691699</georss:point>
</entry>

<entry>
<title>沖縄県</title>
<link href="http://www2.lrlab.to/google/geoxml.html?Okinawa"/>
<author>
<name>nakajiman/2</name>
<uri>http://example.com/2</uri>
</author>
<updated>2007-01-01T00:00:00Z</updated>
<id>1</id>
<summary><![CDATA[
オキナワケン<br />
おきなわけん<br />
Okinawa
]]></summary>
<georss:point>26.212647 127.680938</georss:point>
</entry>

</feed>

現在 Postal Search Ajax API とは別に Postal Search RESTful API を検討しています。Atom Feed を配信の基本とし、そのデータの編集は AtomPub に準じるというのが、今のところの方針です。そのとき GeoRSS を使って緯度経度を付与するつもりです。

Web開発者のためのRSS & AtomフィードWeb開発者のためのRSS & Atomフィード
ベン ハンマースリー Ben Hammersley 菅野 良二

詳解RSS~RSSを利用したサービスの理論と実践 XML Hacks―エキスパートのためのデータ処理テクニック RSSマーケティング・ガイド 動き始めたWeb2.0ビジネス JavaScript & DHTMLクックブック―Webエキスパート必携テクニック集 Life Hacks PRESS ~デジタル世代の「カイゼン」術~

by G-Tools