deck.glでKMLファイルを読み込んで可視化する

この記事はdeck.gl Advent Calendar 2021 参加記事です。

概要

マイマップ」などGoogle系の地図サービスではデータをKML形式でしかエクスポートできないケースが多々あります。場合によってはKMLを直接読み込まなくてはならない時もあるので、そのやり方を載せておきます。

サンプルコード

解説

loaders.glを使うと様々なフォーマット形式のデータを読み込むことができます。今回は、KMLLoaderを使用してKMLデータを読み込みます。

deck.glとは別にloaders.glをインストールします。

loadres.glの使い方は以下。

loaders.glはKML以外にも様々なファイルフォーマット対応しているので、deck.glでファイルの読み込みに迷ったときはこちらで対応したローダーがないか検索してみてください。

おまけ

以前も「KMLがなぜ最悪なのか」を説明した記事を上げたことがありますが、Googleの地図系サービスが吐き出すKMLはdescriptionプロパティに属性値をHTMLテキストとして格納するという悪行(仕様)をいまだに続けています。

loaders.glは、読み込んだKMLをGeoJSONに変換してくれますが、 description の中身までは流石にパースしてはくれません。(下記画像はマイマップからエクスポートしたKMLを読み込んだデモです)

マジ最悪なので、Googleは速やかにKMLをやめてGeoJSONなど他のフォーマットへ移行していただきたいと思います。

ちなみに、アメリカ国家安全保障局(NAS)もこの問題に頭を悩ませていたのか、 KMLを読み込みつつdescription の中身をパースして属性値として展開してくれるQGISプラグインを公開しています。

NationalSecurityAgency/qgis-kmltools-plugin: Fast KML Import and Export Plugin for QGIS

さすが、世界最高峰の情報機関 素晴らしいですね。

KMLのdescription に悩んでいるひとは使ってみてください。