KML Makerというのを作ったよ

http://takatoshi.dyndns.org/kmlmaker/


KMLというのは、

KML (Keyhole Markup Language) は、Google EarthGoogle マップに表示するポイント、線、イメージ、ポリゴン、およびモデルなどの地理的特徴をモデリングして保存するための XML 文法および XML ファイル形式です。KML を使用すると、Google EarthGoogle マップの他のユーザーと地理情報を共有できます。
http://earth.google.co.jp/userguide/ug_kml.html

というやつです。


使用上の注意点が1つだけあります。

  • 重いです。遅いです。複数のリクエストを同時に投げたりするとヤバいかもしれません。

重いのはスクレイピングの部分だってわかってるので、そのうち対応予定だけど対応する前にとりあえずさらしておきます。


使い方は最初は戸惑うかもしれませんが、READMEがあるのでこれを読んでください。
読んでも分かんなかったらコメント欄でも直接メールでもいいんで言ってね。
http://takatoshi.dyndns.org/kmlmaker/readme


作った理由としては、ただ単に「できるから」ってだけです。
http://chin-ma-ya.orgを作ったときに店舗一覧をスクレイピングしたんだけど、これってもっと一般化できるよねってことで作ったのがこれです。


PerlCatalyst)で作りました。
主に以下のモジュールに世話になりました。この3つがなかったらとても作れませんでした。

スクレイピング

ジオコーディング

文字列から住所っぽい文字列を抽出


以下はすべて実際にKML Makerで作ったKMLGoogleマップで表示したものです。


横浜のマクドナルド
http://www.mcdonalds.co.jp/cgi-bin/shop/search3/store_list.cgi?keyword=%89%A1%95l&Image1.x=0&Image1.y=0
http://maps.google.com/maps?q=http://takatoshi.dyndns.org/kmlmaker/static/kml/a491049d7dbe5a63dab6211a4afbda4f.kml

渋谷のマクドナルド
http://www.mcdonalds.co.jp/cgi-bin/shop/search3/store_list.cgi?keyword=%8Fa%92J&Image1.x=0&Image1.y=0
http://maps.google.com/maps?q=http://takatoshi.dyndns.org/kmlmaker/static/kml/d463416905cc90cb335672fae4d1dccf.kml

東京のTSUTAYA
店舗検索 - TSUTAYA 店舗情報
http://maps.google.com/maps?q=http://takatoshi.dyndns.org/kmlmaker/static/kml/b18aaeb044ad18b59b23b43cfb98f18b.kml

ヨドバシカメラ全店
http://www.yodobashi.com/enjoy/more/store/index.html
http://maps.google.com/maps?q=http://takatoshi.dyndns.org/kmlmaker/static/kml/812075266fa74a582f80cbf7bd68b0e2.kml

ビックカメラ全店(店舗名が画像なので取得できない)
ビックカメラ店舗一覧
http://maps.google.com/maps?q=http://takatoshi.dyndns.org/kmlmaker/static/kml/56d43ce1578cac6686c5a5c2810df93b.kml
池袋はビックカメラだらけだな。

一風堂(住所と名前のHTMLのパスが同じなので見分けがつかない)
ラーメン【一風堂】| Ramen "IPPUDO"
http://maps.google.com/maps?q=http://takatoshi.dyndns.org/kmlmaker/static/kml/0c57b8d3e26eabcef21dce8e76dad97b.kml

他にいくつかやってみたものは、このへんにメモってあります。
店舗ページ - メモ帳 - takatoshiグループ


うまくデータを取って来れない場合が結構あったりします。
確認した現象とか。

  • HTMLの構造がちょっと違うだけで失敗する(たとえば名前部分の1つにだけfontタグが入っていたりした場合)。
  • 住所と名前の対応が一致せずに失敗することがある(名前のところに全然関係ない文字列が含まれていたりして住所との対応が取れない)(大戸屋とか)
  • 「神奈川県横浜市西区みなとみらい2-3-2」みたいに区とか市のあとにひらがなが来ると区や市までしか抽出できない(他には「神奈川県横浜市青葉区もえぎ野2-3」「神奈川県座間市ひばりが丘4-11-1」など)

以下、今後やりたいこと。

  • 時間がかかりまくるのをなんとかする
  • KMLに名前をつけて保存
  • 作成したKMLをユーザーごとに保存
  • テストの自動化(とにかくいろんなWebページでいろんなパターンを試してみないといけないので)