我正在R中运行一些地理处理任务,我正在尝试创建一些用于剪切环境信息栅格的多边形.我正在缓冲一些复杂的多边形,这留下了我想摆脱的小子几何.在ArcGIS中,我认为这将涉及将我的多边形从多部分转换为单部分(或沿着这些部分的东西)然后溶解,但我不知道如何在R中执行此操作.
这是一个说明问题的示例:
require(maptools)
require(rgeos)
data(wrld_simpl)
wrld_simpl[which(wrld_simpl@data$NAME=='Greece'),]->greece
proj4string(greece)<-CRS('+proj=lonlat +datum=WGS84')
gBuffer(greece,width=0.5)->buf
plot(buf)
Run Code Online (Sandbox Code Playgroud)
我真正想要的是多边形的外边界,里面没有别的东西.有任何想法吗?
Spa*_*man 13
如果您只想获得构成缓冲区边界的一个环,那么:
plot(SpatialPolygons(list(Polygons(list(buf@polygons[[1]]@Polygons[[1]]),ID=1))),lwd=2)
Run Code Online (Sandbox Code Playgroud)
对于你的案例来说,这是一种非常特别的方式(并绘制它).
你真正想要的是获得所有的戒指ringDir=1,因为其余的将是洞.您需要所有环,因为您的缓冲区可能仍然是两个断开的岛.
outerRings = Filter(function(f){f@ringDir==1},buf@polygons[[1]]@Polygons)
outerBounds = SpatialPolygons(list(Polygons(outerRings,ID=1)))
plot(outerBounds)
Run Code Online (Sandbox Code Playgroud)
可能会做的伎俩...尝试一下,width=0.1你会看到它适用于多个岛屿,但仍然删除一个洞.