在R中使用rgeos包中的gIntersection时保持元数据

时间:2011-09-09 22:20:51

标签: r gis clip

我有一组坐标作为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 

1 个答案:

答案 0 :(得分:6)

使用带有byid = TRUE的gIntersects(不是gIntersection)来获取一个TRUE / FALSE向量,其中哪些点位于缓冲区中。然后对点数据框进行子集化。完成工作。