2013-02-05 72 views
2

我希望在将它转换为栅格对象(tempMap)后绘制矩阵(temp_matrix)。此外,我希望在同一个绘图窗口中添加几个经纬度位置可用的点。我尝试了几种方法,但似乎没有工作,因为可用的点是lat/long中的特定位置,而我得到的栅格对象具有不同的范围。请帮我解决这个问题。下面给出了该问题的示例数据。在r中栅格图层上绘制空间点

library(raster) 
temp_matrix<-array(NA,c(11,11)) 
temp_matrix[1,]<-c(NA,NA,NA,NA,NA,NA,NA,0,0,-6,-6) 
temp_matrix[2,]<-c(0,0,0,0,NA,NA,1,0,0,0,0) 
temp_matrix[3,]<-c(1,0,0,-1,-1,0,0,0,1,0,0) 
temp_matrix[4,]<-c(1,1,0,0,0,0,-1,-1,0,0,0) 
temp_matrix[5,]<-c(1,NA,NA,NA,NA,-1,-1,-1,0,-1,-1) 
temp_matrix[6,]<-c(NA,NA,NA,NA,NA,NA,-1,-1,-1,0,0) 
temp_matrix[7,]<-c(NA,NA,NA,NA,NA,NA,NA,0,-1,0,0) 
temp_matrix[8,]<-c(NA,NA,NA,NA,NA,NA,NA,0,0,0,-1) 
temp_matrix[9,]<-c(NA,NA,NA,NA,NA,NA,NA,-1,0,0,0) 
temp_matrix[10,]<-c(NA,NA,NA,NA,NA,NA,NA,NA,-1,-1,-2) 
temp_matrix[11,]<-c(NA,NA,NA,NA,NA,NA,NA,NA,-2,-3,-2) 
plot(raster(temp_matrix),axes = FALSE,legend=FALSE) 
tempMap <- raster(temp_matrix) 

# plot the points over this raster layer 
point_1<-c(10,10) # should appear on 2nd row from top i.e. over temp_matrix[2,10] 
point_2<-c(9,10) # should appear on 3rd row from top i.e. over temp_matrix[3,10] 
point_3<-c(1,10) # should appear on lowermost row i.e.over temp_matrix[11,10] 

回答

5

您需要设置所需的范围,而不是依赖于默认值。

由于帮助raster状态

## S4 method for signature 'matrix' 
raster(x, xmn=0, xmx=1, ymn=0, ymx=1, crs=NA, template=NULL) 

  • xmn ::最小x坐标(左边框)

  • xmx ::最大X坐标(右边界)

  • ymn ::最低y坐标(底部边框)

  • ymx ::最大Y坐标(顶部边框)

您可以设置xmnxmxymnymx到您希望的值(1,11,1,11)在这种情况下)

tempMap <- raster(temp_matrix, xmn = 1, xmx = 11, ymn = 1, ymx=11) 
plot(tempMap,axes = FALSE,legend=FALSE) 
points(c(10,9,1), c(10,10,10)) 

+0

这确实适用于示例代码,但是,原始矩阵具有维度(37,72),当我尝试更改其范围时,分辨率也会更改并使原始图形变形。默认分辨率是:0.01388889,0.02702703(x,y) 而新的分辨率是:0.5138889,1.945946(x,y)。任何想法如何保持分辨率不变或在更改范围时重置分辨率。提前致谢。 tempMap < - raster(diffMat,xmn = -14.5,xmx = 22.5,ymn = -36,ymx = 36) – Munish

+0

我想你已经把你的'x'和'y'颠倒了。对于一些伪数据(37行,72列矩阵称为'm'),栅格(m,ymn = -14.5,ymx = 22.5,xmn = -36,xmx = 36)给出了分辨率为1的栅格, 1' – mnel

+0

我假设37行应该对应于y轴上的37个分区,但它们表示纬度和经度将x轴分成72份的类似逻辑。尽管我仍然在思考理论上的正确解释,并且解决方案问题也存在于我的机器上,但您的答案有助于理解栅格范围的概念并在所需位置绘制点。谢谢:) – Munish