なぜグリーンランドはこんなに大きく見えるの?
プロットをよく見てみましょう。実際にはアメリカ本土の約3分の1の大きさしかないのに、なぜグリーンランドのほうが大きく見えるのでしょうか?
経度と緯度をそのままプロットの x 軸と y 軸に描くと、場所に関係なく「経度1度の長さは同じ」とみなすことになります。しかし地球はおおむね球体なので、経度1度が表す距離は緯度によって変わります。赤道付近では約111kmですが、極では0kmになります。
球面上の位置を2次元平面に描く方法は投影法(projection)で表されます。ここで使っているデフォルト(正距円筒図法、Equirectangular projection とも呼ばれます)は、極に近い領域の横方向の距離を歪めてしまいます。球は平面ではないため、どの投影法にも何らかの歪みが生じますが、投影法によって保持しようとする性質(面積・角度・距離など)が異なります。
tmap では、tm_shape() の projection 引数を使って、プロットの投影法を切り替えることができます。
(注:ggplot2 のプロットで投影法を変更する場合は、coord_map() 関数を使います。詳しくは ?coord_map() を参照してください。)
この演習はコースの一部です
R で地理空間データを可視化する
演習の手順
投影法の違いを見やすくするため、経度・緯度の等間隔グリッド線を追加する tm_grid() レイヤーを用意しています。
tm_shape() の呼び出し内で次を試してください。
- 面積を保つよう設計された Hobo–Dyer 投影法(
projection = "hd")。 - 2つ目のプロットでは、局所的な角度と面積のバランスを取る妥協案として設計された Robinson 投影法(
projection = "robin")。 - おまけとして、直前のプロットに
tm_style("classic")を追加し、tmapが地図表示のあらゆる側面をコントロールできる様子を見てみましょう。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
library(sp)
library(tmap)
# Switch to a Hobo–Dyer projection
tm_shape(countries_spdf) +
tm_grid(n.x = 11, n.y = 11) +
tm_fill(col = "population", style = "quantile") +
tm_borders(col = "burlywood4")
# Switch to a Robinson projection
tm_shape(countries_spdf) +
tm_grid(n.x = 11, n.y = 11) +
tm_fill(col = "population", style = "quantile") +
tm_borders(col = "burlywood4")
# Add tm_style("classic") to your plot