【问题标题】:Create a grid from regular sampling points in R从 R 中的常规采样点创建网格
【发布时间】:2017-03-17 07:23:21
【问题描述】:

我对 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")

我希望这些点成为网格单元的质心。我知道我可以从单个中心坐标创建方形多边形(请参阅Create square polygons from single centre coordinates and area in R)。我不确定我是否有我生成的点的坐标...

创建网格后,我将添加另一条SpatialPolygonsDataFrame(海岸线)以获得类似的效果(希望最终这张图片会显示网格而不是点!):

非常感谢任何帮助!谢谢!

【问题讨论】:

    标签: polygon r-raster sp centroid


    【解决方案1】:

    除了 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")
    

    【讨论】:

      【解决方案2】:

      我认为对SpatialPixels 的简单调用应该可以解决问题:

      ptsreg <- spsample(spdf, 1000, type = "regular")
      cells = SpatialPixels(ptsreg)
      
      # check results
      plot(cells)
      points(ptsreg, pch = 16, col = "black")
      

      HTH。

      【讨论】:

        猜你喜欢
        • 2020-02-17
        • 1970-01-01
        • 2015-07-05
        • 1970-01-01
        • 2013-06-15
        • 1970-01-01
        • 2021-11-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多