まず、ラスタファイルではなく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)
に注意してくださいプロットはあなたの例よりも多くの「色」を示していること、私は彼らがKoppen地域をより大きな「カテゴリ」で集めたと思うからです。それと同じようなマップを取得するには、元のASCIIのいくつかの値を少数のクラスに「結合」する必要があります。
ラスター 'unique(getValues(r))'には6レベル以上の方法があります – HubertL
ありがとうございます。ラスタファイルを使って地図を作る方法はありますか? – user3374236