Excelのデータを用いてGoogle Earthにプレイスマークをプロット

Excelに入力された位置情報データを用いて,Google Earth上にプレイスマークをプロットさせることが出来れば,簡易なGISとして活用することが可能となります。以下では,橋梁の点検結果から評価した健全度をマッピングしてみることにします。

はじめに

ケーススタディ

橋梁の健全度マップを作成するケーススタディを行います。緯度経度はある自治体の橋梁位置の一部を拝借しましたが,ケーススタディのため,橋梁名,健全度ランクは適当です。

動作確認状況

Excel 32ビット 64ビット
2007 OK
2010 たぶんOK(未確認) たぶんOK(未確認)
2011 Mac NG
2013 OK OK

2007, 2013の32ビットでしか動作確認していませんが、Win32APIを用いていないので、おそらく64ビットでもそのまま動くでしょう。

2007, 2013の32ビットおよび2013の64ビットで動作確認しました。MSXMLの参照設定があるため、2011 Macでは動作しません。

データの準備

2014-08-07 21.01.46

上図のように,’Sheet1′ 上に ‘テーブル1’ を作成し,列として「橋梁名」「緯度」「経度」「ランク」を設定します。この場合のランクは下表の様に設定しています。

健全度ランク 橋梁の健全性 マーク
1 健全で補修の必要がない
2 損傷があり,計画的な補修が必要
3 損傷が大きく,緊急的な対応が必要

モジュールの作成

標準モジュールにパブリックプロシージャを1つ作成します。

何をするプロシージャか

Excelのテーブルから橋梁名、位置情報(緯度、経度)、健全度を取得して、健全度別に色が異なるアイコンのプレイスマークをkmlファイルとして作成し、Google Earth上にプロットします。

プロシージャのコード

ケーススタディのため,実行部分のソースコードのみ記載します。ボタンやメニューは必要に応じて作成して下さい。

何が起こっているか

上で作成したプロシージャの主要部分を説明します。

テーブルの設定

対象とするテーブルをオブジェクト変数にセットします。下図のように ‘Sheet1’ 上に ‘テーブル1’ を作成しているのでこのようにします。

2014-08-07 21.09.44

XMLファイル作成の準備

xmlDocというオブジェクト変数に新しいXMLドキュメントを作成してセットします。このためにはXMLの参照設定が必要です。

2014-08-07 21.20.15

XMLの書き出し

これにより、kmlファイル(実態はXMLファイル)の最初の部分(XMLの宣言)が作成されます。

kmlファイルの中身の作成

まず作成するxmlに、kmlというルートノードを追加します。
以下の部分で、

xmlはこのようになります。

次に、必要な要素を追加していきます。

kmlルートノードの中に、Document要素を追加し、そのDocument要素にさらにname要素を追加し、Temporaryというテキストを追加します。

要素の追加や、その要素にテキストを追加する部分を記述するのは長くなるので、こちらのエントリで作成したAddelementという関数を用います。別の標準モジュールあるいは同じモジュールでもよいので、Functionプロシージャを追加します。

これにより、xmlの中身は以下のようになります。

以下、このような作業の繰り返しです。

  • 35〜57行:赤、緑、黄のプッシュピンのスタイルを作成
  • 71〜107行のループ:オートフィルタによって見えている行に対するループ
  • 75〜80行:プロットする橋梁名、緯度経度、ランクなどを取得
  • 83〜87行:ランクに応じて使用するスタイルを選定
  • 90行:ポップアップする説明文を作成
  • 93行〜105行:プレイスマークに必要なxmlを作成

93〜105行の部分で以下のようなxmlが作成されます。

kmlの各要素はリファレンスに説明があります。

ループが終わった後は、ソースコードのコメント欄にあるとおり、テンポラリフォルダを作成して、作成したxml文書をkmlファイルとして保存し、そのkmlファイルを起動し、Google Earthを立ち上げています。

おわりに

実行結果

作成したマクロを実行すると,XMLファイルが一時的に作成・起動され,Google Earth上に表示されます。

2014-08-07 21.28.24

場所(プレイスマーク)パネルの各ポイントをクリックすると,その橋梁の位置へジャンプし,吹き出しに情報を表示させることが出来ます。

2014-08-07 21.34.06

応用

今回はプレイスマークの例を挙げましたが、ライン要素に応用すれば、舗装の路面性状調査結果をプロットすることなども可能です。kmlの構造を読み解いて、是非チャレンジしてみてください。

ダウンロード

本エントリで作成した、「Excelのデータを用いてGoogle Earthにプレイスマークをプロット」するコードのサンプルファイルです。

本エントリからコピー&ペーストしてご自身で作成することが可能ですが、面倒な方、やり方がわからない方はこちらをダウンロード下さい。

※ここにGumroadのウィジェットを表示していますが、企業・学校などでフィルタリングにより表示されない場合があります。

関連記事