R中的空间运算符?


12

如何在R中进行空间选择或过滤?我可以在PostGIS中使用(例如)执行此操作:

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

同样,在大多数其他GIS软件中也是如此。所以我希望R中的内容看起来像:

mypoint[within(mypoint, mypoly),]

但我在任何地方都找不到线索。我正在寻找一种使用PostGIS / GEOS / JTS / Shapely中常用的空间谓词术语(在内部,包含,相交,重叠,接触等; DWithin会很有价值)的东西。R是否存在此功能或库?如果不是,是否有相似之处?

注意:在R中,我将sp类用于我的对象(SpatialPointsDataFrame,等等)。

Answers:


11

对于您的特定问题,您应该可以使用point.in.polygondocs)或overlayvignette)进行分析。

空间谓词语言的实现并非易事,而且您提到的所有示例都可以归结为JTS的端口或包装器。rgeos的pre-alpha版本是最近的Google SOC条目,可直接从R访问GEOS。

总的来说,R开发人员似乎在为是否要在R本身中维护完整的GIS实现而苦苦挣扎,或者是依靠促进与PostGIS,GRASS(spgrass),SAGA(rsaga)等交互作用的软件包来提供更深入的信息。空间精明。


point.in.polygon是基本多边形的一个很好的开始,尽管有点粗糙(例如): point.in.polygon(pnt@coords[,1], pnt@coords[,2], lake@polygons[[1]]@Polygons[[1]]@coords[,1], lake@polygons[[1]]@Polygons[[1]]@coords[,2]) 我真的很期待rgeos您提到的内容,它具有所有二进制谓词以及更多内容。
Mike T

有关GRASS的spgrass6示例,请参见grass.osgeo.org/wiki/R_statistics
markusN 2011年

1
rgeos现在位于CRAN上,安装/使用/等非常简单。
Mike T
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.