在 r 中的栅格层上绘制空间点

问题描述:

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

I wish to plot a matrix (temp_matrix) after converting it to a raster object (tempMap). Further, I wish to add few points whose latitude and longitude locations are available to me on the same plot window. I have tried few approaches but none seems to work since the points available are specific locations in lat/long while the raster object I am getting has a different extent. Please help me with this issue. Given below is the sample data for the problem.

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]

你需要设置你想要的范围,而不是依赖默认值.

You need to set your desired extent, not rely on the default values.

作为raster状态的帮助

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

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

  • xmn :: minimum x coordinate (left border)

xmx :: 最大 x 坐标(右边框)

xmx :: maximum x coordinate (right border)

ymn :: 最小 y 坐标(下边框)

ymn :: minimum y coordinate (bottom border)

ymx :: 最大 y 坐标(上边框)

ymx :: maximum y coordinate (top border)

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

You can set xmn, xmx, ymn and ymx to the values you wish (1, 11, 1, 11) in this case)

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))