我想使用一系列单边界多边形在土壤多边形的R中创建一个真正的GIS剪辑,但是我找不到能够正确执行此操作的R函数。它应该像clip
ESRI的ArcMap中的功能一样工作。我已经尝试过该over
方法在sp
包中,但它似乎不适用于多边形而不是多边形。
一种建议是使用以下代码将gIntersection
in rgeos
包用作剪辑:
#------------------------------------
library(rgeos)
library(maptools)
#Read layers as SpatialPolygonsDataFrame (both the same Albers projection)
Soils_poly = readShapePoly("Soils_polygons") #Note - Has 400 polygons
clipper_poly = readShapePoly("clipper_polygon") #Note - Has 1 polygon
#Try gintersection as clip
Clipped_polys = gIntersection(Clipper_Tile_poly, Soils_poly)
#-----------------------------------
这需要5分钟才能运行(速度太慢),并且会出现以下错误:
RGEOSBinTopoFunc中的错误(spgeom1,spgeom2,byid,id,drop_not_poly,“ rgeos_intersection”):TopologyException:在-721459.77681285271 2009506.5980877089中找不到传出的dirEdge
我还尝试了以下代码来检查是否重叠:
gIntersects(Clipper_Tile_poly, Soils_poly)
结果为TRUE。clip
ESRI ArcMap中的函数对此数据可以正常工作。
有人知道R函数可以使用空间多边形对空间多边形进行适当的剪辑吗?
尝试使用byid = TRUE的gIntersection(我认为对于某些剪辑来说,悬空的拓扑存在问题,有时这样做会有所帮助),以便快速查看gUnarySTRtreeQuery()或gBinarySTRtreeQuery()来识别多边形对的相交边界框,并且仅相交那些对。所有这些afaik都没有简单的高级包装器
—
mdsumner 2014年