「集合知プログラミング」はサンプルコードもたくさん載っている
とても参考になる書籍なのですが
すべてが日本仕様?に修正されているわけではないので
部分的に日本や日本語ではそのまま使えないところもあります。
225ページ「9章 高度な分類手法:カーネルメソッドとSVM」にある
getlocationもその一つです。
ここではYahoo!APIを使って住所から経度緯度を取得しているのですが
残念ながら日本語の住所では検索できません。
せっかくのサンプルコードなので
Yahoo! JAPANが提供する地図Webサービスを
使うようにちょっとだけ修正してみました。
yahookey="YOUR API KEY" from xml.dom.minidom import parseString from urllib import urlopen,quote_plus loc_cache={} def getlocation(address): if address in loc_cache: return loc_cache[address] data=urlopen('http://map.yahooapis.jp/LocalSearchService/V1/LocalSearch'+\ '?appid=%s&p=%s&datum=tky' % (yahookey,quote_plus(address))).read() doc=parseString(data) lat=doc.getElementsByTagName('Lat')[0].firstChild.nodeValue long=doc.getElementsByTagName('Lon')[0].firstChild.nodeValue loc_cache[address]=(float(lat),float(long)) return loc_cache[address]
このように置き換えると動くと思います。
測地系はYahoo!JapanのAPIで標準の日本測地系です。
世界測地系で結果を得たい場合にはプログラム中のdatum=tkyを
datum=wgsに変更してください。
これで住所はもちろんのこと「東京タワー」や「六本木ヒルズ」といった
ランドマーク名からでも経度緯度が出てくるようになります。
Yahoo!Japan GJです。
ではでは