1

我正在尝试将此文件(无符号字符,像素 = 1440 和行 = 720)作为地图查看。我尝试了下面给出的代码。首先,我下载的可能问题是这段代码使用的是连续配色方案,即使我有离散数据(这是一个分类方案)。如何将数字映射到颜色?请举一个想要的比例的例子如下所示:

conne <- file("C:\\landcover.bin", "rb")
dfr<- readBin(conne, integer(), size=1,  n=720*1440, signed=F)

y<-matrix((data=dfr), ncol=1440, nrow=720)
image(y)
4

3 回答 3

6

raster包提供了一种使用分类数据的方法。阅读帮助页面ratify了解详情。

首先让我们用您的数据创建一个RasterLayer

library(raster)

dfr <- readBin('biome1440s.bin', integer(), size=1,  n=720*1440, signed=F)
r <- raster(nrow=720, ncol=1440)
r[] <- dfr

现在我们将其定义RasterLayer为 的一个因子ratify。您应该使用您的信息而不是更改其级别LETTERS

r <- ratify(r)
rat <- levels(r)[[1]]
rat$soil <- LETTERS[1:15]
levels(r) <- rat

最后,这个分类RasterLayer可以用packagelevelplot的方法显示。rasterVis

library(rasterVis) 
myPal <- c('lightblue', terrain.colors(14))
## using par.settings
levelplot(r, par.settings=rasterTheme(region=myPal))
## or with col.regions
levelplot(r, col.regions=myPal)

世界土地利用

编辑:levelplot使用lattice图形,同时plot使用 base图形。它们不能一起使用(除非您使用该 gridBase软件包)。+.trellis但是,您可以使用包中的和layer函数 轻松覆盖附加信息latticeExtra。由于wrld_simpl是 a SpatialPolygonsDataFrame,您可以使用包中的sp.polygons函数sp来绘制它。

library(maptools) ## needed for wrld_simpl
data(wrld_simpl) ## a SpatialPolygonsDataFrame
levelplot(r, col.regions=myPal) +
    layer(sp.polygons(wrld_simpl, lwd=0.5))

wrld_simpl

于 2013-04-26T18:06:00.063 回答
1

首先,没有代码可以使用“连续”的配色方案,因为所有数据都是数字化和量化的。
现在,有很多内置的颜色模式R。有关?image用于地图等的一些常用调色板的讨论,请参阅 参考资料。如果您的地图数据具有各种土壤类型的离散数值范围,则可以通过一些缩放数学来为每个类别应用不同的颜色。

于 2013-04-25T13:19:36.163 回答
0

或者你可以使用优秀的 ggplot2 包。这具有geom_raster可以与您的数据一起正常工作的几何形状。请注意,ggplot2要求其数据的格式与矩阵不同,您可以使用meltfromreshape2包来执行此转换。另请参阅我对先前问题的回答,该问题与您的问题有很多相似之处。

于 2013-04-25T13:24:35.393 回答