sp :: over()用于多边形分析中的点

时间:2013-09-25 10:43:51

标签: r gis polygon shapefile

我有一个名为“ind_adm”的shapefile和一个名为“pnts”的SpatialPointsDataFrame。 “pnts”包含随机生成的点,并且一些点与多边形重叠。见下图。 enter image description here

现在,我想在多边形分析中做一点,即我想找出哪些点位于代表印度边界的灰色多边形内。为此我在sp库中使用over()函数。

pt.in.poly <- sp::over(ind_adm, pnts, fn = mean) #do the join

然而,我得到的输出是

    >pt.in.poly
    values
    0 6.019467

我实际上应该得到多边形中“点”的点的索引。

我哪里错了?

4 个答案:

答案 0 :(得分:21)

您不应提供功能。您正在聚合多边形几何体上的点的属性值(即返回的数字是落在多边形内的点的属性的mean)。另外,您的xy错误的方式可以实现您的目标。应该......

over( pnts , ind_adm , fn = NULL) 

答案 1 :(得分:19)

Found this concise and intuitive syntax for over:

   pnts[ind_adm,] 

from this Intro document

答案 2 :(得分:7)

您可以使用point.in.poly fom spatialEco套餐。它与点和面要素类相交,并将多边形属性添加到点&#34;。

library(spatialEco)

new_shape <- point.in.poly(pnts, ind_adm)

答案 3 :(得分:0)

您还可以使用st_intersection包中的sf功能:

加载库

library(sf)

从多边形

创建一个简单的要素几何(多边形)

ind_adm <- st_as_sf(ind_adm)

从您感兴趣的点创建一个简单的要素几何(点)

(24047是印度的EPSG代码)

pnts <- st_as_sf(pnts) %>% st_set_crs(., 24047)

仅保留多边形内的点

kept_points <- st_intersection(ind_adm, pnts)