我有一组坐标作为R中的SpatialPointsDataFrame对象,我使用多边形剪切这些点,只获取在此多边形内找到的那些点。我使用rgeos包中的gIntersection函数执行此操作。我的问题是该函数只返回这些点的坐标,而不是与它们相关的元数据。有没有办法让gIntersection将所有数据传递给结果,而不仅仅是坐标?
以下是一个例子:
表示物种出现点的SpatialPointsDataFrame:
> spexample
coordinates SpAbbr InstitutionCode CatalogNumberText
1 (-76.8727, 3.66282) BanRot EBIRD_COL OBS81997559
2 (-76.9749, 3.71683) BanRot AUDCLO OBS89767945
3 (-76.884, 3.61609) BanRot AUDCLO OBS89769896
4 (-77.5167, 5.51667) BanRot AMNH Skin-123476
5 (-76.0334, 4.86669) BanRot LACM 34848
6 (-78.4333, 1.43333) BanRot LSUMZ 38939
7 (-78.55, 0.95) BanRot ANSP 182799
8 (-79.2139, 0.471944) BanRot AUDCLO OBS58485973
9 (-78.5104, 0.895349) BanRot AUDCLO OBS84822747
10 (-78.3781, 1.51028) BanRot AUDCLO OBS67916517
11 (-75.15, 7.07) BanRot 8110002317-09 4743-5160
将这些点剪切为多边形:
> gIntersection(spexample,bufferclip)
SpatialPoints:
x y
1 -78.55000 0.9500000
1 -78.51036 0.8953493
1 -78.43333 1.4333333
1 -78.37810 1.5102800
1 -76.97495 3.7168289
1 -76.88397 3.6160872
1 -76.87271 3.6628163
1 -76.03337 4.8666900
Coordinate Reference System (CRS) arguments: +proj=longlat +datum=WGS84
+ellps=WGS84 +towgs84=0,0,0
答案 0 :(得分:6)
使用带有byid = TRUE的gIntersects(不是gIntersection)来获取一个TRUE / FALSE向量,其中哪些点位于缓冲区中。然后对点数据框进行子集化。完成工作。