--- title: 住所から経度と緯度を取得する author: kazu634 date: 2009-07-05 wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4691;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - Perl ---
前回からの続きです。前回はHTMLの中でジオコーディングをしていましたが、今回は事前に経度と緯度を求めてHTMLを生成するように変更しようと考えました。これならHTMLを読み込んだときに、一気にアクセスが集中しないはずだから大丈夫…だと思う。
# === Libraries === use strict; use warnings; use Data::Dumper; use Encode; use utf8; use WebService::Simple; # === Main part === #!/usr/local/bin/perl use strict; use Geography::AddressExtract::Japan; use encoding "utf8", STDOUT => "utf8"; # binmode STDOUT, ':utf8'; foreach my $addr (<DATA>) { my $t = Geography::AddressExtract::Japan->extract($addr); my $work = $t->[]->{"city"} . $t->[]->{"aza"} . $t->[]->{"number"}; print(encode('utf8', $work), "\n"); my $latlng = &getLatLng($work); my ($lat, $lng) = split(/,/, $latlng); print("Lat: $lat\nLng: $lng\n"); } sub getLatLng() { my $arg = shift(); my $geocode = WebService::Simple->new( base_url => "http://maps.google.com/maps/geo", param => { output => 'xml', hl => 'ja', ie => 'UTF8', oe => 'UTF8', } ); my $response = $geocode->get( { q => $arg, } ); if ($response->parse_response()->{Response}->{Status}->{code} == 200) { return $response->parse_response()->{Response}->{Placemark}->{Point}->{coordinates}; } else { return 'Not Found, Not Found'; } } __DATA__ 東京都豊島区巣鴨1-15-1宮田ビル2階 東京都文京区本郷4-37-13文京センタ-地下1階 東京都品川区大崎1-6-4新大崎勧業ビル1階 東京都中野区中野5-61-2立見ビル2階 東京都中野区中野5-67-5長谷部ビル2階 東京都中央区銀座2-7-18藤田ビル地下1階 東京都中央区銀座2-5-5共同ビル西銀座1階 東京都中央区銀座2-8-15共同ビル銀座通り2階 東京都中央区銀座2-11-6竹田ビル1階 東京都中央区銀座3-3-11稲垣ビル2階 東京都中央区銀座6-12-10旭ビル1階 東京都中央区銀座5-15-1南海東京ビル2階 東京都中央区日本橋2-3-6日本土地ビル地下1階 東京都中央区日本橋本町1-1立石ビル1階 東京都中央区八重洲1-6-17八重洲勧業ビル1階 東京都中央区八重洲1-7-4矢満登ビル1階 東京都大田区大森北1-1-10朝日生命ビル地下1階 東京都大田区西蒲田8-1-7グランタウンビル2階 東京都台東区上野6-1-1小西本店ビル2階 東京都台東区上野4-10-7タツミビル地下1階 東京都台東区上野2-13-13キクヤビル地下1階 東京都台東区谷中7-20-6谷中ホ-ムズ1階 東京都千代田区五番町4番地2東プレビル1階 東京都千代田区富士見2-2-6今井ビル2階 東京都千代田区三崎町3-6-13寺本ビル1階 東京都千代田区内神田2-9-9神田ビル1階 東京都千代田区内神田3-21-8神田駅北口合同ビル2階 東京都千代田区鍛冶町2-1-4東和ビル2階 東京都千代田区有楽町1-6-1第2日比谷ビル2階 東京都千代田区外神田1-16-10ニュー秋葉原センタービル地下1階 東京都千代田区外神田1-11-6小暮ビル2階 東京都千代田区神田佐久間町1-18信交ビル2階 東京都杉並区阿佐ヶ谷南2-14-10倉橋ビル地下1階 東京都杉並区高円寺北2-4-4一栄ビル2階 東京都新宿区西新宿1-24-1エステック情報ビル地下1階 東京都新宿区西新宿1-17-1日本生命西新宿ビル2階 東京都新宿区西新宿1-5-11三葉ビル地下1階 東京都新宿区西新宿7-23-2西鉄イン1階 東京都新宿区新宿2-19-1ビッグスビル地下2階 東京都新宿区新宿3-4-1東新宿ビル地下2階 東京都新宿区市谷田町1-3片倉ビル2階 東京都新宿区四谷1-3-22 東京都新宿区歌舞伎町1-3-5相模ビル1階 東京都新宿区歌舞伎町1-14-4川新ビル2階 東京都新宿区歌舞伎町1-26-6灯ビル2階 東京都新宿区西新宿7-1-1みやこビル2階 東京都新宿区西新宿7-9-7新宿ニッカビル1階 東京都新宿区百人町1-18-8大久保角ビル2階 東京都新宿区百人町2-11-25新戸山ビル2階 東京都新宿区高田馬場2-18-6柳屋ビル1階 東京都新宿区高田馬場2-14-2原田ビル地下1階 東京都新宿区高田馬場1-34-8大輝ビル地下1階 東京都新宿区高田馬場1-34-12竹内ビル1階 東京都渋谷区代々木1-30-6第一U・Iビル1階 東京都渋谷区千駄ヶ谷1-30-8ダヴィンチ千駄ヶ谷1階 東京都渋谷区桜丘町15-15NKG東京第二ビル2階 東京都渋谷区渋谷2-17-5シオノギ渋谷ビル2階 東京都渋谷区宇田川町36-2ノアビル2階 東京都渋谷区渋谷1-16-14渋谷地下鉄ビル2階 東京都荒川区西日暮里5-23-6ホワイトハウス2階 東京都荒川区東日暮里5-51-11静屋ビル2階 東京都港区赤坂3-10-2赤坂コマースビル2階 東京都港区新橋4-10-2ホテルサンルート新橋2階 東京都港区新橋1-17-2光和ビル地下1階 東京都港区芝5-34-7田町センタービル1階 東京都港区芝大門2-3-1常泉ビル2階 東京都港区港南2-3-29シ-ゲンビル1階 東京都港区高輪3-25-22カネオビル1階 東京都江東区亀戸2-20-7百万両ビル2階 東京都葛飾区東金町1-42金子ビル1階 東京都立川市柴崎町3-4-14ベルトリーサビル2階 東京都立川市曙町2-13-10賀屋登ビル2階 東京都立川市曙町2-9-1菊屋川口ビル2階 東京都武蔵野市中町1-6-7朝日生命ビル1階及び2階 神奈川県横浜市中区元町1-18石川ビル1階 神奈川県横浜市中区港町2-6横浜関内ビル2階 神奈川県横浜市中区伊勢佐木町2-66伊勢佐木町満利屋ビル2階 神奈川県横浜市鶴見区鶴見中央1-3-3クレインビル2階 神奈川県鎌倉市小町1-6-19アラビル2階 神奈川県鎌倉市大船1-7-1サザンウインズ大船ビル2階 神奈川県川崎市川崎区駅前本町3-3ムラタビル2階 神奈川県川崎市川崎区砂子1-1-10夏原ビル2階 神奈川県足柄下郡箱根町湯本白石下706-35箱根登山鉄道湯本駅前ビル2階 埼玉県川越市脇田町103川越マイン3階 千葉県市川市八幡2-6-15川長ビル地下1階
~/working/tmp_perl/projects/scrape/starbucks on simoom634 [599] $: perl ./address.pl 東京都豊島区巣鴨1-15-1 Lat: 139.7398948 Lng: 35.7331675 東京都文京区本郷4-37-13 Lat: 139.7599332 Lng: 35.7080096 東京都品川区大崎1-6-4 Lat: 139.7293858 Lng: 35.6197692 東京都中野区中野5-61-2 Lat: 139.6663186 Lng: 35.7067903 東京都中野区中野5-67-5 Lat: 139.6653381 Lng: 35.7081818 東京都中央区銀座2-7-18 Lat: 139.7675810 Lng: 35.6733528 東京都中央区銀座2-5-5 Lat: 139.7669699 Lng: 35.6739055 東京都中央区銀座2-8-15 Lat: 139.7676699 Lng: 35.6727390 東京都中央区銀座2-11-6 Lat: 139.7690560 Lng: 35.6723169 東京都中央区銀座3-3-11 Lat: 139.7652145 Lng: 35.6727445 東京都中央区銀座6-12-10 Lat: 139.7642480 Lng: 35.6688283