2011-09-09 15 views
5

Tengo un conjunto de coordenadas como objeto SpatialPointsDataFrame en R y estoy recortando estos puntos usando un polígono para obtener solo los puntos que se encuentran dentro de este polígono. Estoy haciendo esto con la función gIntersection del paquete rgeos. Mi problema es que la función solo devuelve las coordenadas de esos puntos, y no los metadatos asociados a ellos. ¿Hay alguna forma de que gIntersection pase todos los datos al resultado, en lugar de solo las coordenadas?Mantener los metadatos al utilizar gIntersection del paquete rgeos en R

Aquí es un ejemplo:

Los SpatialPointsDataFrame que representan especies puntos de ocurrencia:

> 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 

recortes esos puntos para un polígono:

> 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 

Respuesta

6

Uso gIntersects (no gIntersection) con byid = Es VERDADERO obtener un vector VERDADERO/FALSO de qué puntos están en tu memoria intermedia. Luego subconjunta tu marco de datos de puntos. Trabajo hecho.

+0

¡Gracias por la sugerencia! Eso es una gran solución. – Pascal

Cuestiones relacionadas