応用

ハウツー 値に応じてエリアを色分けするには(コロプレス)

人口や売上のような数値を、エリア(ポリゴン)の色の濃淡で見せる地図をコロプレスと呼びます。ポリゴンの GeoJSON に数値プロパティを持たせ、値から色への対応を式で書きます。

データの用意

各ポリゴンの properties に数値(ここでは value)を持たせた GeoJSON を用意します。

{
  "type": "Feature",
  "geometry": { "type": "Polygon", "coordinates": [ ... ] },
  "properties": { "name": "エリアA", "value": 72 }
}

コード

embed(HTML の属性だけ)ではこの機能は使えません。上のタブで suite / react のコードに切り替えてください。

結果

上のコードは、それぞれのタブの下でそのまま動いています(データはサンプルの /data/areas.geojson)。値の小さいエリアは薄く、大きいエリアは濃く塗り分けられます。凡例を添える場合は、式に書いた「値, 色」のペアをそのまま使うと一致します。

うまくいかないとき
  • 全部同じ色になる → プロパティ名のつづり(value)と、値が数値型であることを確認。"72" のような文字列だと式が効きません。
  • 一部のエリアだけ黒っぽくなる → そのポリゴンにプロパティが欠損しています。データ側で埋めるか、["coalesce", ["get", "value"], 0] のように既定値を与えます。
  • 何も出ない → Layerid の書き忘れ、または GeoJSON の 404 を確認。