逆ジオコーディングをつぶやく

■Twitterをはじめたころはベーシック認証を使った簡易な投稿ページを作っていて、携帯から利用していた。GoogleMapと連携させたりしていて、ちょっと便利に使っていたのだけど、そうこうするうちにTwitterの認証がOAuthに一本化されて使えなくなり、そのままになっていた。ながいことほったらかしにしていたのだけど、時間ができたので今回OAuth認証で作り直した。そのあたりの技術的トピックをメモ的にまとめておこうと思う。

PHPでOAuth認証

今のバージョンでPHPはOAuth認証を持っているけどそれは使わず、abrahamのtwitteroauthライブラリを利用した。
 事前準備として、Twitterにアプリケーションを登録して、コンシューマーキー(公開/秘密鍵)を取得しておく必要がある。また、同時に自分自身のアクセスキー(公開/秘密鍵)を'My Access Token'から取得しておく。
 ライブラリとアクセスのための都合4つの鍵があれば、あとはTwitterのAPIを叩くだけになる。リードアウトの要領は次のようになる。

require_once("twitteroauth.php");
$consumer_key = "(コンシューマー公開鍵)";
$consumer_secret= "(コンシューマー秘密鍵)";
$access_token ="(アクセス公開鍵)";
$access_token_secret="(アクセス秘密鍵)";
$to = new TwitterOAuth($consumer_key,
                       $consumer_secret,
                       $access_token,
                       $access_token_secret);
$req = $to->OAuthRequest(
  "https://twitter.com/statuses/home_timeline.xml",
  "GET",
  array("count"=>"20"));

 ポストの要領は次のようになる。

(認証過程は上掲と同じ)
$req = $to->OAuthRequest(
  "https://twitter.com/statuses/update.xml",
  "POST",
  array("status"=>$text));

緯度・経度の情報を取得する

 ターゲットにしたのはDocomoの携帯。この携帯は投稿時のフォームに特定のキーワードが埋め込まれていると、緯度・経度情報を取得し、送信してくれる。

緯度・経度でGoogleMapにリンクする

 DoCoMo携帯が取得した緯度・経度は分と秒が60進数で、このままではGoogleMapで扱い難い。60進→10進変換をしてやらなければならない。携帯から送信されるフォーマットは±ddd.mm.ss.sssで、これを10進に変換するには、ddd+(mm/60)+(ss.sss/3600)と計算して処理する。
 計算後の位置情報でGoogleMapにリンクするには、緯度をN/S,経度をE/Wで表して、
http://maps.google.co.jp/maps?q=N34.173639722222E131.47022222222
 のように表記する。

bit.lyで短縮する

 GoogleMapへのリンク表記はそのままでは長いので圧縮する。圧縮サイトは幾つかあるけれど、bit.lyを利用した。
bit.lyのAPIを利用するには、ユーザー名とAPIキーが必要。ユーザー名は利用時の登録名そのまま。APIキーはユーザー名を登録後に取得できる
 短縮URLの取得は次の要領で行える。

  $bitlyuser = "(ユーザー名)";
  $bitlyAPIk = "(bit.ly APIキー)";
  $bitlyurl = "http://api.bitly.com/v3/shorten?login=".
  	$bitlyuser.
  	"&apiKey=".$bitlyAPIk.
  	"&longUrl=".$url.
  	"&format=xml";
  $str = file_get_contents($bitlyurl);
  $xmlbitly = simplexml_load_string($str);
  $shortUrl = $xmlbitly->data->url;

緯度・経度から住所表示を逆引きする

 いわゆる逆ジオコーディングの処理で、GoogleMapを利用した。このAPIは今はAPIキーを必要としないで利用できる様子。10進変換後の緯度、経度を(N,E,W,Sのような表記ではなく、±表記のままで)それぞれ$lat, $lonにセットした後、以下の要領で利用できる。

  $query = "http://maps.google.com/maps/geo?ll=".
     $lat.",".$lon.
     "&output=xml&hl=ja&oe=UTF8";
  $xmlGeo = simplexml_load_file($query);
  $status = $xmlGeo->Response->Status->code;
  $address = "";
  if($status == "200"){
    (住所表示の抽出処理)
  }

 住所表示のデータは、おそらくGoogleMapでの表示レベルに合わせて、国レベルから詳細な住所表示レベルまで表現の粒度が異なる。また、敷地内と路上でもデータ内容が異なる。このあたりの調整は実際のxmlを表示させて、GoogleMap向きのデータコンテナから自分のアプリにあわせた抽出をしてやる必要がある。xml表示のサンプル(横浜美術館)(八王子街道)。

Copyright (C) 2008-2015 Satosh Saitou. All rights reserved.
戻る
■キーワード
日記::一覧展開
2016.06
卒検突破 (2016.06.26)
急制動 (2016.06.05)
坂道発進 (2016.06.04)
2016.05
スラローム (2016.05.29)
一本橋 (2016.05.28)
半クラ (2016.05.22)
2015.12
2015.11
2015.08
2015.07
2015.06
2015.05
EF50mm F1.8 STM (2015.05.24)
Private Private (2015.05.17)
NTPを整備する (2015.05.02)
2015.04
2015.03
2015.02
潮つ路 (2015.02.22)
未見の星座展 (2015.02.07)
2015.01
PSYCO-PASS劇場版 (2015.01.18)
2014.12
DOMANI/シェル (2014.12.20)
PHPでDMC (2014.12.13)
jouornald (2014.12.07)
2014.11
五木田智央展 (2014.11.08)
2014.10
山口勝弘展 (2014.10.26)
コンタクト (2014.10.18)
ケース加工 (2014.10.11)
山形旅行で (2014.10.04)
2014.09
聖地巡礼 (2014.09.27)
SIAF 2014(3) (2014.09.20)
SIAF 2014(2) (2014.09.14)
SIAF 2014 (2014.09.13)
RaspberryPi B+ (2014.09.06)
2014.08
ヴァロットン (2014.08.09)
GODZILLA(2014) (2014.08.03)
絵画の在りか (2014.08.02)
2014.07
クロニクル1995 (2014.07.26)
SDHCカード集め (2014.07.20)
SDカード再び (2014.07.05)
2014.06
2014.05
駆動系の整備 (2014.05.25)
無限の可能性 (2014.05.24)
PIOON (2014.05.17)
2014.04
大洗 (2014.04.19)
2014.03
唯美主義 (2014.03.09)
写真の境界 (2014.03.02)
2014.02
星を賣る店 (2014.02.15)
日常/オフレコ (2014.02.01)
2014.01
ISCP (2014.01.11)
DOMANI/シェル賞 (2014.01.04)
2013.12
ターナー展 (2013.12.14)
2013.11
反重力 (2013.11.02)
2013.10
木の器 (2013.10.20)
2013.09
ヒステリシス (2013.09.28)
LOVE展 (2013.09.08)
宙色 (2013.09.07)
2013.08
3/4だった (2013.08.17)
福田美蘭展 (2013.08.11)
2013.07
Fedora19 (2013.07.20)
2013.06
Google Cloud Print (2013.06.30)
未来の記憶 (2013.06.16)
梅佳代展 (2013.06.15)
片岡珠子展 (2013.06.09)
椿会展 (2013.06.08)
空想の建物 (2013.06.02)
wiringPi (2013.06.01)
2013.05
2013.04
箱詰め終わる (2013.04.13)
母-娘、姉-妹 (2013.04.06)
2013.03
卒展めぐり (2013.03.30)
恵比寿映像祭 (2013.03.16)
XBeeで接続する (2013.03.10)
Fedora18 (2013.03.09)
Black (2013.03.03)
2013.02
Backupその後 (2013.02.24)
Backup (2013.02.17)
音と光 (2013.02.03)
実験工房 (2013.02.02)
2013.01
いろはにほう (2013.01.26)
燻製を作る (2013.01.19)
2012.12
外装に収める (2012.12.23)
MU (2012.12.22)
スモーク (2012.12.01)
2012.11
Whirl (2012.11.25)
MOTアニュアル (2012.11.18)
2012.10
MPL1151A1 (2012.10.07)
2012.09
(2012.09.16)
夢の光 (2012.09.08)
光のアート (2012.09.01)
2012.08
東京湾大回り (2012.08.26)
2012.07
.hack//VERSUS (2012.07.22)
具体展 (2012.07.21)
国吉康雄展 (2012.07.15)
2012.06
2012.05
DHT11 (2012.05.12)
2012.04
PHPでIPCを行う (2012.04.22)
DHCPを立てる (2012.04.14)
DNSを立てる (2012.04.08)
2012.03
IPv6を追加する (2012.03.17)
MTUを調整する (2012.03.11)
2012.02
ICO再び (2012.02.26)
Viewpoint (2012.02.25)
恵比寿・2 (2012.02.19)
イ・ブル展 (2012.02.18)
恵比寿・1 (2012.02.11)
2012.01
星霜 (2012.01.01)
2011.12
2011.11
美女採取 (2011.11.27)
アサーション (2011.11.20)
日常/ワケあり (2011.11.12)
XB24-BとXB24-ZB (2011.11.06)
2011.10
家電入れ替え (2011.10.23)
2011.09
湿度センサ (2011.09.25)
銀座線ライン (2011.09.17)
竜宮美術旅館 (2011.09.11)
2011.08
しろきもりへ (2011.08.27)
2011.07
免許更新 (2011.07.31)
2011.06
京橋、新橋 (2011.06.26)
シンセシス (2011.06.18)
撤収の準備 (2011.06.04)
2011.05
風穴 (2011.05.15)
PLATFORM (2011.05.14)
2011.04
水・火・大地 (2011.04.17)
2011.03
パーティクル (2011.03.19)
恵比寿映像祭 (2011.03.12)
カナリア (2011.03.06)
2011.02
『ソルト』 (2011.02.19)
豊島美術館 (2011.02.13)
2011.01
藝大先端2011 (2011.01.23)
幽体の知覚 (2011.01.01)
2010.12
PWMで赤外線 (2010.12.26)
2010.11
『水辺にて』 (2010.11.06)
2010.10
アショカの森 (2010.10.30)
補遺の庭 (2010.10.24)
2010.09
シッケテル展 (2010.09.26)
音を鳴らす (2010.09.12)
2010.08
ハーフ (2010.08.21)
発電所美術館 (2010.08.01)
2010.07
2010.06
『未来医師』 (2010.06.13)
会田誠巡り (2010.06.12)
2010.05
桑原漁港 (2010.05.16)
欲望のコード (2010.05.15)
『第9地区』 (2010.05.02)
2010.04
春の海 (2010.04.18)
春の錦帯橋 (2010.04.17)
『機龍警察』 (2010.04.11)
2010.03
虹ヶ浜 (2010.03.28)
菊川湖再び (2010.03.14)
『虐殺器官』 (2010.03.13)
梶取岬 (2010.03.07)
絵画の庭@NMAO (2010.03.06)
2010.02
湯野温泉 (2010.02.06)
2010.01
2009.12
菅野ダム行 (2009.12.20)
2009.11
neoneo展 part2 (2009.11.29)
2009.10
広島ノ顔@HMOCA (2009.10.18)
末武川ダム (2009.10.10)
2009.09
吉宝丸@広島 (2009.09.20)
2009.08
2009.07
下松 (2009.07.12)
T4 (2009.07.05)
2009.06
仙台 (2009.06.07)
蕪島 (2009.06.06)
2009.05
2009.03
2009.02
2009.01
2008.12
神津佐仮説 (2008.12.21)
AVR HTTPサーバ (2008.12.20)
風景るるる (2008.12.14)
2008.11
南志摩・宿浦 (2008.11.22)
志摩あたり (2008.11.01)
2008.10
『剣の名誉』 (2008.10.18)
2008.09
石内都 (2008.09.06)
2008.08
宮島・厳島 (2008.08.30)
精神の呼吸 (2008.08.24)
西国行き (2008.08.23)
ICMP Echo応答 (2008.08.16)
MACフレーム (2008.08.03)
2008.07
小さな世界 (2008.07.26)
早送り (2008.07.20)
屋上庭園・他 (2008.07.13)
夢みる世界 (2008.07.12)
2008.06
古都の残像 (2008.06.01)
2008.05
北陸行 (2008.05.30)
ないまぜ (2008.05.24)
SDカード再び (2008.05.11)
GPSロケーター (2008.05.04)
2008.04
2008.03
音が小さい (2008.03.30)
STILL/MOTION (2008.03.22)
IAMAS2008 (2008.03.16)
80.7MHz/81.3MHz (2008.03.09)
橋頭堡 (2008.03.01)
2008.02
1998.11
作成:2011.03.06
公開:2011.03.20

Valid XHTML 1.1

loading image reserved place