Blog Top > iPhone Archive
iPhone Archive
iPhone 3GSの写真には方位角が記録されている
- 2009年7月 1日 23:18
- iPhone
概要:iPhone 3GSの新機能として、方位が分かる電子コンパスがあるが、撮影した写真のヘッダー情報(EXIF)には方位角が含まれていることを確認した。ただし、iPhoneを真横に傾けて撮影する場合は、方位角が異なる点に気をつける必要がある。
iPhone 3GSを発売日から2日後の日曜日に秋葉原ヨドバシカメラにて購入した。動作が格段に速くなり、大変満足している。パフォーマンスについては多くのブログで言及されているので、今回はiPhone + 写真 + 位置情報の関連のテーマとする。
一番気になったのが、新機能である電子コンパスである。電子コンパスの方位角の情報が撮影した写真に埋め込まれる可能性があると考えた。iPhone 3Gの写真には、ヘッダー情報であるEXIFに位置情報(緯度経度)が格納されてた。そこで、iPhone 3GSに撮影された写真に方位角が格納されているのかを確かめてみた。
まず、EXIFには「gpsImgDirectionRef」という項目があり、これは写真の撮影方向を格納する部分らしい。ということは、EXIFのフォーマットとして写真の撮影方向を格納する方式はすでに定められているということである(参考)
iPhone 3GSで撮影してEXIF情報を調べてみよう。実際の方位角との比較ができるように方位磁針を撮影してみた。
撮影した写真のEXIF情報を示す。ソフトウェアはEXIF Readerを使用した。
3GSになってEXIFに記載される情報量が増加した印象である。EXIFのGPS情報のところに、「撮影した画像の方向」という部分がある。そこに358.09°という値が入っている。これは「北から時計回りに8.09度の方向」という意味であり、ほぼ北に向かって撮影したことを意味している。確かに、3GSで撮影した写真には方位角が記録されている。しかし、方位磁針が撮影された写真を見てわかるように、撮影の向きは東であり、正確ではない。
このようになる原因を考えたが、写真を撮影する場合に横にiPhoneを傾けて撮影した場合と、縦に傾けて撮影した場合とで方位角が異なるのではないかと考えた。先ほどはホームボタンが右側、通話用スピーカーを左になるように真横に傾けて撮影したので、次にカメラを縦にして撮影してみた。
109度になり、ほぼ東向きの角度となった。ということは、縦撮影の場合のEXIF情報の方位角は正確だが、横の場合は注意が必要ということである。
マップアプリで方位角を表示してiPnoheを撮影する場合と同じように傾けて試行錯誤したが、どうやらiPhoneを縦に持った場合の向こう側を指す方角を方位角として認識するようで、その際の値が忠実にEXIFに記録されたようである。
iPhoneを横に傾けて撮影した場合、ホームボタンが右側にくるように真横に傾けた場合は方位角を+90度とする必要があり、逆にホームボタンが左側にくるように真横に傾けた場合は、-90度とする必要がある。といっても撮影時の方位角の情報を後で使うマニアックな人はいないかな・・・。
- Comments: 0
- TrackBacks: 0
iPhoneの天気アプリ「ウェザーニュース タッチ」が登場
気象情報会社大手のウェザーニュースが,iPhoneアプリを出した(無料)。日本向けの使い勝手の良い天気アプリが無かったため,個人的には待望のアプリである。ただ,ウェザーニュースがiPhoneアプリを出すとは予想していなかった。本エントリでは,個人的なアプリの評価と改善点についてまとめたい。なお,このアプリの使い方については,Going My Wayでスクリーンショット付きで詳しく紹介されているので,参考にされたい。
- 評価点 評価できる点は,ピンポイント予報の表示機能があること,雨雲レーダーや気象衛星などの情報が表示できることである。また,地方ごとに解説文(と動画)が出てくることも評価に値する。使い勝手については,特に重い印象はなく,それなりに使いやすいと思う。
- 改善点
- 個人向けにカスタマイズされた気象情報の提供をするべし
- GPSの位置情報を活用するべし
- 気象情報の機能をどんどん追加するべし
- ソーシャル機能を搭載するべし
まず,アプリを最初に起動して表示される画面は,全国の天気予報である。私はこれに違和感がある。全国の天気を前面に出すのではなく,ピンポイント予報を表示すべきだと思う。つまり,個人向けにカスタマイズした予報を表示するアプリであるべきではないかと思うのだ。なお,WeatherbugやAccuWeatherでは,ピンポイント予報がメインである。iPhoneのネイティブアプリでさえも地点登録が可能である。iPhoneのように携帯端末だからこそ,個人向けにカスタマイズされた気象情報が提供できるはずである。
個人向けにカスタマイズされた気象情報を提供するためには,GPSで取得できる位置情報が重要となる。例えば,位置情報によってピンポイント予報の場所を切り替えることができる。また,周辺のアメダスの情報を表示させることも可能である。さらに,地図で表示された画面上に,GPSで取得した位置情報を重ねることも可能となる。例えば,アメダスや雨雲レーダーの画面上に自分の位置が表示されたらおもしろいのではないか。しかし,このアプリは現時点ではGPSを活用していない。
現在,アプリ上で表示される情報は,雨雲レーダー,気象衛星,天気予報である。おそらく,チャンネルと題していることから,表示される情報は今後も追加されると予想されるが,たくさんの情報を追加して欲しいと思う。特に,アメダス,注意報・警報,地震・津波,台風を希望したい。また,これらの情報も,位置情報と密接に関わることから,地図系の情報にGPSで取得した自分の位置情報をプロットしたり,位置情報に応じて表示する情報を切り替えることができるだろう。
ウェザーニュースでは会員の中から「ウェザーリポーター」を募っており,街角の天気の様子をリポートして,集約してユーザへ配信する仕組みを構築している。主に携帯電話向けのサービスであるが,iPhoneでも有効だと考えられる。特に,iPhoneの場合はGPSで位置情報が付くことから,位置情報を送りつつ,写真と文章の天気リポートが送ることができる。
また,iPhoneはTwitterのようなマイクロブログ系ととても親和性が高いため,天気リポートにソーシャル的な機能を持たせることも良いのではないだろうか。天気だけでは繋がることは難しいので,位置情報+天気で繋がることで,従来型の1対多のような気象情報の発信とは違った,速報性が高く,また個人にカスタマイズされた情報を配信できる可能性がある。
上記のことを,ウェザーニュースに要望として送ってみようと思う。
- Comments: 0
- TrackBacks: 0
PicasaからGoogle Earthを使ってジオタグ(位置情報)をつけるにはiPhoneの写真が参考になる
写真にジオタグ(位置情報)を与える手段はいくつかあって,以前のエントリでも紹介した。iPhoneは自動的にジオタグが付くのだが,一般的なデジカメで撮影した写真にはジオタグには付いていない。そのため,ジオタグを付ける簡便な方法を見つけたいと考えていた。
便利な方法の1つとして,タイトルのように,PicasaによるGoogle Earthを利用したジオタグを付ける機能と,iPhoneの位置情報が付いた写真を組み合わせ,位置情報の付いていない写真にジオタグを付ける簡便な方法を紹介する。
今回は,厳密な位置を特定することは想定せず,だいたいの撮影場所(数十メートルや数百メートルの誤差は含まれる程度)を記録する場合を想定している。
- 撮影 デジタル一眼レフやコンパクトデジカメで撮影をする。あわせて,撮影の合間にiPhoneで同じような写真を撮影しておく。当然のことながら,iPhoneの写真では位置情報が自動的に付く。
- 写真の管理 Picasaで写真を管理する。iPhoneの写真もダウンリンクしておいて,ローカルに保存しておく。今回撮影した写真を特定のフォルダに保存しておき,Picasaに表示されるようにしておく。
- ジオタグを付ける Picasaで「ツール>ジオタグ>Google Earthでジオタグを付ける」を選択。Google Earthが起動する。すると,ジオタグされた写真は勝手に表示されるため,iPhoneで撮影された先ほどの写真は自動的に画面上にプロットされているのである。それを参考に,写真にジオタグを付けることができる。
この方法では,一眼レフやデジカメ等で撮影している合間に,iPhoneでも撮影しておけば良く,iPhoneアプリを使わないため,非常にシンプルな方法である。また,この方法は土地勘の働かない,海外では特に有効だと考えられる。iPhoneは基地局の電波を使わなくても,単独で測位ができるため,海外でも位置情報が取得可能である。
この方法の欠点としては,室内での撮影は良好な精度がでないことである。これはGPSの原理上仕方が無い。この問題の解決方法としては,BrightkiteとFlickrの組み合わせが有効な可能性がある。詳細な方法は省略するが,BrightkiteはFlickrへ自動アップデート機能がある。また,Brightkiteでは「チェックイン」という機能があり,iPhoneのGPSから商業施設等の選ぶことができ,その位置情報を利用して,Flickrへ位置情報を送ることができる。FlickrはKMLを配信しているため,そのKMLをGoogle Earthに表示することができる。
- Comments: 0
- TrackBacks: 0
iPhoneからFlickrへ位置情報付き写真をアップロードする方法のまとめ
はじめに
Flickrは,写真をアップロードして公開する世界的にも最大のサイトである。そのため,半永久的に写真を蓄積してくれるだろうと楽観的に考えている。なので,ライフログとしてどんどん写真をアップロードしたいと考えている。私は,2つのアカウントを取得しており,用途によって使い分けている。一つ目のアカウントは一眼レフの写真アルバムとして,二つ目のアカウントはiPhoneで撮影した普段の写真をアップするためである。今回は,特にiPhoneからFlickrへ写真をアップロードする方法をまとめてみたい。
iPhoneからFlickrへ写真をアップロードする方法はいくつかあるが,特に位置情報の観点からまとめてみたいと考えている。というのも,Flickrは位置情報(ジオタグ)が付いた写真の取り扱いにも力を入れており,位置情報が与えられたライフログの蓄積に最適だからである。FlickrはKMLを配信しており,APIでは緯度経度を抽出することが可能である。そして,iPhoneのGPSで取得された位置情報は,Flickrでも当然のことながら活用することができる。
理想としては,撮影された位置情報が正しくFlickrに送られて反映され,KMLやAPI等で利用できることが望ましい。そのような観点に基づき,各手段の特徴をまとめてみた。
結論としては,写真撮影直後にアップロードする場合,後に紹介する既存のアプリを使うことが有効だが,リアルタイムでない過去の写真をアップロードする場合は,直接メールを送ることが有効である。そうすることで,写真が撮影された位置情報がFlickrへ正確に反映させることが可能となる。
各種手段の整理
- アプリ「Twitxr」
- アプリ「Klick」
- アプリ「Mobile Fotos」,「AirMe」
- アプリ「Brightkite」
- メールで直接送る
このアプリは以前のエントリで紹介した。Twitxrにサインインするための登録が必要である。
アップロードを開始したときのiPhoneの位置情報は,Flickrの「Tags」に「geo:lat=35661691」という形でタグが付く。しかし,Flickrにはそれがジオタグとして認識されていない。そのため,FlickrのAPIにも位置情報が付かない。なお,このアプリではライブラリーも,新規撮影も対応している。
なお,Twitxr自体はTwitterと連携したサービスであり,Twitxrのポストには位置情報は反映されているので,Twitxr APIを使うことで位置情報を取得することは可能である。
「Klick」は,以前のエントリで紹介した。アップロードを開始したときのiPhoneの位置情報がFlickrへ送られるが,Klickのオリジナルな点は,アプリ上で手動で修正をすることが可能なことである。そして位置情報はFlickr上ではちゃんと認識されている。なお,このアプリではライブラリーも,新規撮影も対応している。
「Mobile Fotos」と「AirMe」は,アップロードを開始したときのiPhoneの位置情報をFlickrへ送ることができる(アプリ上での修正は不可)。そしてFlickrでは,その位置情報はちゃんと認識されている。なお,Mobile Fotosはライブラリーと新規撮影の両方に対応しているが,AirMeは新規撮影のみしかアプリ上では扱っていない。
このアプリおよびサービスは以前のエントリで紹介した。Brightkiteへサインインするための登録が必要である。
Check inという概念があり,iPhoneのGPSを使ってある場所にチェックインする。そのチェックインした上で撮影した場合は,Check inした場所の位置情報がFlickrへ送られる。そして,その位置情報はFlickr上ではちゃんと認識される。
iPhoneのSafariからFlickrのサイトを訪れ,Sign inした場合,写真をアップロードするためのアドレスが表示される。それをメモしておき,iPhoneで撮影し,写真をメールに添付して送ることでアップロードすることが可能である。そして,iPhoneの撮影時にExifのヘッダーにジオタグが付くわけだが,そのジオタグの位置情報はFlickrでちゃんと認識されている。
考察
TwitxrはFlickrに位置情報が認識されていないため,以前のエントリで紹介したブックマークレットによる位置情報の付与を事後に行う必要があり,手間がかかるという問題点がある。また,TwitxrやBrightkiteは新たにサービスに登録する必要があるため,手間がかかる。
2,3,4の手段は,リアルタイムに写真をアップするケースに特化している。これらのアプリは,写真撮影時に取得されたジオタグの位置情報を送るのではなく,アップロード時の位置情報をアプリが取得し,それをFlickrへ送っている。つまり,写真を送るタイミングを逃し,別の場所で写真をアップロードする場合,実際に写真が撮影された場所の位置情報は送られないという問題点が発生する。したがって,写真を送るタイミングを逃してアップロードする場合は,一番単純な「メールで直接送る」lことが有効となる。
なお,写真の撮影時間が正確にFlickrへ送られているか,同様に調べてみた。「Mobile Foto」は写真のヘッダーに付与されている撮影時間をFlickrへ送っており,Flickr上で認識されている。一方,「Klick」,「AirMe」,「Brightkite」はアップロードしている時間がFlickr上では撮影時間として認識されることがわかった。
まとめ
TwitxrはそもそもFlickrに位置情報がちゃんと認識されないという問題があるため,使用しない方が良いだろう。アプリである「Klick」,「AirMe」,「Mobile Fotos」は,リアルタイムに写真をアップロードする場合には有効である。Brightkiteは,位置情報SNSであるため,Brightkiteユーザには有効であり,リアルタイムに写真をアップロードする場合に有効となる。一方,リアルタイムではない過去の写真で位置情報をちゃんと対応させてFlickrへ送りたい場合は「メールで直接送る」ことが唯一の有効な手段である。というわけで,リアルタイムと過去の写真では,アップロードを使い分ける必要がある。
Flickrへアップロードできるアプリについては,過去の写真についても送ることができる機能が付いてるものの,その写真のジオタグの位置情報を反映してFlickrにアップロードできる機能を実装するべきである。なお,私は上記以外のアプリを使用していないため,写真のジオタグの位置情報が正確にアップロードできるアプリがあれば,教えていただけると幸いである。
- Comments: 0
- TrackBacks: 0
Google Maps APIの逆ジオコードを使ってみる
いつの間にか,Google Maps APIで逆ジオコードができるようになっていた。ジオコードは,住所から緯度経度を求めるが,逆ジオコードは,緯度経度から住所を求める。今まではジオコードは多かったが,逆ジオコードはあまりなかった。
今後,緯度経度(ジオタグ)が付与された写真やいろいろなデータが増加していくことが予想されるが,データの管理としては,やはり緯度経度の情報で扱われる可能性が高いだろう。それを,何かのサービスやアプリケーションで使う場合は,処理においては数字を使うことなるが,ユーザインターフェイスの観点からは人間の見た目で位置を瞬時に把握するために,住所として表現されることは非常に重要である。そういう意味で,気軽に逆ジオコードによって住所が取得できることの意義は大きいと思う。
さて,Google Maps APIで実際に逆ジオコードを行ってみる。RESTサービスで取得可能でありJSONでの出力に対応している。以下にサンプルを示す。
http://maps.google.com/maps/geo?oe=utf-8&ll=35.620519%2C139.438892&key=ABQIAAAANb5JuD4i3v_Isz_A_z4ipxTrwmVSgF6tOzG2piSiw3F-ORmacRQGqjoiQ55HzLvszowcXYUDT1mXwA&output=json&callback=gmap
コールバック関数はgmapとしている。結果は以下の通りである。
gmap && gmap({
"name": "35.620519,139.438892",
"Status": {
"code": 200,
"request": "geocode"
},
"Placemark": [ {
"id": "p1",
"address": "日本東京都多摩市貝取2丁目9−1",
"AddressDetails": {"Country": {"CountryNameCode": "JP","CountryName": "日本","AdministrativeArea": {"AdministrativeAreaName": "東京都","Locality": {"LocalityName": "多摩市","DependentLocality": {"DependentLocalityName": "貝取","Thoroughfare":{"ThoroughfareName": "9−1 2丁目"}}}}},"Accuracy": 8},
"Point": {
"coordinates": [ 139.4391663, 35.6206892, 0 ]
}
}, {
"id": "p2",
"address": "日本東京都多摩市貝取2丁目9",
"AddressDetails": {"Country": {"CountryNameCode": "JP","CountryName": "日本","AdministrativeArea": {"AdministrativeAreaName": "東京都","Locality": {"LocalityName": "多摩市","DependentLocality": {"DependentLocalityName": "貝取","Thoroughfare":{"ThoroughfareName": "9 2丁目"}}}}},"Accuracy": 7},
"Point": {
"coordinates": [ 139.4386358, 35.6205225, 0 ]
}
}, {
"id": "p3",
"address": "日本東京都多摩市貝取2丁目",
"AddressDetails": {"Country": {"CountryNameCode": "JP","CountryName": "日本","AdministrativeArea": {"AdministrativeAreaName": "東京都","Locality": {"LocalityName": "多摩市","DependentLocality": {"DependentLocalityName": "貝取","Thoroughfare":{"ThoroughfareName": "2丁目"}}}}},"Accuracy": 4},
"Point": {
"coordinates": [ 139.4399301, 35.6219557, 0 ]
}
}, {
"id": "p4",
"address": "日本東京都多摩市貝取",
"AddressDetails": {"Country": {"CountryNameCode": "JP","CountryName": "日本","AdministrativeArea": {"AdministrativeAreaName": "東京都","Locality": {"LocalityName": "多摩市","DependentLocality": {"DependentLocalityName": "貝取"}}}},"Accuracy": 4},
"Point": {
"coordinates": [ 139.4381358, 35.6235749, 0 ]
}
}, {
"id": "p5",
"address": "日本東京都多摩市",
"AddressDetails": {"Country": {"CountryNameCode": "JP","CountryName": "日本","AdministrativeArea": {"AdministrativeAreaName": "東京都","Locality": {"LocalityName": "多摩市"}}},"Accuracy": 4},
"Point": {
"coordinates": [ 139.4463069, 35.6370041, 0 ]
}
}, {
"id": "p6",
"address": "日本東京",
"AddressDetails": {"Country": {"CountryNameCode": "JP","CountryName": "日本","AddressLine":["東京"]},"Accuracy": 2},
"Point": {
"coordinates": [ 139.4872858, 35.6837135, 0 ]
}
}, {
"id": "p7",
"address": "日本東京都",
"AddressDetails": {"Country": {"CountryNameCode": "JP","CountryName": "日本","AdministrativeArea": {"AdministrativeAreaName": "東京都"}},"Accuracy": 2},
"Point": {
"coordinates": [ 139.6917064, 35.6894875, 0 ]
}
}, {
"id": "p8",
"address": "日本Honshu",
"AddressDetails": {"Country": {"CountryNameCode": "JP","CountryName": "日本","AddressLine":["Honshu"]},"Accuracy": 1},
"Point": {
"coordinates": [ 138.0803529, 36.0786279, 0 ]
}
}, {
"id": "p9",
"address": "日本",
"AddressDetails": {"Country": {"CountryNameCode": "JP","CountryName": "日本"},"Accuracy": 1},
"Point": {
"coordinates": [ 138.2529240, 36.2048240, 0 ]
}
}, {
"id": "p10",
"address": "アジア",
"AddressDetails": {"AddressLine":["アジア"],"Accuracy": 0},
"Point": {
"coordinates": [ 108.3307000, 34.3644390, 0 ]
}
} ]
}
)
この緯度経度に意味は無く適当に入れた数字である。Placemarkの配列が後になるほど,空間的にカバーする範囲が広くなる。しまいには,アジアなんていうのもあり,これはこれでおもしろい。
このAPIを活用することにした。先日,Brightkite APIで自分の位置を示すブログパーツを作成したが,これに応用してみる。Brightkiteでは,ある位置に「チェックインする」という概念を用いている。iPhoneのBrightkiteアプリでは,GPSを使って,その位置に気軽にチェックインできるのだ。しかし,国内では,日本語の住所が出てこない。そのため,例えば,下北沢の付近のある地点は「Yoyogi-sanyachō, , Japan」と表示され,大変分かりづらい。
そこで,APIで出力される緯度経度を用いて,上記の逆ジオコードAPIによって,代わりに日本語住所を表記させるようにしてみた。先日のエントリで示したbrightkite.jsは,既にこれに対応して書き換えられている。
- Comments: 0
- TrackBacks: 0
Brightkite APIによる「今ココ」ブログパーツの作成
モバイルSNS&位置情報SNSであるBrightkiteに注目している。注目している理由については稿を改めたいが,APIを公開しているので,それを使ってBrightkiteユーザが「今ココ」を表示できる,簡単なブログパーツを作ってみたので紹介する。
私のウェブサイトのトップページの左に表示してある地図の部分が,そのブログパーツである。内容は,Google Static Maps APIで画像を表示させ,時間と位置を表示するだけの,至ってシンプル作りである。
必要なのは,このbrightkite.jsというファイル。JSONPのコールバック関数を呼び出して,HTMLを作成する。このjsファイル内の,Google Static Mapsには自分のAPIキーを入力する必要がある。 そして,以下のソースを貼り付ければ完成。tagchan.jsonのところを自分のユーザ名に変える必要がある。
<script type="text/javascript" src="http://www.tagchan.net/brightkite.js"></script> <span id="ima_koko"></span> <script type="text/javascript" src="http://brightkite.com/people/tagchan.json?callback=BKFeed"></script>
Brightkiteユーザの方々で,よろしければご自由にお使いくださいませ。
また,BrightkiteのiPhoneアプリが登場したので,最近はユーザがかなり増えている印象。Brightkiteの招待も可能ですよ。
Brightkite - Tagchan
http://brightkite.com/people/tagchan/friendstream
- Comments: 0
- TrackBacks: 0
iPhone写真 + Twitxrによる位置情報付きライフログ取得
前回のエントリから間が空いてしまった。一応,無事に生きており,学位論文の執筆で忙しいため,ブログエントリを書く余裕が無い。
しかし,日々iPhoneを使い倒している。そして色々なアプリを使っては消しているのだが,iPhone写真による位置情報付きライフログの取得の方法はklickからTwitxr(ツイッチャ)に移ってしまった。Twitxを選ぶことにした理由を,以下に列挙しよう。
- TwitxrもFlickrに写真をアップロードできるが,klickはアップロードに時間がかかる。Wifiだとアップロード時間はそんなに違わないのだが,3Gのときはklickだと数分かかる場合がある。電池の消耗が激しいのだ。Twitxrは写真のサイズを落としてアップロードしてくれるので,アップロード時間はそれほどかからない。
- Twitxrは,名称からも推測できるようにTwitterと連携している。Twitxrは,Twitxrで独自アカウントを設定しなければならないものの,アップしたらTwitterに自動的にポストしてくれるので便利である。
- ポストしたときのiPhoneの位置情報がTwitxrのサーバへ送信される。さらに,Twitxr自身がAPIを持っており,API経由で位置情報が取得可能であり,今後の拡張性がある。
ただ,問題点もあって,Flickrに写真を送られるものの,ジオタグが付かないために,Flickrでは撮影時に取得された位置情報が認識されない。ここはなんとかして欲しいところだ。また,撮影場所の編集ができないため,アップロード時と撮影時で場所が異なる場合は,修正できない。
いろいろと新しいアプリやサービスが登場するので,非常におもしろいiPhoneだが,色々な要求も同時に出てくる。それならいいっそ自分で開発すれば良いと思えなくもない。それは博士論文が終わる来春以降に考えるとするか・・・。
Tagchan's photo_log (Flickr)
http://www.flickr.com/photos/tagchan_stream/
Tagchan (Twitxr)
http://www.twitxr.com/tagchan/
- Comments: 0
- TrackBacks: 0
Blog Top > iPhone Archive
- Search
- Recent Entries
- 人気エントリー
-
- Categories
- Photos
- Feeds
- なかのひと
-