東京図書館マップ
以前、都内の図書館やらをマーキングする Google マイマップを作ったのだけど、手作業でマーカーを追加するしかなく非常にめんどうだったので放置していた。
が、いつのまにか KML インポート機能が追加されていたので、これを使ってさっくり完成させました。
図書館のデータはなぜか既にある。
[h@lily gmap]$ ls libs*.txt libs-national.txt libs-tokyo-east.txt libs-tokyo-west.txt [h@lily gmap]$ cat libs-national.txt 国立,国会図書館,東京都千代田区永田町1-10-1,35.678418,139.744149 #国立,国会図書館関西館,京都府相楽郡精華町精華台8-1-3,34.74368,135.77009 [h@lily gmap]$
KML は Geo::GoogleEarth::Document なるものが CPAN にあったのでこれを使ってみた。載せるまでもないけど一応。
#!/usr/bin/perl use strict; use warnings; use Geo::GoogleEarth::Document; my @cols = qw/blue red green lightblue yellow purple pink orange/; my $doc = Geo::GoogleEarth::Document->new(name => '東京図書館マップ'); foreach my $col (@cols) { $doc->Style(id => $col, iconHref => "http://maps.google.co.jp/mapfiles/ms/icons/$col.png"); } my $idx = 0; my $last; while (<>) { chomp; my @c = split ','; next if $c[0] =~ /^#/; $idx = $idx < $#cols ? $idx + 1 : 0 if $last && $last ne $c[0]; $doc->Placemark( name => $c[0] . $c[1], lat => $c[3], lon => $c[4], address => $c[2], styleUrl => "#$cols[$idx]"); $last = $c[0]; } print $doc->render();
[h@lily gmap]$ cat libs-*.txt | ./mkkml.pl > libs-tokyo.kml [h@lily gmap]$ cat libs-tokyo.kml <?xml version='1.0' standalone='yes'?> <Document> <name>東京図書館マップ</name> <Placemark> <name>国立国会図書館</name> <Point> <coordinates>139.744149,35.678418,0</coordinates> </Point> <address>東京都千代田区永田町1-10-1</address> <styleUrl>#blue</styleUrl> </Placemark> <Placemark> ...(略)... </Style> <Style id="orange"> <IconStyle> <Icon> <href>http://maps.google.co.jp/mapfiles/ms/icons/orange.png</href> </Icon> </IconStyle> </Style> </Document>
間違って何度もインポートするのは嫌なので Google Earth で確認してみた。予想通り2、3度やり直したよ。
ローカルディスクからインポートできるようなのだがなぜか失敗するので、一度どこかにアップロードし URL 指定でインポートすると成功するみたい。
東京は図書館が多すぎて一度にすべてを表示できないみたい…。