広島市オープンデータkmlファイルをGooglemapで表示する

市内のどこにどんな公園があるかリストが無いかなと思ってたら、市がオープンデータを作成していた。えらい。しかし、そのデータを他のサービスで使うには加工が多少必要だった。残念。ということで、市のオープンデータを使えるデータにするまでの作業記録です。

 

広島市オープンデータの在処

オープンデータは広島市のホームページに公開されていて、そのうち位置情報とかが載っているものはひろしま地図ナビに集まっている。色んなファイル形式で公開されている。えらい。僕が知ってるのはcsv(Excelとかで見れるリスト形式)とkml(WEBで表示させるための形式)の2種類だ。

このkmlファイルはGooglemapとか国土地理院地図なんかに読み込んで表示させることができるのだが。

残念ながらそのままでは表示できない。kmlファイルを開いてみると、要素がいちいち別のフォルダに格納されていて、たぶん「10件のレイヤ」を越えてるのだろう。10個しか表示されなかった。

 

まあ地図を使ったサービスはGooglemapだけじゃない。そこで地理院地図で開いてみたのだが。

1237件と表示されてるけど地図には何もでてきていない。これまたkmlファイルを開いてみるとURLの設定ミスというお寒いミスがわかった。これぐらいはぜひ改善していただきたい。

 

地理院地図で見える程度にkmlファイルをいじる(追記:すぐに修正してくれました!)

(追記)この記事を書いた後、市の担当課にここアドレス間違ってますよとメールを送ってみたら、これは予算のかからない作業だったようで、すぐに修正してくれた。すごい、フットワーク軽い!

オープンデータのkmlファイルをテキストエディタで開いてみると、地理院地図でデータが表示されない理由がすぐにわかった。

アドレスにhttp:って二重に書いてある。要素を表示するためのアイコンを外部サイトから参照してるんだけど、アドレスが間違ってるのでアイコンが表示されないだけだった。ためしに「http://」を消すように置換してみたら、ちゃんと表示されるようになった。

Googlemapで見える程度にkmlファイルをいじる

Googlemapで見えるようなkmlファイルにするには、1つのフォルダに全部の要素が入ってるようにすれば良い。けれどそれを元のkmlファイルから置換で作っていくのは難しいので、いちからkmlファイルを作り直した方が早い。そこでcsvファイルとWordの差し込み印刷を使ってkmlファイルを作り直す。

ひとつの要素はこのようなタグで構成されていて、そこにcsvから差し込みたい項目を指定して全件差し込み印刷をかけると

もとのタグに各要素のデータが入ったものができあがる。あとはこれに、ヘッダー部分とフッター部分を加えてあげれば1つのフォルダのなかに全要素が入ったkmlファイルができあがる。

余談だが画像中にSYMBOL25とあるが、ヘッダー部分にSYMBOL0から1231までアイコンの参照URLの設定が記述されていて、これが15000行弱を占めている。このデータで必要なのはSYMBOL25の参照URLだけなので、それだけ残せばこの15000行は消すことができる。要素に関係する部分は10000行も無いので、汎用的な参照設定のためのデータが半分以上を占めているのであった。

何はともあれ、こうしてできたのがこの地図だ。

もとのcsvデータを加工して区ごとに整理すれば、区ごとにフォルダーをつくってそれぞれ表示するようなこともできるけど、とりあえず今日はここまで。