【问题标题】:Spatial join in RR中的空间连接
【发布时间】:2015-06-30 21:15:12
【问题描述】:

我有两个 shapefile(我们称它们为 shp1.shp 和 shp2.shp),我想创建一个新的 shapefile,其中包含两者之间的重叠。

基本上,我正在尝试确定 shp1 中的哪些地理区域属于 shp2。大多数 shp1 多边形将包含 shp2 多边形,并且一些 shp2 多边形将落入多个 shp1 多边形中。

如果我从

开始

library(sp) large_list <- over(shp1,shp2, returnList = TRUE)

这让我得到了一个共享地理位置的大列表。但是如何获取该列表并使用它进行空间连接,并创建一个新的 shapefile?

我对 R 比较陌生(尤其是 GIS),如果有任何帮助,我将不胜感激。

【问题讨论】:

  • this 是您要找的吗? (请注意,尽管它是作为 raster 包的一部分分发的,union() 确实将两个 SpatialPolygons* 对象作为参数。)
  • @JoshO'Brien 这样做时出现以下错误: RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, drop_lower_td, "rgeos_difference") 错误:TopologyException: Input geom 0 is invalid: Self -在-120.76777118577075 37.538496877470358 处或附近的交点 -120.76777118577075 37.538496877470358
  • 您能否将问题领域归零到足以产生可与我们分享的最小可重复示例?否则,除非有人经历过完全相同的错误消息并记住导致它的原因,否则我们将无法提供帮助。 (我确实有预感,这可能是同一个问题导致我在对同一个链接问题的另一个(不接受)答案中引入了 eps 参数)。
  • 一定要查看rgeos package,并使用gIntersects 进行基本测试,或者如果您需要两者之间的距离阈值,请使用gWithinDistance。我不知道为什么其他人建议union()
  • 他们是建议联盟,因为它直接解决了问题;虽然 raster::intersect 可能是 Aaron 在这里的目的(别担心,两者都在引擎盖下使用 rgeos)。错误消息说多边形无效,但不清楚这是在输入数据中还是在某些处理后发生。如果输入是有效的gIsValid(spgeom, reason=TRUE),那么您应该编写 raster(和/或 rgeos)包维护者,因为这可能是一个错误。

标签: r gis spatial


【解决方案1】:

你可能会在函数intersect中找到答案,来自包raster

library(raster)
newshape <- intersect(shape1, shape2) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-20
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多