Help us understand the problem. What is going on with this article?

Rで日本近辺地図を描くメモ

More than 5 years have passed since last update.

日本近辺の地図をRを使用して描いてみます。

シェープファイルの入手

Rで地図を作成する場合は位置情報を記したシェープファイルを基に描画を行います。ですから、最初にシェープファイルを入手する必要があります。シェープファイルの入手にはいろいろな経路がありますが、今回はNatural Earth (http://www.naturalearthdata.com/) から入手します。

Natural Earthのページに移動し[Download]タブをクリックします。3つの解像度に分かれていますが、今回は[Large scale data, 1:10m]の[Physical]をクリックしました。ページが遷移すると様々な地図情報のデータが表示されますが、[Land]から[Download land]をくりっくしデータを入手します。

圧縮されたデータを解凍したらRで地図を描画してみます。

Rによる地図の描画

Rでシェープファイルを読み込むためには追加のパッケージをインストールする必要があります。
Rのコンソールでコマンドを入力します。

> install.packages("maptools", dependencies=TRUE)
> library(maptools)

パッケージをダウンロードするために、ミラーサイトを選択するウィンドウが表示されますので、適当なミラーサイトを選択すると、自動でインストールが行われます。dependencies=TRUEを設定すると、依存関係を自動的に解析し、必要なパッケージも併せてインストールされます。インストールが終了したらlibraryコマンドを使用して読み込みを行います。

maptoolsを読み込んだら下記のようにすると、とりあえず地図が描かれます。readShapePoly()ではポリゴンの情報を読み込むみたいです。

world <- readShapePoly("C:\\temp\\ne_10m_land.shp")
plot(world)

rmap01.png



日本付近の地図にするには緯度:ylimと経度:xlimに下記のように情報を与えます。axes=TRUEを設定すると、外の枠が描かれるのは通常のplotコマンドと変わりません。

> lonlim = c(120, 150)
> latlim = c(22, 48)
> plot(world ,xlim = lonlim, ylim=latlim, axes=TRUE)

rmap02.png



続いて陸地を塗りつぶしてみます。

> plot(world ,xlim = lonlim, ylim=latlim, axes=TRUE, col="cadetblue2", xlab="Longitude", ylab="Latitude")

rmap03.png

国別に塗りつぶせるかと思い、dbfファイルの中も見てみましたがこのシェープファイルにはデータが含まれていませんでした。これは[Physical]を選んでいるためだと思われます。[Cultural]を選ぶと国別のデータもあり、国別に塗りつぶすことが出来ます。

> install.packages("RColorBrewer", dependencies=TRUE)
> library(RColorBrewer)
> world2 <- readShapePoly("C:\\temp\\ne_10m_admin_0_sovereignty.shp")
> col <- brewer.pal(12, "Set3") 
> plot(world2 ,xlim = lonlim, ylim=latlim, axes=TRUE, xlab="Longitude", ylab="Latitude", col=col)

rmap04.png

こんな感じで、標準のプロット機能でも地図の表示は出来ます。

終了。

ShingoOikawa
元インフラエンジニア。開発チャレンジ。
dts
コンサルティングから設計、開発、HW/SWの選定、運用、保守までシステムをサポートする総合情報サービス企業です。
http://www.dts.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away