我正在尝试获取传单地图边界内的所有多边形。无需担心传单,问题更多的是关于rgeos或其他方法(或主要是关于正确的功能)。我尝试了各种方法,如果形状与边界相交,它们可以正常工作,但不能得到边界内的形状(不接触它)
library(leaflet)
library(rgdal)
library(raster)
subzones<- readShapeSpatial("subzones.shp")
N<- 51.5139
S<-51.5130
W<-(-0.1899)
E<-(-0.1890)
BB = matrix(c(W,E,E,W,W,N,N,S,S,N), nrow=5,ncol=2)
BB = Polygon(BB)
BB = Polygons(list(BB),1)
BB = SpatialPolygons(list(BB))
这个例子当然不可能重现,但一般来说BB非常小,远小于任何一个子区域 - 它仅用于测试目的。如果我制作更大的BB,当然它会捕捉一些子区域,其中一个小区域当然包含一个小区域。把它翻译成任何可重复的例子 - 当我放大到伦敦时,我不能得到'英格兰',因为它不会与任何东西相交。我尝试了没有成功的rgdal(gIntersection,gIntersects,gCovers,gCrosses,gOverlaps,gWithin,overGeoGeo,gContains和可能很少的其他)和光栅(crop)。我的目标是获得在地图框中可见的子区域(空间数据框或数据框)。知道我做错了什么吗?或者干脆怎么做?
使重现成为可能: shapefile http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip
library(maptools)
getinfo.shape("TM_WORLD_BORDERS_SIMPL-0.3.shp")
world.map <- readShapeSpatial("TM_WORLD_BORDERS_SIMPL-0.3.shp")
上面的BB在伦敦的某个地方是一个小矩形 - 如何找到一个可能在bb内的world.map记录 - 无论是穿越它还是完全包含(这里它只是英国,但我希望它可以工作即使BB是欧洲的大小)
编辑:shapefile包含多行而不是正确的多边形是个问题,谢谢