GoogleマイマップからダウンロードしたKMLファイルを、CSV形式に変換するWindows用アプリを作りました。
Googleマイマップをご存知ですか?
Googleマップは多くの方が利用していると思いますが、マイマップという結構便利な機能がGoogleにはあります。
こんな感じで、地図上にポイントを置くことができます。
Googleマップにもそういった機能があったかと思いますが、ちょっと便利なのでもう少しマイマップの説明をしていきます。
CSVファイルをGoogleマイマップへインポート
GoogleマイマップはCSVファイルを取り込むことができます。
項目名は自由なので、↓こんな感じでエクセルで店舗リストを作成します。
これをCSV形式で保存してマイマップに取り込むと、冒頭のような地図が簡単に作成できます。
位置マークを付けるにはCSVデータの中に住所を入れておく必要があります。
Googleマイマップ上でデータ編集
マイマップに取り込んだデータは一覧表示することができますし、その場で修正を加えることもできます。
どちらかというとビジネス向きの機能かもしれませんね。そのためか無料でも利用できますが、有料版のプロに比べて制限がきつめになっています。
とまあ非常に便利なのですが一つだけ困ったことが...
マイマップ上でデータの修正ができるのは良いのですが、修正を続けていくとマイマップと手元のエクセルデータに差異が蓄積されていってしまいます。
マイマップだけで利用するデータなら問題はないのですが、エクセルデータとしても必要となると修正が二度手間になります。
GoogleマイマップのデータをCSV化したい
マイマップにはデータのエクスポート機能があるのですが、KMLという形式のみです。
KMLファイルはGoogle Earthに取り込むことができるようです。
でも、エクセル形式とは言わないまでも、せめてCSV形式でないと使い勝手が悪いです。
KMLしかないので、何とかできないものかとググっては見たものの、都合の良いものは見つかりません。(KMLをCSV形式に変換してくれるWebサイトはありました)
しょうがないので、自前でKMLをCSVに変換する仕組みを考えます。
XML形式?で書かれているようです。
じゃあ何とかなるかな~と安易な気持ちで取り掛かったものの...
KMLからCSVに変換するアプリを作りました
いつも通り行き当たりばったりのクソコードですが。
いいんですコードは見えませんからね。
使い方はアプリを起動して、マイマップからダウンロードしたKMLファイルをドラッグ&ドロップするだけ。
レイヤーもタブで表示できるようにしてあります。
それぞれのタブごとにCSV出力できるようになっています。
ついでにCSVの編集ツールも付けちゃいました。エクセルでCSVを編集すると緯度,経度などの桁の多い数値だと丸められてしまうからです。このツールではすべて文字列として扱うようにしています。
※マイマップからエクスポートする時の注意点※
マイマップからエクスポートする際は、以下図のように「KMLファイルにエクスポートします」を指定してください。
ダウンロード
Windows11, VB2019で開発しています。
.NET Framework 4環境であれば動くと思います。
ご使用に当たっては自己責任でお願いします。
自分でも使っているのでパソコンを壊すようなことはないと思いますが。
バージョン2.0,2.1
2024/10/21更新
座標(緯度/経度)の読み込みに対応しました。
たぶん動くと思います...
↓ちゃんと動けばこんな感じで表示されます。
下記サイトの【「おにわさん」日本全国庭園マップ Japanese Gardens Map】をテストデータとして使わせていいただきました。
座標は表示されるようになりましたが他にも問題はあります。
おにわさんデータの場合、各庭園の説明が”<description>”の欄に記載されています。
当アプリではこの”<description>”の読み込みに対応しておらず、”<Data ***>”として記載されていないと読み込めません。
仮に”<description>”の読み込みに対応したとしても、完全な仕様が分からないため編集せず表示するくらいしか方法が思いつきません。(”<br>”の扱いも困りものです…)
“KmlToCsvGe_20.zip” をダウンロード KmlToCsvGe_20.zip – 282 回のダウンロード – 14.15 KB暫定的に”<description>”の読み込みに対応したバージョンです。
Ver2.1としておきます。
バージョン1.2
2017/08/04追加
これまでのバージョンでは、データの変換エラーが発生すると強制終了するようになっていました。自分が使うものだからという割り切りの仕様だったのですが、あまりにも使い勝手が悪いので利用者の方からもご指摘を受けました。
そこで次のように修正したバージョンを公開します。
【変更点】
1.マイマップデータの先頭の項目(名前)に改行が入っているとエラーが発生する。
エラーにならないように改行に対応しました。
2.エラーが発生しても、エラーが起きる直前までを変換表示するようにしました。
表示された行の次の行でエラーが発生していると目星をつけることができます。
バージョン1.1
2017/06/11追加
Windows7, VB2010Expressで開発
Googleマイマップの仕様変更があったようで、KMLファイルの書式が一部変わっていました。分かり得る範疇で新フォーマットに対応させました。
バージョン1.0
初期バージョン
コメント
はじめまして。バージョン1.2を使用してみたくダウンロードボタンを押してみたのですが、「失敗-ネットワークエラー」でダウンロードすることができませんでした。
現在は公開されていないのでしょうか?それともこちら側の問題でしょうか?是非使用してみたいです。よろしくお願いいたします。
桐生さんへ
はじめまして、ゆうぱぱです。
先ほどテストしてみましたが、問題なくダウンロードできました。
ブラウザを変えるなどして、もう一度お試しただけないでしょうか?
よろしくお願いします。
ゆうぱぱ様
ご返信ありがとうございます。他のブラウザで試してみました。
Firefox → 「安全な接続ではありません」
IE → 「このページは表示できません」
Chromeは最初の「ネットワークエラー」でした。
ファイアウォールが邪魔しているようだったので無効にしましたが、やはり上手くいきませんでした。そのため、iPhone でダウンロードして、PCにメール送信しました。
プログラムは問題ありませんでした。今後利用させていただきたいと思います。
有用なプログラムをありがとうございました。
桐生さんへ
いろいろお試しいただいてありがとうございます。
その結果を見ると「プロキシサーバーではじかれているのかな?」と感じます。
ダウンロード出来て良かったです。
今後ともよろしくお願いします。
はじめまして。KMLファイルを開いたら、各地の名前の項目しか抽出されていませんでした。各地の電話や住所は抽出出来ないのでしょうか?バージョン1.2をwindows7で使用しました。宜しくお願い致します。
kirikiさんへ
「サンプルデータからマイマップを作成→KMLでダウンロード→アプリで開く」という手順で正常動作することを確認しました。
念のためサンプルデータを調整しました。
サンプルデータを調整したものに入れ替えてあるので、もう一度アプリをダウンロードしてお試しください。
はじめまして。
こちらのアプリを初めて使用させていただきました。
kirikiさん同様各地の名前の項目しか抽出されないのですが
googlemap 側の仕様が変わってしまったということでしょうか?
お忙しい所申し訳ありませんがよろしくお願いいたします
aiさんへ
以下の手順で動作確認しました。
当ページより「KmlToCsvGe_12.zip」をダウンロード
上記ファイルを解凍
Googleマイマップを開き、新しい地図を地図名「テスト20197010」で作成
解凍したファイルの中の”アダチムセン.csv”をマイマップにインポート
マイマップにレイヤーを追加
“ジョーシン.csv”をインポート
--これでGoogleマイマップ上に、アダチムセンとジョーシンンの店舗が表示されます。
「KML/KMZにエクスポート」を実施
・「地図全体」
・「KMZではなくKMLにエクスポートします。サポート...」にチェック
上記設定でダウンロード
“テスト20190710.kml”というファイル名でダウンロードできました。
このkmlを当アプリで読み込みましたところ、全ての項目が表示されました。
CSV出力でも全ての項目が出ました。
2台のPCで(Win7Pro,Win10Pro)試しましたが、どちらも正常に動作しました。
勤務先の業務でも当アプリを利用していますが問題は出ていません。
kirikiさんの時もそうだったのですが、当方の環境では不具合の再現ができないため、対応方法が分からない状況です。
はじめまして。すごく使いやすそうなアプリで凄いなと思っておるところです。
さて、1点ご質問があったので、ご連絡いたしました。
当方、マイマップで多数地点登録してるのですが、マイマップ上で直接地点登録しているため、エクスポートしたKMLファイルに住所情報が無い状態です。
アプリを見ますと、緯度経度情報が表示されておらず、CSVでインポートする際に地点情報が無く、インポートできない状況でした。
アプリで編集しCSV出力する際に、緯度経度情報を持たせることは可能でしょうか。
お暇なときにご確認いただければ幸いです。
もーやんさん
業務でこのアプリを使用しているときは緯度経度でマーカーを表示させていました。
手順は以下の通りです。
1.CSVを作成
単独の項目として、緯度,経度を追加しておく
2.マイマップにCSVを取り込む
取り込む途中で、位置情報の扱いについて設定できるので、緯度経度を選択する
住所でマーカーを表示すると結構な確率で位置ずれが発生するので、緯度経度を利用していました。
また、もーやんさんご指摘の通りマイマップ上で地点登録した場合、緯度,経度の項目は作成されないと思います。