2017-05-12 9 views
0

オーストラリアの気候ゾーンの地図をプロットしたい。関連ファイル(ASCIIファイル)は、次の場所からダウンロードされました。http://www.bom.gov.au/web01/ncc/www/climatology/climate-classification/kpngrp.zip特にR、ggplot2のマップ(ラスタファイル)をプロットする

元のマップは次のようになります。

enter image description here

しかし、私は再プロットこのマップにASCIIファイルを使用したとき、私はそれをすることはできません。使用されるコードは:

library(ggplot2);library(raster) 
r<-raster("kpngrp.txt") 
plot(r) 

マップをプロットするにはどうすればよいですか?

+0

ラスター 'unique(getValues(r))'には6レベル以上の方法があります – HubertL

+0

ありがとうございます。ラスタファイルを使って地図を作る方法はありますか? – user3374236

答えて

1

まず、ラスタファイルではなくtxtであるデータセットを正しく読み取る必要があります。ヘッダの最初の行 "フォーマット" と地理参照情報を提供する:

ncolsの1681
NROWS 1361
xllcorner 112
yllcorner -44
セルサイズ0.025
NODATA_value -9999

を使用してデータを正しく読み取ってrasterオブジェクトに変換すると、次のようになります。

infile <- "/home/lb/Temp/buttami/kpngrp.txt" 
data <- as.matrix(read.table(infile, skip = 6)) 
data[data == -9999] = NA 
rr <- raster(data, crs = "+init=epsg:4326") 
extent(rr) = c(112, 112+0.025*1681, -44, -44+0.025*1361) 

> rr 
class  : RasterLayer 
dimensions : 1361, 1681, 2287841 (nrow, ncol, ncell) 
resolution : 0.025, 0.025 (x, y) 
extent  : 112, 154.025, -44, -9.975 (xmin, xmax, ymin, ymax) 
coord. ref. : +init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
data source : in memory 
names  : layer 
values  : 0, 42 (min, max) 

今、プロットするにはいくつかのアプローチを使用できます。しかし、素敵な何かを得るためには、まず、ベクターシェープファイルをマスクすることにより、「海」のデータを削除する必要があります:

adm <- getData("GADM", country="AUS", level=1) 
rr = mask(rr, adm) 
plot(rr) 

enter image description here

に注意してくださいプロットはあなたの例よりも多くの「色」を示していること、私は彼らがKoppen地域をより大きな「カテゴリ」で集めたと思うからです。それと同じようなマップを取得するには、元のASCIIのいくつかの値を少数のクラスに「結合」する必要があります。

関連する問題