Operadores espaciales en R?

12

¿Cómo puedo hacer selecciones espaciales o filtros en R? Puedo hacer esto en PostGIS usando (por ejemplo):

SELECT * FROM mypoint, mypoly
WHERE ST_Within(mypoint.geom, mypoly.geom);

y de manera similar es pan comido en la mayoría de los demás software SIG. Así que esperaría que algo en R se vea así:

mypoint[within(mypoint, mypoly),]

pero no puedo encontrar ninguna pista en ningún lado. Estoy buscando algo que use la terminología de predicado espacial común utilizada en PostGIS / GEOS / JTS / Shapely (dentro, contiene, se cruza, se superpone, toca, etc .; DWithin sería una bonificación). ¿Existe esta funcionalidad o biblioteca para R? Si no, ¿hay algo similar?

Nota: En R, uso la spclase para mis objetos ( SpatialPointsDataFrame, etc.).

Mike T
fuente

Respuestas:

11

Para su pregunta específica, debe poder usar point.in.polygon( docs ) o overlay( viñeta ) para realizar el análisis.

Un lenguaje predicado espacial no es trivial de implementar, y todos los ejemplos que mencionó se reducen a puertos o contenedores de JTS en algún momento. Hay una versión pre-alfa de rgeos , una entrada reciente de Google SOC que proporciona acceso a GEOS directamente desde R.

En general, parece que los desarrolladores de R están lidiando con si quieren mantener una implementación completa de SIG dentro de R, o si confían en facilitar paquetes que permitan la interacción con PostGIS, GRASS ( spgrass), SAGA ( rsaga) y similares para proporcionar más información conocimiento espacial

scw
fuente
point.in.polygones un buen comienzo para los polígonos básicos, aunque un poco tosco (p. ej.): point.in.polygon(pnt@coords[,1], pnt@coords[,2], lake@polygons[[1]]@Polygons[[1]]@coords[,1], lake@polygons[[1]]@Polygons[[1]]@coords[,2]) estoy ansioso por lo rgeosque mencionaste, y tiene todos los predicados binarios y más.
Mike T
Para ver ejemplos de spgrass6 con GRASS, vea grass.osgeo.org/wiki/R_statistics
markusN
1
rgeosahora está en CRAN , y es muy simple de instalar / usar / etc.
Mike T