在R中绘制地图(栅格文件),特别是ggplot2 [英] Plot the map (raster file) in R, ggplot2 in particular

查看:42
本文介绍了在R中绘制地图(栅格文件),特别是ggplot2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想把澳大利亚的气候带地图标出来。相关文件(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)

如何修复此问题以绘制地图?

推荐答案

首先必须正确读取数据集,它不是栅格文件,而是文本。标题的第一行提供有关";格式和地理配准的信息:

ncos 1681
第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的几个值合并到较少的类中。

这篇关于在R中绘制地图(栅格文件),特别是ggplot2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆