1

我正在尝试获取传单地图边界内的所有多边形。无需担心传单,问题更多的是关于 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 和其他几个) 和 raster (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 的问题,谢谢

4

0 回答 0