【问题标题】:Subset SpatialPolygonsDataFrame子集 SpatialPolygonsDataFrame
【发布时间】:2012-04-30 01:48:03
【问题描述】:

我有一个SpatialPolygonsDataFrame,它是通过在rgdal 包中使用readOGR 读取shapefile 创建的。我正在尝试使用它在sp 包中使用spsample 生成采样网格,用于从该地区收集的调查数据中进行插值。但是,SpatialPointsDataFrame 包含的区域比调查大得多,因此,插值预测的值远离进行任何调查的地方。调查数据和 shapefile 都使用相同的 proj4string 进行投影。

我想使用测量站设置的坐标对 SpatialPolygonsDataFrame 进行子集化,但我不确定相关值在对象中的存储位置。

恐怕我无法提供相关数据,因为 shapefile 不是在线托管的。不过,我将从 Paul Hiemstra 对荷兰的 post 的回复中借用一些代码:

library(ggplot2)
library(sp)
library(automap)
library(rgdal)

#get the spatial data for the Netherlands
con <- url("http://gadm.org/data/rda/NLD_adm0.RData")
print(load(con))
close(con)

class(gadm)
bbox(gadm)
>         min      max
>r1  3.360782  7.29271
>r2 50.755165 53.55458

假设调查是在这个领域进行的:

bbox(surveys)
    >         min      max
    >r1     4.000    7.000
    >r2    51.000   53.000

如何裁剪 SpatialPolygonsDataFrame 的那个区域?


编辑:这个question 似乎回答了我的问题。为没有足够努力地搜索而道歉(尽管 cmets 确实让我对使用 rgeos 转向何处有所了解)。但是,gIntersection 会导致 R 崩溃...

【问题讨论】:

  • 简短的回答可能是“package:rgeos”。抱歉,我现在没有时间回答长篇大论。因此它只是一个评论......
  • 查看rgeos包中的gIntersection()函数
  • 我对此的模糊记忆是其中一个空间包具有一个覆盖函数,该函数返回匹配的多边形的布尔值。然后,您可以使用 taRifx::subsetSPDF 仅抓取这些多边形。
  • 从问题中不清楚您是否要将多边形裁剪到点的边界框(您的示例 gadm 中只有一个对象),或者您是否要删除任何不相交的对象点。第一个很容易在 sp 中使用 over() 和 "[",第二个需要拓扑工具和 rgeos 就可以了,但是你真的要切掉点的边界框吗?
  • 对不起,应该说“第二个很容易使用 over()”,“第一个需要拓扑”。 . .

标签: r mapping


【解决方案1】:

根据多边形的大小,您可以执行类似的操作

range = cbind(c(4,7), c(51,53))
centroids <- coordinates(spdf)

spdf.subset <- spdf[centroids[,1] > range[1,1] &
                    centroids[,1] < range[2,1] &
                    centroids[,2] > range[1,2] &
                    centroids[,2] < range[2,2],]

【讨论】:

    猜你喜欢
    • 2015-04-17
    • 2013-04-07
    • 2020-04-22
    • 2015-04-16
    • 2015-02-13
    • 2016-12-05
    • 2016-05-28
    • 2021-04-22
    • 2012-12-08
    相关资源
    最近更新 更多