2011-09-09 28 views
5

Tôi có một tập tọa độ như đối tượng SpatialPointsDataFrame trong R và tôi cắt các điểm này bằng đa giác để chỉ lấy các điểm được tìm thấy trong đa giác này. Tôi đang làm điều này với chức năng gIntersection từ gói rgeos. Vấn đề của tôi là hàm chỉ trả về tọa độ của các điểm đó và không phải là siêu dữ liệu được liên kết với chúng. Có cách nào để có gIntersection vượt qua tất cả các dữ liệu đến kết quả, chứ không phải là chỉ có tọa độ?Giữ siêu dữ liệu khi sử dụng gIntersection từ gói rgeos trong R

Dưới đây là một ví dụ:

Các SpatialPointsDataFrame đại diện cho loài điểm xảy ra:

> 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 

Clipping những điểm đến một đa giác:

> 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 

Trả lời

6

Sử dụng gIntersects (không gIntersection) với byid = TRUE để có được một vector TRUE/FALSE trong đó các điểm nằm trong bộ đệm của bạn. Sau đó, đặt khung dữ liệu điểm của bạn. Công việc hoàn thành.

+0

Cảm ơn mẹo! Đó là một công việc tuyệt vời. – Pascal

Các vấn đề liên quan