Amazon QuickSightで地名カラムを地理空間情報データとして使えるのか確認してみた

geospatial hierarchyを使えばある程度はできそうです。
2022.08.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、CX事業本部 IoT事業部の若槻です。

Amazon QuickSightでは、地理空間情報を利用したマップとしてpoint mapsおよびfilled mapsの2種類が利用できます。

しかし前回のエントリでは、市区町村名のカラム(千代田区中央区港区...)使用しようとしましたが、対応していないようでした。

この場合、地理空間情報が緯度および経度で表されたカラムであれば問題は無さそうですが、国名や地域名などの地名で表されたカラムだとどこまで認識してくれるのでしょうか。

そこで今回は、Amazon QuickSightで国名や地域名などの地名カラムを地理空間情報データとして使えるのか確認してみた

確認してみる

ドキュメントを改めて確認すると、Amazon QuickSightは地名を緯度と経度の座標に変換して地図上に表示してくれるようですが、その場合はデータに国名が含まれている必要があるようです。(前回のデータではまず国名が必要だったようです。)

Amazon QuickSight geocodes place names into latitude and longitude coordinates. It uses these coordinates to display place names on the map. Amazon QuickSight skips any places that it can't geocode.

For this process to work properly, your data must include at least the country. Also, there can't be duplicate place names inside of a parent place name.

そこで国名を含んだ様々なパターンで検証をしてみます。

国名(英語)のみ

まず英語の国名のカラムを持つデータの場合。

populations.csv

country,population
US,329064900
Japan,126860300
France,65129700

上記CSVファイルを使用してDatasetを作成します。この時に[Edit settings and prepare data]をクリック。

するとcountryカラムが既にCountry形式のデータとして認識されていますね。[PUBLISH & VISUALIZE]をクリック。

point mapsを使用すると、[Geospatial]でcountryカラムが設定でき、可視化することができました。

国名(日本語)のみ

次に日本語の国名のカラムを持つデータの場合。

populations_ja.csv

country,population
アメリカ合衆国,329064900
日本,126860300
フランス,65129700

Prepareの段階でCountryタイプとして認識されています。

point mapsで可視化してみると、日本はそこまで違和感ない(長野あたり?)ですがアメリカ合衆国の位置がまったく違いますね。フランスに至っては表示すらされていません。

国名をアメリカ合衆国からアメリカに変更したらどうでしょう。

populations_ja_2.csv

country,population
アメリカ,329064900
日本,126860300
フランス,65129700

すると次はアメリカまで認識されなくなり、日本しか表示されなくなりました...。

国名は英語で指定するのが良さそうです。

国名 + 都道府県名(英語)

英語の国名および都道府県名を使用したカラムの場合はどうでしょう。

population_japan_prefecture.csv

country,prefecture,population
Japan,Tokyo,14047594	
Japan,Kanagawa,9237337	
Japan,Osaka,8837685

ファイルをDatasetとして読み込ませたら、prefectureのタイプをCityに変更します。

Analysisでprefectureカラムをpoint mapsのGeospatialに設定しようとすると、Some map data not renderedという警告が出ました。3レコードとも値がambiguous(曖昧)だそうです。CountryUSとして認識されています。

メッセージをよく読むと地理空間情報カラムがhierarchyの一部となっていないとあります。

The country for processing geocoding was defaulted based on your current QuickSight region as your geocoding field is not part of a hierarchy.

そこで下記のドキュメントを参考にDatasetの編集でカラムをhierarchyに追加してみます。

まずcountryカラムで新規のgeospatial hierarchyを作成します。

[This hierarchy is for a single country]でJapanを指定してjapanhierarchyを作成します。

次にprefecturejapanhierarchyに追加します。

追加されたのでしょうか?Dataset上ではぱっとは分からないです。

では改めてAnalysisでprefectureカラムをpoint mapsのGeospatialに設定すると、意図した通りに可視化することができました。hierarchyちゃんと動作してますね!

都道府県名 + 区市町村名(英語)

最後に英語の都道府県名prefectureおよび区市町村名municipalityを使用したカラムの場合。

population_japan_prefecture_2.csv

prefecture,municipality,population
Tokyo,Chiyoda-Ku,66687
Tokyo,Chuo-Ku,170475
Tokyo,Minato-Ku,257776

ファイルをDatasetとして読み込ませたら、Japan > prefecture > municipalityというhierarchyを作ります。municipalityCountyタイプとしています。

Analysisで可視化してみると、3レコードともなぜか渋谷にマッピングされて、上手く認識できていないようです。

ではmunicipalityのタイプをCityとするとどうでしょう。

Analysisで可視化してみると、千代田区と港区の2つは表示されています。ただし港区の場所はずれています。

中央区は曖昧のため表示されていないようです。

リンク先のドキュメントを読むと次のようにあります。

Issues with ambiguous locations

Geospatial data can't contain ambiguous locations. For example, suppose that the data contains a city named Springfield, but the next level in the hierarchy is country. Because multiple states have a city named Springfield, it isn't possible to geocode the location to a specific point on a map.

To avoid this problem, you can add enough geographical data to indicate what location should show on a map chart. For example, you can add a state level into your data and its hierarchy. Or, you might add latitude and longitude.

どうやらTokyoの配下に他にもChuo-Kuがあり、曖昧であると判断されてしまったようですね。区市町村レベルの可視化は課題がありそうです。

まとめ

  • 国名(英語)は、地理空間情報として認識され、地図上での可視化もおおよそ正しく行われる。
  • 国名(日本語)は、地理空間情報として認識されるが、地図上で正しく可視化されない。
  • 都道府県名(英語)は、hierarchyを使用すれば、地図上での可視化も正しく行われる。
  • 区市町村(英語)は、hierarchyを使用すれば、一部のレコードは地図上での可視化も正しく行われる。

State以下の粒度の地域を地名カラムで地理空間情報として利用したい場合はhierarchyを使う必要がありました。区市町村レベルだと要検証にはなりそうですが、都道府県レベルだと問題なく利用できそうです。

参考

以上