Operadores espaciais em R?

12

Como posso fazer seleções espaciais ou filtros no R? Eu posso fazer isso no PostGIS usando (por exemplo):

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

e é similarmente um pedaço de bolo na maioria dos outros softwares GIS. Então, eu esperaria que algo em R se parecesse com:

mypoint[within(mypoint, mypoly),]

mas não encontro leads em nenhum lugar. Estou procurando por algo que use a terminologia de predicado espacial comum usada no PostGIS / GEOS / JTS / Shapely (dentro, contém, cruza, sobrepõe, toca, etc; DWithin seria um bônus). Essa funcionalidade ou biblioteca existe para o R? Caso contrário, há algo semelhante?

Nota: No R, uso a spclasse para meus objetos ( SpatialPointsDataFrame, etc).

Mike T
fonte

Respostas:

11

Para sua pergunta específica, você poderá usar point.in.polygon( docs ) ou overlay( vinheta ) para realizar a análise.

Uma linguagem de predicados espaciais não é trivial para implementar, e todos os exemplos que você mencionou se resumem a portas ou wrappers do JTS em algum momento. Existe uma versão pré-alfa do rgeos , uma entrada recente do SOC do Google que fornece acesso ao GEOS diretamente de R.

Em geral, parece que os desenvolvedores do R estão discutindo se desejam manter uma implementação completa do GIS dentro do próprio R, ou se baseiam em pacotes facilitadores que permitem a interação com PostGIS, GRASS ( spgrass), SAGA ( rsaga) e similares para fornecer informações mais detalhadas. esclarecido espacial.

scw
fonte
point.in.polygoné um bom começo para polígonos básicos, embora um pouco bruto (por exemplo): point.in.polygon(pnt@coords[,1], pnt@coords[,2], lake@polygons[[1]]@Polygons[[1]]@coords[,1], lake@polygons[[1]]@Polygons[[1]]@coords[,2]) estou realmente ansioso pelo rgeosque você mencionou e tem todos os predicados binários e muito mais.
Mike T
Para exemplos de spgrass6 com GRASS, consulte grass.osgeo.org/wiki/R_statistics
markusN
1
rgeosagora está no CRAN e é muito simples de instalar / usar / etc.
Mike T #