【发布时间】:2025-12-10 21:50:01
【问题描述】:
我想查找单元格中存在的行和列的值。我已经编写了一个代码来获取值,如下所示:
x<-raster()
values(x)<-1:ncell(x)
class : RasterLayer
dimensions : 180, 360, 64800 (nrow, ncol, ncell)
resolution : 1, 1 (x, y)
extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : in memory
names : layer
values : 1, 64800 (min, max)
下面给出的另一个文件包含经纬度信息。因此,我们必须在栅格对象中找到这些点,然后以最后给出的格式存储值。
long<-c(106.61291,-81.97224,-84.4277,-97.66631,-72.68604,-73.1247,-119.05662,
-86.75413,-108.5377,-86.67737,-116.22231,-71.00956,-91.15146,-73.1516)
lat<-c(35.04333,33.37378,33.64073,30.19743,41.93887,41.1642,35.43291,33.56243,
45.8037,36.12632,43.56582,42.36561,30.53236,44.4707)
xy<-data.frame(long,lat)
coordinates(xy)=c('long','lat')
proj4string(xy)=proj4string(x)
points<-cellFromXY(x,xy)
so , points 包含 xy 在栅格对象 x 中存在的所有像元编号。
As given below:
[1] 19727 20259 20256 21323 17388 17387 19501 20254 15912 19174 16624 17029 21329 16307
我想找到以点为单位的每个单元格的行和列的值,如下所示: 例如从“点”中获取单元格编号 19727
rowColFromCell(x,19727)
row col
[1,] 55 287
getValues(x,row=55)[287]
value:16109
我想要 9*9 网格的值,其中给定的行和列即 55,287 位于中心。
我想对点中给出的所有单元格做同样的事情。
最终输出应如下所示:
long lat cell_1 cell_2 cell_3 cell _4 ......... cell_9
106.61291 35.04333 16109 ... .... .... ....
提前致谢!
【问题讨论】:
-
我认为
getValues(r,row=55)[287]是19727。一开始,您将栅格图层创建为x,但最后它变成了r。