R:是否可以根据 x、y 空间坐标绘制网格?
R: Is it possible to plot a grid from x, y spatial coordinates?
我一直在使用一个空间模型,其中包含 21,000 个大小不等的网格单元(i x j,其中 i 是 [1:175],j 是 [1:120])。我在 i 和 j 维度的两个单独数组 (lat_array
,lon_array
) 中有纬度和经度值。
绘制坐标:
> plot(lon_array, lat_array, main='Grid Coordinates')
结果:
我的问题:是否可以将这些空间坐标绘制为网格而不是点?有谁知道可以做到这一点的包或功能?我一直没能在网上找到任何关于这种性质的东西。
谢谢。
首先,直接在平面上绘制固有的球坐标 (lat,long) 总是有点危险。通常你应该以某种方式投影它们,但我会留给你去探索 sp
包和函数 spTransform
或类似的东西。
我想原则上你可以简单地使用 deldir
包来计算你的点的狄利克雷镶嵌,这会给你一个很好的网格。但是,为此您需要一个边界区域,以避免大单元格从您所在区域的边界向外辐射。我个人使用 spatstat
来调用 deldir
所以我不能在 deldir
中给你直接命令,但是在 spatstat
中我会做这样的事情:
library(spatstat)
plot(lon_array, lat_array, main='Grid Coordinates')
W <- clickpoly(add = TRUE) # Now click the region that contains your grid
i_na <- is.na(lon_array) | is.na(lat_array) # Index of NAs
X <- ppp(lon_array[!i_na], lat_array[!i_na], window = W)
grid <- dirichlet(X)
plot(grid)
我还没有测试过这个,一旦我有机会用一些人工数据测试它,我会更新这个答案。一个主要问题是您的数据集的大小可能需要很长时间来计算 Dirichlet 镶嵌。我只尝试在最大 3000 点的数据集上调用 dirichlet
...
我一直在使用一个空间模型,其中包含 21,000 个大小不等的网格单元(i x j,其中 i 是 [1:175],j 是 [1:120])。我在 i 和 j 维度的两个单独数组 (lat_array
,lon_array
) 中有纬度和经度值。
绘制坐标:
> plot(lon_array, lat_array, main='Grid Coordinates')
结果:
谢谢。
首先,直接在平面上绘制固有的球坐标 (lat,long) 总是有点危险。通常你应该以某种方式投影它们,但我会留给你去探索 sp
包和函数 spTransform
或类似的东西。
我想原则上你可以简单地使用 deldir
包来计算你的点的狄利克雷镶嵌,这会给你一个很好的网格。但是,为此您需要一个边界区域,以避免大单元格从您所在区域的边界向外辐射。我个人使用 spatstat
来调用 deldir
所以我不能在 deldir
中给你直接命令,但是在 spatstat
中我会做这样的事情:
library(spatstat)
plot(lon_array, lat_array, main='Grid Coordinates')
W <- clickpoly(add = TRUE) # Now click the region that contains your grid
i_na <- is.na(lon_array) | is.na(lat_array) # Index of NAs
X <- ppp(lon_array[!i_na], lat_array[!i_na], window = W)
grid <- dirichlet(X)
plot(grid)
我还没有测试过这个,一旦我有机会用一些人工数据测试它,我会更新这个答案。一个主要问题是您的数据集的大小可能需要很长时间来计算 Dirichlet 镶嵌。我只尝试在最大 3000 点的数据集上调用 dirichlet
...