从 R 中的常规采样点创建网格
Create a grid from regular sampling points in R
我对 R 的了解还很基础,我需要一些帮助。我正在尝试在研究区域上创建网格。我希望网格的单元格以我使用 spsample
函数在空间多边形上生成的采样点为中心。这是我的代码:
### 1 - CREATE SPATIAL POLYGON ###
library(sp)
# arrange coordinates of future spatial polygon into a 2-column matrix
xym <- matrix(c(-95000, 90000, 90000, -95000, 443100, 443100, 590000, 590000), nrow = 4, ncol = 2)
# create Polygon
p <- Polygon(xym)
# wrap Polygon into Polygons object
ps <- Polygons(list(p), 1)
# wrap Polygons object into SpatialPolygons object
sps <- SpatialPolygons(list(ps))
# set CRS of polygon (NAD83 Québec Lambert)
proj4string(sps) <- CRS("+init=epsg:32198")
data <- data.frame(f = 99.9)
spdf <- SpatialPolygonsDataFrame(sps, data)
spdf
### 2 - GENERATE REGULAR SAMPLING POINTS ###
library(raster)
ptsreg <- spsample(spdf, 1000, type = "regular")
plot(spdf, col = "azure2")
points(ptsreg, pch = 16, col = "black")
我希望这些点成为网格单元的质心。我知道我可以从单个中心坐标创建正方形多边形(参见 )。我不确定我是否有我生成的点的坐标...
创建网格后,我将添加另一个 SpatialPolygonsDataFrame
(海岸线)以实现类似的效果(希望最终此图像将显示网格而不是点!):
非常感谢任何帮助!谢谢!
我认为简单调用 SpatialPixels
就可以解决问题:
ptsreg <- spsample(spdf, 1000, type = "regular")
cells = SpatialPixels(ptsreg)
# check results
plot(cells)
points(ptsreg, pch = 16, col = "black")
HTH。
除了 Lorenzo 的答案,您还可以使用 raster
包:
library(raster)
ptsreg <- spsample(spdf, 1000, type = "regular")
r <- rasterFromXYZ(coordinates(ptsreg))
r[] <- 1:ncell(r) # add some values
# check the results are correct
plot(r)
points(ptsreg, pch = ".", col = "black")
我对 R 的了解还很基础,我需要一些帮助。我正在尝试在研究区域上创建网格。我希望网格的单元格以我使用 spsample
函数在空间多边形上生成的采样点为中心。这是我的代码:
### 1 - CREATE SPATIAL POLYGON ###
library(sp)
# arrange coordinates of future spatial polygon into a 2-column matrix
xym <- matrix(c(-95000, 90000, 90000, -95000, 443100, 443100, 590000, 590000), nrow = 4, ncol = 2)
# create Polygon
p <- Polygon(xym)
# wrap Polygon into Polygons object
ps <- Polygons(list(p), 1)
# wrap Polygons object into SpatialPolygons object
sps <- SpatialPolygons(list(ps))
# set CRS of polygon (NAD83 Québec Lambert)
proj4string(sps) <- CRS("+init=epsg:32198")
data <- data.frame(f = 99.9)
spdf <- SpatialPolygonsDataFrame(sps, data)
spdf
### 2 - GENERATE REGULAR SAMPLING POINTS ###
library(raster)
ptsreg <- spsample(spdf, 1000, type = "regular")
plot(spdf, col = "azure2")
points(ptsreg, pch = 16, col = "black")
我希望这些点成为网格单元的质心。我知道我可以从单个中心坐标创建正方形多边形(参见
创建网格后,我将添加另一个 SpatialPolygonsDataFrame
(海岸线)以实现类似的效果(希望最终此图像将显示网格而不是点!):
非常感谢任何帮助!谢谢!
我认为简单调用 SpatialPixels
就可以解决问题:
ptsreg <- spsample(spdf, 1000, type = "regular")
cells = SpatialPixels(ptsreg)
# check results
plot(cells)
points(ptsreg, pch = 16, col = "black")
HTH。
除了 Lorenzo 的答案,您还可以使用 raster
包:
library(raster)
ptsreg <- spsample(spdf, 1000, type = "regular")
r <- rasterFromXYZ(coordinates(ptsreg))
r[] <- 1:ncell(r) # add some values
# check the results are correct
plot(r)
points(ptsreg, pch = ".", col = "black")