我正在使用空间多边形数据框。数据可以在这里下载:qazxsw poi
这包含英格兰和威尔士的下层输出区域(lsoa)。
我需要对数据帧进行子集化,以便仅保留london lsoa11cd的多边形。
我有伦敦的lsoa11cd列表。它们介于E01000001和E01004765之间。我不确定如何继续对空间多边形进行子集化(参见附图)。在下面找到一个不起作用的尝试。
http://geoportal.statistics.gov.uk/datasets/lower-layer-super-output-areas-december-2011-super-generalised-clipped-boundaries-in-england-and-wales
london <- shapefile[substr(shapefile@data$lsoa11cd, -7 , -1) <= 1004765, ]
london <- london[substr(london@data$lsoa11cd, -7 , -1) >= 1000001, ]
如果我正确地解释你的问题,这应该很好地工作:
raster
看起来所有的library(raster)
# Read-in the data. This will create a SpatialPolygonsDataFrame with 34,753 features
s <- shapefile('Lower_Layer_Super_Output_Areas_December_2011_Super_Generalised_Clipped__Boundaries_in_England_and_Wales.shp')
值都有一个字母和一个数字作为字符串中的前两个字符。让我们首先对数据进行子集化,以便只保留那些以'E'作为lsoa11cd
值的第一个聊天对象。
lsoa11cd
现在我们可以从每个s <- s[grep("^[aE].*", s$lsoa11cd), ]
字符串中删除前两个字符并转换为数字变量,以便更轻松地进行子集化,如下所示:
lsoa11cd
然后,您可以在您指定的范围内简单地进行子集化:
s$lsoa11cd <- as.numeric(substring(s$lsoa11cd, 3))