我想绘制澳大利亚气候区的地图。相关文件(ASCII文件)已从以下网址下载:http://www.bom.gov.au/web01/ncc/www/climatology/climate-classification/kpngrp.zip
原始地图看起来像这样。
但是当我使用ASCII文件重新绘制这张地图时,我无法做到。使用的代码是:
library(ggplot2);library(raster)
r<-raster("kpngrp.txt")
plot(r)
如何解决此问题以绘制地图?
答案 0 :(得分:2)
首先必须正确读取数据集,该数据集不是光栅文件,而是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)
现在,为了绘制它,你可以使用几种方法。但是,为了获得更好的东西,您首先必须通过使用矢量shapefile屏蔽来删除“海洋”数据:
adm <- getData("GADM", country="AUS", level=1)
rr = mask(rr, adm)
plot(rr)
没有,情节显示的颜色比你的例子更多,因为我认为它们通过更大的“类别”聚合了Koppen地区。要获得与之类似的地图,您必须在较少数量的类中“连接”原始ASCII的多个值。