Googleマップ KML/CSV相互変換

Pocket

Googleマップは、位置情報をプロットして、自分の地図(マイマップ)をつくることができます。
このデータはKMLという形式でエクスポートすることができます。
これをCSVに変換するためのツールを作りました。

Googleマップ KML/CSV相互変換

CSVに変換し、Excelなどで編集した後、またKMLに変換して、マイマップにインポートすることもできます。

インポートで不具合が起きることがあります。
レコードが1件しかインポートされないケースがあります。
このような場合は再度インポートを行うとうまくいくようです。

KMLにエクスポートする方法

(2016年6月19日追記)

現在のGoogleマップのエクスポートはKMZファイルがデフォルトになっています。これはKMLファイルを圧縮したもので、テキストとして使えません。上述のツールを使うにはKMLファイルである必要があります。

1.アイコンをクリックしてメニューを開く。
gm1

2.「KMLにエクスポート」を選択。
gm2

3.「.KMZ ファイルではなく .KML ファイルにエクスポートする」にチェック。
gm3

CSVをインポートする方法

(2018年7月22日追記)

現在のGoogleマップはKMLのインポートだけでなくCSVのインポートにも対応しています。

1.CSVを作る。必要な項目は「場所の名前」「経度」「緯度」の3個。※見出しは任意。

場所の名前,経度,緯度
東京駅,139.7670516,35.6811673
新宿駅,139.7004131,35.6895924

2.「レイヤを追加」して「インポート」をクリック。

3.「パソコンからファイルを選択」をクリックしてCSVを選択。

4.CSVの見出しの経度にチェックし「経度」にチェック。同様に見出しの緯度と「緯度」にチェック。

5.CSVの見出しの場所の名前にチェック。

[ 2011年2月12日 | カテゴリー: Tool | タグ: , , , , , , ]

« | »

コメント

  1. FUM より:

    説明の
    >KMLからCSVに変換
    >CSVは「整理番号,場所の名前,説明,経度,緯度,標高」の順にします。整理番号は必須ですが値は任意です。
    のところの経度,緯度が逆でした。

  2. stabucky より:

    @FUM
    ご指摘ありがとうございます。
    後で確認の上、修正しておきます。
    (追記)確認したところ「整理番号,場所の名前,説明,経度,緯度,標高」で良いようです。

  3. takeda より:

    スタイル(アイコン)についても、CSVに含めることはできないでしょうか。よろしくご検討ください。

  4. stabucky より:

    @takeda
    ありがとうございます。検討します。

  5. stabucky より:

    @takeda
    スタイルを含めることについて考えてみました。
    本体となるテーブルとスタイルを設定するテーブルが別になっているため、これを紐付けるのが難しそうです。
    つまり私のレベルでは対応できそうにありません。申し訳ありません。
    ただアイコンが設定できたら格段に便利になるでしょうね。

  6. ohashi より:

    石巻交通支援マップ制作プロジェクトでの使用目的で、KML/CSV相互変換を参考に(というより、ほとんどそのままです)KML→XML変換を作らせていただきました。
    http://ishinomakimap.web.fc2.com/gmap_kml2xml.htm
    事後になって申し訳ありませんが、問題ありましたら削除いたしますのでお知らせいただけますでしょうか?

  7. stabucky より:

    @ohashi
    少しでも復興のお役に立てるのであれば問題ありません。よろしくお願いします。

  8. td より:

    とても便利だと思い,使わせてもらいたいのですが…
    CSV.→KML.に変換してGoogle Earthで開こうとするとエラーとなります.

    「行 1、列 0 で解析エラーが発生しました」

    「1,A-01 (point name), 34.xxxx, 141.xxxx」と入力しました.
    知識不足で申し訳ありません.間違いを教えてくださると助かります.

  9. stabucky より:

    確認します。少し時間をください。

  10. stabucky より:

    GoogleEarthをインストールして色々データを変えてみましたが同じ現象が出ませんでした。
    データの作り方について気が付いた点を書きます。
    「1,A-01 (point name), 34.xxxx, 141.xxxx」
    としたとのことですが、経度と緯度が逆だと思います。
    CSVは
    「整理番号,場所の名前,説明,経度,緯度,標高」
    とします。
    「1,A-01 (point name),,141.xxxx,34.xxxx,0.0」
    のようにしてみてください。
    「説明」は空欄でいいです。
    「標高」はゼロでいいです。

  11. taka より:

    初めまして。
    GoogleマイマップのKMLファイルをCSVへ変換する方法を探していたところ、
    「Googleマップ KML/CSV相互変換」を拝見致しました。

    素晴らしいツールの開発、提供をありがとうございます。

    ただ、先ほど試してみたところ、
    現在のGoogleマイマップのKMLファイルをKML欄にペーストして
    「KMLからCSVに」ボタンを押しても反応がなく
    CSV欄にも出力されないようでした。

    (Windows環境のFirefoxとChromeで確認)

    本ツールは現在でも利用できるのでしょうか?

    よろしくお願いいたします。

  12. stabucky より:

    >takaさん
    先ほど試したところ正しく動作しました(Windows環境のChrome)。
    最近、私も知ったのですが、デフォルトではKMZにエクスポートされます。KMLとする必要があります。記事に追記しました。
    うまくいかないとなると、この点かな、と思いますが、いかがでしょうか。

  13. taka より:

    ご回答、ご確認誠にありがとうございます。

    KMLファイルとしてGoogleマップのマイマップからデータをエクスポートし、
    テキストエディタで開き、すべて選択&コピーをして、
    http://tool.stabucky.com/gmap_kml2csv.htm
    のKML欄にペーストし「KMLからCSVに」ボタンをクリック致しましたが、
    やはり同様に右側のCSV欄は空欄のままとなります。

    GoogleマイマップからエクスポートしたKMLファイルのPlacemark内に
    styleUrlやExtendedDataも含まれているのですが、
    この辺りが原因でしょうか?
    (つまりKMLファイルの書式が違う?)

    よろしくお願いいたします。

  14. stabucky より:

    >takaさん
    使用方法は正しいと思います。
    KMLの実態はXMLです。厳密なルールに基づいて生成されているのでどんな環境でも同じように処理されます。
    しかし私のプログラムは厳密なルールに基づいて変換していません。
    ・すべての改行を取り除いて1行にする。
    ・Placemarkタグで挟まれている文字列を配列として取り出す。
    ・各配列のnameタグで挟まれている文字列、coordinatesタグで挟まれている文字列を取り出す。
    ・CSVとして結合する。
    という簡易的な方法で変換しています。
    そのため、書式が多少異なっても、Placemark、name、coordinatesのタグがあれば変換されるはずです。
    一方、気になるのが「全ての改行を取り除いて1行にする。」の部分で、改行の形式が違うと正しく処理されない可能性があります。
    この部分を修正したプログラムに差し替えてみましたのでお手数ですが試してください。

  15. taka より:

    ご確認、誠にありがとうございます。

    書き込みいただきました内容を見て
    私のKMLファイルとの相違点がございました。

    今回GoogleマイマップからエクスポートしたKMLファイルにはcoordinatesがございません。
    以下の様な構成となっています。(カッコは全角に変換)

    ---------------------------------
    <Placemark>
    <name>example</name>
    <description><![CDATA[example]]></description>
    <styleUrl>#icon-example</styleUrl>
    <ExtendedData>
    <Data name=’example’>
    <value>example</value>
    </Data>
    <Data name=’example’>
    <value>example</value>
    </Data>
    <Data name=’example’>
    <value>example</value>
    </Data>
    </ExtendedData>
    <address>example</address>
    </Placemark>
    ---------------------------------

    こちらのGoogleマイマップに問題があるのでしょうか?

  16. stabucky より:

    takaさん
    coordinates(座標)が必ずあるという前提ですので、ないとエラーになります。
    addressを使うパターンを想定していません。
    ちょっと試してみますのでお待ちください。

  17. stabucky より:

    >takaさん
    Placemarkを行の単位、
    name,description,addressについてCSVを生成するコードを書いてみました。
    https://jsfiddle.net/2qht8Lfg/1/
    で試してください。
    左側のテキストエリアにKMLをコピペしてボタンを押すと右側のテキストエリアにCSVがセットされます。
    コメントで紹介いただいたKMLをサンプルとしてあらかじめセットしてあります。

  18. taka より:

    ご回答ありがとうございます。

    GoogleマイマップへはCSVファイルで住所録データをインポートしたため、
    座標データがなくアドレスのみKMLファイルに出力された可能性が考えられます。

    https://jsfiddle.net/2qht8Lfg/1/
    こちら早速やってみたところ、無事にCSVファイルへの書き出しができました!

    丁寧なご対応、誠にありがとうございました!

    こちらのプログラムですが、
    今後もご案内いただいたURLから利用させていただいてもよろしいでしょうか?

    よろしくお願いいたします。

  19. stabucky より:

    >takaさん
    お役に立てたようで嬉しいです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報